From 3fe244ac1063e5c84cbbe829ea85639bdfc9feeb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Oct 2026 02:12:39 +0000 Subject: [PATCH 1/2] build(deps-dev): Bump typescript from 5.9.2 to 5.9.3 Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.2 to 5.9.3. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.9.2...v5.9.3) --- updated-dependencies: - dependency-name: typescript dependency-version: 5.9.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 22 ++++------------------ package.json | 2 +- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index c2fec1c27..944de4d6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,7 @@ "@vue/tsconfig": "^0.5.1", "stylelint": "^17.4.0", "tslib": "^2.8.1", - "typescript": "^5.9.2", + "typescript": "^5.9.3", "vite": "^7.3.7", "vite-plugin-static-copy": "^3.3.0" }, @@ -1650,20 +1650,6 @@ "node": ">=10" } }, - "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@microsoft/tsdoc": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.17.1.tgz", @@ -15284,9 +15270,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index ef0367809..6b4bf69cd 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "@vue/tsconfig": "^0.5.1", "stylelint": "^17.4.0", "tslib": "^2.8.1", - "typescript": "^5.9.2", + "typescript": "^5.9.3", "vite": "^7.3.7", "vite-plugin-static-copy": "^3.3.0" }, From b7550f85ae9f2682c694fe35ecbd8106b1f77441 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 25 Oct 2026 03:20:52 +0100 Subject: [PATCH 2/2] chore: compile assets Signed-off-by: Ferdinand Thiessen --- css/index-CS3F8E0B.chunk.css | 1 - css/index-DEuo5tsF.chunk.css | 1 + js/index-CggvRhHb.chunk.mjs.map | 1 - js/{index-CggvRhHb.chunk.mjs => index-De-0ARML.chunk.mjs} | 4 ++-- ...unk.mjs.map.license => index-De-0ARML.chunk.mjs.license} | 2 +- js/index-De-0ARML.chunk.mjs.map | 1 + ...unk.mjs.license => index-De-0ARML.chunk.mjs.map.license} | 2 +- ...p.chunk.mjs.license => index-sihc3sWh.chunk.mjs.license} | 0 ...mjs.map.license => index-sihc3sWh.chunk.mjs.map.license} | 0 js/previewUtils-B8MVMkXI.chunk.mjs.license | 2 +- js/previewUtils-B8MVMkXI.chunk.mjs.map.license | 2 +- js/viewer-init.mjs | 6 +++--- js/viewer-init.mjs.license | 2 +- js/viewer-init.mjs.map | 2 +- js/viewer-init.mjs.map.license | 2 +- js/viewer-main.mjs | 4 ++-- js/viewer-main.mjs.license | 2 +- js/viewer-main.mjs.map | 2 +- js/viewer-main.mjs.map.license | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) delete mode 100644 css/index-CS3F8E0B.chunk.css create mode 100644 css/index-DEuo5tsF.chunk.css delete mode 100644 js/index-CggvRhHb.chunk.mjs.map rename js/{index-CggvRhHb.chunk.mjs => index-De-0ARML.chunk.mjs} (87%) rename js/{index-CggvRhHb.chunk.mjs.map.license => index-De-0ARML.chunk.mjs.license} (99%) create mode 100644 js/index-De-0ARML.chunk.mjs.map rename js/{index-CggvRhHb.chunk.mjs.license => index-De-0ARML.chunk.mjs.map.license} (99%) rename js/{index-OJuzTj1p.chunk.mjs.license => index-sihc3sWh.chunk.mjs.license} (100%) rename js/{index-OJuzTj1p.chunk.mjs.map.license => index-sihc3sWh.chunk.mjs.map.license} (100%) diff --git a/css/index-CS3F8E0B.chunk.css b/css/index-CS3F8E0B.chunk.css deleted file mode 100644 index e18a1f1c9..000000000 --- a/css/index-CS3F8E0B.chunk.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-cyrillic-ext-400-normal.woff2) format("woff2"),url(fonts/roboto-cyrillic-ext-400-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-cyrillic-400-normal.woff2) format("woff2"),url(fonts/roboto-cyrillic-400-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAXEAA8AAAAABxQAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABQAAAAUAA8ACUdQT1MAAAFsAAAAHgAAAB5EdEx1R1NVQgAAAYwAAAAzAAAANJMNggJPUy8yAAABwAAAAE0AAABgdArg2VNUQVQAAAIQAAAASQAAAF5e+0M1Y21hcAAAAlwAAABAAAAAXj5j4n9nYXNwAAACnAAAAAwAAAAMAAgAGWdseWYAAAKoAAABNgAAATZnhEGkaGVhZAAAA+AAAAA2AAAANglAYTFoaGVhAAAEGAAAAB8AAAAkCroFqmhtdHgAAAQ4AAAAHwAAACQX6f/DbG9jYQAABFgAAAATAAAAFAFZAbFtYXhwAAAEbAAAABwAAAAgACkBIW5hbWUAAASIAAABJQAAAng3dGTWcG9zdAAABbAAAAATAAAAIP9tAGQAAQAAAAwAAAAAAAAAAQAIAAEAAQABAAAACgAcABwAAURGTFQACAAEAAAAAP//AAAAAAAAeNpjYGRgYOBiMAJCFhc3nxAGueTKohwGqfSi1GwGqZzEkjwGKQYQYAER//+DSADdjQkeAHjaY2BhaWecwMDKwMA6i9WYgYFRHkIzX2RIY2JgYABiKHAACjIgAXd/f3eQoLwvG8M/BoY09llMDAoMjPNBcixWrBuAlAIDMwDj2QowAAAAeNoNx7EBQVEQALDcPdDCAgAwFADowBoGMpzfJUJoKegpWMnP/nmO4HM6P4O4PDf3SKmhYyCQMbVHEZUb8SV/KLL6DAR/orwHzQAAAHjaY2BgYAJiZiAWAZKMYJqFwQtI8zFwAOXYwCp4GRQYFsj7/v8P5KHwQTr+f/v/5H/6g91g3TwMCMAEANCmDfkAAQACAAgACP//AA8ABQBkAAADKAWwAAMABgAJAAwADwAAAREhEQUBASUJAyEJAgMo/TwCjv7vARH9qAEN/vMBKv7+AgP9/QECAQEFsPpQBbBU/Xz9fAwCeAJ4/UT9ogVE/aICXgAAAgB3/+wFCgXEABUAKwAAARUUAgYGIyImJgI1NTQSNjYzMhYWEgM1NC4CIyIOAhUVFB4CMzI+AgUKUprXhYHXnVZVnNeBhdebU781ZpNdWpFnODhpkVpekmU0AwZcpP78tmBgtgEEpFykAQO3YGC3/v3/AF6CyIhGRojIgl6DyYlGRonJAAACAHAEcQLJBdcABQAPAAABNRMzFQMlNTMVFBYXByYmAZJ0w9/+hqcqKklWXASEEQFCFf7C/lVPSGgtOi2P///+eP/sBVAF1gAmAAVGAAAHAAb+CP//AAAAAQAAAAMCTqtYHyJfDzz1ABsIAAAAAADE8BEuAAAAAOHUAm/6Gv3VCTEIcwAAAAkAAgAAAAAAAHjaY2BkYGDP+cfDwMDp9UvqnxenIVAEFXACAG+cBHIAeNpj7mFIYYACxj8QzNrIUM6syFAAZh//VwEAaU4HvgB42mNgYNCFwwKGfiCcDQATpAMLAHjaY2BkYGDgZFjJIMpQxsAO5iEAMwMjAB3kAUt42n2QRVYDQBBEK+7Z4e7uDhvcXbdxd88VuAt6Dq6E1BsaJ3ljv2tm2gA4cQsdNHoL+VFTL6yBXWMX1vLNi7AOk3gS1qMZ98IG9OJa2Eg9IezELObfWQPYMSysgRWdwlrqtcLGr1iaPupW4X4ScIok4nDT+yEpoziGHeTUGYYXV9x9tEMkPzlIyoGLI4UsFjHGkST76SVASiAnf6kgy31U+Q6qaB6uHNcILT+1PN+6eXtJK8PXYeWhHVP8Nc6xgCVak6RJTP/w0P7Tw48fWzji2CJVi/nb+nq5pioqU5WKJYcJjnacU/Gj/Vc2x3ydRIQ3XvV+hZ7ZKVV7lnb/n64FEVYv8vQyCi9fxpWa5AgyK/9nP7PUMz8q8aqssxxh8sAbFBtciwAAAHjaY2BmAIP/WQwpDFgAACofAdEA) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-greek-400-normal.woff2) format("woff2"),url(fonts/roboto-greek-400-normal.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-math-400-normal.woff2) format("woff2"),url(fonts/roboto-math-400-normal.woff) format("woff");unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-symbols-400-normal.woff2) format("woff2"),url(fonts/roboto-symbols-400-normal.woff) format("woff");unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-vietnamese-400-normal.woff2) format("woff2"),url(fonts/roboto-vietnamese-400-normal.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-latin-ext-400-normal.woff2) format("woff2"),url(fonts/roboto-latin-ext-400-normal.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-latin-400-normal.woff2) format("woff2"),url(fonts/roboto-latin-400-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} diff --git a/css/index-DEuo5tsF.chunk.css b/css/index-DEuo5tsF.chunk.css new file mode 100644 index 000000000..b3c47da00 --- /dev/null +++ b/css/index-DEuo5tsF.chunk.css @@ -0,0 +1 @@ +@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-cyrillic-ext-400-normal.woff2) format("woff2"),url(fonts/roboto-cyrillic-ext-400-normal.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-cyrillic-400-normal.woff2) format("woff2"),url(fonts/roboto-cyrillic-400-normal.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-greek-400-normal.woff2) format("woff2"),url(fonts/roboto-greek-400-normal.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-math-400-normal.woff2) format("woff2"),url(fonts/roboto-math-400-normal.woff) format("woff");unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-symbols-400-normal.woff2) format("woff2"),url(fonts/roboto-symbols-400-normal.woff) format("woff");unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-vietnamese-400-normal.woff2) format("woff2"),url(fonts/roboto-vietnamese-400-normal.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-latin-ext-400-normal.woff2) format("woff2"),url(fonts/roboto-latin-ext-400-normal.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url(fonts/roboto-latin-400-normal.woff2) format("woff2"),url(fonts/roboto-latin-400-normal.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} diff --git a/js/index-CggvRhHb.chunk.mjs.map b/js/index-CggvRhHb.chunk.mjs.map deleted file mode 100644 index f09e8dfca..000000000 --- a/js/index-CggvRhHb.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-CggvRhHb.chunk.mjs","sources":["../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-dom/client.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/styled-components/dist/styled-components.browser.esm.js","../node_modules/lodash.merge/index.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/prop-types/record.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/generate-class-names.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/intrinsic-component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/object-keys.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/object-values.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/apply-polymorphic-function-prop.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/apply-display-names.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/set-ref.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/use-fork-ref.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/color-picker/restrict-number.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/color-picker/map-number.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/color-picker/color-converters.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/get-elem-document-coords.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/slider/utils.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/palette/color.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/scrollbar.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/css/breakpoint.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/shadows/shadows.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/typography/font-weight.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/typography/font-variant.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/shape/border-radius-size.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/typography/typography.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/typography/entity/default-typography.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/common-styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/palette/entity/default-palette.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/shadows/entity/default-shadows.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/breakpoints/entity/default-breakpoints.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/roots/breakpoints/entity/create-breakpoints.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/theme-provider/theme-provider.context.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/konva/lib/Global.js","../node_modules/konva/lib/Util.js","../node_modules/konva/lib/Validators.js","../node_modules/konva/lib/Factory.js","../node_modules/konva/lib/Context.js","../node_modules/konva/lib/Canvas.js","../node_modules/konva/lib/DragAndDrop.js","../node_modules/konva/lib/Node.js","../node_modules/konva/lib/Container.js","../node_modules/konva/lib/PointerEvents.js","../node_modules/konva/lib/Stage.js","../node_modules/konva/lib/Shape.js","../node_modules/konva/lib/Layer.js","../node_modules/konva/lib/FastLayer.js","../node_modules/konva/lib/Group.js","../node_modules/konva/lib/Animation.js","../node_modules/konva/lib/Tween.js","../node_modules/konva/lib/_CoreInternals.js","../node_modules/konva/lib/shapes/Arc.js","../node_modules/konva/lib/shapes/Line.js","../node_modules/konva/lib/BezierFunctions.js","../node_modules/konva/lib/shapes/Path.js","../node_modules/konva/lib/shapes/Arrow.js","../node_modules/konva/lib/shapes/Circle.js","../node_modules/konva/lib/shapes/Ellipse.js","../node_modules/konva/lib/shapes/Image.js","../node_modules/konva/lib/shapes/Label.js","../node_modules/konva/lib/shapes/Rect.js","../node_modules/konva/lib/shapes/RegularPolygon.js","../node_modules/konva/lib/shapes/Ring.js","../node_modules/konva/lib/shapes/Sprite.js","../node_modules/konva/lib/shapes/Star.js","../node_modules/konva/lib/shapes/Text.js","../node_modules/konva/lib/shapes/TextPath.js","../node_modules/konva/lib/shapes/Transformer.js","../node_modules/konva/lib/shapes/Wedge.js","../node_modules/konva/lib/filters/Blur.js","../node_modules/konva/lib/filters/Brighten.js","../node_modules/konva/lib/filters/Contrast.js","../node_modules/konva/lib/filters/Emboss.js","../node_modules/konva/lib/filters/Enhance.js","../node_modules/konva/lib/filters/Grayscale.js","../node_modules/konva/lib/filters/HSL.js","../node_modules/konva/lib/filters/HSV.js","../node_modules/konva/lib/filters/Invert.js","../node_modules/konva/lib/filters/Kaleidoscope.js","../node_modules/konva/lib/filters/Mask.js","../node_modules/konva/lib/filters/Noise.js","../node_modules/konva/lib/filters/Pixelate.js","../node_modules/konva/lib/filters/Posterize.js","../node_modules/konva/lib/filters/RGB.js","../node_modules/konva/lib/filters/RGBA.js","../node_modules/konva/lib/filters/Sepia.js","../node_modules/konva/lib/filters/Solarize.js","../node_modules/konva/lib/filters/Threshold.js","../node_modules/konva/lib/_FullInternals.js","../node_modules/konva/lib/index.js","../node_modules/konva/lib/Core.js","../node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/react-reconciler/index.js","../node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js","../node_modules/react-reconciler/constants.js","../node_modules/react-konva/es/makeUpdates.js","../node_modules/react-konva/es/ReactKonvaHostConfig.js","../node_modules/its-fine/dist/index.js","../node_modules/react-konva/es/ReactKonvaCore.js","../node_modules/react-filerobot-image-editor/lib/utils/getDimensionsMinimalRatio.js","../node_modules/react-filerobot-image-editor/lib/utils/constants.js","../node_modules/react-filerobot-image-editor/lib/utils/cropImage.js","../node_modules/react-filerobot-image-editor/lib/actions/addFilter.js","../node_modules/react-filerobot-image-editor/lib/actions/hideLoader.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/react-filerobot-image-editor/lib/context/defaultConfig.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Global.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Util.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Validators.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Factory.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Context.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Canvas.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/DragAndDrop.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Node.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Container.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/PointerEvents.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Stage.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Shape.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Layer.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/FastLayer.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Group.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Animation.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/Tween.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/_CoreInternals.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Arc.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Line.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/BezierFunctions.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Path.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Arrow.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Circle.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Ellipse.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Image.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Label.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Rect.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/RegularPolygon.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Ring.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Sprite.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Star.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Text.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/TextPath.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Transformer.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/shapes/Wedge.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Blur.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Brighten.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Contrast.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Emboss.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Enhance.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Grayscale.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/HSL.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/HSV.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Invert.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Kaleidoscope.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Mask.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Noise.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Pixelate.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Posterize.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/RGB.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/RGBA.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Sepia.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Solarize.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/filters/Threshold.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/_FullInternals.js","../node_modules/react-filerobot-image-editor/node_modules/konva/lib/index.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/BaseFilters.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/BlackAndWhite.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Clarendon.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Gingham.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Moon.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Lark.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Reyes.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Juno.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Slumber.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Crema.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Ludwig.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Aden.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Perpetua.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Amaro.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Mayfair.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Rise.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Hudson.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Valencia.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/XPro2.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Sierra.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Willow.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/LoFi.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Hefe.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Nashville.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Stinson.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Vesper.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Earlybird.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Brannan.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Sutro.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Toaster.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Walden.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/NinteenSeventySeven.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Kelvin.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Maven.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Ginza.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Skyline.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Dogpatch.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Brooklyn.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Helena.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Ashby.js","../node_modules/react-filerobot-image-editor/lib/custom/filters/Charmes.js","../node_modules/react-filerobot-image-editor/lib/utils/filterStrToClass.js","../node_modules/react-filerobot-image-editor/lib/custom/finetunes/Warmth.js","../node_modules/react-filerobot-image-editor/lib/custom/finetunes/CustomThreshold.js","../node_modules/react-filerobot-image-editor/lib/utils/finetunesStrsToClasses.js","../node_modules/react-filerobot-image-editor/lib/context/getInitialAppState.js","../node_modules/react-filerobot-image-editor/lib/utils/extractCurrentDesignState.js","../node_modules/react-filerobot-image-editor/lib/actions/redo.js","../node_modules/react-filerobot-image-editor/lib/actions/reset.js","../node_modules/react-filerobot-image-editor/lib/actions/setFeedback.js","../node_modules/react-filerobot-image-editor/lib/actions/showLoader.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/utils/functions/intrinsic-component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/brightness.js","../node_modules/react-filerobot-image-editor/lib/utils/isDefaultZeroValuesOnly.js","../node_modules/react-filerobot-image-editor/lib/context/AppContext.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/hooks/use-theme.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/theme/hooks/use-media-query.js","../node_modules/react-filerobot-image-editor/lib/context/defaultTranslations.js","../node_modules/react-filerobot-image-editor/lib/utils/translator.js","../node_modules/react-filerobot-image-editor/lib/context/appReducer.js","../node_modules/react-filerobot-image-editor/lib/context/AppProvider.js","../node_modules/react-filerobot-image-editor/lib/context/AppProviderOverridenValue.js","../node_modules/react-filerobot-image-editor/lib/hooks/useStore.js","../node_modules/react-filerobot-image-editor/lib/hooks/useFinetune.js","../node_modules/react-filerobot-image-editor/lib/hooks/useFilter.js","../node_modules/react-filerobot-image-editor/lib/utils/randomId.js","../node_modules/react-filerobot-image-editor/lib/utils/debounce.js","../node_modules/react-filerobot-image-editor/lib/utils/getScrollOffset.js","../node_modules/react-filerobot-image-editor/lib/utils/getElemDocumentCoords.js","../node_modules/react-filerobot-image-editor/lib/utils/restrictNumber.js","../node_modules/react-filerobot-image-editor/lib/utils/getPointerOffsetPositionBoundedToObject.js","../node_modules/react-filerobot-image-editor/lib/hooks/useAnnotation/getBoundingRectUnScaled.js","../node_modules/react-filerobot-image-editor/lib/hooks/useAnnotation/getNewAnnotationPreview.js","../node_modules/react-filerobot-image-editor/lib/hooks/useAnnotation/previewThenCallAnnotationAdding.js","../node_modules/react-filerobot-image-editor/lib/hooks/useDebouncedCallback.js","../node_modules/react-filerobot-image-editor/lib/hooks/useAnnotation/index.js","../node_modules/react-filerobot-image-editor/lib/hooks/useAppReducer.js","../node_modules/react-filerobot-image-editor/lib/hooks/useAnnotationEvents.js","../node_modules/react-filerobot-image-editor/lib/hooks/useResizeObserver.js","../node_modules/react-filerobot-image-editor/lib/hooks/usePhoneScreen.js","../node_modules/react-filerobot-image-editor/lib/utils/mapNumber.js","../node_modules/react-filerobot-image-editor/lib/utils/mapCropBox.js","../node_modules/react-filerobot-image-editor/lib/utils/getSizeAfterRotation.js","../node_modules/react-filerobot-image-editor/lib/utils/imageToBase64.js","../node_modules/react-filerobot-image-editor/lib/utils/getFileFullName.js","../node_modules/react-filerobot-image-editor/lib/utils/sha1.js","../node_modules/react-filerobot-image-editor/lib/utils/getImageSealingParams.js","../node_modules/react-filerobot-image-editor/lib/utils/rgbaToHexa.js","../node_modules/react-filerobot-image-editor/lib/utils/toPrecisedFloat.js","../node_modules/react-filerobot-image-editor/lib/utils/operationsToCloudimageUrl.js","../node_modules/react-filerobot-image-editor/lib/hooks/useTransformedImgData.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/position/position.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/color/badge-color.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/color/button-color.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/color/icon-button-color.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/size/button-size.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/types/size/input-size.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/label/types/type.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/label/label.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input/input.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/label/label.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/label/label.component.js","../node_modules/react-filerobot-image-editor/lib/components/ToolsBar/ToolsBar.styled.js","../node_modules/react-filerobot-image-editor/lib/components/ToolsBar/ToolsBarItemButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Brightness/Brightness.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/hooks/use-controlled.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/hooks/use-enhanced-effect.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/hooks/use-event-callback.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/slider/types/label-tooltip.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/slider/slider.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/slider/slider.component.js","../node_modules/react-filerobot-image-editor/lib/components/common/Slider/Slider.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/Slider/index.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/icon.prop-types.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-bottom.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/arrow-tick/arrow-tick.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/arrow-tick/arrow-tick.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/arrow-tick/arrow-tick.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/accordion-header/accordion-header.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/accordion-header/accordion-header.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/accordion-details/accordion-details.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/accordion-details/accordion-details.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/accordion/accordion.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/accordion/accordion.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/tick.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/copy-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/eye-open.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/eye-closed.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input/input.utils.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input/types/type.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input/input.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input/input.component.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/hooks/use-portal.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popper/types/position.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popper/types/strategy.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popper/popper.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popper/popper.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popper/popper.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu/menu.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu/menu.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/types/size.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/menu-item.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/menu-item.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/menu-item.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/menu-item-icon.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/menu-item-label.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/menu-item/menu-item-actions.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/cross-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/form-hint/form-hint.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/form-hint/form-hint.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/form-hint/form-hint.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/badge/badge.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/badge/badge.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/badge/badge.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/spinner.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/two-arrows-right.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/two-arrows-left.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/button/types/type.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/button/types/side-bar.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/button/button.utils.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/button/button.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/button/button.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/button/button.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/image-2.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/undo.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/redo.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/line.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/image-filters.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/crop.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/crop-landscape.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/resize.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/watermark.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/images.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/reset.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/text.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/text-align-left.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/text-align-center.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/rotation-left.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/rotation-right.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/lock-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/unlock-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/point.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/about.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/warning.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/info-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/image-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/custom.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/flip-y.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/flip-x.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/ellipse.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/landscape.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/stroke.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/transparency.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/shadow.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/radius-corner.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/position.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/spacing.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/padding.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/polygon.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/polygon-sides.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-right.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/font-italic.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/font-bold.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/upload-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-left-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-right-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/plus-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-tool.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/compare.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/minus-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/tempreture.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/contrast.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/finetune.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/saturation.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/annotate.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/blur.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/pin-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/duplicate.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/delete-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/crop-frame.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/portrait.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/warning-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/success.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/error.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/error-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/loading.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/color-picker.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/menu.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/move-down-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/move-up-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-sidebar-left-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/arrow-sidebar-right-outline.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/annotation.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/icons/rotate-90.js","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/cross-button/types/size.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/cross-button/cross-button.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/cross-button/cross-button.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/select/select.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/select/select.utils.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/select/select.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/hooks/use-drag.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/color-picker/color-picker.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/color-picker/color-item.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/color-picker/color-picker.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/icon-button/icon-button.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/icon-button/icon-button.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/icon-button/icon-button.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/utils/functions/on-click-by-mouse-down.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/textarea/textarea.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/textarea/textarea.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/textarea/textarea.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input-group/types/type.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input-group/input-group.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/input-group/input-group.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal/types/size.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal/modal-menu-context.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal/modal.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal/modal.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal/modal.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-actions/types/align.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-actions/modal-actions.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-actions/modal-actions.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-content/modal-content.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-content/modal-content.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-title/types/variant.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-title/modal-title.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/modal-title/modal-title.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup-status/types/status.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup-status/popup-status.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup-status/popup-status.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup-content/popup-content.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup-content/popup-content.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup-content/popup-content.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup/types/horizontal.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup/types/vertical.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup/popup.mixin.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup/popup.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/popup/popup.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/rotation-slider/rotation-slider.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/rotation-slider/rotation-slider.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/select-group/select-group.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/select-group/select-group.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/backdrop/backdrop.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/backdrop/backdrop.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer.styles.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer.context.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer-item-text-component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer-item-icon.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/types/variant.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer-header.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer-body.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer-list.component.js","../node_modules/react-filerobot-image-editor/node_modules/@scaleflex/ui/core/drawer/drawer-item.component.js","../node_modules/react-filerobot-image-editor/lib/components/tools/tools.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Brightness/BrightnessOptions.js","../node_modules/react-filerobot-image-editor/lib/utils/getZoomFitFactor.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/Crop.constants.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/Crop.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/CropPresetItem.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/CropPresetGroup.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/CropPresetGroupsFolder.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/CropPresetsOption.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Crop/Crop.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Flip/FlipX.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Flip/FlipY.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rotate/RotateButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rotate/Rotate.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rotate/RotateOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Contrast/Contrast.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Contrast/ContrastOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/HSV/HSV.js","../node_modules/react-filerobot-image-editor/lib/components/tools/HSV/HSVOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Blur/Blur.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Blur/BlurOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Warmth/Warmth.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Warmth/WarmthOptions.js","../node_modules/react-filerobot-image-editor/lib/components/common/Carousel/Carousel.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/Carousel/index.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Filters/Filters.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Filters/FilterItem.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Filters/Filters.constants.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Filters/Filters.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextButton.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/AnnotationOptions.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/OpacityField.js","../node_modules/react-filerobot-image-editor/lib/components/common/ColorPickerModal/ColorPickerModal.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/ColorPickerModal/index.js","../node_modules/react-filerobot-image-editor/lib/components/common/ColorInput/ColorInput.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/ColorInput/index.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/StrokeFields.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/ShadowFields.js","../node_modules/react-filerobot-image-editor/lib/utils/mapPositionStringToPoint.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/AnnotationOptions.constants.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/PositionFields.js","../node_modules/react-filerobot-image-editor/lib/components/common/AnnotationOptions/index.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/TextOptions.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/TextSpacingsFields.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/TextAlignmentFields.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/TextOptions.constants.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/handleTextChangeArea.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/TextControls.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Text/TextOptions/index.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Image/ImageButton.js","../node_modules/react-filerobot-image-editor/lib/components/common/HiddenUploadInput/HiddenUploadInput.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/HiddenUploadInput/index.js","../node_modules/react-filerobot-image-editor/lib/components/common/ButtonWithMenu/ButtonWithMenu.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/ButtonWithMenu/index.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Image/ImageControls.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Image/Image.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Image/ImagesGallery.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Image/ImageOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rect/RectButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rect/RectCornerField.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rect/Rect.constants.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Rect/RectOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Ellipse/EllipseButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Ellipse/EllipseOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Pen/PenButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Pen/PenOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Line/LineButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Line/LineOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Arrow/ArrowButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Arrow/ArrowOptions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Polygon/PolygonButton.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Polygon/PolygonSidesField.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Polygon/Polygon.constants.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Polygon/PolygonOptions.js","../node_modules/react-filerobot-image-editor/lib/utils/getProperDimensions.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Resize/Resize.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Resize/Resize.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Watermark/Watermark.styled.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Watermark/WatermarksGallery.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Watermark/WatermarkPadding.js","../node_modules/react-filerobot-image-editor/lib/components/tools/Watermark/Watermark.js","../node_modules/react-filerobot-image-editor/lib/components/tools/tools.constants.js","../node_modules/react-filerobot-image-editor/lib/actions/selectTab.js","../node_modules/react-filerobot-image-editor/lib/actions/undo.js","../node_modules/react-filerobot-image-editor/lib/actions/setFinetune.js","../node_modules/react-filerobot-image-editor/lib/actions/setAnnotation.js","../node_modules/react-filerobot-image-editor/lib/actions/changePointerIcon.js","../node_modules/react-filerobot-image-editor/lib/actions/selectAnnotation.js","../node_modules/react-filerobot-image-editor/lib/actions/clearAnnotationsSelections.js","../node_modules/react-filerobot-image-editor/lib/actions/toggleOriginalImageDisplay.js","../node_modules/react-filerobot-image-editor/lib/actions/selectTool.js","../node_modules/react-filerobot-image-editor/lib/actions/toggleFlip.js","../node_modules/react-filerobot-image-editor/lib/actions/setCrop.js","../node_modules/react-filerobot-image-editor/lib/actions/changeRotation.js","../node_modules/react-filerobot-image-editor/lib/utils/calculateZoomData.js","../node_modules/react-filerobot-image-editor/lib/actions/zoomCanvas.js","../node_modules/react-filerobot-image-editor/lib/actions/setCanvasSize.js","../node_modules/react-filerobot-image-editor/lib/actions/setOriginalImage.js","../node_modules/react-filerobot-image-editor/lib/actions/setShownImageDimensions.js","../node_modules/react-filerobot-image-editor/lib/actions/removeAnnotations.js","../node_modules/react-filerobot-image-editor/lib/actions/duplicateAnnotations.js","../node_modules/react-filerobot-image-editor/lib/actions/enableTextContentEdit.js","../node_modules/react-filerobot-image-editor/lib/actions/setResize.js","../node_modules/react-filerobot-image-editor/lib/actions/setSaved.js","../node_modules/react-filerobot-image-editor/lib/utils/deepMerge.js","../node_modules/react-filerobot-image-editor/lib/actions/updateState.js","../node_modules/react-filerobot-image-editor/lib/actions/setLatestColor.js","../node_modules/react-filerobot-image-editor/lib/actions/setShowTabsMenu.js","../node_modules/react-filerobot-image-editor/lib/actions/index.js","../node_modules/react-filerobot-image-editor/lib/utils/getProperImageToCanvasSpacing.js","../node_modules/react-filerobot-image-editor/lib/utils/getCenterRotatedPoint.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/nodesCommonPropTypes.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/RectNode.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/EllipseNode.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/PolygonNode.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/TextNode.js","../node_modules/react-filerobot-image-editor/lib/utils/extractNameFromUrl.js","../node_modules/react-filerobot-image-editor/lib/utils/loadImage.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/ImageNode.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/LineNode.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/ArrowNode.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/AnnotationNodes.constants.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/MemoizedAnnotation.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/AnnotationNodes/index.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/PreviewGroup.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/DesignLayer/index.js","../node_modules/react-filerobot-image-editor/lib/utils/compareRatios.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/TransformersLayer/TransformersLayer.utils.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/TransformersLayer/CropTransformer.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/TransformersLayer/NodesTransformer.js","../node_modules/react-filerobot-image-editor/lib/components/Layers/TransformersLayer/index.js","../node_modules/react-filerobot-image-editor/lib/components/NodeControls/NodeControls.styled.js","../node_modules/react-filerobot-image-editor/lib/components/NodeControls/index.js","../node_modules/react-filerobot-image-editor/lib/components/MainCanvas/touchZoomingEvents.js","../node_modules/react-filerobot-image-editor/lib/components/MainCanvas/MainCanvas.styled.js","../node_modules/react-filerobot-image-editor/lib/components/MainCanvas/CanvasNode.js","../node_modules/react-filerobot-image-editor/lib/components/MainCanvas/index.js","../node_modules/react-filerobot-image-editor/lib/components/common/Separator/Separator.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/Separator/index.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/Topbar.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/Modal/Modal.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/Modal/index.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/ConfirmationModal.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/CloseButton.js","../node_modules/react-filerobot-image-editor/lib/utils/getDefaultSaveQuality.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/SaveButton.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/ResetButton.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/UndoButton.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/RedoButton.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/Topbar.constants.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/CanvasZooming.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/ImageDimensionsAndDisplayToggle.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/BackButton.js","../node_modules/react-filerobot-image-editor/lib/components/Topbar/index.js","../node_modules/react-filerobot-image-editor/lib/components/Tabs/Tabs.styled.js","../node_modules/react-filerobot-image-editor/lib/components/Tabs/TabItem.js","../node_modules/react-filerobot-image-editor/lib/components/Tabs/Tabs.constants.js","../node_modules/react-filerobot-image-editor/lib/components/Tabs/index.js","../node_modules/react-filerobot-image-editor/lib/components/ToolsBar/ToolsBarItemOptionsWrapper.js","../node_modules/react-filerobot-image-editor/lib/components/ToolsBar/index.js","../node_modules/react-filerobot-image-editor/lib/components/FeedbackPopup/index.js","../node_modules/react-filerobot-image-editor/lib/components/common/Spinner/Spinner.styled.js","../node_modules/react-filerobot-image-editor/lib/components/common/Spinner/index.js","../node_modules/react-filerobot-image-editor/lib/utils/cloudimageQueryToDesignState.js","../node_modules/react-filerobot-image-editor/lib/utils/isSameImage.js","../node_modules/react-filerobot-image-editor/lib/hooks/useUpdateEffect.js","../node_modules/react-filerobot-image-editor/lib/components/App/App.styled.js","../node_modules/react-filerobot-image-editor/lib/components/TabsDrawer/index.js","../node_modules/react-filerobot-image-editor/lib/components/App/index.js","../node_modules/react-filerobot-image-editor/lib/utils/assignFinetuneNamesToKonva.js","../node_modules/react-filerobot-image-editor/lib/components/AssemblyPoint/globalStyles.js","../node_modules/react-filerobot-image-editor/lib/components/AssemblyPoint/index.js","../node_modules/filerobot-image-editor/lib/index.js"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import{typeOf as e,isElement as t,isValidElementType as n}from\"react-is\";import r,{useState as o,useContext as s,useMemo as i,useEffect as a,useRef as c,createElement as u,useLayoutEffect as l}from\"react\";import d from\"shallowequal\";import h from\"@emotion/stylis\";import p from\"@emotion/unitless\";import f from\"@emotion/is-prop-valid\";import m from\"hoist-non-react-statics\";function y(){return(y=Object.assign||function(e){for(var t=1;t ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document ``\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"}:{};function R(){for(var e=arguments.length<=0?void 0:arguments[0],t=[],n=1,r=arguments.length;n1?t-1:0),r=1;r0?\" Args: \"+n.join(\", \"):\"\")):new Error(R.apply(void 0,[O[e]].concat(n)).trim())}var j=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&D(16,\"\"+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var s=r;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,s=r;s1<<30)&&D(16,\"\"+t),T.set(e,t),x.set(t,e),t},B=function(e){return x.get(e)},z=function(e,t){t>=k&&(k=t+1),T.set(e,t),x.set(t,e)},M=\"style[\"+N+'][data-styled-version=\"5.3.11\"]',G=new RegExp(\"^\"+N+'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),L=function(e,t,n){for(var r,o=n.split(\",\"),s=0,i=o.length;s=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(N))return r}}(n),s=void 0!==o?o.nextSibling:null;r.setAttribute(N,\"active\"),r.setAttribute(\"data-styled-version\",\"5.3.11\");var i=Y();return i&&r.setAttribute(\"nonce\",i),n.insertBefore(r,s),r},H=function(){function e(e){var t=this.element=q(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(u+=e+\",\")})),r+=\"\"+a+c+'{content:\"'+u+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),Z=/(a)(d)/gi,K=function(e){return String.fromCharCode(e+(e>25?39:97))};function Q(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=K(t%52)+n;return(K(t%52)+n).replace(Z,\"$1-$2\")}var ee=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},te=function(e){return ee(5381,e)};function ne(e){for(var t=0;t>>0);if(!t.hasNameForId(r,i)){var a=n(s,\".\"+i,void 0,r);t.insertRules(r,i,a)}o.push(i),this.staticRulesId=i}else{for(var c=this.rules.length,u=ee(this.baseHash,n.hash),l=\"\",d=0;d>>0);if(!t.hasNameForId(r,m)){var y=n(l,\".\"+m,void 0,r);t.insertRules(r,m,y)}o.push(m)}}return o.join(\" \")},e}(),se=/^\\s*\\/\\/.*$/gm,ie=[\":\",\"[\",\".\",\"#\"];function ae(e){var t,n,r,o,s=void 0===e?w:e,i=s.options,a=void 0===i?w:i,c=s.plugins,u=void 0===c?S:c,l=new h(a),d=[],p=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,o,s,i,a,c,u,l,d){switch(n){case 1:if(0===l&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===u)return r+\"/*|*/\";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),\"\";default:return r+(0===d?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){d.push(e)})),f=function(e,r,s){return 0===r&&-1!==ie.indexOf(s[n.length])||s.match(o)?e:\".\"+t};function m(e,s,i,a){void 0===a&&(a=\"&\");var c=e.replace(se,\"\"),u=s&&i?i+\" \"+s+\" { \"+c+\" }\":c;return t=a,n=s,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),o=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),l(i||!s?\"\":s,u)}return l.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,f))},p,function(e){if(-2===e){var t=d;return d=[],t}}])),m.hash=u.length?u.reduce((function(e,t){return t.name||D(15),ee(e,t.name)}),5381).toString():\"\",m}var ce=r.createContext(),ue=ce.Consumer,le=r.createContext(),de=(le.Consumer,new X),he=ae();function pe(){return s(ce)||de}function fe(){return s(le)||he}function me(e){var t=o(e.stylisPlugins),n=t[0],s=t[1],c=pe(),u=i((function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=i((function(){return ae({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return a((function(){d(n,e.stylisPlugins)||s(e.stylisPlugins)}),[e.stylisPlugins]),r.createElement(ce.Provider,{value:u},r.createElement(le.Provider,{value:l},\"production\"!==process.env.NODE_ENV?r.Children.only(e.children):e.children))}var ye=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=he);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return D(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=he),this.name+e.hash},e}(),ve=/([A-Z])/,ge=/([A-Z])/g,Se=/^ms-/,we=function(e){return\"-\"+e.toLowerCase()};function Ee(e){return ve.test(e)?e.replace(ge,we).replace(Se,\"-ms-\"):e}var be=function(e){return null==e||!1===e||\"\"===e};function _e(e,n,r,o){if(Array.isArray(e)){for(var s,i=[],a=0,c=e.length;a1?t-1:0),r=1;r1?t-1:0),i=1;i?@[\\\\\\]^`{|}~-]+/g,De=/(^-|-$)/g;function je(e){return e.replace(Re,\"-\").replace(De,\"\")}var Te=function(e){return Q(te(e)>>>0)};function xe(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var ke=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Ve=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function Be(e,t,n){var r=e[n];ke(t)&&ke(r)?ze(r,t):e[n]=t}function ze(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(t,[\"componentId\"]),s=r&&r+\"-\"+(xe(e)?e:je(b(e)));return Ye(e,y({},o,{attrs:g,componentId:s}),n)},Object.defineProperty(A,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=o?ze({},e.defaultProps,t):t}}),\"production\"!==process.env.NODE_ENV&&(Pe(p,v),A.warnTooManyClasses=function(e,t){var n={},r=!1;return function(o){if(!r&&(n[o]=!0,Object.keys(n).length>=200)){var s=t?' with the id of \"'+t+'\"':\"\";console.warn(\"Over 200 classes were generated for component \"+e+s+\".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n \"),r=!0,n={}}}}(p,v)),Object.defineProperty(A,\"toString\",{value:function(){return\".\"+A.styledComponentId}}),i&&m(A,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),A}var qe=function(e){return function e(t,r,o){if(void 0===o&&(o=w),!n(r))return D(1,String(r));var s=function(){return t(r,o,Ae.apply(void 0,arguments))};return s.withConfig=function(n){return e(t,r,y({},o,{},n))},s.attrs=function(n){return e(t,r,y({},o,{attrs:Array.prototype.concat(o.attrs,n).filter(Boolean)}))},s}(Ye,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"textPath\",\"tspan\"].forEach((function(e){qe[e]=qe(e)}));var He=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=ne(e),X.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var o=r(_e(this.rules,t,n,r).join(\"\"),\"\"),s=this.componentId+e;n.insertRules(s,s,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&X.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function $e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"),t.server&&h(d,e,t,o,n),l((function(){if(!t.server)return h(d,e,t,o,n),function(){return u.removeStyles(d,t)}}),[d,e,t,o,n]),null}function h(e,t,n,r,o){if(u.isStatic)u.renderStyles(e,P,n,o);else{var s=y({},t,{theme:Oe(t,r,d.defaultProps)});u.renderStyles(e,s,n,o)}}return\"production\"!==process.env.NODE_ENV&&Pe(a),r.memo(d)}function We(e){\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\"+t+\"\"},this.getStyleTags=function(){return e.sealed?D(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return D(2);var n=((t={})[N]=\"\",t[\"data-styled-version\"]=\"5.3.11\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),o=Y();return o&&(n.nonce=o),[r.createElement(\"style\",y({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new X({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?D(2):r.createElement(me,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return D(3)},e}(),Je=function(e){var t=r.forwardRef((function(t,n){var o=s(Me),i=e.defaultProps,a=Oe(t,o,i);return\"production\"!==process.env.NODE_ENV&&void 0===a&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"'+b(e)+'\"'),r.createElement(e,y({},t,{theme:a,ref:n}))}));return m(t,e),t.displayName=\"WithTheme(\"+b(e)+\")\",t},Xe=function(){return s(Me)},Ze={StyleSheet:X,masterSheet:de};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"),\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[\"__styled-components-init__\"]=window[\"__styled-components-init__\"]||0,1===window[\"__styled-components-init__\"]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"),window[\"__styled-components-init__\"]+=1);export default qe;export{Ue as ServerStyleSheet,ue as StyleSheetConsumer,ce as StyleSheetContext,me as StyleSheetManager,Ge as ThemeConsumer,Me as ThemeContext,Le as ThemeProvider,Ze as __PRIVATE__,$e as createGlobalStyle,Ae as css,_ as isStyledComponent,We as keyframes,Xe as useTheme,A as version,Je as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var record = function record(keys, valueType) {\n return keys.reduce(function (toObject, key) {\n return Object.assign(toObject, _defineProperty({}, key, valueType));\n }, {});\n};","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nexport function generateClassNames(componentName, subClassNames) {\n var generateClassName = function generateClassName(subClassName) {\n return \"Sfx\".concat(componentName).concat(subClassName ? \"-\".concat(subClassName) : '');\n };\n var classNameArray = [];\n if (subClassNames) {\n if (Array.isArray(subClassNames)) {\n classNameArray.push.apply(classNameArray, _toConsumableArray(subClassNames.filter(function (subClassName) {\n return typeof subClassName === 'string';\n }).map(function (subClassName) {\n return generateClassName(subClassName);\n })));\n } else if (typeof subClassNames === 'string') {\n classNameArray.push(generateClassName(subClassNames));\n }\n }\n if (classNameArray.length === 0) {\n classNameArray.push(generateClassName());\n }\n return classNameArray.join(' ');\n}","import { forwardRef } from 'react';\n/**\r\n * Wrapper around React's `forwardRef` function, which adds a `displayName` to each component\r\n * created using it\r\n */\nexport function intrinsicComponent(render, displayName) {\n var component = /*#__PURE__*/forwardRef(render);\n // eslint-disable-next-line immutable/no-mutation\n component.displayName = displayName || render.name;\n return component;\n}","/**\r\n * Type-safe Object.keys\r\n */\nexport function objectKeys(object) {\n return Object.keys(object);\n}","/**\r\n * Type-safe Object.values\r\n */\nexport function objectValues(object) {\n return Object.values(object);\n}","/**\r\n * If your prop can be either a function or a plain value, this function handles\r\n * its usage for you – just provide the reference for a 'maybe function' and the arguments\r\n * to call it with\r\n */\nexport function applyPolymorphicFunctionProp(prop) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return typeof prop === 'function' ? prop.apply(void 0, args) : prop;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n/**\r\n * If you are using a namespace for your styled components, this can come in handy giving each\r\n * styled component in this namespace a displayName which gives better debugging experience\r\n */\nexport function applyDisplayNames(styledObject) {\n return Object.keys(styledObject).reduce(function (newStyledObject, styledComponentName) {\n var styledComponent = styledObject[styledComponentName];\n styledComponent.displayName = \"\".concat(styledComponentName);\n return Object.assign(newStyledObject, _defineProperty({}, styledComponentName, styledComponent));\n }, {});\n}","/**\r\n * passes {value} to {ref}\r\n * Useful if you want to expose the ref of an inner component to the public API\r\n * while still using it inside the component.\r\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\r\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import * as React from 'react';\nimport setRef from './set-ref';\nexport function useForkRef(refA, refB) {\n /**\r\n * This will create a new function if the ref props change and are defined.\r\n * This means react will call the old forkRef with `null` and the new forkRef\r\n * with the ref. Cleanup naturally emerges from this behavior.\r\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","export function restrictNumber(number) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 ? arguments[2] : undefined;\n // we are not assigning default value for it as if max was null it will override the default value.\n var currentMax = max || 1000000;\n var convertedNumber = +number;\n return Math.min(Math.max(min, convertedNumber), currentMax);\n}","export function mapNumber(number, oldMin, oldMax, newMin, newMax) {\n return (number - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin;\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nexport var rgbStringToArray = function rgbStringToArray(rgbColorString) {\n return rgbColorString.replaceAll(/[^\\d,]/gi, '').split(',').map(function (n) {\n return +n;\n });\n};\nexport var hexToRgb = function hexToRgb(hexColor) {\n // if (!hexColor) return { r: 0, g: 0, b: 0 };\n if (!hexColor) return [0, 0, 0];\n return [Number.parseInt(hexColor.slice(1, 3), 16), Number.parseInt(hexColor.slice(3, 5), 16), Number.parseInt(hexColor.slice(5, 7), 16)];\n};\nvar rgbChannelToHex = function rgbChannelToHex(channel) {\n return channel.toString(16).padStart(2, '0');\n};\nexport var rgbToHex = function rgbToHex() {\n for (var _len = arguments.length, rgbColor = new Array(_len), _key = 0; _key < _len; _key++) {\n rgbColor[_key] = arguments[_key];\n }\n return \"#\".concat(rgbColor.map(rgbChannelToHex).join(''));\n};\nexport var hslToHex = function hslToHex(h, s, l) {\n var dividedL = l / 100;\n var a = s * Math.min(dividedL, 1 - dividedL) / 100;\n var f = function f(n) {\n var k = (n + h / 30) % 12;\n var color = dividedL - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return rgbChannelToHex(Math.round(255 * color));\n };\n return \"#\".concat(f(0)).concat(f(8)).concat(f(4));\n};\nexport var rgbToHsl = function rgbToHsl() {\n for (var _len2 = arguments.length, rgbColor = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rgbColor[_key2] = arguments[_key2];\n }\n var r = rgbColor[0],\n g = rgbColor[1],\n b = rgbColor[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = 0;\n s = 0;\n } else {\n var diff = max - min;\n s = l > 0.5 ? diff / (2 - max - min) : diff / (max + min);\n switch (max) {\n case r:\n h = (g - b) / diff + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / diff + 2;\n break;\n case b:\n h = (r - g) / diff + 4;\n break;\n default:\n h = 0;\n }\n h /= 6;\n }\n\n // * 360 for having the hue in degrees\n return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)];\n};\nexport var colorToHsl = function colorToHsl(color) {\n if (color.startsWith('#')) {\n var hex = color;\n if (color.length === 4) {\n hex = \"#\".concat(color[1]).concat(color[1]).concat(color[2]).concat(color[2]).concat(color[3]).concat(color[3]);\n }\n return rgbToHsl.apply(void 0, _toConsumableArray(hexToRgb(hex)));\n }\n if (color.startsWith('rgb')) {\n var colorInRgb = rgbStringToArray(color);\n return rgbToHsl.apply(void 0, _toConsumableArray(colorInRgb));\n }\n\n // if the color is in text and no one from previous then return the default color which is black\n if (typeof color === 'string') {\n return [0, 0, 0];\n }\n return color;\n};\nexport var colorToRgb = function colorToRgb(color) {\n // we are not handling (hsl/color name) here cause we are accepting only HEX and RGB colors as default colors from user.\n if (color.startsWith('#')) {\n return hexToRgb(color);\n }\n if (color.startsWith('rgb')) {\n return rgbStringToArray(color);\n }\n if (typeof color === 'string') {\n return [0, 0, 0];\n }\n return color;\n};\nexport var colorToHex = function colorToHex(color) {\n if (color.startsWith('#')) {\n if (color.length === 7) {\n return color;\n }\n return \"#\".concat(color[0]).concat(color[0]).concat(color[1]).concat(color[1]).concat(color[2]).concat(color[2]);\n }\n if (color.startsWith('rgb')) {\n return rgbToHex.apply(void 0, _toConsumableArray(rgbStringToArray(color)));\n }\n if (typeof color === 'string') {\n return '#000000';\n }\n return color;\n};\nvar checkIsBlack = function checkIsBlack(s, l) {\n return l === 0 && (s === 0 || s === 1);\n};\nvar checkIsWhite = function checkIsWhite(s, l) {\n return s === 0 && l === 1;\n};\n\n// both hsv and hsl values are in [0, 1] except h is in [0, 360]\nexport var hsvToHsl = function hsvToHsl(h, s, v) {\n var newS = s;\n var l = (2 - s) * v / 2;\n if (l !== 0) {\n if (l === 1) {\n newS = 0;\n } else if (l < 0.5) {\n newS = newS * v / (l * 2);\n } else {\n newS = newS * v / (2 - l * 2);\n }\n }\n var isBlack = checkIsBlack(newS, l);\n return [isBlack || checkIsWhite(newS, l) ? 0 : h, isBlack ? 0 : Math.round(newS * 100), Math.round(l * 100)];\n};\n\n// both hsv and hsl values are in [0, 1] except h is in [0, 360]\nexport var hslToHsv = function hslToHsv(h, s, l) {\n var newS = s;\n var newL = l * 2;\n newS *= newL <= 1 ? newL : 2 - newL;\n var v = (newL + newS) / 2;\n newS = 2 * newS / (newL + newS);\n\n // return [h, newS, v];\n var isBlack = checkIsBlack(newS, l);\n return [isBlack || checkIsWhite(newS, l) ? 0 : h, isBlack ? 0 : Math.round(newS * 100), Math.round(v * 100)];\n};\n\n// TODO: validating 3 color code for Hex\n// /^#([\\da-f]{3}){1,2}$/i.test(color)colorToHex\nexport var validateHex = function validateHex(color) {\n return /^#[\\da-f]{6}$/i.test(color);\n};","export function getElemDocumentCoords(elem) {\n if (!elem) {\n return null;\n }\n var box = elem.getBoundingClientRect();\n var _document = document,\n body = _document.body;\n var docEl = document.documentElement;\n var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return {\n top: Math.round(top),\n left: Math.round(left),\n width: box.width,\n height: box.height\n };\n}","export function asc(a, b) {\n return a - b;\n}\nexport function valueToPercent(value, min, max) {\n return (value - min) * 100 / (max - min);\n}\nexport function percentToValue(percent, min, max) {\n return (max - min) * percent + min;\n}\nfunction getDecimalPrecision(num) {\n // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n if (Math.abs(num) < 1) {\n var parts = num.toExponential().split('e-');\n var matissaDecimalPart = parts[0].split('.')[1];\n return (matissaDecimalPart ? matissaDecimalPart.length : 0) + Number.parseInt(parts[1], 10);\n }\n var decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\nexport function roundValueToStep(value, step, min) {\n var nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\nexport function setValueIndex(_ref) {\n var values = _ref.values,\n newValue = _ref.newValue,\n index = _ref.index;\n var output = values.slice();\n output[index] = newValue;\n return output.sort(asc);\n}\nexport function findClosest(values, currentValue) {\n var _values$reduce = values.reduce(function (acc, value, index) {\n var distance = Math.abs(currentValue - value);\n if (acc === null || distance < acc.distance || distance === acc.distance) {\n return {\n distance: distance,\n index: index\n };\n }\n return acc;\n }, null),\n closestIndex = _values$reduce.index;\n return closestIndex;\n}\nexport function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\nexport function clamp(value, min, max) {\n if (value == null) {\n return min;\n }\n return Math.min(Math.max(min, value), max);\n}\nexport function trackFinger(event, touchId) {\n if (touchId.current !== undefined && event.changedTouches) {\n for (var i = 0; i < event.changedTouches.length; i += 1) {\n var touch = event.changedTouches[i];\n if (touch.identifier === touchId.current) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n return false;\n }\n return {\n x: event.clientX,\n y: event.clientY\n };\n}\nexport var axisProps = {\n horizontal: {\n offset: function offset(percent) {\n return {\n left: \"\".concat(percent, \"%\")\n };\n },\n leap: function leap(percent) {\n return {\n width: \"\".concat(percent, \"%\")\n };\n }\n },\n 'horizontal-reverse': {\n offset: function offset(percent) {\n return {\n right: \"\".concat(percent, \"%\")\n };\n },\n leap: function leap(percent) {\n return {\n width: \"\".concat(percent, \"%\")\n };\n }\n },\n vertical: {\n offset: function offset(percent) {\n return {\n bottom: \"\".concat(percent, \"%\")\n };\n },\n leap: function leap(percent) {\n return {\n height: \"\".concat(percent, \"%\")\n };\n }\n }\n};\nexport function focusThumb(_ref2) {\n var sliderRef = _ref2.sliderRef,\n activeIndex = _ref2.activeIndex,\n setActive = _ref2.setActive;\n var doc = ownerDocument(sliderRef.current);\n if (!sliderRef.current.contains(doc.activeElement) || Number(doc.activeElement.getAttribute('data-index')) !== activeIndex) {\n var _sliderRef$current$qu;\n (_sliderRef$current$qu = sliderRef.current.querySelector(\"[type=\\\"range\\\"][data-index=\\\"\".concat(activeIndex, \"\\\"]\"))) === null || _sliderRef$current$qu === void 0 || _sliderRef$current$qu.focus();\n }\n if (setActive) {\n setActive(activeIndex);\n }\n}","export var Color = {\n TextPrimary: 'txt-primary',\n TextSecondary: 'txt-secondary',\n TextSecondaryInvert: 'txt-secondary-invert',\n TextPlaceholder: 'txt-placeholder',\n TextWarning: 'txt-warning',\n TextError: 'txt-error',\n TextInfo: 'txt-info',\n AccentPrimary: 'accent-primary',\n AccentPrimaryHover: 'accent-primary-hover',\n AccentPrimaryActive: 'accent-primary-active',\n AccentPrimaryDisabled: 'accent-primary-disabled',\n AccentSecondaryDisabled: 'accent-secondary-disabled',\n AccentStateless: 'accent-stateless',\n AccentStateless_0_4_Opacity: 'accent-stateless_0_4_opacity',\n Accent_0_5_Opacity: 'accent_0_5_opacity',\n Accent_1_2_Opacity: 'accent_1_2_opacity',\n Accent_1_8_Opacity: 'accent_1_8_opacity',\n Accent_2_8_Opacity: 'accent_2_8_opacity',\n Accent_4_0_Opacity: 'accent_4_0_opacity',\n BackgroundGrey: 'bg-grey',\n BackgroundStateless: 'bg-stateless',\n BackgroundActive: 'bg-active',\n BackgroundBaseLight: 'bg-base-light',\n BackgroundBaseMedium: 'bg-base-medium',\n BackgroundPrimary: 'bg-primary',\n BackgroundPrimaryLight: 'bg-primary-light',\n BackgroundPrimaryHover: 'bg-primary-hover',\n BackgroundPrimaryActive: 'bg-primary-active',\n BackgroundPrimaryStateless: 'bg-primary-stateless',\n BackgroundPrimary_0_5_Opacity: 'bg-primary-0-5-opacity',\n BackgroundSecondary: 'bg-secondary',\n BackgroundHover: 'bg-hover',\n BackgroundGreen: 'bg-green',\n BackgroundGreenMedium: 'bg-green-medium',\n BackgroundBlue: 'bg-blue',\n BackgroundRed: 'bg-red',\n BackgroundRedLight: 'bg-red-light',\n BackgroundRedMedium: 'background-red-medium',\n BackgroundOrange: 'bg-orange',\n BackgroundTooltip: 'bg-tooltip',\n IconsPrimary: 'icon-primary',\n IconsPrimaryOpacity_0_6: 'icons-primary-opacity-0-6',\n IconsSecondary: 'icons-secondary',\n IconsPlaceholder: 'icons-placeholder',\n IconsInvert: 'icons-invert',\n IconsMuted: 'icons-muted',\n IconsPrimaryHover: 'icons-primary-hover',\n IconsSecondaryHover: 'icons-secondary-hover',\n ButtonPrimaryText: 'btn-primary-text',\n ButtonPrimaryText_0_6: 'btn-primary-text-0-6',\n ButtonPrimaryText_0_4: 'btn-primary-text-0-4',\n ButtonDisabledText: 'btn-disabled-text',\n ButtonSecondaryText: 'btn-secondary-text',\n LinkPrimary: 'link-primary',\n LinkStateless: 'link-stateless',\n LinkHover: 'link-hover',\n LinkActive: 'link-active',\n LinkMuted: 'link-muted',\n LinkPressed: 'link-pressed',\n BordersPrimary: 'borders-primary',\n BordersPrimaryHover: 'borders-primary-hover',\n BordersSecondary: 'borders-secondary',\n BordersStrong: 'borders-strong',\n BordersInvert: 'borders-invert',\n BorderHoverBottom: 'border-hover-bottom',\n BorderActiveBottom: 'border-active-bottom',\n BorderPrimaryStateless: 'border-primary-stateless',\n BordersDisabled: 'borders-disabled',\n BordersButton: 'borders-button',\n BordersItem: 'borders-item',\n BordersBaseLight: 'borders-base-light',\n BordersBaseMedium: 'borders-base-medium',\n BordersGreen: 'borders-green',\n BordersGreenMedium: 'borders-green-medium',\n BordersRed: 'borders-red',\n ActiveSecondary: 'active-secondary',\n ActiveSecondaryHover: 'active-secondary-hover',\n Tag: 'tag',\n StatesErrorDisabledText: 'states-error-disabled-text',\n Error: 'error',\n Error_0_28_Opacity: 'error-0-28-opacity',\n Error_0_12_Opacity: 'error-0-12-opacity',\n ErrorHover: 'error-hover',\n ErrorActive: 'error-active',\n Success: 'success',\n SuccessHover: 'success-hover',\n SuccessActive: 'success-Active',\n Warning: 'warning',\n WarningHover: 'warning-hover',\n WarningActive: 'warning-active',\n Info: 'info',\n Modified: 'modified',\n Red: 'red',\n Orange: 'orange',\n Salad: 'salad',\n Green: 'green',\n Blue: 'blue',\n Indigo: 'indigo',\n Violet: 'violet',\n Pink: 'pink',\n GradientRight: 'gradient-right',\n Extra_0_3_Overlay: 'extra-0-3-overlay',\n GradientRightActive: 'gradient-right-active',\n GradientRightHover: 'gradient-right-hover',\n Extra_0_5_Overlay: 'extra-0-5-overlay',\n Extra_0_7_Overlay: 'extra-0-7-overlay',\n Extra_0_9_Overlay: 'extra-0-9-overlay',\n Red_0_1_Overlay: 'red-0-1-overlay',\n Orange_0_1_Overlay: 'orange-0-1-overlay',\n Accent_0_8_Overlay: 'accent-0-8-overlay',\n Link: 'link',\n Camera: 'camera',\n GoogleDrive: 'google-drive',\n Dropbox: 'dropbox',\n OneDrive: 'one-drive',\n Device: 'device',\n Instagram: 'instagram',\n FreeImages: 'free-images',\n FreeIcons: 'free-icons',\n Canvas: 'canvas',\n Box: 'box',\n ScreenCast: 'screen-cast',\n Unsplash: 'unsplash',\n LightShadow: 'light-shadow',\n MediumShadow: 'medium-shadow',\n LargeShadow: 'large-shadow',\n XLargeShadow: 'x-large-shadow'\n};","import { css } from 'styled-components';\nimport { Color as PaletteColor } from '../types/palette';\nexport var scrollBar = function scrollBar(_ref) {\n var palette = _ref.theme.palette;\n return css([\"scrollbar-color:\", \" \", \";scrollbar-width:thin;::-webkit-scrollbar{width:12px;}::-webkit-scrollbar-track{margin-block:6px;}::-webkit-scrollbar-thumb{background:\", \";border:4px solid \", \";border-radius:99px;padding:4px 6px;background-clip:padding-box;}\"], palette[PaletteColor.IconsMuted], palette[PaletteColor.ActiveSecondary], palette[PaletteColor.Extra_0_3_Overlay], palette[PaletteColor.ActiveSecondary]);\n};","export var Breakpoint = {\n Xs: 'xs',\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg',\n Xl: 'xl',\n Xxl: 'xxl',\n Xxxl: 'xxxl'\n};\nexport var BreakpointClass = {\n Xs: '.sfx-breakpoint-xs',\n Sm: '.sfx-breakpoint-sm',\n Md: '.sfx-breakpoint-md',\n Lg: '.sfx-breakpoint-lg',\n Xl: '.sfx-breakpoint-xl',\n Xxl: '.sfx-breakpoint-xxl',\n Xxxl: '.sfx-breakpoint-xxxl'\n};","export var Shadows = {\n ShadowSm: 'shadow-sm',\n ShadowMd: 'shadow-md',\n ShadowLg: 'shadow-lg',\n ShadowXl: 'shadow-xl',\n Label: 'label',\n Header: 'header',\n HeaderPopup: 'header-popup',\n FooterPopup: 'footer-popup',\n LeftPanelMd: 'left-panel-md',\n RightPanelMd: 'right-panel-md',\n LeftPanelSm: 'left-panel-sm',\n RightPanelSm: 'right-panel-sm'\n};","export var FontWeight = {\n Thin: 100,\n ExtraLight: 200,\n Light: 300,\n Regular: 400,\n Medium: 500,\n SemiBold: 600,\n Bold: 700,\n ExtraBold: 800,\n Black: 900\n};","export var FontVariant = {\n TextExtraSmall: 'text-extra-small',\n TextSmall: 'text-small',\n TextSmallUp: 'text-small-up',\n TextMedium: 'text-medium',\n TextLarge: 'text-large',\n TextExtraLarge: 'text-extra-large',\n TextXExtraLarge: 'text-x-extra-large',\n TitleH6: 'title-h6',\n TitleH5: 'title-h5',\n TitleH4: 'title-h4',\n TitleH3: 'title-h3',\n TitleH2: 'title-h2',\n TitleH1: 'title-h1',\n LabelExtraSmall: 'label-extra-small',\n LabelExtraSmallEmphasis: 'label-extra-small-emphasis',\n LabelExtraSmallUp: 'label-extra-small-up',\n LabelSmall: 'label-small',\n LabelSmallEmphasis: 'label-small-emphasis',\n LabelSmallUp: 'label-small-up',\n LabelSmallUpEmphasis: 'label-small-up-emphasis',\n LabelMedium: 'label-medium',\n LabelMediumEmphasis: 'label-medium-emphasis',\n LabelLarge: 'label-large',\n LabelLargeEmphasis: 'label-large-emphasis',\n LabelLargeUp: 'label-large-up',\n LabelExtraLargeEmphasis: 'label-extra-large-emphasis',\n LabelExtraLarge: 'label-extra-large',\n LabelXExtraLargeEmphasis: 'label-x-extra-large-emphasis',\n LabelXExtraLarge: 'label-x-extra-large',\n LabelXXExtraLargeEmphasis: 'label-x-x-extra-large-emphasis',\n LabelXXExtraLarge: 'label-x-x-extra-large',\n LabelXXXExtraLarge: 'label-x-x-x-extra-large',\n ButtonSmEmphasis: 'btn-sm-emphasis',\n ButtonSm: 'btn-sm',\n ButtonSmUpEmphasis: 'btn-sm-up-emphasis',\n ButtonSmUp: 'btn-sm-up',\n ButtonMdEmphasis: 'btn-md-emphasis',\n ButtonMd: 'btn-md',\n ButtonLgEmphasis: 'btn-lg-emphasis',\n ButtonLg: 'btn-lg',\n ButtonLgUpEmphasis: 'btn-lg-up-emphasis',\n ButtonLgUp: 'btn-lg-up',\n LinkSmall: 'link-small',\n LinkSmallEmphasis: 'link-small-emphasis',\n LinkSmallUp: 'link-small-up',\n LinkSmallUpEmphasis: 'link-small-up-emphasis',\n LinkMedium: 'link-medium',\n LinkMediumEmphasis: 'link-medium-emphasis',\n LinkLarge: 'link-large',\n LinkLargeEmphasis: 'link-large-emphasis',\n LinkLargeUp: 'link-large-up',\n LinkLargeUpEmphasis: 'link-large-up-emphasis',\n InputSm: 'input-sm',\n InputSmUp: 'input-sm-up',\n InputMd: 'input-md',\n InputLg: 'input-lg'\n};","export var BorderRadiusSize = {\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg'\n};","import { createGlobalStyle, css } from 'styled-components';\nvar Typography = /*#__PURE__*/createGlobalStyle([\"\", \";\"], function (_ref) {\n var theme = _ref.theme;\n var baseLineHeight = theme.typography.baseLineHeight;\n return css([\"h1,h2,h3,h4,h5,h6,p,small{line-height:\", \";}\"], baseLineHeight);\n});\nexport default Typography;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/* eslint-disable sonarjs/no-duplicate-string */\nimport { FontVariant, FontWeight } from '../../../../utils/types/typography';\nvar defaultFontValue = {\n fontFamily: '\"Roboto\"',\n fontStyle: 'normal',\n fontWeight: FontWeight.Regular\n};\nvar getLabelFontVariants = function getLabelFontVariants() {\n var _ref;\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _ref = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref, FontVariant.LabelExtraSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '10px',\n lineHeight: '12px'\n }, fontOverride)), FontVariant.LabelExtraSmallEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: 'Bold',\n fontSize: '10px',\n lineHeight: '12px'\n }, fontOverride)), FontVariant.LabelExtraSmallUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '11px',\n lineHeight: '12px'\n }, fontOverride)), FontVariant.LabelSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LabelSmallEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LabelSmallUp, _objectSpread(_objectSpread({\n fontSize: '13px',\n lineHeight: '16px'\n }, defaultFontValue), fontOverride)), FontVariant.LabelSmallUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LabelMedium, _objectSpread(_objectSpread({\n fontSize: '14px',\n lineHeight: '16px'\n }, defaultFontValue), fontOverride)), FontVariant.LabelMediumEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LabelLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref, FontVariant.LabelLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.LabelLargeUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Regular,\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.LabelExtraLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '24px',\n lineHeight: '28px'\n }, fontOverride)), FontVariant.LabelExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Regular,\n fontSize: '24px',\n lineHeight: '28px'\n }, fontOverride)), FontVariant.LabelXExtraLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '32px',\n lineHeight: '36px'\n }, fontOverride)), FontVariant.LabelXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '32px',\n lineHeight: '36px'\n }, fontOverride)), FontVariant.LabelXXExtraLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '48px',\n lineHeight: '54px'\n }, fontOverride)), FontVariant.LabelXXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '48px',\n lineHeight: '54px'\n }, fontOverride)), FontVariant.LabelXXXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '60px',\n lineHeight: '68px'\n }, fontOverride));\n};\nvar getTextFontVariants = function getTextFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.TextExtraSmall, _objectSpread(_objectSpread({}, getLabelFontVariants()[FontVariant.LabelExtraSmallUp]), {}, {\n lineHeight: '14px'\n }, fontOverride)), FontVariant.TextSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.TextSmallUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.TextMedium, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.TextLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '22px'\n }, fontOverride)), FontVariant.TextExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '18px',\n lineHeight: '26px'\n }, fontOverride)), FontVariant.TextXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '28px',\n lineHeight: '40px'\n }, fontOverride));\n};\nvar getButtonFontVariants = function getButtonFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.ButtonSmEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.ButtonSm, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.ButtonSmUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonSmUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonMdEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonMd, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonLgEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.ButtonLg, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.ButtonLgUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.ButtonLgUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride));\n};\nvar getLinkFontVariants = function getLinkFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.LinkSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LinkSmallEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LinkSmallUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkSmallUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkMedium, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkMediumEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.LinkLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.LinkLargeUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.LinkLargeUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride));\n};\nvar getInputFontVariants = function getInputFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.InputSm, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.InputSmUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.InputMd, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.InputLg, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride));\n};\nvar getTitleFontVariants = function getTitleFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.TitleH6, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.TitleH5, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '21px'\n }, fontOverride)), FontVariant.TitleH4, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '24px'\n }, fontOverride)), FontVariant.TitleH3, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '18px',\n lineHeight: '27px'\n }, fontOverride)), FontVariant.TitleH2, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '20px',\n lineHeight: '30px'\n }, fontOverride)), FontVariant.TitleH1, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '28px',\n lineHeight: '42px'\n }, fontOverride));\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport var getDefaultTypography = function getDefaultTypography() {\n var typographyOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _objectSpread(_objectSpread({\n fontFamily: defaultFontValue.fontFamily,\n baseLineHeight: 1.375\n }, typographyOverride), {}, {\n font: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, getLabelFontVariants(typographyOverride)), getTextFontVariants(typographyOverride)), getButtonFontVariants(typographyOverride)), getLinkFontVariants(typographyOverride)), getInputFontVariants(typographyOverride)), getTitleFontVariants(typographyOverride))\n });\n};","import { createGlobalStyle /* , css */ } from 'styled-components';\n\n// Example with theme: ${({ theme }) => css``;\n\nvar CommonStyles = /*#__PURE__*/createGlobalStyle([\"@keyframes spinner{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}.Menu-open{overflow:hidden;}.Modal-open{overflow:hidden;}\"]);\nexport default CommonStyles;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _lightPalette;\n/* eslint-disable sonarjs/no-duplicate-string */\nimport { Color } from '../../../../utils/types/palette';\nexport var lightPalette = (_lightPalette = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.TextPrimary, 'rgba(55, 65, 75, 1)'), Color.TextSecondary, 'rgba(118, 138, 159, 1)'), Color.TextSecondaryInvert, 'rgba(213, 216, 220, 1)'), Color.TextPlaceholder, 'rgba(169, 182, 194, 1)'), Color.TextWarning, 'rgba(196, 110, 0, 1)'), Color.TextError, 'rgba(185, 33, 46, 1)'), Color.TextInfo, 'rgba(35, 117, 171, 1)'), Color.AccentPrimary, 'rgba(104, 121, 235, 1)'), Color.AccentPrimaryHover, 'rgba(96, 111, 209, 1)'), Color.AccentPrimaryActive, 'rgba(73, 88, 188, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.AccentPrimaryDisabled, 'rgba(233, 238, 242, 1)'), Color.AccentSecondaryDisabled, '#F9FBFC'), Color.AccentStateless, 'rgba(104, 121, 235, 1)'), Color.AccentStateless_0_4_Opacity, 'rgba(104, 121, 235, 0.4)'), Color.Accent_0_5_Opacity, 'rgba(104, 121, 235, 0.05)'), Color.Accent_1_2_Opacity, 'rgba(104, 121, 235, 0.12)'), Color.Accent_1_8_Opacity, 'rgba(104, 121, 235, 0.18)'), Color.Accent_2_8_Opacity, 'rgba(104, 121, 235, 0.28)'), Color.Accent_4_0_Opacity, 'rgba(104, 121, 235, 0.4)'), Color.BackgroundGrey, 'rgba(216, 224, 232, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BackgroundStateless, 'rgba(255, 255, 255, 1)'), Color.BackgroundActive, 'rgba(243, 247, 250, 1)'), Color.BackgroundBaseLight, 'rgba(235, 239, 252, 1)'), Color.BackgroundBaseMedium, 'rgba(227, 231, 251, 1)'), Color.BackgroundPrimary, 'rgba(248, 250, 251, 1)'), Color.BackgroundPrimaryLight, 'rgba(243, 245, 247, 1)'), Color.BackgroundPrimaryHover, 'rgba(239, 243, 246, 1)'), Color.BackgroundPrimaryActive, 'rgba(93, 109, 126, 1)'), Color.BackgroundPrimary_0_5_Opacity, 'rgba(255, 255, 255, 0.500)'), Color.BackgroundPrimaryStateless, '#CCD6DE'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BackgroundSecondary, 'rgba(255, 255, 255, 1)'), Color.BackgroundHover, 'rgba(249, 251, 252, 1)'), Color.BackgroundGreen, 'rgba(237, 250, 244, 1)'), Color.BackgroundGreenMedium, 'rgba(227, 250, 239, 1)'), Color.BackgroundBlue, 'rgba(244, 249, 255, 1)'), Color.BackgroundRed, 'rgba(253, 244, 242, 1)'), Color.BackgroundRedLight, 'rgba(255, 245, 245, 1)'), Color.BackgroundRedMedium, 'rgba(247, 228, 230, 1)'), Color.BackgroundOrange, 'rgba(255, 249, 242, 1)'), Color.BackgroundTooltip, 'rgba(79, 98, 118, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.IconsPrimary, 'rgba(118, 138, 159, 1)'), Color.IconsPrimaryOpacity_0_6, 'rgba(93, 109, 126, 0.600)'), Color.IconsSecondary, 'rgba(151, 166, 182, 1)'), Color.IconsPlaceholder, 'rgba(223, 231, 237, 1)'), Color.IconsInvert, 'rgba(255, 255, 255, 1)'), Color.IconsMuted, 'rgba(169, 182, 194, 1)'), Color.IconsPrimaryHover, 'rgba(79, 98, 118, 1)'), Color.IconsSecondaryHover, 'rgba(118, 138, 159, 1)'), Color.ButtonPrimaryText, 'rgba(255, 255, 255, 1)'), Color.ButtonPrimaryText_0_6, 'rgba(255, 255, 255, 0.6)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.ButtonPrimaryText_0_4, 'rgba(255, 255, 255, 0.4)'), Color.ButtonDisabledText, 'rgba(169, 182, 194, 1)'), Color.ButtonSecondaryText, 'rgba(0, 0, 0, 1)'), Color.LinkPrimary, 'rgba(118, 138, 159, 1)'), Color.LinkStateless, 'rgba(118, 138, 159, 1)'), Color.LinkHover, 'rgba(79, 98, 118, 1)'), Color.LinkActive, 'rgba(55, 65, 75, 1)'), Color.LinkPressed, 'rgba(104, 121, 235, 1)'), Color.LinkMuted, 'rgba(169, 182, 194, 1)'), Color.BordersPrimary, 'rgba(204, 214, 222, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BordersPrimaryHover, 'rgba(104, 118, 134, 1)'), Color.BordersSecondary, 'rgba(236, 240, 243, 1)'), Color.BordersStrong, 'rgba(204, 214, 222, 1)'), Color.BordersInvert, 'rgba(85, 99, 115, 1)'), Color.BorderHoverBottom, 'rgba(104, 121, 235, 0.18)'), Color.BorderActiveBottom, '#4958BC'), Color.BorderPrimaryStateless, 'rgba(204, 214, 222, 1)'), Color.BordersDisabled, 'rgba(73, 88, 188, 0.4)'), Color.BordersButton, 'rgba(151, 166, 182, 1)'), Color.BordersItem, 'rgba(226, 232, 236, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BordersBaseLight, 'rgba(211, 219, 250, 1)'), Color.BordersBaseMedium, 'rgba(164, 175, 227, 1)'), Color.BordersGreen, 'rgba(27, 161, 99, 0.22)'), Color.BordersGreenMedium, 'rgba(27, 161, 99, 0.4)'), Color.BordersRed, 'rgba(185, 33, 46, 0.4)'), Color.ActiveSecondary, '#FFFFFF'), Color.ActiveSecondaryHover, 'rgba(104, 121, 235, 0.05)'), Color.Error, 'rgba(246, 61, 61, 1)'), Color.Error_0_28_Opacity, 'rgba(185, 33, 46, 0.28)'), Color.Error_0_12_Opacity, 'rgba(255, 86, 78, 0.1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.ErrorHover, 'rgba(216, 46, 46, 1)'), Color.ErrorActive, 'rgba(185, 33, 46, 1)'), Color.Success, 'rgba(38, 193, 122, 1)'), Color.SuccessHover, 'rgba(30, 154, 98, 1)'), Color.SuccessActive, 'rgba(23, 116, 73, 1)'), Color.Warning, 'rgba(255, 172, 74, 1)'), Color.WarningHover, 'rgba(237, 145, 7, 1)'), Color.WarningActive, 'rgba(224, 135, 0, 1)'), Color.Info, 'rgba(41, 127, 184, 1)'), Color.Modified, 'rgba(165, 166, 246, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.Red, 'rgba(219, 46, 50, 1)'), Color.Orange, 'rgba(255, 168, 0, 1)'), Color.Salad, 'rgba(143, 176, 33, 1)'), Color.Green, 'rgba(22, 160, 134, 1)'), Color.Blue, 'rgba(41, 127, 184, 1)'), Color.Indigo, 'rgba(91, 72, 162, 1)'), Color.Violet, 'rgba(141, 68, 173, 1)'), Color.Pink, 'rgba(211, 92, 158, 1)'), Color.GradientRight, 'linear-gradient(270deg, #FFFFFF 1.56%, rgba(255, 255, 255, 0.89) 52.4%, rgba(255, 255, 255, 0.532165) 76.04%, rgba(255, 255, 255, 0) 100%)'), Color.Extra_0_3_Overlay, 'rgba(79, 98, 118, 0.3)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.GradientRightActive, 'linear-gradient(270deg, #F3F7FA 1.56%, #F3F7FA 52.4%, rgba(243, 247, 250, 0.53) 76.04%, rgba(243, 247, 250, 0) 100%)'), Color.GradientRightHover, 'linear-gradient(270deg, #F9FBFC 1.56%, #F9FBFC 52.4%, rgba(249, 251, 252, 0.53) 76.04%, rgba(249, 251, 252, 0) 100%)'), Color.Extra_0_5_Overlay, 'rgba(79, 98, 118, 0.5)'), Color.Extra_0_7_Overlay, 'rgba(79, 98, 118, 0.7)'), Color.Extra_0_9_Overlay, 'rgba(79, 98, 118, 0.9)'), Color.Red_0_1_Overlay, 'rgba(232, 91, 70, 0.1)'), Color.Orange_0_1_Overlay, 'rgba(250, 157, 47, 0.1)'), Color.Accent_0_8_Overlay, 'rgba(104, 121, 235, 0.08)'), Color.Link, 'rgba(250, 166, 68, 1)'), Color.Camera, 'rgba(73, 186, 224, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.GoogleDrive, 'rgba(81, 136, 238, 1)'), Color.Dropbox, 'rgba(17, 40, 124, 1)'), Color.OneDrive, 'rgba(40, 100, 186, 1)'), Color.Device, 'rgba(102, 73, 209, 1)'), Color.Instagram, 'rgba(244, 70, 154, 1)'), Color.Unsplash, 'rgba(173, 38, 220, 1)'), Color.FreeImages, 'rgba(16, 163, 135, 1)'), Color.FreeIcons, 'rgba(62, 207, 139, 1)'), Color.Canvas, 'rgba(36, 190, 202, 1)'), Color.Box, 'rgba(0, 97, 213, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.ScreenCast, 'rgba(48, 61, 78, 1)'), Color.Tag, '#889AAC'), Color.StatesErrorDisabledText, 'rgba(185, 33, 46, 0.3)'), Color.LightShadow, 'rgba(146, 166, 188, 0.2)'), Color.MediumShadow, 'rgba(146, 166, 188, 0.24)'), Color.LargeShadow, 'rgba(146, 166, 188, 0.32)'), Color.XLargeShadow, 'rgba(146, 166, 188, 0.5)'));\nexport var defaultPalette = lightPalette;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _shadows;\nimport { Shadows } from '../../../../utils/types/shadows';\nexport var shadows = (_shadows = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_shadows, Shadows.ShadowSm, '0px 1px 2px 0px rgba(146, 166, 188, 0.2)'), Shadows.ShadowMd, ' 0px 1px 4px 0px rgba(146, 166, 188, 0.24)'), Shadows.ShadowLg, ' 0px 2px 6px 0px rgba(146, 166, 188, 0.32)'), Shadows.ShadowXl, ' 0px 2px 6px 0px rgba(146, 166, 188, 0.5)'), Shadows.Label, ' 0px 1px 3px 0px rgba(77, 78, 78, 0.15)'), Shadows.Header, ' 0px 6px 10px 0px rgba(146, 166, 188, 0.2)'), Shadows.HeaderPopup, ' 0px 3px 7px 0px rgba(146, 166, 188, 0.16)'), Shadows.FooterPopup, ' 0px -4px 8px 0px rgba(208, 215, 220, 0.22)'), Shadows.LeftPanelMd, ' 6px 8px 12px 0px rgba(146, 166, 188, 0.14)'), Shadows.RightPanelMd, '-6px 8px 12px 0px rgba(146, 166, 188, 0.14)'), _defineProperty(_defineProperty(_shadows, Shadows.LeftPanelSm, '6px -4px 12px 0px rgba(146, 166, 188, 0.14)'), Shadows.RightPanelSm, '-6px -4px 12px 0px rgba(146, 166, 188, 0.14)'));\nexport var defaultShadows = shadows;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { Breakpoint } from '../../../../utils/types/css';\nexport var defaultBreakpoints = {\n keys: [Breakpoint.Xs, Breakpoint.Sm, Breakpoint.Md, Breakpoint.Lg, Breakpoint.Xl],\n values: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Breakpoint.Xs, 0), Breakpoint.Sm, 576), Breakpoint.Md, 768), Breakpoint.Lg, 1084), Breakpoint.Xl, 1342), Breakpoint.Xxl, 1600), Breakpoint.Xxxl, 1920),\n classes: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Breakpoint.Xs, '.sfx-breakpoint-xs'), Breakpoint.Sm, '.sfx-breakpoint-sm'), Breakpoint.Md, '.sfx-breakpoint-md'), Breakpoint.Lg, '.sfx-breakpoint-lg'), Breakpoint.Xl, '.sfx-breakpoint-xl'), Breakpoint.Xxl, '.sfx-breakpoint-xxl'), Breakpoint.Xxxl, '.sfx-breakpoint-xxxl'),\n getBreakpointClass: function getBreakpointClass() {\n return '';\n },\n up: function up() {\n return '';\n },\n down: function down() {\n return '';\n },\n between: function between() {\n return '';\n },\n only: function only() {\n return '';\n }\n};","import { defaultBreakpoints } from './default-breakpoints';\nvar createBreakpoints = function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? defaultBreakpoints.values : _breakpoints$values,\n _breakpoints$classes = breakpoints.classes,\n classes = _breakpoints$classes === void 0 ? defaultBreakpoints.classes : _breakpoints$classes;\n var unit = 'px';\n var keys = Object.keys(values);\n var up = function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n };\n var down = function down(key) {\n var value = values[key];\n return \"@media (max-width:\".concat(value).concat(unit, \")\");\n };\n var between = function between(start, end) {\n var endIndex = keys.indexOf(end);\n return \"@media (min-width:\".concat(values[start]).concat(unit, \") and (max-width:\").concat(values[keys[endIndex]]).concat(unit, \")\");\n };\n var only = function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n };\n var getBreakpointClass = function getBreakpointClass(width, hideSelector) {\n var removeSelector = function removeSelector(str) {\n return str.slice(1);\n };\n if (width >= values.xs && width < values.sm) {\n return hideSelector ? removeSelector(classes.xs) : classes.xs;\n }\n if (width >= values.sm && width < values.md) {\n return hideSelector ? removeSelector(classes.sm) : classes.sm;\n }\n if (width >= values.md && width < values.lg) {\n return hideSelector ? removeSelector(classes.md) : classes.md;\n }\n if (width >= values.lg && width < values.xl) {\n return hideSelector ? removeSelector(classes.lg) : classes.lg;\n }\n if (width >= values.xl && width < values.xxl) {\n return hideSelector ? removeSelector(classes.xl) : classes.xl;\n }\n if (width >= values.xxl && width < values.xxxl) {\n return hideSelector ? removeSelector(classes.xxl) : classes.xxl;\n }\n if (width >= values.xxxl) {\n return hideSelector ? removeSelector(classes.xxxl) : classes.xxxl;\n }\n return hideSelector ? removeSelector(classes.md) : classes.md;\n };\n return {\n keys: keys,\n values: values,\n classes: classes,\n getBreakpointClass: getBreakpointClass,\n up: up,\n down: down,\n between: between,\n only: only\n };\n};\nexport default createBreakpoints;","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useMemo } from 'react';\nimport PT from 'prop-types';\nimport { ThemeProvider as SCThemeProvider } from 'styled-components';\nimport merge from 'lodash.merge';\nimport { record } from '../../utils/types/prop-types';\nimport { applyPolymorphicFunctionProp, objectKeys, objectValues } from '../../utils/functions';\nimport { Breakpoint } from '../../utils/types/css';\nimport { Color } from '../../utils/types/palette';\nimport { Shadows } from '../../utils/types/shadows';\nimport { FontVariant } from '../../utils/types/typography';\nimport { BorderRadiusSize } from '../../utils/types/shape';\nimport { Typography, CommonStyles } from '../roots';\nimport { defaultPalette } from '../roots/palette';\nimport { defaultShadows } from '../roots/shadows';\nimport { getDefaultTypography } from '../roots/typography';\nimport createBreakpoints from '../roots/breakpoints/entity/create-breakpoints';\nvar defaultShape = {\n borderRadius: _defineProperty(_defineProperty(_defineProperty({}, BorderRadiusSize.Sm, '2px'), BorderRadiusSize.Md, '4px'), BorderRadiusSize.Lg, '8px')\n};\nvar ThemeProvider = function ThemeProvider(_ref) {\n var children = _ref.children,\n _ref$theme = _ref.theme,\n theme = _ref$theme === void 0 ? {} : _ref$theme;\n var _theme$palette = theme.palette,\n paletteOverride = _theme$palette === void 0 ? {} : _theme$palette,\n _theme$breakpoints = theme.breakpoints,\n breakpointsOverride = _theme$breakpoints === void 0 ? {} : _theme$breakpoints,\n _theme$typography = theme.typography,\n typographyOverride = _theme$typography === void 0 ? {} : _theme$typography,\n _theme$shape = theme.shape,\n shapeOverride = _theme$shape === void 0 ? {} : _theme$shape,\n _theme$shadows = theme.shadows,\n shadowsOverride = _theme$shadows === void 0 ? {} : _theme$shadows;\n var finalTheme = useMemo(function () {\n var palette = _objectSpread(_objectSpread({}, defaultPalette), paletteOverride);\n var breakpoints = createBreakpoints(breakpointsOverride);\n var shadows = _objectSpread(_objectSpread({}, defaultShadows), shadowsOverride);\n return {\n palette: palette,\n breakpoints: breakpoints,\n typography: getDefaultTypography(typographyOverride),\n shape: _objectSpread({}, merge(_objectSpread({}, defaultShape), _objectSpread({}, shapeOverride))),\n shadows: shadows\n };\n return {};\n }, [JSON.stringify(theme)]);\n return /*#__PURE__*/React.createElement(SCThemeProvider, {\n theme: finalTheme\n }, /*#__PURE__*/React.createElement(React.Fragment, null, applyPolymorphicFunctionProp(children, finalTheme), /*#__PURE__*/React.createElement(CommonStyles, null), /*#__PURE__*/React.createElement(Typography, null)));\n};\nvar _getDefaultTypography = getDefaultTypography(),\n baseLineHeight = _getDefaultTypography.baseLineHeight,\n font = _getDefaultTypography.font,\n typography = _objectWithoutProperties(_getDefaultTypography, [\"baseLineHeight\", \"font\"]);\nThemeProvider.propTypes = {\n children: PT.oneOfType([PT.node, PT.func, PT.arrayOf(PT.node)]).isRequired,\n theme: PT.exact({\n breakpoints: PT.exact({\n keys: PT.arrayOf(PT.string),\n values: PT.exact(record(objectValues(Breakpoint), PT.number)),\n classes: PT.exact(record(objectValues(Breakpoint), PT.string)),\n getBreakpointClass: PT.func,\n up: PT.func,\n down: PT.func,\n between: PT.func,\n only: PT.func\n }),\n palette: PT.exact(record(objectValues(Color), PT.string)),\n shadows: PT.exact(record(objectValues(Shadows), PT.string)),\n shape: PT.exact({\n borderRadius: PT.exact(record(objectValues(BorderRadiusSize), PT.string))\n }),\n typography: PT.exact(_objectSpread({\n baseLineHeight: PT.oneOfType([PT.string, PT.number]),\n font: PT.exact(record(objectValues(FontVariant), PT.object))\n }, record(objectKeys(typography), PT.string)))\n })\n};\nexport default ThemeProvider;","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._registerNode = exports.Konva = exports.glob = void 0;\nconst PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexports.glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexports.Konva = {\n _global: exports.glob,\n version: '9.3.20',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return exports.Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n _fixTextRendering: false,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return exports.Konva['DD'].isDragging;\n },\n isTransforming() {\n var _a;\n return (_a = exports.Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming();\n },\n isDragReady() {\n return !!exports.Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: exports.glob.document,\n _injectGlobal(Konva) {\n exports.glob.Konva = Konva;\n },\n};\nconst _registerNode = (NodeClass) => {\n exports.Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nexports._registerNode = _registerNode;\nexports.Konva._injectGlobal(exports.Konva);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = void 0;\nconst Global_1 = require(\"./Global\");\nclass Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n const m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n const c = Math.cos(rad);\n const s = Math.sin(rad);\n const m11 = this.m[0] * c + this.m[2] * s;\n const m12 = this.m[1] * c + this.m[3] * s;\n const m21 = this.m[0] * -s + this.m[2] * c;\n const m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n const m11 = this.m[0] + this.m[2] * sy;\n const m12 = this.m[1] + this.m[3] * sy;\n const m21 = this.m[2] + this.m[0] * sx;\n const m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n const m0 = this.m[3] * d;\n const m1 = -this.m[1] * d;\n const m2 = -this.m[2] * d;\n const m3 = this.m[0] * d;\n const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n const a = this.m[0];\n const b = this.m[1];\n const c = this.m[2];\n const d = this.m[3];\n const e = this.m[4];\n const f = this.m[5];\n const delta = a * d - b * c;\n const result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n const r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n const s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = exports.Util._getRotation(result.rotation);\n return result;\n }\n}\nexports.Transform = Transform;\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;\nlet animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexports.Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n const firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n const canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n const imageObj = exports.Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n const bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n let rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (exports.Util._namedColorToRBA(str) ||\n exports.Util._hex3ColorToRGBA(str) ||\n exports.Util._hex4ColorToRGBA(str) ||\n exports.Util._hex6ColorToRGBA(str) ||\n exports.Util._hex8ColorToRGBA(str) ||\n exports.Util._rgbColorToRGBA(str) ||\n exports.Util._rgbaColorToRGBA(str) ||\n exports.Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n const c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n const retObj = {};\n for (const key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n exports.Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return exports.Util.degToRad(deg);\n },\n _radToDeg(rad) {\n exports.Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return exports.Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Global_1.Konva.angleDeg ? exports.Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Global_1.Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (const key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n let x, y, dist;\n const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n const pc = exports.Util.cloneObject(pt);\n let dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n const p2 = line[(i + 1) % line.length];\n const proj = exports.Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n const px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n const start = [], end = [];\n if (startArray.length > endArray.length) {\n const temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (let n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (let n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n const newStart = [];\n end.forEach(function (point) {\n const pr = exports.Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n let desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (const key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n exports.Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (exports.Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Global_1.Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBComponent = RGBComponent;\nexports.alphaComponent = alphaComponent;\nexports.getNumberValidator = getNumberValidator;\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nexports.getStringValidator = getStringValidator;\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nexports.getFunctionValidator = getFunctionValidator;\nexports.getNumberArrayValidator = getNumberArrayValidator;\nexports.getBooleanValidator = getBooleanValidator;\nexports.getComponentValidator = getComponentValidator;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n if (Util_1.Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util_1.Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nfunction RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nfunction alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nfunction getNumberValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isNumber(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util_1.Util._isNumber(val);\n let isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nfunction getNumberOrAutoValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nfunction getStringValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isString(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nfunction getStringOrGradientValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util_1.Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val['addColorStop']);\n if (!(isString || isGradient)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nfunction getFunctionValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isFunction(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nfunction getNumberArrayValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util_1.Util._isArray(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util_1.Util._isNumber(item)) {\n Util_1.Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nfunction getBooleanValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isBool = val === true || val === false;\n if (!isBool) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nfunction getComponentValidator(components) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util_1.Util.isObject(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nconst Util_1 = require(\"./Util\");\nconst Validators_1 = require(\"./Validators\");\nconst GET = 'get';\nconst SET = 'set';\nexports.Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n exports.Factory.addGetter(constructor, attr, def);\n exports.Factory.addSetter(constructor, attr, validator, after);\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n var method = GET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n exports.Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n const len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n constructor.prototype[getter] = function () {\n const ret = {};\n for (let n = 0; n < len; n++) {\n const component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n const basicValidator = (0, Validators_1.getComponentValidator)(components);\n constructor.prototype[setter] = function (val) {\n const oldVal = this.attrs[attr];\n if (validator) {\n val = validator.call(this, val, attr);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (const key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n var capitalizedAttr = Util_1.Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util_1.Util.error('Adding deprecated ' + attr);\n const method = GET + Util_1.Util._capitalize(attr);\n const message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util_1.Util.error(message);\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n exports.Factory.addSetter(constructor, attr, validator, function () {\n Util_1.Util.error(message);\n });\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n const method = constructor.prototype[newMethodName];\n const oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n const oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util_1.Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitContext = exports.SceneContext = exports.Context = void 0;\nconst Util_1 = require(\"./Util\");\nconst Global_1 = require(\"./Global\");\nfunction simplifyArray(arr) {\n const retArr = [], len = arr.length, util = Util_1.Util;\n for (let n = 0; n < len; n++) {\n let val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nconst CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n];\nconst traceArrMax = 100;\nclass Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Global_1.Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util_1.Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n let traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n const canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n const absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n const a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n const a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n const func = function (methodName) {\n let origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n const prop = arguments[0];\n let val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n const def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nexports.Context = Context;\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nclass SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n const fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n const grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexports.SceneContext = SceneContext;\nclass HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n const hitStrokeWidth = shape.hitStrokeWidth();\n const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\nexports.HitContext = HitContext;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitCanvas = exports.SceneCanvas = exports.Canvas = void 0;\nconst Util_1 = require(\"./Util\");\nconst Context_1 = require(\"./Context\");\nconst Global_1 = require(\"./Global\");\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n const canvas = Util_1.Util.createCanvasElement();\n const context = canvas.getContext('2d');\n _pixelRatio = (function () {\n const devicePixelRatio = Global_1.Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util_1.Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nclass Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n const conf = config || {};\n const pixelRatio = conf.pixelRatio || Global_1.Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util_1.Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n const previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util_1.Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexports.Canvas = Canvas;\nclass SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new Context_1.SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexports.SceneCanvas = SceneCanvas;\nclass HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new Context_1.HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\nexports.HitCanvas = HitCanvas;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DD = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nexports.DD = {\n get isDragging() {\n let flag = false;\n exports.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n let node;\n exports.DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n exports.DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util_1.Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n const dragDistance = node.dragDistance();\n const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n exports.DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n exports.DD.justDragged = true;\n Global_1.Konva._mouseListenClick = false;\n Global_1.Konva._touchListenClick = false;\n Global_1.Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Global_1.Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n exports.DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n exports.DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Global_1.Konva.isBrowser) {\n window.addEventListener('mouseup', exports.DD._endDragBefore, true);\n window.addEventListener('touchend', exports.DD._endDragBefore, true);\n window.addEventListener('touchcancel', exports.DD._endDragBefore, true);\n window.addEventListener('mousemove', exports.DD._drag);\n window.addEventListener('touchmove', exports.DD._drag);\n window.addEventListener('mouseup', exports.DD._endDragAfter, false);\n window.addEventListener('touchend', exports.DD._endDragAfter, false);\n window.addEventListener('touchcancel', exports.DD._endDragAfter, false);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Global_1 = require(\"./Global\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Validators_1 = require(\"./Validators\");\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nclass Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n let cache = this._cache.get(attr);\n const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n const invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util_1.Util.releaseCanvas(scene, filter, hit);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n const conf = config || {};\n let rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util_1.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n const cachedSceneCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n const points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n const transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n const cacheCanvas = this._getCachedSceneCanvas();\n const ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n const ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter !== 'function') {\n Util_1.Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util_1.Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n }\n return filterCanvas;\n }\n return sceneCanvas;\n }\n on(evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n let events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n }\n off(evtStr, callback) {\n let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n const e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n const stopNode = this;\n this.on(event, function (evt) {\n const targets = evt.target.findAncestors(selector, true, stopNode);\n for (let i = 0; i < targets.length; i++) {\n evt = Util_1.Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DragAndDrop_1.DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n const parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n const method = 'get' + Util_1.Util._capitalize(attr);\n if (Util_1.Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n let parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n let key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util_1.Util._capitalize(key);\n if (Util_1.Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n const layer = this.getLayer();\n let layerUnderDrag = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n const dragSkip = !skipDragCheck &&\n !Global_1.Konva.hitOnDragEnabled &&\n (layerUnderDrag || Global_1.Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n let depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n const pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n const transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Util_1.Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n const it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n let key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n const trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n let family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util_1.Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n const index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n let absOpacity = this.opacity();\n const parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util_1.Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n const res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n let ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util_1.Util.isValidSelector(sel)) {\n Util_1.Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util_1.Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n const parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n const parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n let at;\n if (top) {\n at = new Util_1.Transform();\n this._eachAncestorReverse(function (node) {\n const transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Util_1.Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n const transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n let parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n const m = this._cache.get(TRANSFORM) || new Util_1.Transform();\n m.reset();\n const x = this.x(), y = this.y(), rotation = Global_1.Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n let attrs = Util_1.Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n const node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n const box = this.getClientRect();\n const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new Canvas_1.SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new Canvas_1.SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n const mimeType = config.mimeType || null, quality = config.quality || null;\n const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util_1.Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Global_1.Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n let evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n const oldName = this.name();\n const newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n const names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n const names = (this.name() || '').split(/\\s/g);\n const index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n const func = this[SET + Util_1.Util._capitalize(attr)];\n if (Util_1.Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Global_1.Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n const oldVal = this.attrs[key];\n if (oldVal === val && !Util_1.Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n let oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n const shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n const stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (var i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (var i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n const pointerId = evt ? evt.pointerId : undefined;\n const stage = this.getStage();\n const ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n const pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DragAndDrop_1.DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n let newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n const dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util_1.Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DragAndDrop_1.DD._endDragBefore(evt);\n DragAndDrop_1.DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n const shouldCheckButton = evt.evt['button'] !== undefined;\n const canDrag = !shouldCheckButton || Global_1.Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n let hasDraggingChild = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n const stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DragAndDrop_1.DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DragAndDrop_1.DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util_1.Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util_1.Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Global_1.Konva[className]) {\n Util_1.Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Global_1.Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'y', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'opacity', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'name', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'id', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'rotation', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'scaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'skewY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'offsetY', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'dragDistance', undefined, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'width', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'height', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'listening', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'preventDefault', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'transformsEnabled', 'all', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n if (!filterFunc) {\n return this.children || [];\n }\n const children = this.children || [];\n const results = [];\n children.forEach(function (child) {\n if (filterFunc(child)) {\n results.push(child);\n }\n });\n return results;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n const result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n const retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n const obj = Node_1.Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n let parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n const node = Node_1.Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n const arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n const caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n const transform = this.getAbsoluteTransform(top);\n let m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n const clipX = this.clipX();\n const clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n const hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n let minX, minY, maxX, maxY;\n let selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n const that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n const rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n const shapes = this.find('Shape');\n let hasVisible = false;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCapturedShape = getCapturedShape;\nexports.createEvent = createEvent;\nexports.hasPointerCapture = hasPointerCapture;\nexports.setPointerCapture = setPointerCapture;\nexports.releaseCapture = releaseCapture;\nconst Global_1 = require(\"./Global\");\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nfunction createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nfunction hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nfunction setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nfunction releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Global_1.Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util_1.Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n exports.stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util_1.Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n if (container.charAt(0) === '.') {\n const className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n const layers = this.children, len = layers.length;\n for (let n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container_1.Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n const content = this.content;\n if (content && Util_1.Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n const index = exports.stages.indexOf(this);\n if (index > -1) {\n exports.stages.splice(index, 1);\n }\n Util_1.Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util_1.Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n const canvas = new Canvas_1.SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n const _context = canvas.getContext()._context;\n const layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n const layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n const layers = this.children, len = layers.length, end = len - 1;\n for (let n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n const width = this.width();\n const height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n const length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util_1.Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Global_1.Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const targetShape = this._getTargetShape(eventType);\n const eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = this.getIntersection(pos);\n DragAndDrop_1.DD.justDragged = false;\n Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n this[eventType + 'ClickStartShape'] = undefined;\n return;\n }\n if (Global_1.Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n if (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n const eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n const processedShapesIds = {};\n let triggeredOnShape = false;\n const targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n const differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n const processedShapesIds = {};\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Global_1.Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n const contentPosition = this._getContentPosition();\n let x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util_1.Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util_1.Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n const rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new Canvas_1.SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n const container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util_1.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\nif (Global_1.Konva.isBrowser) {\n document.addEventListener('visibilitychange', () => {\n exports.stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexports.shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nclass Shape extends Node_1.Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util_1.Util.getRandomColor();\n if (key && !(key in exports.shapes)) {\n break;\n }\n }\n this.colorKey = key;\n exports.shapes[key] = this;\n }\n getContext() {\n Util_1.Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util_1.Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n const ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Util_1.Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Global_1.Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n const colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillLinearGradientStartPoint();\n const end = this.fillLinearGradientEndPoint();\n const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n const colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillRadialGradientStartPoint();\n const end = this.fillRadialGradientEndPoint();\n const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n const rgba = Util_1.Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node_1.Node.prototype.destroy.call(this);\n delete exports.shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util_1.Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n const size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n let hasCachedParent = false;\n let parent = this.getParent();\n while (parent) {\n if (parent.isCached()) {\n hasCachedParent = true;\n break;\n }\n parent = parent.getParent();\n }\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer();\n let canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferContext;\n const skipBuffer = canvas.isCache;\n const cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n const ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, 0, 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n const selfCache = this === top;\n if (!selfCache) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n const cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n const hitData = hitImageData.data;\n const len = hitData.length;\n const rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n for (let i = 0; i < len; i += 4) {\n const alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util_1.Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nexports.Shape = Shape;\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n(0, Global_2._registerNode)(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRule', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n constructor(config) {\n super(config);\n this.canvas = new Canvas_1.SceneCanvas();\n this.hitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node_1.Node.prototype.moveToTop.call(this);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n const moved = Node_1.Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n const stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node_1.Node.prototype.moveDown.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node_1.Node.prototype.moveToBottom.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n const _canvas = this.getNativeCanvasElement();\n Node_1.Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node_1.Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util_1.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util_1.Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n let spiralSearchDistance = 1;\n let continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n const shape = Shape_1.shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container_1.Container.prototype.drawScene.call(this, canvas, top);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container_1.Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n const parent = this.parent;\n const added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n if (Global_1.glob.performance && Global_1.glob.performance.now) {\n return function () {\n return Global_1.glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nclass Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (const key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util_1.Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util_1.Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nconst blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n const handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n const t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nclass Tween {\n constructor(config) {\n const that = this, node = config.node, nodeId = node._id, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo;\n let duration, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n const layers = node.getLayer() ||\n (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation_1.Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n const node = this.node, nodeId = node._id;\n let diff, len, trueEnd, trueStart, endRGBA;\n const tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n let start = node.getAttr(key);\n if (Util_1.Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util_1.Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (let n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n const startRGBA = Util_1.Util.colorToRGBA(start[n]);\n endRGBA = Util_1.Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (let n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util_1.Util.colorToRGBA(start);\n endRGBA = Util_1.Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n const node = this.node, attrs = Tween.attrs[node._id][this._id];\n let key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util_1.Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n this.pause();\n for (const key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.prototype.to = function (params) {\n const onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n const tween = new Tween(params);\n tween.play();\n};\nexports.Easings = {\n BackEaseIn(t, b, c, d) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return exports.Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n Util: Util_1.Util,\n Transform: Util_1.Transform,\n Node: Node_1.Node,\n Container: Container_1.Container,\n Stage: Stage_1.Stage,\n stages: Stage_1.stages,\n Layer: Layer_1.Layer,\n FastLayer: FastLayer_1.FastLayer,\n Group: Group_1.Group,\n DD: DragAndDrop_1.DD,\n Shape: Shape_1.Shape,\n shapes: Shape_1.shapes,\n Animation: Animation_1.Animation,\n Tween: Tween_1.Tween,\n Easings: Tween_1.Easings,\n Context: Context_1.Context,\n Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n _sceneFunc(context) {\n const angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Global_1.Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n 'innerRadius',\n 'outerRadius',\n 'angle',\n 'clockwise',\n];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Global_1 = require(\"../Global\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n const len = p.length, allPoints = [];\n for (let n = 2; n < len - 2; n += 2) {\n const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nclass Line extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n let points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n let points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexports.cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst getCubicArcLength = (xs, ys, t) => {\n let sum;\n let correctedT;\n const n = 20;\n const z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * exports.tValues[n][i] + z;\n sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nexports.getQuadraticArcLength = getQuadraticArcLength;\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n exports.binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nconst t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\nexports.t2length = t2length;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n const ca = this.dataArray;\n context.beginPath();\n let isClosed = false;\n for (let n = 0; n < ca.length; n++) {\n const c = ca[n].command;\n const p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n let points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n const start = data.points[4];\n const dTheta = data.points[5];\n const end = data.points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (let i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n let points, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n points = dataArray[i - 1].points.slice(-2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n if (length < 0.01) {\n points = dataArray[i].points.slice(0, 2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n const cp = dataArray[i];\n const p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getCubicArcLength)([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getQuadraticArcLength)([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n const len = this.getLineLength(P1x, P1y, P2x, P2y);\n if (len < 1e-10) {\n return { x: P1x, y: P1y };\n }\n if (P2x === P1x) {\n return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n }\n const m = (P2y - P1y) / (P2x - P1x);\n const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const rise = m * run;\n if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n return { x: fromX + run, y: fromY + rise };\n }\n const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n const ix = P1x + u * (P2x - P1x);\n const iy = P1y + u * (P2y - P1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const adjustedRise = m * adjustedRun;\n return { x: ix + adjustedRun, y: iy + adjustedRise };\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n const x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n const y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n const x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n const y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n const pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n let cs = data;\n const cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n const arr = cs.split('|');\n const ca = [];\n const coords = [];\n let cpx = 0;\n let cpy = 0;\n const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n let match;\n for (n = 1; n < arr.length; n++) {\n let str = arr[n];\n let c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n const p = [];\n for (let j = 0, jlen = coords.length; j < jlen; j++) {\n if (coords[j] === '00') {\n p.push(0, 0);\n continue;\n }\n const parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n let cmd = '';\n let points = [];\n const startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n var dx = p.shift();\n var dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (let idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n let len, p1, p2, t;\n const path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n const psi = psiDeg * (Math.PI / 180.0);\n const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n const cxp = (f * rx * yp) / ry;\n const cyp = (f * -ry * xp) / rx;\n const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n const vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n const vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n const vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n let dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n const PI2 = Math.PI * 2;\n const points = this.points();\n let tp = points;\n const fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n const length = this.pointerLength();\n const n = points.length;\n let dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path_1.Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n const width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n const isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x,\n y: lineRect.y - offset,\n width: lineRect.width,\n height: lineRect.height + offset * 2,\n };\n }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.Shape {\n _sceneFunc(context) {\n const rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n constructor(attrs) {\n super(attrs);\n this._loadListener = () => {\n this._requestDraw();\n };\n this.on('imageChange.konva', (props) => {\n this._removeImageLoad(props.oldVal);\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', this._loadListener);\n }\n }\n _removeImageLoad(image) {\n if (image && image['removeEventListener']) {\n image['removeEventListener']('load', this._loadListener);\n }\n }\n destroy() {\n this._removeImageLoad(this.image());\n super.destroy();\n return this;\n }\n _useBufferCanvas() {\n const hasCornerRadius = !!this.cornerRadius();\n const hasShadow = this.hasShadow();\n if (hasCornerRadius && hasShadow) {\n return true;\n }\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n const img = Util_1.Util.createImageElement();\n img.onload = function () {\n const image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nclass Label extends Group_1.Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n let that = this, n;\n const func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.Shape {\n _sceneFunc(context) {\n const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nclass Rect extends Shape_1.Shape {\n _sceneFunc(context) {\n const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\n(0, Global_1._registerNode)(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n _sceneFunc(context) {\n const points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (let n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (let n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n let minX = points[0].x;\n let maxX = points[0].y;\n let minY = points[0].x;\n let maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst PIx2 = Math.PI * 2;\nclass Ring extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation_1.Animation(() => {\n const updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n const offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n const offset = offsets[anim];\n const ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n const that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n const layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.Shape {\n _sceneFunc(context) {\n const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (let n = 1; n < numPoints * 2; n++) {\n const radius = n % 2 === 0 ? outerRadius : innerRadius;\n const x = radius * Math.sin((n * Math.PI) / numPoints);\n const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = void 0;\nexports.stringToArray = stringToArray;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nfunction stringToArray(string) {\n return [...string].reduce((acc, char, index, array) => {\n if (/\\p{Emoji}/u.test(char)) {\n const nextChar = array[index + 1];\n if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n acc.push(char + nextChar);\n array[index + 1] = '';\n }\n else {\n acc.push(char);\n }\n }\n else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n acc.push(char + array[index + 1]);\n }\n else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n acc[acc.length - 1] += char;\n }\n else if (char) {\n acc.push(char);\n }\n return acc;\n }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nclass Text extends Shape_1.Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (let n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n const textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n let translateY = lineHeightPx / 2;\n let baseline = MIDDLE;\n if (Global_1.Konva._fixTextRendering) {\n const metrics = this.measureSize('M');\n baseline = 'alphabetic';\n translateY =\n (metrics.fontBoundingBoxAscent - metrics.fontBoundingBoxDescent) / 2 +\n lineHeightPx / 2;\n }\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', baseline);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n const yOffset = Global_1.Konva._fixTextRendering\n ? Math.round(fontSize / 4)\n : Math.round(fontSize / 2);\n const x = lineTranslateX;\n const y = translateY + lineTranslateY + yOffset;\n context.moveTo(x, y);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), y);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n const yOffset = Global_1.Konva._fixTextRendering ? -Math.round(fontSize / 4) : 0;\n context.moveTo(lineTranslateX, translateY + lineTranslateY + yOffset);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n spacesNumber = text.split(' ').length - 1;\n const array = stringToArray(text);\n for (let li = 0; li < array.length; li++) {\n const letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n const width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n const str = Util_1.Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n const scaleFactor = fontSize / 100;\n return {\n actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n const width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n const letterSpacing = this.letterSpacing();\n const length = text.length;\n return getDummyContext().measureText(text).width + letterSpacing * length;\n }\n _setTextData() {\n let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n const additionalWidth = shouldAddEllipsis\n ? this._getTextWidth(ELLIPSIS)\n : 0;\n for (let i = 0, max = lines.length; i < max; ++i) {\n let line = lines[i];\n let lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n let low = 0, high = stringToArray(line).length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, lineArray = stringToArray(line), substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n const shouldConsiderEllipsis = shouldAddEllipsis &&\n fixedHeight &&\n currentHeightPx + lineHeightPx > maxHeightPx;\n const effectiveWidth = shouldConsiderEllipsis\n ? substrWidth + additionalWidth\n : substrWidth;\n if (effectiveWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n const lineArray = stringToArray(line);\n const matchArray = stringToArray(match);\n const nextChar = lineArray[matchArray.length];\n const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n let wrapIndex;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = matchArray.length;\n }\n else {\n const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n const lastDashIndex = matchArray.lastIndexOf(DASH);\n wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = lineArray.slice(0, low).join('');\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n const lineArray = stringToArray(line);\n line = lineArray.slice(low).join('').trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n const lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nexports.Text = Text;\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n(0, Global_2._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nclass TextPath extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util_1.Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path_1.Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length - 1 > totalLength) {\n return null;\n }\n return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n const textDecoration = this.textDecoration();\n const fill = this.fill();\n const fontSize = this.fontSize();\n const glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n const glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n const p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n const p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text_1.Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text_1.Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n const dummyCanvas = this.dummyCanvas;\n const _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n const metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const { width, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n const charArr = (0, Text_1.stringToArray)(this.text());\n let offsetToGlyph = offset;\n for (let i = 0; i < charArr.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n if (charArr[i] === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint)\n return;\n const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n const points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n let minX = points[0] || 0;\n let maxX = points[0] || 0;\n let minY = points[1] || 0;\n let maxY = points[1] || 0;\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n const fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nexports.TextPath = TextPath;\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', undefined);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n];\nconst ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n const angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nconst ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Global_1.Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nclass Transformer extends Group_1.Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util_1.Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n if (node._attrsAffectingSize.length) {\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n }\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n const elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n const rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const absScale = node.getAbsoluteScale(relative);\n const absPos = node.getAbsolutePosition(relative);\n const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Global_1.Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Global_1.Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n const node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n const trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n const transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Util_1.Transform();\n tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n const transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n const anchor = new Rect_1.Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n const self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n const rad = Global_1.Konva.getAngle(this.rotation());\n const rotateCursor = this.rotateAnchorCursor();\n const cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n const back = new Shape_1.Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc(ctx, shape) {\n const tr = shape.getParent();\n const padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n const padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n if (this._transforming) {\n return;\n }\n this._movingAnchorName = e.target.name().split(' ')[0];\n const attrs = this._getNodeRect();\n const width = attrs.width;\n const height = attrs.height;\n const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n const ap = e.target.getAbsolutePosition();\n const pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n let x, y, newHypotenuse;\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n const stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n const attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n const oldRotation = Global_1.Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Global_1.Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n const shiftBehavior = this.shiftBehavior();\n let keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n const topLeft = this.findOne('.top-left');\n const bottomRight = this.findOne('.bottom-right');\n const topOffsetX = topLeft.x();\n const topOffsetY = topLeft.y();\n const bottomOffsetX = this.getWidth() - bottomRight.x();\n const bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n const absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n const node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n const oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n const t = new Util_1.Transform();\n t.rotate(Global_1.Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Util_1.Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Util_1.Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Util_1.Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n const attrs = this._getNodeRect();\n this.rotation(Util_1.Util._getRotation(attrs.rotation));\n const width = attrs.width;\n const height = attrs.height;\n const enabledAnchors = this.enabledAnchors();\n const resizeEnabled = this.resizeEnabled();\n const padding = this.padding();\n const anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group_1.Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node_1.Node.prototype.toObject.call(this);\n }\n clone(obj) {\n const node = Node_1.Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nexports.Transformer = Transformer;\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util_1.Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util_1.Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Global_1.Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n const pixels = imageData.data, width = imageData.width, height = imageData.height;\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n yp = width;\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nconst Blur = function Blur(imageData) {\n const radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n const data = imageData.data, nPixels = data.length;\n let red = 150, green = 150, blue = 150;\n for (let i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n const strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4;\n let dirY = 0, dirX = 0, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util_1.Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n const offsetY = (y - 1) * w4;\n let otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n const offsetYOther = (y - 1 + otherY) * w * 4;\n let x = w;\n do {\n const offset = offsetY + (x - 1) * 4;\n let otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n const offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n const dR = data[offset] - data[offsetOther];\n const dG = data[offset + 1] - data[offsetOther + 1];\n const dB = data[offset + 2] - data[offsetOther + 2];\n let dif = dR;\n const absDif = dif > 0 ? dif : -dif;\n const absG = dG > 0 ? dG : -dG;\n const absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n const r = data[offset] + dif;\n const g = data[offset + 1] + dif;\n const b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n let grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', undefined, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, undefined, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n let toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nconst Enhance = function (imageData) {\n const data = imageData.data, nSubPixels = data.length;\n let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n const enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n let rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\nexports.Grayscale = Grayscale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\nexports.HSL = HSL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst HSV = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\nexports.Invert = Invert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst ToPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize;\n const conversion = ((360 / tSize) * Math.PI) / 180;\n for (let theta = 0; theta < tSize; theta += 1) {\n const sin = Math.sin(theta * conversion);\n const cos = Math.cos(theta * conversion);\n for (let radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n let i = (y * xSize + x) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst FromPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n let x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n const dx = x - xMid;\n const dy = y - yMid;\n const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n let i = (y1 * xSize + x1) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst Kaleidoscope = function (imageData) {\n const xSize = imageData.width, ySize = imageData.height;\n let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n let power = Math.round(this.kaleidoscopePower());\n const angle = Math.round(this.kaleidoscopeAngle());\n const offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n const tempCanvas = Util_1.Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n const scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util_1.Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n let minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n let sectionSize = minSectionSize;\n let xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n let idx = (y * idata.width + x) * 4;\n const d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n const m = [0, 0, 0];\n for (let i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n const rgbv_no = pixelAt(idata, 0, 0);\n const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n const thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n const mask = [];\n for (let i = 0; i < idata.width * idata.height; i++) {\n const d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (let i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n const weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nconst Mask = function (imageData) {\n const threshold = this.threshold();\n let mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Noise = function (imageData) {\n const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n for (let i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util_1.Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n for (let i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n for (let i = 0; i < nPixels; i += 4) {\n const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGBA = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n for (let i = 0; i < nPixels; i += 4) {\n const ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n const data = imageData.data, nPixels = data.length;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\nexports.Sepia = Sepia;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n const data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4;\n let y = h;\n do {\n const offsetY = (y - 1) * w4;\n let x = w;\n do {\n const offset = offsetY + (x - 1) * 4;\n let r = data[offset];\n let g = data[offset + 1];\n let b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\nexports.Solarize = Solarize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Threshold = function (imageData) {\n const level = this.threshold() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n Arc: Arc_1.Arc,\n Arrow: Arrow_1.Arrow,\n Circle: Circle_1.Circle,\n Ellipse: Ellipse_1.Ellipse,\n Image: Image_1.Image,\n Label: Label_1.Label,\n Tag: Label_1.Tag,\n Line: Line_1.Line,\n Path: Path_1.Path,\n Rect: Rect_1.Rect,\n RegularPolygon: RegularPolygon_1.RegularPolygon,\n Ring: Ring_1.Ring,\n Sprite: Sprite_1.Sprite,\n Star: Star_1.Star,\n Text: Text_1.Text,\n TextPath: TextPath_1.TextPath,\n Transformer: Transformer_1.Transformer,\n Wedge: Wedge_1.Wedge,\n Filters: {\n Blur: Blur_1.Blur,\n Brighten: Brighten_1.Brighten,\n Contrast: Contrast_1.Contrast,\n Emboss: Emboss_1.Emboss,\n Enhance: Enhance_1.Enhance,\n Grayscale: Grayscale_1.Grayscale,\n HSL: HSL_1.HSL,\n HSV: HSV_1.HSV,\n Invert: Invert_1.Invert,\n Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n Mask: Mask_1.Mask,\n Noise: Noise_1.Noise,\n Pixelate: Pixelate_1.Pixelate,\n Posterize: Posterize_1.Posterize,\n RGB: RGB_1.RGB,\n RGBA: RGBA_1.RGBA,\n Sepia: Sepia_1.Sepia,\n Solarize: Solarize_1.Solarize,\n Threshold: Threshold_1.Threshold,\n },\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nvar _CoreInternals_1 = require(\"./_CoreInternals\");\nObject.defineProperty(exports, \"Konva\", { enumerable: true, get: function () { return _CoreInternals_1.Konva; } });\nconst _CoreInternals_2 = require(\"./_CoreInternals\");\nmodule.exports = _CoreInternals_2.Konva;\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{dc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?cc(a):\"\"}var fc=Object.prototype.hasOwnProperty,gc=[],hc=-1;function ic(a){return{current:a}}\nfunction q(a){0>hc||(a.current=gc[hc],gc[hc]=null,hc--)}function v(a,b){hc++;gc[hc]=a.current;a.current=b}var jc={},x=ic(jc),z=ic(!1),kc=jc;function mc(a,b){var c=a.type.contextTypes;if(!c)return jc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction A(a){a=a.childContextTypes;return null!==a&&void 0!==a}function nc(){q(z);q(x)}function oc(a,b,c){if(x.current!==jc)throw Error(n(168));v(x,b);v(z,c)}function pc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,va(a)||\"Unknown\",e));return ca({},c,d)}\nfunction qc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||jc;kc=x.current;v(x,a);v(z,z.current);return!0}function rc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=pc(a,b,kc),d.__reactInternalMemoizedMergedChildContext=a,q(z),q(x),v(x,a)):q(z);v(z,c)}var tc=Math.clz32?Math.clz32:sc,uc=Math.log,vc=Math.LN2;function sc(a){a>>>=0;return 0===a?32:31-(uc(a)/vc|0)|0}var wc=64,xc=4194304;\nfunction yc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function zc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=yc(h):(f&=g,0!==f&&(d=yc(f)))}else g=c&~e,0!==g?d=yc(g):0!==f&&(d=yc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Fc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-tc(b);a[b]=c}function Gc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;id=1<<32-tc(b)+e|c<t?(E=u,u=null):E=u.sibling;var y=p(e,u,h[t],k);if(null===y){null===u&&(u=E);break}a&&u&&null===y.alternate&&b(e,u);g=f(y,g,t);null===m?l=y:m.sibling=y;m=y;u=E}if(t===h.length)return c(e,u),F&&kd(e,t),l;if(null===u){for(;tt?(E=m,m=null):E=m.sibling;var w=p(e,m,y.value,k);if(null===w){null===m&&(m=E);break}a&&m&&null===w.alternate&&b(e,m);g=f(w,g,t);null===u?l=w:u.sibling=w;u=w;m=E}if(y.done)return c(e,\nm),F&&kd(e,t),l;if(null===m){for(;!y.done;t++,y=h.next())y=r(e,y.value,k),null!==y&&(g=f(y,g,t),null===u?l=y:u.sibling=y,u=y);F&&kd(e,t);return l}for(m=d(e,m);!y.done;t++,y=h.next())y=B(m,e,t,y.value,k),null!==y&&(a&&null!==y.alternate&&m.delete(null===y.key?t:y.key),g=f(y,g,t),null===u?l=y:u.sibling=y,u=y);a&&m.forEach(function(a){return b(e,a)});F&&kd(e,t);return l}function ya(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ha&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case ea:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ha){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===qa&&Hd(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Fd(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ha?(d=Nd(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ld(f.type,f.key,f.props,null,a.mode,h),h.ref=Fd(a,d,f),h.return=\na,a=h)}return g(a);case fa:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Md(f,a.mode,h);d.return=a;a=d}return g(a);case qa:return l=f._init,ya(a,d,l(f._payload),h)}if(Da(f))return w(a,d,f,h);if(ta(f))return Y(a,d,f,h);Gd(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Kd(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return ya}var Od=Id(!0),Pd=Id(!1),Qd=ic(null),Rd=null,Sd=null,Td=null;function Ud(){Td=Sd=Rd=null}function Vd(a,b,c){Sa?(v(Qd,b._currentValue),b._currentValue=c):(v(Qd,b._currentValue2),b._currentValue2=c)}function Wd(a){var b=Qd.current;q(Qd);Sa?a._currentValue=b:a._currentValue2=b}\nfunction Xd(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Yd(a,b){Rd=a;Td=Sd=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(G=!0),a.firstContext=null)}\nfunction Zd(a){var b=Sa?a._currentValue:a._currentValue2;if(Td!==a)if(a={context:a,memoizedValue:b,next:null},null===Sd){if(null===Rd)throw Error(n(308));Sd=a;Rd.dependencies={lanes:0,firstContext:a}}else Sd=Sd.next=a;return b}var $d=null;function ae(a){null===$d?$d=[a]:$d.push(a)}function be(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,ae(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ce(a,d)}\nfunction ce(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var de=!1;function ee(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction fe(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ge(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction he(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(H&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ce(a,c)}e=d.interleaved;null===e?(b.next=b,ae(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ce(a,c)}function ie(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Hc(a,c)}}\nfunction je(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction ke(a,b,c,d){var e=a.updateQueue;de=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var r=e.baseState;g=0;m=l=k=null;h=f;do{var p=h.lane,B=h.eventTime;if((d&p)===p){null!==m&&(m=m.next={eventTime:B,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var w=a,Y=h;p=b;B=c;switch(Y.tag){case 1:w=Y.payload;if(\"function\"===typeof w){r=w.call(B,r,p);break a}r=w;break a;case 3:w.flags=w.flags&-65537|128;case 0:w=Y.payload;p=\"function\"===typeof w?w.call(B,r,p):w;if(null===p||void 0===p)break a;r=ca({},r,p);break a;case 2:de=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,p=e.effects,null===p?e.effects=[h]:p.push(h))}else B={eventTime:B,lane:p,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=B,k=r):m=m.next=B,g|=\np;h=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else p=h,h=p.next,p.next=null,e.lastBaseUpdate=p,e.shared.pending=null}while(1);null===m&&(k=r);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);le|=g;a.lanes=g;a.memoizedState=r}}\nfunction me(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Ae.transition;Ae.transition={};try{a(!1),b()}finally{C=c,Ae.transition=d}}function rf(){return Oe().memoizedState}\nfunction sf(a,b,c){var d=tf(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(uf(a))vf(b,c);else if(c=be(a,b,c,d),null!==c){var e=O();af(c,a,d,e);wf(c,b,d)}}\nfunction cf(a,b,c){var d=tf(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(uf(a))vf(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Vc(h,g)){var k=b.interleaved;null===k?(e.next=e,ae(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=be(a,b,e,d);null!==c&&(e=O(),af(c,a,d,e),wf(c,b,d))}}\nfunction uf(a){var b=a.alternate;return a===J||null!==b&&b===J}function vf(a,b){De=Ce=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Hc(a,c)}}\nvar Le={readContext:Zd,useCallback:M,useContext:M,useEffect:M,useImperativeHandle:M,useInsertionEffect:M,useLayoutEffect:M,useMemo:M,useReducer:M,useRef:M,useState:M,useDebugValue:M,useDeferredValue:M,useTransition:M,useMutableSource:M,useSyncExternalStore:M,useId:M,unstable_isNewReconciler:!1},Ie={readContext:Zd,useCallback:function(a,b){Ne().memoizedState=[a,void 0===b?null:b];return a},useContext:Zd,useEffect:gf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ef(4194308,\n4,kf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ef(4194308,4,a,b)},useInsertionEffect:function(a,b){return ef(4,2,a,b)},useMemo:function(a,b){var c=Ne();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Ne();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,J,a);return[d.memoizedState,a]},useRef:function(a){var b=\nNe();a={current:a};return b.memoizedState=a},useState:bf,useDebugValue:mf,useDeferredValue:function(a){return Ne().memoizedState=a},useTransition:function(){var a=bf(!1),b=a[0];a=qf.bind(null,a[1]);Ne().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=J,e=Ne();if(F){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===N)throw Error(n(349));0!==(Be&30)||Ye(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;gf(Ve.bind(null,d,\nf,a),[a]);d.flags|=2048;We(9,Xe.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Ne(),b=N.identifierPrefix;if(F){var c=jd;var d=id;c=(d&~(1<<32-tc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Ee++;0Dg&&(b.flags|=128,d=!0,Ag(e,!1),b.lanes=4194304)}else{if(!d)if(a=we(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Ag(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!F)return Q(b),null}else 2*D()-e.renderingStartTime>Dg&&1073741824!==c&&(b.flags|=128,d=!0,Ag(e,!1),b.lanes=\n4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==e.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=D(),b.sibling=null,a=I.current,v(I,d?a&1|2:a&1),b;Q(b);return null;case 22:case 23:return Eg(),c=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==c&&(b.flags|=8192),c&&0!==(b.mode&1)?0!==($f&1073741824)&&(Q(b),Ta&&b.subtreeFlags&6&&(b.flags|=8192)):Q(b),null;case 24:return null;case 25:return null}throw Error(n(156,\nb.tag));}\nfunction Fg(a,b){nd(b);switch(b.tag){case 1:return A(b.type)&&nc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return te(),q(z),q(x),ye(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ve(b),null;case 13:q(I);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));Ad()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return q(I),null;case 4:return te(),null;case 10:return Wd(b.type._context),null;case 22:case 23:return Eg(),\nnull;case 24:return null;default:return null}}var Gg=!1,S=!1,Hg=\"function\"===typeof WeakSet?WeakSet:Set,T=null;function Ig(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){U(a,b,d)}else c.current=null}function Jg(a,b,c){try{c()}catch(d){U(a,b,d)}}var Kg=!1;\nfunction Lg(a,b){Ha(a.containerInfo);for(T=b;null!==T;)if(a=T,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,T=b;else for(;null!==T;){a=T;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:xf(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ta&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){U(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;T=b;break}T=a.return}c=Kg;Kg=!1;return c}function Mg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Jg(b,c,f)}e=e.next}while(e!==d)}}function Ng(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Og(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Ea(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}function Pg(a){var b=a.alternate;null!==b&&(a.alternate=null,Pg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}\nfunction Qg(a){return 5===a.tag||3===a.tag||4===a.tag}function Rg(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Qg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Sg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Sg(a,b,c),a=a.sibling;null!==a;)Sg(a,b,c),a=a.sibling}function Tg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Tg(a,b,c),a=a.sibling;null!==a;)Tg(a,b,c),a=a.sibling}var V=null,Ug=!1;function Vg(a,b,c){for(c=c.child;null!==c;)Wg(a,b,c),c=c.sibling}\nfunction Wg(a,b,c){if(Sc&&\"function\"===typeof Sc.onCommitFiberUnmount)try{Sc.onCommitFiberUnmount(Rc,c)}catch(h){}switch(c.tag){case 5:S||Ig(c,b);case 6:if(Ta){var d=V,e=Ug;V=null;Vg(a,b,c);V=d;Ug=e;null!==V&&(Ug?rb(V,c.stateNode):qb(V,c.stateNode))}else Vg(a,b,c);break;case 18:Ta&&null!==V&&(Ug?Yb(V,c.stateNode):Xb(V,c.stateNode));break;case 4:Ta?(d=V,e=Ug,V=c.stateNode.containerInfo,Ug=!0,Vg(a,b,c),V=d,Ug=e):(Ua&&(d=c.stateNode.containerInfo,e=zb(d),Cb(d,e)),Vg(a,b,c));break;case 0:case 11:case 14:case 15:if(!S&&\n(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Jg(c,b,g):0!==(f&4)&&Jg(c,b,g));e=e.next}while(e!==d)}Vg(a,b,c);break;case 1:if(!S&&(Ig(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){U(c,b,h)}Vg(a,b,c);break;case 21:Vg(a,b,c);break;case 22:c.mode&1?(S=(d=S)||null!==c.memoizedState,Vg(a,b,c),S=d):Vg(a,b,c);break;default:Vg(a,b,\nc)}}function Xg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Hg);b.forEach(function(b){var d=Yg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Zg(a,b){var c=b.deletions;if(null!==c)for(var d=0;d\";case ih:return\":has(\"+(ph(a)||\"\")+\")\";case jh:return'[role=\"'+a.value+'\"]';case lh:return'\"'+a.value+'\"';case kh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction qh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=D()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*sh(d/1960))-d;if(10a?16:a;if(null===Dh)var d=!1;else{a=Dh;Dh=null;Eh=0;if(0!==(H&6))throw Error(n(331));var e=H;H|=4;for(T=a.current;null!==T;){var f=T,g=f.child;if(0!==(T.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kD()-bh?Rh(a,0):xh|=c);Kh(a,b)}function di(a,b){0===b&&(0===(a.mode&1)?b=1:(b=xc,xc<<=1,0===(xc&130023424)&&(xc=4194304)));var c=O();a=ce(a,b);null!==a&&(Fc(a,b,c),Kh(a,c))}function og(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);di(a,c)}\nfunction Yg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);di(a,c)}var ai;\nai=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||z.current)G=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return G=!1,sg(a,b,c);G=0!==(a.flags&131072)?!0:!1}else G=!1,F&&0!==(b.flags&1048576)&&ld(b,ed,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;cg(a,b);a=b.pendingProps;var e=mc(b,x.current);Yd(b,c);e=He(null,b,d,a,e,c);var f=Me();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=null,\nA(d)?(f=!0,qc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ee(b),e.updater=zf,b.stateNode=e,e._reactInternals=b,Df(b,d,a,c),b=dg(null,b,d,!0,f,c)):(b.tag=0,F&&f&&md(b),P(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{cg(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=ei(d);a=xf(d,a);switch(e){case 0:b=Xf(null,b,d,a,c);break a;case 1:b=bg(null,b,d,a,c);break a;case 11:b=Sf(null,b,d,a,c);break a;case 14:b=Uf(null,b,d,xf(d.type,a),c);break a}throw Error(n(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),Xf(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),bg(a,b,d,e,c);case 3:a:{eg(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;fe(a,b);ke(b,d,null,c);var g=b.memoizedState;d=g.element;if(Va&&f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ef(Error(n(423)),b);b=fg(a,b,d,c,e);break a}else if(d!==e){e=Ef(Error(n(424)),b);b=fg(a,b,d,c,e);break a}else for(Va&&(pd=Pb(b.stateNode.containerInfo),od=b,F=!0,rd=null,qd=!1),c=Pd(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ad();if(d===e){b=Tf(a,b,c);break a}P(a,b,d,c)}b=b.child}return b;case 5:return ue(b),null===a&&wd(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Na(d,e)?g=null:null!==f&&Na(d,f)&&(b.flags|=32),\nag(a,b),P(a,b,g,c),b.child;case 6:return null===a&&wd(b),null;case 13:return ig(a,b,c);case 4:return se(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Od(b,null,d,c):P(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),Sf(a,b,d,e,c);case 7:return P(a,b,b.pendingProps,c),b.child;case 8:return P(a,b,b.pendingProps.children,c),b.child;case 12:return P(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;Vd(b,d,g);if(null!==f)if(Vc(f.value,g)){if(f.children===e.children&&!z.current){b=Tf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ge(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Xd(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===\nf.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Xd(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}P(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Yd(b,c),e=Zd(e),d=d(e),b.flags|=1,P(a,b,d,c),b.child;case 14:return d=b.type,e=xf(d,b.pendingProps),\ne=xf(d.type,e),Uf(a,b,d,e,c);case 15:return Wf(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),cg(a,b),b.tag=1,A(d)?(a=!0,qc(b)):a=!1,Yd(b,c),Bf(b,d,e),Df(b,d,e,c),dg(null,b,d,!0,a,c);case 19:return rg(a,b,c);case 22:return Yf(a,b,c)}throw Error(n(156,b.tag));};function Mh(a,b){return Jc(a,b)}\nfunction fi(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function td(a,b,c,d){return new fi(a,b,c,d)}function Vf(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction ei(a){if(\"function\"===typeof a)return Vf(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===ma)return 11;if(a===pa)return 14}return 2}\nfunction Jd(a,b){var c=a.alternate;null===c?(c=td(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ld(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Vf(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ha:return Nd(c.children,e,f,b);case ia:g=8;e|=8;break;case ja:return a=td(12,c,b,e|2),a.elementType=ja,a.lanes=f,a;case na:return a=td(13,c,b,e),a.elementType=na,a.lanes=f,a;case oa:return a=td(19,c,b,e),a.elementType=oa,a.lanes=f,a;case ra:return jg(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case ka:g=10;break a;case la:g=9;break a;case ma:g=11;\nbreak a;case pa:g=14;break a;case qa:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=td(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Nd(a,b,c,d){a=td(7,a,d,b);a.lanes=c;return a}function jg(a,b,c,d){a=td(22,a,d,b);a.elementType=ra;a.lanes=c;a.stateNode={isHidden:!1};return a}function Kd(a,b,c){a=td(6,a,null,b);a.lanes=c;return a}\nfunction Md(a,b,c){b=td(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction gi(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Ra;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ec(0);this.expirationTimes=Ec(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ec(0);this.identifierPrefix=d;this.onRecoverableError=e;Va&&(this.mutableSourceEagerHydrationData=\nnull)}function hi(a,b,c,d,e,f,g,h,k){a=new gi(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=td(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ee(f);return a}\nfunction ii(a){if(!a)return jc;a=a._reactInternals;a:{if(wa(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(A(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(A(c))return pc(a,c,b)}return b}\nfunction ji(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Aa(b);return null===a?null:a.stateNode}function ki(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=r&&e<=m&&g<=p){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||pg)){r>f&&(k.height+=r-f,k.y=f);pe)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Ea(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:da.ReactCurrentDispatcher,findHostInstanceByFiber:mi,findFiberByHostInstance:a.findFiberByHostInstance||\nni,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Rc=b.inject(a),Sc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=rh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=O(),g=tf(e);c=ii(c);null===b.context?b.context=c:b.pendingContext=c;b=ge(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=he(e,b,g);null!==a&&(af(a,e,g,f),ie(a,e,g));return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}\n","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","import { Konva } from 'konva/lib/Global.js';\nconst propsToSkip = {\n children: true,\n ref: true,\n key: true,\n style: true,\n forwardedRef: true,\n unstable_applyCache: true,\n unstable_applyDrawHitFromCache: true,\n};\nlet zIndexWarningShowed = false;\nlet dragWarningShowed = false;\nexport const EVENTS_NAMESPACE = '.react-konva-event';\nlet useStrictMode = false;\nexport function toggleStrictMode(value) {\n useStrictMode = value;\n}\nconst DRAGGABLE_WARNING = `ReactKonva: You have a Konva node with draggable = true and position defined but no onDragMove or onDragEnd events are handled.\nPosition of a node will be changed during drag&drop, so you should update state of the react app as well.\nConsider to add onDragMove or onDragEnd events.\nFor more info see: https://github.com/konvajs/react-konva/issues/256\n`;\nconst Z_INDEX_WARNING = `ReactKonva: You are using \"zIndex\" attribute for a Konva node.\nreact-konva may get confused with ordering. Just define correct order of elements in your render function of a component.\nFor more info see: https://github.com/konvajs/react-konva/issues/194\n`;\nconst EMPTY_PROPS = {};\nexport function applyNodeProps(instance, props, oldProps = EMPTY_PROPS) {\n // don't use zIndex in react-konva\n if (!zIndexWarningShowed && 'zIndex' in props) {\n console.warn(Z_INDEX_WARNING);\n zIndexWarningShowed = true;\n }\n // check correct draggable usage\n if (!dragWarningShowed && props.draggable) {\n var hasPosition = props.x !== undefined || props.y !== undefined;\n var hasEvents = props.onDragEnd || props.onDragMove;\n if (hasPosition && !hasEvents) {\n console.warn(DRAGGABLE_WARNING);\n dragWarningShowed = true;\n }\n }\n // check old props\n // we need to unset properties that are not in new props\n // and remove all events\n for (var key in oldProps) {\n if (propsToSkip[key]) {\n continue;\n }\n var isEvent = key.slice(0, 2) === 'on';\n var propChanged = oldProps[key] !== props[key];\n // if that is a changed event, we need to remove it\n if (isEvent && propChanged) {\n var eventName = key.substr(2).toLowerCase();\n if (eventName.substr(0, 7) === 'content') {\n eventName =\n 'content' +\n eventName.substr(7, 1).toUpperCase() +\n eventName.substr(8);\n }\n instance.off(eventName, oldProps[key]);\n }\n var toRemove = !props.hasOwnProperty(key);\n if (toRemove) {\n instance.setAttr(key, undefined);\n }\n }\n var strictUpdate = useStrictMode || props._useStrictMode;\n var updatedProps = {};\n var hasUpdates = false;\n const newEvents = {};\n for (var key in props) {\n if (propsToSkip[key]) {\n continue;\n }\n var isEvent = key.slice(0, 2) === 'on';\n var toAdd = oldProps[key] !== props[key];\n if (isEvent && toAdd) {\n var eventName = key.substr(2).toLowerCase();\n if (eventName.substr(0, 7) === 'content') {\n eventName =\n 'content' +\n eventName.substr(7, 1).toUpperCase() +\n eventName.substr(8);\n }\n // check that event is not undefined\n if (props[key]) {\n newEvents[eventName] = props[key];\n }\n }\n if (!isEvent &&\n (props[key] !== oldProps[key] ||\n (strictUpdate && props[key] !== instance.getAttr(key)))) {\n hasUpdates = true;\n updatedProps[key] = props[key];\n }\n }\n if (hasUpdates) {\n instance.setAttrs(updatedProps);\n updatePicture(instance);\n }\n // subscribe to events AFTER we set attrs\n // we need it to fix https://github.com/konvajs/react-konva/issues/471\n // settings attrs may add events. Like \"draggable: true\" will add \"mousedown\" listener\n for (var eventName in newEvents) {\n instance.on(eventName + EVENTS_NAMESPACE, newEvents[eventName]);\n }\n}\nexport function updatePicture(node) {\n if (!Konva.autoDrawEnabled) {\n var drawingNode = node.getLayer() || node.getStage();\n drawingNode && drawingNode.batchDraw();\n }\n}\n","import Konva from 'konva/lib/Core.js';\nimport { applyNodeProps, updatePicture, EVENTS_NAMESPACE } from './makeUpdates.js';\nexport { unstable_now as now, unstable_IdlePriority as idlePriority, unstable_runWithPriority as run, } from 'scheduler';\nimport { DefaultEventPriority } from 'react-reconciler/constants.js';\nconst NO_CONTEXT = {};\nconst UPDATE_SIGNAL = {};\n// for react-spring capability\nKonva.Node.prototype._applyProps = applyNodeProps;\nexport function appendInitialChild(parentInstance, child) {\n if (typeof child === 'string') {\n // Noop for string children of Text (eg foo)\n console.error(`Do not use plain text as child of Konva.Node. You are using text: ${child}`);\n return;\n }\n parentInstance.add(child);\n updatePicture(parentInstance);\n}\nexport function createInstance(type, props, internalInstanceHandle) {\n let NodeClass = Konva[type];\n if (!NodeClass) {\n console.error(`Konva has no node with the type ${type}. Group will be used instead. If you use minimal version of react-konva, just import required nodes into Konva: \"import \"konva/lib/shapes/${type}\" If you want to render DOM elements as part of canvas tree take a look into this demo: https://konvajs.github.io/docs/react/DOM_Portal.html`);\n NodeClass = Konva.Group;\n }\n // we need to split props into events and non events\n // we we can pass non events into constructor directly\n // that way the performance should be better\n // we we apply change \"applyNodeProps\"\n // then it will trigger change events on first run\n // but we don't need them!\n const propsWithoutEvents = {};\n const propsWithOnlyEvents = {};\n for (var key in props) {\n var isEvent = key.slice(0, 2) === 'on';\n if (isEvent) {\n propsWithOnlyEvents[key] = props[key];\n }\n else {\n propsWithoutEvents[key] = props[key];\n }\n }\n const instance = new NodeClass(propsWithoutEvents);\n applyNodeProps(instance, propsWithOnlyEvents);\n return instance;\n}\nexport function createTextInstance(text, rootContainerInstance, internalInstanceHandle) {\n console.error(`Text components are not supported for now in ReactKonva. Your text is: \"${text}\"`);\n}\nexport function finalizeInitialChildren(domElement, type, props) {\n return false;\n}\nexport function getPublicInstance(instance) {\n return instance;\n}\nexport function prepareForCommit() {\n return null;\n}\nexport function preparePortalMount() {\n return null;\n}\nexport function prepareUpdate(domElement, type, oldProps, newProps) {\n return UPDATE_SIGNAL;\n}\nexport function resetAfterCommit() {\n // Noop\n}\nexport function resetTextContent(domElement) {\n // Noop\n}\nexport function shouldDeprioritizeSubtree(type, props) {\n return false;\n}\nexport function getRootHostContext() {\n return NO_CONTEXT;\n}\nexport function getChildHostContext() {\n return NO_CONTEXT;\n}\nexport const scheduleTimeout = setTimeout;\nexport const cancelTimeout = clearTimeout;\nexport const noTimeout = -1;\n// export const schedulePassiveEffects = scheduleDeferredCallback;\n// export const cancelPassiveEffects = cancelDeferredCallback;\nexport function shouldSetTextContent(type, props) {\n return false;\n}\n// The Konva renderer is secondary to the React DOM renderer.\nexport const isPrimaryRenderer = false;\nexport const warnsIfNotActing = true;\nexport const supportsMutation = true;\nexport function appendChild(parentInstance, child) {\n if (child.parent === parentInstance) {\n child.moveToTop();\n }\n else {\n parentInstance.add(child);\n }\n updatePicture(parentInstance);\n}\nexport function appendChildToContainer(parentInstance, child) {\n if (child.parent === parentInstance) {\n child.moveToTop();\n }\n else {\n parentInstance.add(child);\n }\n updatePicture(parentInstance);\n}\nexport function insertBefore(parentInstance, child, beforeChild) {\n // child._remove() will not stop dragging\n // but child.remove() will stop it, but we don't need it\n // removing will reset zIndexes\n child._remove();\n parentInstance.add(child);\n child.setZIndex(beforeChild.getZIndex());\n updatePicture(parentInstance);\n}\nexport function insertInContainerBefore(parentInstance, child, beforeChild) {\n insertBefore(parentInstance, child, beforeChild);\n}\nexport function removeChild(parentInstance, child) {\n child.destroy();\n child.off(EVENTS_NAMESPACE);\n updatePicture(parentInstance);\n}\nexport function removeChildFromContainer(parentInstance, child) {\n child.destroy();\n child.off(EVENTS_NAMESPACE);\n updatePicture(parentInstance);\n}\nexport function commitTextUpdate(textInstance, oldText, newText) {\n console.error(`Text components are not yet supported in ReactKonva. You text is: \"${newText}\"`);\n}\nexport function commitMount(instance, type, newProps) {\n // Noop\n}\nexport function commitUpdate(instance, updatePayload, type, oldProps, newProps) {\n applyNodeProps(instance, newProps, oldProps);\n}\nexport function hideInstance(instance) {\n instance.hide();\n updatePicture(instance);\n}\nexport function hideTextInstance(textInstance) {\n // Noop\n}\nexport function unhideInstance(instance, props) {\n if (props.visible == null || props.visible) {\n instance.show();\n }\n}\nexport function unhideTextInstance(textInstance, text) {\n // Noop\n}\nexport function clearContainer(container) {\n // Noop\n}\nexport function detachDeletedInstance() { }\nexport const getCurrentEventPriority = () => DefaultEventPriority;\n","import * as React from \"react\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar _a, _b;\nconst useIsomorphicLayoutEffect = typeof window !== \"undefined\" && (((_a = window.document) == null ? void 0 : _a.createElement) || ((_b = window.navigator) == null ? void 0 : _b.product) === \"ReactNative\") ? React.useLayoutEffect : React.useEffect;\nfunction traverseFiber(fiber, ascending, selector) {\n if (!fiber)\n return;\n if (selector(fiber) === true)\n return fiber;\n let child = ascending ? fiber.return : fiber.child;\n while (child) {\n const match = traverseFiber(child, ascending, selector);\n if (match)\n return match;\n child = ascending ? null : child.sibling;\n }\n}\nfunction wrapContext(context) {\n try {\n return Object.defineProperties(context, {\n _currentRenderer: {\n get() {\n return null;\n },\n set() {\n }\n },\n _currentRenderer2: {\n get() {\n return null;\n },\n set() {\n }\n }\n });\n } catch (_) {\n return context;\n }\n}\nconst error = console.error;\nconsole.error = function() {\n const message = [...arguments].join(\"\");\n if ((message == null ? void 0 : message.startsWith(\"Warning:\")) && message.includes(\"useContext\")) {\n console.error = error;\n return;\n }\n return error.apply(this, arguments);\n};\nconst FiberContext = wrapContext(React.createContext(null));\nclass FiberProvider extends React.Component {\n render() {\n return /* @__PURE__ */ React.createElement(FiberContext.Provider, {\n value: this._reactInternals\n }, this.props.children);\n }\n}\nfunction useFiber() {\n const root = React.useContext(FiberContext);\n if (root === null)\n throw new Error(\"its-fine: useFiber must be called within a !\");\n const id = React.useId();\n const fiber = React.useMemo(() => {\n for (const maybeFiber of [root, root == null ? void 0 : root.alternate]) {\n if (!maybeFiber)\n continue;\n const fiber2 = traverseFiber(maybeFiber, false, (node) => {\n let state = node.memoizedState;\n while (state) {\n if (state.memoizedState === id)\n return true;\n state = state.next;\n }\n });\n if (fiber2)\n return fiber2;\n }\n }, [root, id]);\n return fiber;\n}\nfunction useContainer() {\n const fiber = useFiber();\n const root = React.useMemo(\n () => traverseFiber(fiber, true, (node) => {\n var _a2;\n return ((_a2 = node.stateNode) == null ? void 0 : _a2.containerInfo) != null;\n }),\n [fiber]\n );\n return root == null ? void 0 : root.stateNode.containerInfo;\n}\nfunction useNearestChild(type) {\n const fiber = useFiber();\n const childRef = React.useRef();\n useIsomorphicLayoutEffect(() => {\n var _a2;\n childRef.current = (_a2 = traverseFiber(\n fiber,\n false,\n (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n )) == null ? void 0 : _a2.stateNode;\n }, [fiber]);\n return childRef;\n}\nfunction useNearestParent(type) {\n const fiber = useFiber();\n const parentRef = React.useRef();\n useIsomorphicLayoutEffect(() => {\n var _a2;\n parentRef.current = (_a2 = traverseFiber(\n fiber,\n true,\n (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n )) == null ? void 0 : _a2.stateNode;\n }, [fiber]);\n return parentRef;\n}\nfunction useContextMap() {\n const fiber = useFiber();\n const [contextMap] = React.useState(() => /* @__PURE__ */ new Map());\n contextMap.clear();\n let node = fiber;\n while (node) {\n if (node.type && typeof node.type === \"object\") {\n const enableRenderableContext = node.type._context === void 0 && node.type.Provider === node.type;\n const context = enableRenderableContext ? node.type : node.type._context;\n if (context && context !== FiberContext && !contextMap.has(context)) {\n contextMap.set(context, React.useContext(wrapContext(context)));\n }\n }\n node = node.return;\n }\n return contextMap;\n}\nfunction useContextBridge() {\n const contextMap = useContextMap();\n return React.useMemo(\n () => Array.from(contextMap.keys()).reduce(\n (Prev, context) => (props) => /* @__PURE__ */ React.createElement(Prev, null, /* @__PURE__ */ React.createElement(context.Provider, __spreadProps(__spreadValues({}, props), {\n value: contextMap.get(context)\n }))),\n (props) => /* @__PURE__ */ React.createElement(FiberProvider, __spreadValues({}, props))\n ),\n [contextMap]\n );\n}\nexport {\n FiberProvider,\n traverseFiber,\n useContainer,\n useContextBridge,\n useContextMap,\n useFiber,\n useNearestChild,\n useNearestParent\n};\n//# sourceMappingURL=index.js.map\n","/**\n * Based on ReactArt.js\n * Copyright (c) 2017-present Lavrenov Anton.\n * All rights reserved.\n *\n * MIT\n */\n'use strict';\nimport React from 'react';\nimport Konva from 'konva/lib/Core.js';\nimport ReactFiberReconciler from 'react-reconciler';\nimport { LegacyRoot } from 'react-reconciler/constants.js';\nimport * as HostConfig from './ReactKonvaHostConfig.js';\nimport { applyNodeProps, toggleStrictMode } from './makeUpdates.js';\nimport { useContextBridge, FiberProvider } from 'its-fine';\nfunction usePrevious(value) {\n const ref = React.useRef({});\n React.useLayoutEffect(() => {\n ref.current = value;\n });\n React.useLayoutEffect(() => {\n return () => {\n // when using suspense it is possible that stage is unmounted\n // but React still keep component ref\n // in that case we need to manually flush props\n // we have a special test for that\n ref.current = {};\n };\n }, []);\n return ref.current;\n}\nconst StageWrap = (props) => {\n const container = React.useRef();\n const stage = React.useRef();\n const fiberRef = React.useRef();\n const oldProps = usePrevious(props);\n const Bridge = useContextBridge();\n const _setRef = (stage) => {\n const { forwardedRef } = props;\n if (!forwardedRef) {\n return;\n }\n if (typeof forwardedRef === 'function') {\n forwardedRef(stage);\n }\n else {\n forwardedRef.current = stage;\n }\n };\n React.useLayoutEffect(() => {\n stage.current = new Konva.Stage({\n width: props.width,\n height: props.height,\n container: container.current,\n });\n _setRef(stage.current);\n // @ts-ignore\n fiberRef.current = KonvaRenderer.createContainer(stage.current, LegacyRoot, false, null);\n KonvaRenderer.updateContainer(React.createElement(Bridge, {}, props.children), fiberRef.current);\n return () => {\n if (!Konva.isBrowser) {\n return;\n }\n _setRef(null);\n KonvaRenderer.updateContainer(null, fiberRef.current, null);\n stage.current.destroy();\n };\n }, []);\n React.useLayoutEffect(() => {\n _setRef(stage.current);\n applyNodeProps(stage.current, props, oldProps);\n KonvaRenderer.updateContainer(React.createElement(Bridge, {}, props.children), fiberRef.current, null);\n });\n return React.createElement('div', {\n ref: container,\n id: props.id,\n accessKey: props.accessKey,\n className: props.className,\n role: props.role,\n style: props.style,\n tabIndex: props.tabIndex,\n title: props.title,\n });\n};\nexport const Layer = 'Layer';\nexport const FastLayer = 'FastLayer';\nexport const Group = 'Group';\nexport const Label = 'Label';\nexport const Rect = 'Rect';\nexport const Circle = 'Circle';\nexport const Ellipse = 'Ellipse';\nexport const Wedge = 'Wedge';\nexport const Line = 'Line';\nexport const Sprite = 'Sprite';\nexport const Image = 'Image';\nexport const Text = 'Text';\nexport const TextPath = 'TextPath';\nexport const Star = 'Star';\nexport const Ring = 'Ring';\nexport const Arc = 'Arc';\nexport const Tag = 'Tag';\nexport const Path = 'Path';\nexport const RegularPolygon = 'RegularPolygon';\nexport const Arrow = 'Arrow';\nexport const Shape = 'Shape';\nexport const Transformer = 'Transformer';\n// @ts-ignore\nexport const KonvaRenderer = ReactFiberReconciler(HostConfig);\nKonvaRenderer.injectIntoDevTools({\n // @ts-ignore\n findHostInstanceByFiber: () => null,\n bundleType: process.env.NODE_ENV !== 'production' ? 1 : 0,\n version: React.version,\n rendererPackageName: 'react-konva',\n});\nexport const Stage = React.forwardRef((props, ref) => {\n return React.createElement(FiberProvider, {}, React.createElement(StageWrap, { ...props, forwardedRef: ref }));\n});\nexport const useStrictMode = toggleStrictMode;\n","var getDimensionsMinimalRatio=function(a,b,c,d){return Math.min(a/c,b/d)||1};export default getDimensionsMinimalRatio;","export var ROOT_CONTAINER_CLASS_NAME=\"FIE_root\";export var DESIGN_LAYER_ID=\"FIE_design-layer\";export var TRANSFORMERS_LAYER_ID=\"FIE_transformers-layer\";export var IMAGE_NODE_ID=\"FIE_original-image\";export var NODES_TRANSFORMER_ID=\"FIE_nodes-transformer\";export var WATERMARK_ANNOTATION_ID=\"watermark\";export var TRANSLATIONS_GRID_UUID=\"353297d2-40b4-4684-a875-45a2178a8157\";export var DEFAULT_SAVE_QUALITY=.92;export var TABS_IDS={FINETUNE:\"Finetune\",FILTERS:\"Filters\",ADJUST:\"Adjust\",WATERMARK:\"Watermark\",ANNOTATE:\"Annotate\",RESIZE:\"Resize\"};export var TOOLS_IDS={CROP:\"Crop\",ROTATE:\"Rotate\",FLIP_X:\"Flip_X\",FLIP_Y:\"Flip_Y\",BRIGHTNESS:\"Brightness\",CONTRAST:\"Contrast\",HSV:\"HueSaturationValue\",WARMTH:\"Warmth\",BLUR:\"Blur\",THRESHOLD:\"Threshold\",POSTERIZE:\"Posterize\",PIXELATE:\"Pixelate\",NOISE:\"Noise\",FILTERS:\"Filters\",RECT:\"Rect\",ELLIPSE:\"Ellipse\",POLYGON:\"Polygon\",TEXT:\"Text\",LINE:\"Line\",IMAGE:\"Image\",ARROW:\"Arrow\",WATERMARK:\"Watermark\",PEN:\"Pen\",RESIZE:\"Resize\"};export var FLIP_DIRECTIONS={X:\"X\",Y:\"Y\"};export var DEFAULT_ZOOM_FACTOR=1;export var SUPPORTED_IMAGE_TYPES=[\"png\",\"jpeg\",\"jpg\",\"webp\"];export var POSSIBLE_IMAGE_TYPES=[].concat(SUPPORTED_IMAGE_TYPES,[\"svg\",\"gif\",\"avif\",\"apng\"]);export var DEFAULT_IMAGE_TYPE=SUPPORTED_IMAGE_TYPES[0];export var POINTER_ICONS={DEFAULT:\"default\",DRAW:\"crosshair\",SELECT:\"pointer\",MOVE:\"move\",DRAG:\"GRAB\"};export var DEFAULT_ENABLED_ANCHORS=[\"top-left\",\"top-center\",\"top-right\",\"middle-right\",\"middle-left\",\"bottom-left\",\"bottom-center\",\"bottom-right\"];export var ORIGINAL_CROP=\"Crop\";export var CUSTOM_CROP=\"custom\";export var ELLIPSE_CROP=\"ellipse\";export var POSITIONS={TOP_LEFT:\"top-left\",TOP_CENTER:\"top-center\",TOP_RIGHT:\"top-right\",MIDDLE_LEFT:\"middle-left\",MIDDLE_CENTER:\"middle-center\",MIDDLE_RIGHT:\"middle-right\",BOTTOM_LEFT:\"bottom-left\",BOTTOM_CENTER:\"bottom-center\",BOTTOM_RIGHT:\"bottom-right\"};export var MIN_CROP={WIDTH:14,HEIGHT:14};export var CLOSING_REASONS={AFTER_SAVE:\"after-saving\",CLOSE_BUTTON:\"close-button-clicked\",BACK_BUTTON:\"back-button-clicked\"};export var FEEDBACK_STATUSES={WARNING:\"warning\",ERROR:\"error\"};export var EDITOR_TO_CLOUDIMG_POSITIONS={top:\"north\",bottom:\"south\",left:\"west\",center:\"center\",right:\"east\"};export var CLOUDIMG_TO_EDITOR_POSITIONS={northwest:\"top-left\",northcenter:\"top-center\",northeast:\"top-right\",centerwest:\"center-left\",centercenter:\"center-center\",centereast:\"center-right\",southwest:\"bottom-left\",southcenter:\"bottom-center\",southeast:\"bottom-right\"};","import{ELLIPSE_CROP}from\"./constants\";var cropImage=function(a,b){var c=!!(2 {\n exports.Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nexports._registerNode = _registerNode;\nexports.Konva._injectGlobal(exports.Konva);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = void 0;\nconst Global_1 = require(\"./Global\");\nclass Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n var m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n var m11 = this.m[0] + this.m[2] * sy;\n var m12 = this.m[1] + this.m[3] * sy;\n var m21 = this.m[2] + this.m[0] * sx;\n var m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n var a = this.m[0];\n var b = this.m[1];\n var c = this.m[2];\n var d = this.m[3];\n var e = this.m[4];\n var f = this.m[5];\n var delta = a * d - b * c;\n let result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n var r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n var s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = exports.Util._getRotation(result.rotation);\n return result;\n }\n}\nexports.Transform = Transform;\nvar OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/, animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexports.Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n var firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n var canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n var imageObj = exports.Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n var bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n var randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n var rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (exports.Util._namedColorToRBA(str) ||\n exports.Util._hex3ColorToRGBA(str) ||\n exports.Util._hex4ColorToRGBA(str) ||\n exports.Util._hex6ColorToRGBA(str) ||\n exports.Util._hex8ColorToRGBA(str) ||\n exports.Util._rgbColorToRGBA(str) ||\n exports.Util._rgbaColorToRGBA(str) ||\n exports.Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n var c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n var retObj = {};\n for (var key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n exports.Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return exports.Util.degToRad(deg);\n },\n _radToDeg(rad) {\n exports.Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return exports.Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Global_1.Konva.angleDeg ? exports.Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Global_1.Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (var key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n var x, y, dist;\n var pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n var u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n var pc = exports.Util.cloneObject(pt);\n var dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n var p2 = line[(i + 1) % line.length];\n var proj = exports.Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n var px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n var n, start = [], end = [];\n if (startArray.length > endArray.length) {\n var temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n var newStart = [];\n end.forEach(function (point) {\n var pr = exports.Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n var desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (var key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n exports.Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (exports.Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (var key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Global_1.Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getComponentValidator = exports.getBooleanValidator = exports.getNumberArrayValidator = exports.getFunctionValidator = exports.getStringOrGradientValidator = exports.getStringValidator = exports.getNumberOrAutoValidator = exports.getNumberOrArrayOfNumbersValidator = exports.getNumberValidator = exports.alphaComponent = exports.RGBComponent = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n if (Util_1.Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util_1.Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nfunction RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexports.RGBComponent = RGBComponent;\nfunction alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexports.alphaComponent = alphaComponent;\nfunction getNumberValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isNumber(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexports.getNumberValidator = getNumberValidator;\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util_1.Util._isNumber(val);\n let isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nfunction getNumberOrAutoValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nfunction getStringValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isString(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexports.getStringValidator = getStringValidator;\nfunction getStringOrGradientValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util_1.Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val.addColorStop);\n if (!(isString || isGradient)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nfunction getFunctionValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isFunction(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexports.getFunctionValidator = getFunctionValidator;\nfunction getNumberArrayValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util_1.Util._isArray(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util_1.Util._isNumber(item)) {\n Util_1.Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexports.getNumberArrayValidator = getNumberArrayValidator;\nfunction getBooleanValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isBool = val === true || val === false;\n if (!isBool) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexports.getBooleanValidator = getBooleanValidator;\nfunction getComponentValidator(components) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util_1.Util.isObject(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\nexports.getComponentValidator = getComponentValidator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nconst Util_1 = require(\"./Util\");\nconst Validators_1 = require(\"./Validators\");\nvar GET = 'get', SET = 'set';\nexports.Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n exports.Factory.addGetter(constructor, attr, def);\n exports.Factory.addSetter(constructor, attr, validator, after);\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n var method = GET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n exports.Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n var len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\n constructor.prototype[getter] = function () {\n var ret = {};\n for (n = 0; n < len; n++) {\n component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n var basicValidator = (0, Validators_1.getComponentValidator)(components);\n constructor.prototype[setter] = function (val) {\n var oldVal = this.attrs[attr], key;\n if (validator) {\n val = validator.call(this, val);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n var capitalizedAttr = Util_1.Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util_1.Util.error('Adding deprecated ' + attr);\n var method = GET + Util_1.Util._capitalize(attr);\n var message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util_1.Util.error(message);\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n exports.Factory.addSetter(constructor, attr, validator, function () {\n Util_1.Util.error(message);\n });\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n var method = constructor.prototype[newMethodName];\n var oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n var oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util_1.Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitContext = exports.SceneContext = exports.Context = void 0;\nconst Util_1 = require(\"./Util\");\nconst Global_1 = require(\"./Global\");\nfunction simplifyArray(arr) {\n var retArr = [], len = arr.length, util = Util_1.Util, n, val;\n for (n = 0; n < len; n++) {\n val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nvar COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nvar CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n];\nconst traceArrMax = 100;\nclass Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Global_1.Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n var traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util_1.Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n var traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n var canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n var absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n var a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n var a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n var that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n var func = function (methodName) {\n var origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n var prop = arguments[0];\n var val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n var def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nexports.Context = Context;\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nclass SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n var fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n var grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n var dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n var hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n var color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexports.SceneContext = SceneContext;\nclass HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n var hitStrokeWidth = shape.hitStrokeWidth();\n var strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\nexports.HitContext = HitContext;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitCanvas = exports.SceneCanvas = exports.Canvas = void 0;\nconst Util_1 = require(\"./Util\");\nconst Context_1 = require(\"./Context\");\nconst Global_1 = require(\"./Global\");\nconst Factory_1 = require(\"./Factory\");\nconst Validators_1 = require(\"./Validators\");\nvar _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n var canvas = Util_1.Util.createCanvasElement();\n var context = canvas.getContext('2d');\n _pixelRatio = (function () {\n var devicePixelRatio = Global_1.Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util_1.Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nclass Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n var conf = config || {};\n var pixelRatio = conf.pixelRatio || Global_1.Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util_1.Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n var previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util_1.Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexports.Canvas = Canvas;\nFactory_1.Factory.addGetterSetter(Canvas, 'pixelRatio', undefined, (0, Validators_1.getNumberValidator)());\nclass SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new Context_1.SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexports.SceneCanvas = SceneCanvas;\nclass HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new Context_1.HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\nexports.HitCanvas = HitCanvas;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DD = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nexports.DD = {\n get isDragging() {\n var flag = false;\n exports.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n var node;\n exports.DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n exports.DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util_1.Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n var dragDistance = node.dragDistance();\n var distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n exports.DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n exports.DD.justDragged = true;\n Global_1.Konva._mouseListenClick = false;\n Global_1.Konva._touchListenClick = false;\n Global_1.Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Global_1.Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n exports.DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n exports.DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Global_1.Konva.isBrowser) {\n window.addEventListener('mouseup', exports.DD._endDragBefore, true);\n window.addEventListener('touchend', exports.DD._endDragBefore, true);\n window.addEventListener('mousemove', exports.DD._drag);\n window.addEventListener('touchmove', exports.DD._drag);\n window.addEventListener('mouseup', exports.DD._endDragAfter, false);\n window.addEventListener('touchend', exports.DD._endDragAfter, false);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Global_1 = require(\"./Global\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Validators_1 = require(\"./Validators\");\nvar ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nclass Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n var cache = this._cache.get(attr);\n var isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n var invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util_1.Util.releaseCanvas(scene, filter, hit);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n var conf = config || {};\n var rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n var width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util_1.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n var cachedSceneCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n var points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n var trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n var transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n var cacheCanvas = this._getCachedSceneCanvas();\n var ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n var canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n var filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n var ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter !== 'function') {\n Util_1.Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util_1.Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n }\n return filterCanvas;\n }\n return sceneCanvas;\n }\n on(evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n var events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n }\n off(evtStr, callback) {\n var events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n var e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n var stopNode = this;\n this.on(event, function (evt) {\n var targets = evt.target.findAncestors(selector, true, stopNode);\n for (var i = 0; i < targets.length; i++) {\n evt = Util_1.Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DragAndDrop_1.DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n var parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n var method = 'get' + Util_1.Util._capitalize(attr);\n if (Util_1.Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n var parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n var key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util_1.Util._capitalize(key);\n if (Util_1.Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n var layer = this.getLayer();\n var layerUnderDrag = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n var dragSkip = !skipDragCheck &&\n !Global_1.Konva.hitOnDragEnabled &&\n (layerUnderDrag || Global_1.Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n var depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n var depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n var pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n var transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n var absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Util_1.Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n var it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n var key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n var trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n var changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n var family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util_1.Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n var index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n var absOpacity = this.opacity();\n var parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n var attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util_1.Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n var res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n var ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n var selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util_1.Util.isValidSelector(sel)) {\n Util_1.Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util_1.Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n var parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n var parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n var at;\n if (top) {\n at = new Util_1.Transform();\n this._eachAncestorReverse(function (node) {\n var transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Util_1.Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n var transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n var parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n var m = this._cache.get(TRANSFORM) || new Util_1.Transform();\n m.reset();\n var x = this.x(), y = this.y(), rotation = Global_1.Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n var attrs = Util_1.Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n var node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n var box = this.getClientRect();\n var stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new Canvas_1.SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new Canvas_1.SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n var mimeType = config.mimeType || null, quality = config.quality || null;\n var url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util_1.Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Global_1.Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n var evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n var oldName = this.name();\n var newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n var names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n var names = (this.name() || '').split(/\\s/g);\n var index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n var func = this[SET + Util_1.Util._capitalize(attr)];\n if (Util_1.Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Global_1.Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n var oldVal = this.attrs[key];\n if (oldVal === val && !Util_1.Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n var oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n var shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n var stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (var i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (var i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n var pointerId = evt ? evt.pointerId : undefined;\n var stage = this.getStage();\n var ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n var pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DragAndDrop_1.DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n var newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n var dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util_1.Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DragAndDrop_1.DD._endDragBefore(evt);\n DragAndDrop_1.DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n var shouldCheckButton = evt.evt['button'] !== undefined;\n var canDrag = !shouldCheckButton || Global_1.Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n var hasDraggingChild = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n var stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DragAndDrop_1.DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DragAndDrop_1.DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util_1.Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util_1.Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n var className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Global_1.Konva[className]) {\n Util_1.Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Global_1.Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'y', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'opacity', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'name', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'id', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'rotation', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'scaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'skewY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'offsetY', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'dragDistance', null, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'width', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'height', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'listening', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'preventDefault', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'filters', null, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'transformsEnabled', 'all', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n if (!filterFunc) {\n return this.children || [];\n }\n const children = this.children || [];\n var results = [];\n children.forEach(function (child) {\n if (filterFunc(child)) {\n results.push(child);\n }\n });\n return results;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (var i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n var result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n var retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n var obj = Node_1.Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n var parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n var node = Node_1.Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n var arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n var caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n var context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n var transform = this.getAbsoluteTransform(top);\n var m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n var clipX = this.clipX();\n var clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n var hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n var skipTransform = config.skipTransform;\n var relativeTo = config.relativeTo;\n var minX, minY, maxX, maxY;\n var selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n var that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n var rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n var shapes = this.find('Shape');\n var hasVisible = false;\n for (var i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.releaseCapture = exports.setPointerCapture = exports.hasPointerCapture = exports.createEvent = exports.getCapturedShape = void 0;\nconst Global_1 = require(\"./Global\");\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexports.getCapturedShape = getCapturedShape;\nfunction createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexports.createEvent = createEvent;\nfunction hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexports.hasPointerCapture = hasPointerCapture;\nfunction setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexports.setPointerCapture = setPointerCapture;\nfunction releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\nexports.releaseCapture = releaseCapture;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Global_1.Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util_1.Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n exports.stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util_1.Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n if (container.charAt(0) === '.') {\n var className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n var layers = this.children, len = layers.length, n;\n for (n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container_1.Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n var content = this.content;\n if (content && Util_1.Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n var index = exports.stages.indexOf(this);\n if (index > -1) {\n exports.stages.splice(index, 1);\n }\n Util_1.Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util_1.Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n var canvas = new Canvas_1.SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n var _context = canvas.getContext()._context;\n var layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n var layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n var layers = this.children, len = layers.length, end = len - 1, n;\n for (n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n var width = this.width();\n var height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (var i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n var length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util_1.Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Global_1.Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n var targetShape = this._getTargetShape(eventType);\n var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n var triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n var shape = this.getIntersection(pos);\n DragAndDrop_1.DD.justDragged = false;\n Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n return;\n }\n if (Global_1.Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n if (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n var processedShapesIds = {};\n let triggeredOnShape = false;\n var targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n var differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n var processedShapesIds = {};\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Global_1.Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n var contentPosition = this._getContentPosition(), x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util_1.Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util_1.Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n var rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new Canvas_1.SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n var container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util_1.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar HAS_SHADOW = 'hasShadow';\nvar SHADOW_RGBA = 'shadowRGBA';\nvar patternImage = 'patternImage';\nvar linearGradient = 'linearGradient';\nvar radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexports.shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n context.fill();\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nclass Shape extends Node_1.Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util_1.Util.getRandomColor();\n if (key && !(key in exports.shapes)) {\n break;\n }\n }\n this.colorKey = key;\n exports.shapes[key] = this;\n }\n getContext() {\n Util_1.Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util_1.Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n var ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Util_1.Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Global_1.Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n var colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillLinearGradientStartPoint();\n var end = this.fillLinearGradientEndPoint();\n var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n var colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillRadialGradientStartPoint();\n var end = this.fillRadialGradientEndPoint();\n var grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n var rgba = Util_1.Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n var stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node_1.Node.prototype.destroy.call(this);\n delete exports.shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util_1.Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n var size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n var layer = this.getLayer();\n var canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferContext;\n var skipBuffer = canvas.isCache;\n var cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n var ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, 0, 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n const selfCache = this === top;\n if (!selfCache) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n var cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n hitData = hitImageData.data;\n len = hitData.length;\n rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n for (i = 0; i < len; i += 4) {\n alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util_1.Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nexports.Shape = Shape;\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n(0, Global_2._registerNode)(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRule', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nvar HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n constructor(config) {\n super(config);\n this.canvas = new Canvas_1.SceneCanvas();\n this.hitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n var stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node_1.Node.prototype.moveToTop.call(this);\n var stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n var moved = Node_1.Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n var stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node_1.Node.prototype.moveDown.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node_1.Node.prototype.moveToBottom.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n var _canvas = this.getNativeCanvasElement();\n Node_1.Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node_1.Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util_1.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util_1.Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n var spiralSearchDistance = 1;\n var continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n const shape = Shape_1.shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container_1.Container.prototype.drawScene.call(this, canvas, top);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container_1.Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n var parent = this.parent;\n var added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n _validateAdd(child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n if (Global_1.glob.performance && Global_1.glob.performance.now) {\n return function () {\n return Global_1.glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nclass Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (let key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util_1.Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util_1.Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nvar blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n var handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n var t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nclass Tween {\n constructor(config) {\n var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n var layers = node.getLayer() ||\n (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation_1.Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n start = node.getAttr(key);\n if (Util_1.Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util_1.Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n var startRGBA = Util_1.Util.colorToRGBA(start[n]);\n endRGBA = Util_1.Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util_1.Util.colorToRGBA(start);\n endRGBA = Util_1.Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n var node = this.node, attrs = Tween.attrs[node._id][this._id], key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util_1.Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n var node = this.node;\n var attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n var node = this.node;\n var attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n this.pause();\n for (key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.prototype.to = function (params) {\n var onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n var tween = new Tween(params);\n tween.play();\n};\nexports.Easings = {\n BackEaseIn(t, b, c, d) {\n var s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n var s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n var s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return exports.Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n Util: Util_1.Util,\n Transform: Util_1.Transform,\n Node: Node_1.Node,\n Container: Container_1.Container,\n Stage: Stage_1.Stage,\n stages: Stage_1.stages,\n Layer: Layer_1.Layer,\n FastLayer: FastLayer_1.FastLayer,\n Group: Group_1.Group,\n DD: DragAndDrop_1.DD,\n Shape: Shape_1.Shape,\n shapes: Shape_1.shapes,\n Animation: Animation_1.Animation,\n Tween: Tween_1.Tween,\n Easings: Tween_1.Easings,\n Context: Context_1.Context,\n Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n _sceneFunc(context) {\n var angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Global_1.Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n var d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n var len = p.length, allPoints = [], n, cp;\n for (n = 2; n < len - 2; n += 2) {\n cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nclass Line extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n var p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n var points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexports.cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst getCubicArcLength = (xs, ys, t) => {\n let z;\n let sum;\n let correctedT;\n const n = 20;\n z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * exports.tValues[n][i] + z;\n sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nexports.getQuadraticArcLength = getQuadraticArcLength;\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n exports.binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nconst t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\nexports.t2length = t2length;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n var ca = this.dataArray;\n context.beginPath();\n var isClosed = false;\n for (var n = 0; n < ca.length; n++) {\n var c = ca[n].command;\n var p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n var points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n var start = data.points[4];\n var dTheta = data.points[5];\n var end = data.points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (var i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n var point, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n point = dataArray[i - 1].points.slice(-2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n if (length < 0.01) {\n point = dataArray[i].points.slice(0, 2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n var cp = dataArray[i];\n var p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getCubicArcLength)([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getQuadraticArcLength)([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n if (fromX === undefined) {\n fromX = P1x;\n }\n if (fromY === undefined) {\n fromY = P1y;\n }\n var m = (P2y - P1y) / (P2x - P1x + 0.00000001);\n var run = Math.sqrt((dist * dist) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n var rise = m * run;\n var pt;\n if (P2x === P1x) {\n pt = {\n x: fromX,\n y: fromY + rise,\n };\n }\n else if ((fromY - P1y) / (fromX - P1x + 0.00000001) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise,\n };\n }\n else {\n var ix, iy;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt((pRun * pRun) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise,\n };\n }\n return pt;\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n var cs = data;\n var cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n var arr = cs.split('|');\n var ca = [];\n var coords = [];\n var cpx = 0;\n var cpy = 0;\n var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n var match;\n for (n = 1; n < arr.length; n++) {\n var str = arr[n];\n var c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n var p = [];\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n if (coords[j] === '00') {\n p.push(0, 0);\n continue;\n }\n var parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n var cmd = '';\n var points = [];\n var startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n var dx = p.shift();\n var dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (var idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n var len, p1, p2, t;\n var path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n var psi = psiDeg * (Math.PI / 180.0);\n var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n var cxp = (f * rx * yp) / ry;\n var cyp = (f * -ry * xp) / rx;\n var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n var vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n var vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n var vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n var PI2 = Math.PI * 2;\n var points = this.points();\n var tp = points;\n var fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n var length = this.pointerLength();\n var n = points.length;\n var dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path_1.Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n var radians = (Math.atan2(dy, dx) + PI2) % PI2;\n var width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n var isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x - offset,\n y: lineRect.y - offset,\n width: lineRect.width + offset * 2,\n height: lineRect.height + offset * 2,\n };\n }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.Shape {\n _sceneFunc(context) {\n var rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n constructor(attrs) {\n super(attrs);\n this.on('imageChange.konva', () => {\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', () => {\n this._requestDraw();\n });\n }\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n var width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n var img = Util_1.Util.createImageElement();\n img.onload = function () {\n var image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nclass Label extends Group_1.Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n var that = this, n;\n var func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n var text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.Shape {\n _sceneFunc(context) {\n var width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n var x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nclass Rect extends Shape_1.Shape {\n _sceneFunc(context) {\n var cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\n(0, Global_1._registerNode)(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n _sceneFunc(context) {\n const points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (var n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (var n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n var minX = points[0].x;\n var maxX = points[0].y;\n var minY = points[0].x;\n var maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar PIx2 = Math.PI * 2;\nclass Ring extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation_1.Animation(() => {\n var updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n var offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n var offset = offsets[anim];\n var ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n var that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n var layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n var index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.Shape {\n _sceneFunc(context) {\n var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (var n = 1; n < numPoints * 2; n++) {\n var radius = n % 2 === 0 ? outerRadius : innerRadius;\n var x = radius * Math.sin((n * Math.PI) / numPoints);\n var y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = exports.stringToArray = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction stringToArray(string) {\n return Array.from(string);\n}\nexports.stringToArray = stringToArray;\nvar AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', LTR = 'ltr', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nvar dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nclass Text extends Shape_1.Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (var n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n var padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n var translateY = 0;\n var translateY = lineHeightPx / 2;\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', MIDDLE);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY + Math.round(fontSize / 2));\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + Math.round(fontSize / 2));\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && lastLine && !oneWord\n ? totalWidth - padding * 2\n : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n spacesNumber = text.split(' ').length - 1;\n var array = stringToArray(text);\n for (var li = 0; li < array.length; li++) {\n var letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n var width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n var str = Util_1.Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n var isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n var width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n var letterSpacing = this.letterSpacing();\n var length = text.length;\n return (getDummyContext().measureText(text).width +\n (length ? letterSpacing * (length - 1) : 0));\n }\n _setTextData() {\n var lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\n for (var i = 0, max = lines.length; i < max; ++i) {\n var line = lines[i];\n var lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n var low = 0, high = line.length, match = '', matchWidth = 0;\n while (low < high) {\n var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n if (substrWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n var wrapIndex;\n var nextChar = line[match.length];\n var nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = match.length;\n }\n else {\n wrapIndex =\n Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = match.slice(0, low);\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n var shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n line = line.slice(low);\n line = line.trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n var fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n var width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n var lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n var haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nexports.Text = Text;\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n(0, Global_1._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nclass TextPath extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util_1.Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path_1.Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length - 1 > totalLength) {\n return null;\n }\n return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n var textDecoration = this.textDecoration();\n var fill = this.fill();\n var fontSize = this.fontSize();\n var glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n context.save();\n var p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n var glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n var p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n var p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text_1.Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text_1.Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n var dummyCanvas = this.dummyCanvas;\n var _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n var metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const { width, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n const charArr = (0, Text_1.stringToArray)(this.text());\n let offsetToGlyph = offset;\n for (var i = 0; i < charArr.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n if (charArr[i] === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint)\n return;\n const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n var points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n var minX = points[0] || 0;\n var maxX = points[0] || 0;\n var minY = points[1] || 0;\n var maxY = points[1] || 0;\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n var fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nexports.TextPath = TextPath;\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', null);\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', null);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nvar EVENTS_NAME = 'tr-konva';\nvar ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nvar NODES_RECT = 'nodesRect';\nvar TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n];\nvar ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n var angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nvar ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nvar MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Global_1.Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nclass Transformer extends Group_1.Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util_1.Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n var elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n var rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var absScale = node.getAbsoluteScale(relative);\n var absPos = node.getAbsolutePosition(relative);\n var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n var dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Global_1.Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Global_1.Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n var node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n var trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n var transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Util_1.Transform();\n tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n var transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n var anchor = new Rect_1.Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n var self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n var rad = Global_1.Konva.getAngle(this.rotation());\n var rotateCursor = this.rotateAnchorCursor();\n var cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n var back = new Shape_1.Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc(ctx, shape) {\n var tr = shape.getParent();\n var padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n var padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n this._movingAnchorName = e.target.name().split(' ')[0];\n var attrs = this._getNodeRect();\n var width = attrs.width;\n var height = attrs.height;\n var hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n var ap = e.target.getAbsolutePosition();\n var pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n var x, y, newHypotenuse;\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n var stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n var attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n var oldRotation = Global_1.Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Global_1.Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n var shiftBehavior = this.shiftBehavior();\n var keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n var topLeft = this.findOne('.top-left');\n var bottomRight = this.findOne('.bottom-right');\n var topOffsetX = topLeft.x();\n var topOffsetY = topLeft.y();\n var bottomOffsetX = this.getWidth() - bottomRight.x();\n var bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n var absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n var height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n var node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n var oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n var t = new Util_1.Transform();\n t.rotate(Global_1.Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Util_1.Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Util_1.Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Util_1.Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n var attrs = this._getNodeRect();\n this.rotation(Util_1.Util._getRotation(attrs.rotation));\n var width = attrs.width;\n var height = attrs.height;\n var enabledAnchors = this.enabledAnchors();\n var resizeEnabled = this.resizeEnabled();\n var padding = this.padding();\n var anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group_1.Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node_1.Node.prototype.toObject.call(this);\n }\n clone(obj) {\n var node = Node_1.Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nexports.Transformer = Transformer;\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util_1.Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util_1.Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Global_1.Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nvar mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nvar shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n var pixels = imageData.data, width = imageData.width, height = imageData.height;\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n yp = width;\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nconst Blur = function Blur(imageData) {\n var radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n var adjust = Math.pow((this.contrast() + 100) / 100, 2);\n var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n for (i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util_1.Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n var offsetY = (y - 1) * w4;\n var otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n var offsetYOther = (y - 1 + otherY) * w * 4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n var dR = data[offset] - data[offsetOther];\n var dG = data[offset + 1] - data[offsetOther + 1];\n var dB = data[offset + 2] - data[offsetOther + 2];\n var dif = dR;\n var absDif = dif > 0 ? dif : -dif;\n var absG = dG > 0 ? dG : -dG;\n var absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n var r = data[offset] + dif;\n var g = data[offset + 1] + dif;\n var b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n var grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', null, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, null, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nconst Enhance = function (imageData) {\n var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n var enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n var data = imageData.data, len = data.length, i, brightness;\n for (i = 0; i < len; i += 4) {\n brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\nexports.Grayscale = Grayscale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\nexports.HSL = HSL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst HSV = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n var data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\nexports.Invert = Invert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nvar ToPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta;\n var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n for (theta = 0; theta < tSize; theta += 1) {\n sin = Math.sin(theta * conversion);\n cos = Math.cos(theta * conversion);\n for (radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n i = (y * xSize + x) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nvar FromPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\n var x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n dx = x - xMid;\n dy = y - yMid;\n radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n i = (y1 * xSize + x1) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst Kaleidoscope = function (imageData) {\n var xSize = imageData.width, ySize = imageData.height;\n var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n var power = Math.round(this.kaleidoscopePower());\n var angle = Math.round(this.kaleidoscopeAngle());\n var offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n var tempCanvas = Util_1.Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n var scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util_1.Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n var minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n var sectionSize = minSectionSize;\n var xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n var idx = (y * idata.width + x) * 4;\n var d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n var m = [0, 0, 0];\n for (var i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n var rgbv_no = pixelAt(idata, 0, 0);\n var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n var rgbv_so = pixelAt(idata, 0, idata.height - 1);\n var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n var thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n var mask = [];\n for (var i = 0; i < idata.width * idata.height; i++) {\n var d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (var i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nconst Mask = function (imageData) {\n var threshold = this.threshold(), mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Noise = function (imageData) {\n var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\n for (i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util_1.Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n for (i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n for (i = 0; i < nPixels; i += 4) {\n brightness =\n (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGBA = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\n for (i = 0; i < nPixels; i += 4) {\n ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n var data = imageData.data, nPixels = data.length, i, r, g, b;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\nexports.Sepia = Sepia;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n do {\n var offsetY = (y - 1) * w4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var r = data[offset];\n var g = data[offset + 1];\n var b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\nexports.Solarize = Solarize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Threshold = function (imageData) {\n var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n Arc: Arc_1.Arc,\n Arrow: Arrow_1.Arrow,\n Circle: Circle_1.Circle,\n Ellipse: Ellipse_1.Ellipse,\n Image: Image_1.Image,\n Label: Label_1.Label,\n Tag: Label_1.Tag,\n Line: Line_1.Line,\n Path: Path_1.Path,\n Rect: Rect_1.Rect,\n RegularPolygon: RegularPolygon_1.RegularPolygon,\n Ring: Ring_1.Ring,\n Sprite: Sprite_1.Sprite,\n Star: Star_1.Star,\n Text: Text_1.Text,\n TextPath: TextPath_1.TextPath,\n Transformer: Transformer_1.Transformer,\n Wedge: Wedge_1.Wedge,\n Filters: {\n Blur: Blur_1.Blur,\n Brighten: Brighten_1.Brighten,\n Contrast: Contrast_1.Contrast,\n Emboss: Emboss_1.Emboss,\n Enhance: Enhance_1.Enhance,\n Grayscale: Grayscale_1.Grayscale,\n HSL: HSL_1.HSL,\n HSV: HSV_1.HSV,\n Invert: Invert_1.Invert,\n Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n Mask: Mask_1.Mask,\n Noise: Noise_1.Noise,\n Pixelate: Pixelate_1.Pixelate,\n Posterize: Posterize_1.Posterize,\n RGB: RGB_1.RGB,\n RGBA: RGBA_1.RGBA,\n Sepia: Sepia_1.Sepia,\n Solarize: Solarize_1.Solarize,\n Threshold: Threshold_1.Threshold,\n },\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";function _createForOfIteratorHelper(a,b){var c=\"undefined\"!=typeof Symbol&&a[Symbol.iterator]||a[\"@@iterator\"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&\"number\"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c[\"return\"]||c[\"return\"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if(\"string\"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return\"Object\"===c&&a.constructor&&(c=a.constructor.name),\"Map\"===c||\"Set\"===c?Array.from(a):\"Arguments\"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);cc?-1:c,c=~~(255*c),[b[0]+c,b[1]+c,b[2]+c]}},contrast:function contrast(a){return function(b){var c=a;c*=255;var d=259*(c+255)/(255*(259-c));return[d*(b[0]-128)+128,d*(b[1]-128)+128,d*(b[2]-128)+128]}},saturation:function saturation(a){return function(c){var d=a;d=-1>d?-1:d;var e=c[0],f=c[1],g=c[2],b=.2989*e+.587*f+.114*g;return[-b*d+e*(1+d),-b*d+f*(1+d),-b*d+g*(1+d)]}},grayscale:function grayscale(){return function(a){var c=a[0],d=a[1],e=a[2];return[,,,].fill(.2126*c+.7152*d+.0722*e)}},sepia:function sepia(a){return function(c){var d=c[0],e=c[1],f=c[2];return[d*(1-.607*a)+.769*e*a+.189*f*a,.349*d*a+e*(1-.314*a)+.168*f*a,.272*d*a+.534*e*a+f*(1-.869*a)]}},adjustRGB:function adjustRGB(a){return function(b){return[b[0]*a[0],b[1]*a[1],b[2]*a[2]]}},colorFilter:function colorFilter(a){return function(c){var d=c[0],e=c[1],f=c[2],b=a[3];return[d-(d-a[0])*b,e-(e-a[1])*b,f-(f-a[2])*b]}}};export default BaseFilters;","import BaseFilters from\"./BaseFilters\";function BlackAndWhite(a){BaseFilters.apply(a,function(a){var b=(a[0]+a[1]+a[2])/3>100,c=b?255:0;return[c,c,c]})}BlackAndWhite.filterName=\"BlackAndWhite\";export default BlackAndWhite;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,CONTRAST_CONST=.1,SATURATION_CONST=.15;function Clarendon(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}Clarendon.filterName=\"Clarendon\";export default Clarendon;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.04,CONTRAST_CONST=-.15;function Gingham(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.contrast(CONTRAST_CONST))}Gingham.filterName=\"Gingham\";export default Gingham;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1;function Moon(a){BaseFilters.apply(a,BaseFilters.grayscale(),BaseFilters.brightness(BRIGHTNESS_CONST));var b=a.data,c=b.length}Moon.filterName=\"Moon\";export default Moon;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.08,ADJUST_RGB_CONST=[1,1.03,1.05],SATURATION_CONST=.12;function Lark(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Lark.filterName=\"Lark\";export default Lark;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.4,BRIGHTNESS_CONST=.13,CONTRAST_CONST=-.05;function Reyes(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.contrast(CONTRAST_CONST))}Reyes.filterName=\"Reyes\";export default Reyes;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1.01,1.04,1],SATURATION_CONST=.3;function Juno(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Juno.filterName=\"Juno\";export default Juno;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,SATURATION_CONST=-.5;function Slumber(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Slumber.filterName=\"Slumber\";export default Slumber;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1.04,1,1.02],SATURATION_CONST=-.05;function Crema(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Crema.filterName=\"Crema\";export default Crema;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.05,SATURATION_CONST=-.03;function Ludwig(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Ludwig.filterName=\"Ludwig\";export default Ludwig;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[228,130,225,.13],SATURATION_CONST=-.2;function Aden(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST))}Aden.filterName=\"Aden\";export default Aden;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1.05,1.1,1];function Perpetua(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST))}Perpetua.filterName=\"Perpetua\";export default Perpetua;","import BaseFilters from\"./BaseFilters\";var SATURATION_CONST=.3,BRIGHTNESS_CONST=.15;function Amaro(a){BaseFilters.apply(a,BaseFilters.saturation(SATURATION_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Amaro.filterName=\"Amaro\";export default Amaro;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[230,115,108,.05],SATURATION_CONST=.15;function Mayfair(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST))}Mayfair.filterName=\"Mayfair\";export default Mayfair;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,170,0,.1],BRIGHTNESS_CONST=.09,SATURATION_CONST=.1;function Rise(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Rise.filterName=\"Rise\";export default Rise;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1,1,1.25],CONTRAST_CONST=.1,BRIGHTNESS_CONST=.15;function Hudson(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.contrast(CONTRAST_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Hudson.filterName=\"Hudson\";export default Hudson;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,225,80,.08],SATURATION_CONST=.1,CONTRAST_CONST=.05;function Valencia(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST),BaseFilters.contrast(CONTRAST_CONST))}Valencia.filterName=\"Valencia\";export default Valencia;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,255,0,.07],SATURATION_CONST=.2,CONTRAST_CONST=.15;function XPro2(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST),BaseFilters.contrast(CONTRAST_CONST))}XPro2.filterName=\"XPro2\";export default XPro2;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=-.15,SATURATION_CONST=.1;function Sierra(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}Sierra.filterName=\"Sierra\";export default Sierra;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[100,28,210,.03],BRIGHTNESS_CONST=.1;function Willow(a){BaseFilters.apply(a,BaseFilters.grayscale(),BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Willow.filterName=\"Willow\";export default Willow;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.15,SATURATION_CONST=.2;function LoFi(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}LoFi.filterName=\"LoFi\";export default LoFi;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.1,SATURATION_CONST=.15;function Hefe(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}Hefe.filterName=\"Hefe\";export default Hefe;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[220,115,188,.12],CONTRAST_CONST=-.05;function Nashville(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.contrast(CONTRAST_CONST))}Nashville.filterName=\"Nashville\";export default Nashville;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,SEPIA_CONST=.3;function Stinson(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.sepia(SEPIA_CONST))}Stinson.filterName=\"Stinson\";export default Stinson;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,225,0,.05],BRIGHTNESS_CONST=.06,CONTRAST_CONST=.06;function Vesper(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.contrast(CONTRAST_CONST))}Vesper.filterName=\"Vesper\";export default Vesper;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,165,40,.2];function Earlybird(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST))}Earlybird.filterName=\"Earlybird\";export default Earlybird;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.2,COLOR_FILTER_CONST=[140,10,185,.1];function Brannan(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.colorFilter(COLOR_FILTER_CONST))}Brannan.filterName=\"Brannan\";export default Brannan;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=-.1,SATURATION_CONST=-.1;function Sutro(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Sutro.filterName=\"Sutro\";export default Sutro;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.1,COLOR_FILTER_CONST=[255,145,0,.2];function Toaster(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.colorFilter(COLOR_FILTER_CONST))}Toaster.filterName=\"Toaster\";export default Toaster;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,COLOR_FILTER_CONST=[255,255,0,.2];function Walden(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.colorFilter(COLOR_FILTER_CONST))}Walden.filterName=\"Walden\";export default Walden;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,25,0,.15],BRIGHTNESS_CONST=.1;function NinteenSeventySeven(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}NinteenSeventySeven.filterName=\"NinteenSeventySeven\";export default NinteenSeventySeven;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,140,0,.1],ADJUST_RGB_CONST=[1.15,1.05,1],SATURATION_CONST=.35;function Kelvin(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Kelvin.filterName=\"Kelvin\";export default Kelvin;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[225,240,0,.1],SATURATION_CONST=.25,CONTRAST_CONST=.05;function Maven(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST),BaseFilters.contrast(CONTRAST_CONST))}Maven.filterName=\"Maven\";export default Maven;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.06,BRIGHTNESS_CONST=.1;function Ginza(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Ginza.filterName=\"Ginza\";export default Ginza;","import BaseFilters from\"./BaseFilters\";var SATURATION_CONST=.35,BRIGHTNESS_CONST=.1;function Skyline(a){BaseFilters.apply(a,BaseFilters.saturation(SATURATION_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Skyline.filterName=\"Skyline\";export default Skyline;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.15,BRIGHTNESS_CONST=.1;function Dogpatch(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Dogpatch.filterName=\"Dogpatch\";export default Dogpatch;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[25,240,252,.05],SEPIA_CONST=.3;function Brooklyn(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.sepia(SEPIA_CONST))}Brooklyn.filterName=\"Brooklyn\";export default Brooklyn;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[208,208,86,.2],CONTRAST_CONST=.15;function Helena(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.contrast(CONTRAST_CONST))}Helena.filterName=\"Helena\";export default Helena;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,160,25,.1],BRIGHTNESS_CONST=.1;function Ashby(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Ashby.filterName=\"Ashby\";export default Ashby;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,50,80,.12],CONTRAST_CONST=.05;function Charmes(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.contrast(CONTRAST_CONST))}Charmes.filterName=\"Charmes\";export default Charmes;","import Konva from\"konva\";import*as CustomFilters from\"../custom/filters\";var filterStrToClass=function(a){return a?CustomFilters[a]||Konva.Filters[a]:null};export default filterStrToClass;","import Konva from\"konva\";import{Factory as KonvaFactory}from\"konva/lib/Factory\";import{getNumberValidator as konvaGetNumberValidator}from\"konva/lib/Validators\";function Warmth(a){for(var b=this.warmth(),c=a.data,d=c.length,e=0;e=b?255:0,c[e+1]=c[e+1]>=b?255:0,c[e+2]=c[e+2]>=b?255:0)}CustomThreshold.finetuneName=\"CustomThreshold\";export default CustomThreshold;KonvaFactory.addGetterSetter(Konva.Image,\"threshold\",0,konvaGetNumberValidator,KonvaFactory.afterSetFilter);","import Konva from\"konva\";import*as CustomFinetunes from\"../custom/finetunes\";var finetunesStrsToClasses=function(a){return Array.isArray(a)&&0d.status)b(d.response);else{var a;console.warn(\"Error in sending translation key to backend \".concat(null===(a=d.response)||void 0===a?void 0:a.hint,\", \").concat(d.status)),c()}},d.onerror=function(){var a;console.warn(\"Error in sending translation key to backend \".concat(null===(a=d.response)||void 0===a?void 0:a.hint,\", \").concat(d.status)),c()};d.open(\"POST\",\"https://neo.wordplex.io/api/import/request-translations?grid_uuid=\".concat(TRANSLATIONS_GRID_UUID)),d.send(JSON.stringify({grid_uuid:TRANSLATIONS_GRID_UUID,translations_requests:a}))})};export var getBackendTranslations=function(){var a=0f.status){(f.response||[]).forEach(function(a){backendTranslations[e]=_objectSpread(_objectSpread({},backendTranslations[e]),{},_defineProperty({},a.translation_key,a.translations[e]))});var a=[];Object.keys(defaultTranslations).forEach(function(b){var c;b&&!(null!==(c=backendTranslations[e])&&void 0!==c&&c[b])&&a.push({key:b,lang:e,default:defaultTranslations[b]})}),0d,l=0>e;switch(b){case TOOLS_IDS.RECT:c?(h.width=Math.sqrt(i*i+j*j),h.height=h.width,h.x-=k?h.width-i:0,h.y-=l?h.height-j:0):(h.width=i,h.height=j);break;case TOOLS_IDS.ELLIPSE:c?(h.radiusX=Math.sqrt(i*i+j*j)/2,h.radiusY=h.radiusX,h.x-=k?2*h.radiusX-i:0,h.y-=l?2*h.radiusY-j:0):(h.radiusX=i/2,h.radiusY=j/2),h.offsetX=-h.radiusX,h.offsetY=-h.radiusY;break;case TOOLS_IDS.POLYGON:h.radius=(i+j)/2,h.x-=k?2*h.radius-i:0,h.y-=l?2*h.radius-j:0,h.offsetX=-h.radius,h.offsetY=-h.radius;break;case TOOLS_IDS.LINE:case TOOLS_IDS.ARROW:h.x=f,h.y=g,h.points=[0,0],c?h.points.push(i>=j?d:0,j>i?e:0):h.points=[0,0,d,e];break;default:h.width=i,h.height=j}return h};export default getNewAnnotationPreview;","import _objectWithoutProperties from\"@babel/runtime/helpers/objectWithoutProperties\";import _defineProperty from\"@babel/runtime/helpers/defineProperty\";var _excluded=[\"id\",\"x\",\"y\",\"points\"],_excluded2=[\"startedX\",\"startedY\",\"offsetX\",\"offsetY\",\"width\",\"height\"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c=MIN_PIXELS&&latestAnnotationProps.height>=MIN_PIXELS||latestAnnotationProps.radiusX>=MIN_PIXELS&&latestAnnotationProps.radiusY>=MIN_PIXELS||null!==(c=latestAnnotationProps.points)&&void 0!==c&&c[2]||null!==(e=latestAnnotationProps.points)&&void 0!==e&&e[3]||latestAnnotationProps.radius>=MIN_PIXELS)){var f=latestAnnotationProps,g=f.startedX,h=f.startedY,i=f.offsetX,o=f.offsetY,p=f.width,q=f.height,r=_objectWithoutProperties(f,_excluded2);NO_WIDTH_HEIGHT_ANNOTATIONS.includes(b.name)||(r.width=p,r.height=q),d(r,!0)}shownAnnotationPreview=null,textAnnotationWrappedRect=null,latestAnnotationProps=null,a.setAttrs({isDrawing:!1}),a.off(\"mousemove touchmove\",l),a.off(\"mouseleave touchcancel\",m),document.removeEventListener(\"mouseup\",n,eventsOptions),document.removeEventListener(\"touchend\",n,eventsOptions),document.removeEventListener(\"mouseleave\",n,eventsOptions),document.removeEventListener(\"touchcancel\",n,eventsOptions),document.removeEventListener(\"mousemove\",j,eventsOptions),document.removeEventListener(\"touchmove\",j,eventsOptions),pointerDown.isOutOfCanvas=!1},o=function handlePointerDown(b){var d;if(b.evt.preventDefault(),!(b.target.attrs.draggable||1<(null===(d=b.evt.touches)||void 0===d?void 0:d.length))){k();var e=getPointerOffsetPositionBoundedToObject(c,f());pointerDown.startedX=e.offsetX,pointerDown.startedY=e.offsetY,pointerDown.isOutOfCanvas=!1,a.on(\"mousemove touchmove\",l),a.on(\"mouseleave touchcancel\",m),document.addEventListener(\"mouseup\",n,eventsOptions),document.addEventListener(\"touchend\",n,eventsOptions),document.addEventListener(\"mouseleave\",n,eventsOptions),document.addEventListener(\"touchcancel\",n,eventsOptions)}};return a.on(\"mousedown touchstart\",o),function(){k(),a.off(\"mousedown touchstart\",o)}};export default previewThenCallAnnotationAdding;","import{useCallback}from\"react\";import debounce from\"../utils/debounce\";var useDebouncedCallback=function(a,b){var c=2=e?0:function getTopOffset(){return 0>e&&-90=e&&-90<=e?0:function getLeftOffset(){return 90>>32-b},cvtHex=function(a){var b,c,d=\"\";for(b=7;0<=b;b--)c=15&a>>>4*b,d+=c.toString(16);return d},Utf8Encode=function(a){for(var b,d=a.replace(/\\r\\n/g,\"\\n\"),e=\"\",f=0;fb?e+=String.fromCharCode(b):127b?(e+=String.fromCharCode(192|b>>6),e+=String.fromCharCode(128|63&b)):(e+=String.fromCharCode(224|b>>12),e+=String.fromCharCode(128|63&b>>6),e+=String.fromCharCode(128|63&b));return e},sha1=function(a){var b,c,d,e,f,g,h,k,l,m=a,n=Array(80),o=1732584193,p=4023233417,q=2562383102,r=271733878,s=3285377520;m=Utf8Encode(m);var t=m.length,u=[];for(c=0;c>>29),u.push(4294967295&t<<3),b=0;bc;c++)n[c]=u[b+c];for(c=16;79>=c;c++)n[c]=rotateLeft(n[c-3]^n[c-8]^n[c-14]^n[c-16],1);for(e=o,f=p,g=q,h=r,k=s,c=0;19>=c;c++)l=4294967295&rotateLeft(e,5)+(f&g|~f&h)+k+n[c]+1518500249,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;for(c=20;39>=c;c++)l=4294967295&rotateLeft(e,5)+(f^g^h)+k+n[c]+1859775393,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;for(c=40;59>=c;c++)l=4294967295&rotateLeft(e,5)+(f&g|f&h|g&h)+k+n[c]+2400959708,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;for(c=60;79>=c;c++)l=4294967295&rotateLeft(e,5)+(f^g^h)+k+n[c]+3395469782,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;o=4294967295&o+e,p=4294967295&p+f,q=4294967295&q+g,r=4294967295&r+h,s=4294967295&s+k}return l=cvtHex(o)+cvtHex(p)+cvtHex(q)+cvtHex(r)+cvtHex(s),l.toLowerCase()};export default sha1;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import sha1 from\"./sha1\";var encodeBase64=function(a){return btoa(a).replace(/=*$/g,\"\")},getSha1=function(a,b){return sha1(a).slice(0,b)},getSealingParams=function(a,b,c,d){var e=encodeBase64(a),f=getSha1(b+e+c,d);return[f?\"ci_seal=\".concat(f):\"\",e?\"ci_eqs=\".concat(e):\"\"].filter(function(a){return a}).join(\"&\")},getImageSealingParams=function(a,b,c){var d=b||{},e=d.salt,f=d.charCount,g=d.includeParams,h=void 0===g?[]:g,i=!h||0===(null===h||void 0===h?void 0:h.length),j=\"\",k=\"\",l=[],m=[];return a.split(\"&\").forEach(function(a){var b=a.split(\"=\"),c=_slicedToArray(b,1),d=c[0];-1<(null===h||void 0===h?void 0:h.indexOf(d))||i?l.push(a):m.push(a)}),0o?e*k/p:f*m/q),2);return\"\".concat(t,\"&wat_opacity=\").concat(i,\"&wat_scale=\").concat(A,\"p\").concat(z?\"&wat_url=\".concat(encodeURIComponent(z)):\"\")};export var finetuneNameToParamInfo={Brighten:{cloudimage:{name:\"bright\",min:-100,max:100},internal:{propName:\"brightness\",min:-1,max:1}},Contrast:{cloudimage:{name:\"contrast\",min:-100,max:100},internal:{propName:\"contrast\",min:-100,max:100}},Blur:{cloudimage:{name:\"blur\",min:0,max:100},internal:{propName:\"blurRadius\",min:0,max:100}}};var generateFinetuneQuery=function(a){var b=1 input{border:0px;clip:rect(0px,0px,0px,0px);height:100%;margin:-1px;overflow:hidden;padding:0px;position:absolute;white-space:nowrap;width:100%;direction:ltr;}&::before{position:absolute;content:'';border-radius:inherit;width:100%;height:100%;box-shadow:0px 3px 1px -2px rgb(0 0 0 / 20%),0px 2px 2px 0px rgb(0 0 0 / 14%),0px 1px 5px 0px rgb(0 0 0 / 12%);}&::after{position:absolute;content:'';border-radius:50%;width:42px;height:42px;top:50%;left:50%;transform:translate(-50%,-50%);}\"]);\nvar LabelTooltip = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'label')\n}).withConfig({\n componentId: \"sc-jjink6-4\"\n})(function (_ref2) {\n var theme = _ref2.theme,\n _ref2$open = _ref2.open,\n open = _ref2$open === void 0 ? false : _ref2$open,\n _ref2$disabled = _ref2.disabled,\n disabled = _ref2$disabled === void 0 ? false : _ref2$disabled;\n return css([\"display:flex;align-items:center;justify-content:center;padding:6px 6px;border-radius:2px;position:absolute;top:-10px;font-size:10px;z-index:1;white-space:nowrap;transition:transform 150ms cubic-bezier(0.4,0,0.2,1) 0ms;transform-origin:bottom center;transform:\", \";background-color:\", \";color:#fff;cursor:pointer;transition:all 100ms ease-out;&::before{position:absolute;content:'';background-color:inherit;width:8px;height:8px;bottom:0px;left:50%;transform:translate(-50%,50%) rotate(45deg);}\"], open ? 'translateY(-100%) scale(1)' : 'translateY(-100%) scale(0)', disabled ? theme.palette[PC.AccentPrimaryDisabled] : theme.palette[PC.LinkStateless]);\n});\nvar SliderAnnotation = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'annotation')\n}).withConfig({\n componentId: \"sc-jjink6-5\"\n})(function (_ref3) {\n var theme = _ref3.theme;\n return css([\"display:flex;justify-content:space-between;margin-top:12px;color:\", \";\"], theme.palette[PC.TextSecondary]);\n});\nvar Styled = applyDisplayNames({\n Slider: Slider,\n Rail: Rail,\n Track: Track,\n Thumb: Thumb,\n SliderAnnotation: SliderAnnotation,\n LabelTooltip: LabelTooltip\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"defaultValue\", \"disabled\", \"disableSwap\", \"hideTrack\", \"hideAnnotation\", \"value\", \"min\", \"max\", \"onChange\", \"onMouseDown\", \"onMouseUp\", \"step\", \"labelTooltip\", \"annotation\", \"components\", \"componentsProps\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/* eslint-disable no-use-before-define */\n\nimport React, { useEffect, useRef, useState, useCallback } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues, asc, valueToPercent, percentToValue, roundValueToStep, setValueIndex, findClosest, ownerDocument, clamp, trackFinger, focusThumb, axisProps, useForkRef } from '../../utils/functions';\nimport useControlled from '../../hooks/use-controlled';\nimport useEventCallback from '../../hooks/use-event-callback';\nimport { LabelTooltip } from './types';\nimport Styled from './slider.styles';\nvar INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\nvar dataIndex = 'data-index';\nvar Slider = intrinsicComponent(function (_ref,\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nref) {\n var defaultValue = _ref.defaultValue,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$disableSwap = _ref.disableSwap,\n disableSwap = _ref$disableSwap === void 0 ? false : _ref$disableSwap,\n _ref$hideTrack = _ref.hideTrack,\n hideTrack = _ref$hideTrack === void 0 ? false : _ref$hideTrack,\n _ref$hideAnnotation = _ref.hideAnnotation,\n hideAnnotation = _ref$hideAnnotation === void 0 ? false : _ref$hideAnnotation,\n valueProp = _ref.value,\n _ref$min = _ref.min,\n min = _ref$min === void 0 ? 0 : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 100 : _ref$max,\n onChange = _ref.onChange,\n onMouseDown = _ref.onMouseDown,\n onMouseUp = _ref.onMouseUp,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step,\n _ref$labelTooltip = _ref.labelTooltip,\n labelTooltip = _ref$labelTooltip === void 0 ? LabelTooltip.Off : _ref$labelTooltip,\n _ref$annotation = _ref.annotation,\n annotation = _ref$annotation === void 0 ? '' : _ref$annotation,\n _ref$components = _ref.components,\n components = _ref$components === void 0 ? {} : _ref$components,\n _ref$componentsProps = _ref.componentsProps,\n componentsProps = _ref$componentsProps === void 0 ? {} : _ref$componentsProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n active = _useState2[0],\n setActive = _useState2[1];\n var _useState3 = useState(-1),\n _useState4 = _slicedToArray(_useState3, 2),\n open = _useState4[0],\n setOpen = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n dragging = _useState6[0],\n setDragging = _useState6[1];\n var moveCount = useRef(0);\n var previousIndex = useRef(0);\n var touchId = useRef();\n var sliderRef = useRef(null);\n var handleRef = useForkRef(ref, sliderRef);\n var _useControlled = useControlled({\n controlled: valueProp,\n \"default\": defaultValue !== null && defaultValue !== void 0 ? defaultValue : min\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n valueDerived = _useControlled2[0],\n setValueState = _useControlled2[1];\n var axis = 'horizontal';\n var range = Array.isArray(valueDerived);\n var values = range ? valueDerived.slice().sort(asc) : [valueDerived];\n var getFingerNewValue = function getFingerNewValue(_ref2) {\n var finger = _ref2.finger,\n _ref2$move = _ref2.move,\n move = _ref2$move === void 0 ? false : _ref2$move,\n values2 = _ref2.values;\n var slider = sliderRef.current;\n if (slider) {\n var _slider$getBoundingCl = slider.getBoundingClientRect(),\n width = _slider$getBoundingCl.width,\n height = _slider$getBoundingCl.height,\n bottom = _slider$getBoundingCl.bottom,\n left = _slider$getBoundingCl.left;\n var percent;\n if (axis.indexOf('vertical') === 0) {\n percent = (bottom - finger.y) / height;\n } else {\n percent = (finger.x - left) / width;\n }\n if (axis.includes('-reverse')) {\n percent = 1 - percent;\n }\n var newValue;\n newValue = percentToValue(percent, min, max);\n if (step) {\n newValue = roundValueToStep(newValue, step, min);\n }\n newValue = clamp(newValue, min, max);\n var activeIndex = 0;\n if (range) {\n if (!move) {\n activeIndex = findClosest(values2, newValue);\n } else {\n activeIndex = previousIndex.current;\n }\n if (disableSwap) {\n newValue = clamp(newValue, values2[activeIndex - 1] || -Infinity, values2[activeIndex + 1] || Infinity);\n }\n var previousValue = newValue;\n newValue = setValueIndex({\n values: values2,\n newValue: newValue,\n index: activeIndex\n });\n if (!(disableSwap && move) && Array.isArray(newValue)) {\n activeIndex = newValue.indexOf(previousValue);\n previousIndex.current = activeIndex;\n }\n }\n return {\n newValue: newValue,\n activeIndex: activeIndex\n };\n }\n return null;\n };\n var handleChange = function handleChange(event, value, thumbIndex) {\n if (onChange) {\n onChange(event, value, thumbIndex);\n }\n };\n var handleHiddenInputChange = function handleHiddenInputChange(event) {\n var index = Number(event.currentTarget.getAttribute(dataIndex));\n var newValue = event.target.valueAsNumber;\n if (range) {\n if (disableSwap) {\n newValue = clamp(newValue, values[index - 1] || -Infinity, values[index + 1] || Infinity);\n }\n var previousValue = newValue;\n newValue = setValueIndex({\n values: values,\n newValue: newValue,\n index: index\n });\n var activeIndex = index;\n if (!disableSwap) {\n activeIndex = newValue.indexOf(previousValue);\n }\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex\n });\n }\n setValueState(newValue);\n handleChange(event, newValue, index);\n if (onMouseUp) {\n onMouseUp(event);\n }\n };\n var handleTouchMove = useEventCallback(function (nativeEvent) {\n var finger = trackFinger(nativeEvent, touchId);\n if (!finger) {\n return;\n }\n moveCount.current += 1;\n if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n handleTouchEnd(nativeEvent);\n return;\n }\n var _ref3 = getFingerNewValue({\n finger: finger,\n move: true,\n values: values\n }),\n newValue = _ref3.newValue,\n activeIndex = _ref3.activeIndex;\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex,\n setActive: setActive\n });\n setValueState(newValue);\n if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n setDragging(true);\n }\n handleChange(nativeEvent, newValue, activeIndex);\n });\n var handleTouchEnd = useEventCallback(function (nativeEvent) {\n var finger = trackFinger(nativeEvent, touchId);\n setDragging(false);\n if (!finger) {\n return;\n }\n setActive(-1);\n if (nativeEvent.type === 'touchend') {\n setOpen(-1);\n }\n if (onMouseUp) {\n onMouseUp(nativeEvent);\n }\n touchId.current = undefined;\n stopListening();\n });\n var handleTouchStart = useEventCallback(function (nativeEvent) {\n var touch = nativeEvent.changedTouches[0];\n if (touch != null) {\n touchId.current = touch.identifier;\n }\n var finger = trackFinger(nativeEvent, touchId);\n var _ref4 = getFingerNewValue({\n finger: finger,\n values: values\n }),\n newValue = _ref4.newValue,\n activeIndex = _ref4.activeIndex;\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex,\n setActive: setActive\n });\n setValueState(newValue);\n handleChange(nativeEvent, newValue, activeIndex);\n moveCount.current = 0;\n var doc = ownerDocument(sliderRef.current);\n doc.addEventListener('touchmove', handleTouchMove);\n doc.addEventListener('touchend', handleTouchEnd);\n });\n var handleMouseOver = useEventCallback(function (event) {\n var index = Number(event.currentTarget.getAttribute(dataIndex));\n setOpen(index);\n });\n var handleMouseLeave = useEventCallback(function () {\n setOpen(-1);\n });\n var handleMouseDown = useEventCallback(function (event) {\n if (!disabled) {\n if (onMouseDown) {\n onMouseDown(event);\n }\n if (event.button !== 0) {\n return;\n }\n\n // Avoid text selection\n event.preventDefault();\n var finger = trackFinger(event, touchId);\n var _ref5 = getFingerNewValue({\n finger: finger,\n values: values\n }),\n newValue = _ref5.newValue,\n activeIndex = _ref5.activeIndex;\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex,\n setActive: setActive\n });\n setValueState(newValue);\n handleChange(event, newValue, activeIndex);\n moveCount.current = 0;\n var doc = ownerDocument(sliderRef.current);\n doc.addEventListener('mousemove', handleTouchMove);\n doc.addEventListener('mouseup', handleTouchEnd);\n } else {\n // Avoid text selection\n event.preventDefault();\n }\n });\n var stopListening = useCallback(function () {\n var doc = ownerDocument(sliderRef.current);\n doc.removeEventListener('mousemove', handleTouchMove);\n doc.removeEventListener('mouseup', handleTouchEnd);\n doc.removeEventListener('touchmove', handleTouchMove);\n doc.removeEventListener('touchend', handleTouchEnd);\n }, [handleTouchEnd, handleTouchMove]);\n useEffect(function () {\n var slider = sliderRef.current;\n if (slider) {\n return function () {\n stopListening();\n };\n }\n }, [stopListening, handleTouchStart]);\n useEffect(function () {\n if (disabled) {\n stopListening();\n }\n }, [disabled, stopListening]);\n if (disabled && active !== -1) {\n setActive(-1);\n }\n var trackOffset = valueToPercent(range ? values[0] : min, min, max);\n var trackLeap = valueToPercent(values[values.length - 1], min, max) - trackOffset;\n var trackStyle = _objectSpread(_objectSpread({}, axisProps[axis].offset(trackOffset)), axisProps[axis].leap(trackLeap));\n var railProps = componentsProps.rail;\n var Rail = typeof components.Rail === 'function' ? /*#__PURE__*/React.createElement(components.Rail, _extends({}, railProps, {\n style: _objectSpread({}, railProps === null || railProps === void 0 ? void 0 : railProps.style)\n })) : /*#__PURE__*/React.createElement(Styled.Rail, _extends({}, railProps, {\n style: _objectSpread({}, railProps === null || railProps === void 0 ? void 0 : railProps.style)\n }));\n var trackProps = componentsProps.track;\n var Track = !hideTrack && (typeof components.Track === 'function' ? /*#__PURE__*/React.createElement(components.Track, _extends({}, trackProps, {\n style: _objectSpread(_objectSpread({}, trackStyle), trackProps === null || trackProps === void 0 ? void 0 : trackProps.style)\n })) : /*#__PURE__*/React.createElement(Styled.Track, _extends({}, trackProps, {\n style: _objectSpread(_objectSpread({}, trackStyle), trackProps === null || trackProps === void 0 ? void 0 : trackProps.style)\n })));\n var thumbProps = componentsProps.thumb;\n var Thumb = components.Thumb || Styled.Thumb;\n var LabelTooltipComponent = components.LabelTooltip || Styled.LabelTooltip;\n var labelTooltipProps = componentsProps.labelTooltip;\n var annotationText = annotation ? \" \".concat(annotation) : '';\n return /*#__PURE__*/React.createElement(Styled.Slider, _extends({\n ref: handleRef,\n disabled: disabled,\n onTouchStart: handleTouchStart,\n onMouseDown: handleMouseDown\n }, rest), Rail, Track, values.map(function (value, index) {\n var percent = valueToPercent(value, min, max);\n var style = axisProps[axis].offset(percent);\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: index\n }, /*#__PURE__*/React.createElement(Thumb, _extends({\n \"data-index\": index,\n onMouseOver: handleMouseOver,\n onMouseLeave: handleMouseLeave\n }, thumbProps, {\n style: _objectSpread(_objectSpread({}, style), {}, {\n pointerEvents: disableSwap && active !== index ? 'none' : undefined\n }, thumbProps === null || thumbProps === void 0 ? void 0 : thumbProps.style)\n }), /*#__PURE__*/React.createElement(\"input\", {\n \"data-index\": index,\n type: \"range\",\n min: min,\n max: max,\n value: values[index],\n step: step,\n disabled: disabled,\n onChange: handleHiddenInputChange\n }), /*#__PURE__*/React.createElement(LabelTooltipComponent, {\n open: (open === index || active === index || labelTooltip === 'on') && labelTooltip !== 'off',\n disabled: disabled,\n style: _objectSpread({}, labelTooltipProps === null || labelTooltipProps === void 0 ? void 0 : labelTooltipProps.style)\n }, values[index], annotationText)));\n }), !hideAnnotation && /*#__PURE__*/React.createElement(Styled.SliderAnnotation, null, /*#__PURE__*/React.createElement(\"span\", null, min, annotationText), /*#__PURE__*/React.createElement(\"span\", null, max, annotationText)));\n});\nSlider.defaultProps = {\n annotation: 'MB',\n min: 0,\n max: 100,\n step: 1,\n labelTooltip: LabelTooltip.Off\n};\nSlider.propTypes = {\n defaultValue: PT.oneOfType([PT.array, PT.number]),\n value: PT.oneOfType([PT.array, PT.number]),\n min: PT.number,\n max: PT.number,\n onChange: PT.func,\n onMouseDown: PT.func,\n onMouseUp: PT.func,\n step: PT.number,\n annotation: PT.string,\n disabled: PT.bool,\n disableSwap: PT.bool,\n hideTrack: PT.bool,\n hideAnnotation: PT.bool,\n labelTooltip: PT.oneOf(objectValues(LabelTooltip)),\n components: PT.shape({\n Rail: PT.elementType,\n Track: PT.elementType,\n Thumb: PT.elementType,\n LabelTooltip: PT.elementType\n }),\n componentsProps: PT.object\n};\nexport default Slider;","import styled from\"styled-components\";import Slider from\"@scaleflex/ui/core/slider\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledSlider=styled(Slider).withConfig({componentId:\"sc-1wort0h-0\"})([\"width:\",\";max-width:\",\";user-select:none;padding:0;margin-bottom:\",\";.SfxSlider-thumb{background-color:\",\";}.SfxSlider-Track{height:2px;color:\",\";}.SfxSlider-rail{height:2px;background-color:\",\";}\"],function(a){var b=a.width;return b||\"104px\"},function(a){var b=a.width;return b||\"104px\"},function(a){var b=a.noMargin;return b?\"\":\"16px\"},function(a){var b=a.theme.palette;return b[PC.AccentStateless]},function(a){var b=a.theme.palette;return b[PC.AccentStateless]},function(a){var b=a.theme.palette;return b[PC.BordersItem]});export{StyledSlider};","import _extends from\"@babel/runtime/helpers/extends\";import _objectWithoutProperties from\"@babel/runtime/helpers/objectWithoutProperties\";var _excluded=[\"onChange\"];import React from\"react\";import{StyledSlider}from\"./Slider.styled\";var Slider=function(a){var b=a.onChange,c=_objectWithoutProperties(a,_excluded);return React.createElement(StyledSlider,_extends({annotation:\"\",onChange:function onChange(a,c){return b?b(c):void 0},hideAnnotation:!0,labelTooltip:\"auto\"},c))};export default Slider;","import PT from 'prop-types';\nexport var iconPropTypes = {\n size: PT.number,\n width: PT.oneOfType([PT.string, PT.number]),\n height: PT.oneOfType([PT.string, PT.number]),\n color: PT.string,\n color2: PT.string,\n stroke: PT.string,\n stroke2: PT.string,\n viewBox: PT.string\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowBottom = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 11 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.8468 3.13984C11.0457 3.33138 11.0517 3.64791 10.8602 3.84682L6.04534 8.84682C5.95332 8.94238 5.82709 8.99746 5.69445 8.99991C5.5618 9.00237 5.43362 8.95201 5.33812 8.85992L0.152931 3.85992C-0.0458479 3.66824 -0.0516033 3.35171 0.140078 3.15293C0.331758 2.95415 0.648288 2.9484 0.847067 3.14008L5.67208 7.79277L10.1398 3.15318C10.3314 2.95427 10.6479 2.9483 10.8468 3.13984Z\",\n fill: color\n }));\n});\nexport default ArrowBottom;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PaletteColor } from '../../utils/types/palette';\nimport { Position } from '../../utils/types';\nexport var typeArrowTickMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Position.Right, css([\"svg{transform:rotate(-90deg);transition:transform 150ms ease-out;}\"])), Position.Left, css([\"svg{transform:rotate(90deg);transition:transform 150ms ease-out;}\"])), Position.Top, css([\"svg{transform:rotate(180deg);transition:transform 150ms ease-out;}\"])), Position.Bottom, css([\"svg{transform:rotate(0);transition:transform 150ms ease-out;}\"]));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { typeArrowTickMixin } from './arrow-tick.mixin';\nimport { Position } from '../../utils/types';\nvar baseClassName = 'ArrowTick';\nvar ArrowTick = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-tlypde-0\"\n})(function (_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? Position.Right : _ref$type;\n return css([\"display:inline-flex;\", \"\"], typeArrowTickMixin[type]);\n});\nvar Styled = applyDisplayNames({\n ArrowTick: ArrowTick\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"IconProps\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport ArrowBottom from '@scaleflex/icons/arrow-bottom';\nimport { iconPropTypes } from '@scaleflex/icons/icon.prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Position } from '../../utils/types';\nimport Styled from './arrow-tick.styles';\nvar ArrowTick = intrinsicComponent(function (_ref, ref) {\n var IconPropsData = _ref.IconProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ArrowTick, _extends({}, rest, {\n ref: ref\n }), /*#__PURE__*/React.createElement(ArrowBottom, IconPropsData));\n});\nArrowTick.defaultProps = {\n type: Position.Right\n};\nArrowTick.propTypes = {\n type: PT.oneOf(objectValues(Position)),\n IconProps: PT.exact(iconPropTypes)\n};\nexport default ArrowTick;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { FontVariant } from '../../utils/types/typography';\nvar baseClassName = 'AccordionHeader';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'icon')\n}).withConfig({\n componentId: \"sc-1dtjsgt-0\"\n})(function () {\n return css([\"display:inline-flex;padding-left:8px;\"]);\n});\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'label')\n}).withConfig({\n componentId: \"sc-1dtjsgt-1\"\n})(function (_ref) {\n var theme = _ref.theme;\n return css([\"\", \"\"], theme.typography.font[FontVariant.ButtonSm]);\n});\nvar Header = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1dtjsgt-2\"\n})(function (_ref2) {\n var theme = _ref2.theme,\n fullWidth = _ref2.fullWidth;\n return css([\"display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:pointer;width:\", \";color:\", \";user-select:none;\"], fullWidth ? '100%' : 'auto', theme.palette[PColor.LinkPrimary]);\n});\nvar Wrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'wrapper')\n}).withConfig({\n componentId: \"sc-1dtjsgt-3\"\n})(function (_ref3) {\n var theme = _ref3.theme;\n return css([\"color:\", \";\"], theme.palette[PColor.LinkPrimary]);\n});\nvar Styled = applyDisplayNames({\n Header: Header,\n Wrapper: Wrapper,\n Icon: Icon,\n Label: Label\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"expanded\", \"label\", \"onChange\", \"onClick\", \"onContextMenu\", \"hideIcon\", \"fullWidth\", \"iconProps\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { iconPropTypes } from '@scaleflex/icons/icon.prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport ArrowTick from '../arrow-tick';\nimport { Position as ArrowTickType } from '../../utils/types';\nimport Styled from './accordion-header.styles';\nvar AccordionHeader = intrinsicComponent(function (_ref, ref) {\n var expanded = _ref.expanded,\n label = _ref.label,\n onChange = _ref.onChange,\n _onClick = _ref.onClick,\n onContextMenu = _ref.onContextMenu,\n hideIcon = _ref.hideIcon,\n fullWidth = _ref.fullWidth,\n iconPropsData = _ref.iconProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Header, _extends({\n ref: ref,\n onClick: function onClick(event) {\n if (typeof onChange === 'function') {\n onChange(!expanded);\n }\n if (typeof _onClick === 'function') {\n _onClick(event);\n }\n },\n fullWidth: fullWidth\n }, rest), /*#__PURE__*/React.createElement(Styled.Label, {\n onContextMenu: onContextMenu\n }, label), !hideIcon && /*#__PURE__*/React.createElement(Styled.Icon, {\n onContextMenu: onContextMenu\n }, /*#__PURE__*/React.createElement(ArrowTick, {\n type: expanded ? ArrowTickType.Top : ArrowTickType.Bottom,\n IconProps: _objectSpread({\n size: 11\n }, iconPropsData)\n })));\n});\nAccordionHeader.defaultProps = {\n expanded: false,\n hideIcon: false,\n fullWidth: false\n};\nAccordionHeader.propTypes = {\n label: PT.node.isRequired,\n expanded: PT.bool,\n hideIcon: PT.bool,\n fullWidth: PT.bool,\n onChange: PT.func,\n iconProps: PT.exact(iconPropTypes)\n};\nexport default AccordionHeader;","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'AccordionDetails';\nvar AccordionDetails = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1wr6wpr-0\"\n})([\"margin:16px 0;\"]);\nvar Styled = applyDisplayNames({\n AccordionDetails: AccordionDetails\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"expanded\", \"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './accordion-details.styles';\nvar AccordionDetails = intrinsicComponent(function (_ref, ref) {\n var expanded = _ref.expanded,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(React.Fragment, null, expanded && /*#__PURE__*/React.createElement(Styled.AccordionDetails, _extends({\n ref: ref\n }, rest), children));\n});\nAccordionDetails.defaultProps = {\n expanded: false\n};\nAccordionDetails.propTypes = {\n expanded: PT.bool\n};\nexport default AccordionDetails;","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'Accordion';\nvar Accordion = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1g4tz7s-0\"\n})([\"\"]);\nvar Styled = applyDisplayNames({\n Accordion: Accordion\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"label\", \"expanded\", \"children\", \"detailStyle\", \"headerStyle\", \"fullWidth\", \"iconProps\", \"onClick\", \"onChange\", \"onContextMenu\", \"hideIcon\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { iconPropTypes } from '@scaleflex/icons/icon.prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport AccordionHeader from '../accordion-header';\nimport AccordionDetails from '../accordion-details';\nimport Styled from './accordion.styles';\nvar Accordion = intrinsicComponent(function (_ref, ref) {\n var label = _ref.label,\n expanded = _ref.expanded,\n children = _ref.children,\n detailStyle = _ref.detailStyle,\n headerStyle = _ref.headerStyle,\n fullWidth = _ref.fullWidth,\n iconPropsData = _ref.iconProps,\n _onClick = _ref.onClick,\n onChange = _ref.onChange,\n onContextMenu = _ref.onContextMenu,\n hideIcon = _ref.hideIcon,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Accordion, _extends({\n ref: ref\n }, rest), /*#__PURE__*/React.createElement(AccordionHeader, {\n label: label,\n expanded: expanded,\n style: _objectSpread({}, headerStyle),\n hideIcon: hideIcon,\n onClick: function onClick(event) {\n if (typeof onChange === 'function') {\n onChange(!expanded, event);\n }\n if (typeof _onClick === 'function') {\n _onClick(event);\n }\n },\n onContextMenu: onContextMenu,\n iconProps: iconPropsData,\n fullWidth: fullWidth\n }), /*#__PURE__*/React.createElement(AccordionDetails, {\n expanded: expanded,\n style: _objectSpread({}, detailStyle)\n }, children));\n});\nAccordion.defaultProps = {\n expanded: false,\n hideIcon: false\n};\nAccordion.propTypes = {\n label: PT.node.isRequired,\n expanded: PT.bool,\n detailStyle: PT.object,\n headerStyle: PT.object,\n onChange: PT.func,\n onContextMenu: PT.func,\n hideIcon: PT.bool,\n fullWidth: PT.bool,\n iconProps: PT.exact(iconPropTypes)\n};\nexport default Accordion;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"stroke\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Arrow = intrinsicComponent(function (_ref, ref) {\n var _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? 'currentColor' : _ref$stroke,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 10 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size * (51 / 56),\n height: size,\n viewBox: \"0 0 51 56\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.2754 3L37.2754 27.0741L12.2754 53\",\n stroke: stroke,\n strokeWidth: \"5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }));\n});\nexport default Arrow;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Tick = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.9783 2.30184C12.7972 2.12074 12.586 2 12.3143 2C12.0728 2 11.8314 2.09055 11.6503 2.30184L4.73816 9.84779L2.29327 7.34254C2.11217 7.16143 1.8707 7.07088 1.62923 7.07088C1.38776 7.07088 1.14629 7.19162 0.995367 7.37272C0.663345 7.76511 0.663345 8.36879 1.02555 8.73099L4.13448 11.9003C4.31559 12.0814 4.52687 12.1719 4.76835 12.1719C5.00982 12.1719 5.25129 12.0814 5.43239 11.8701L12.9783 3.62993C13.3406 3.2979 13.3406 2.66404 12.9783 2.30184Z\",\n fill: color\n }));\n});\nexport default Tick;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CopyOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.33984 12.111V2.04761C2.33984 1.49532 2.78756 1.04761 3.33984 1.04761H10.8182C11.3705 1.04761 11.8182 1.49532 11.8182 2.04761V12.111C11.8182 12.6633 11.3705 13.111 10.8182 13.111H3.33984C2.78756 13.111 2.33984 12.6633 2.33984 12.111ZM3.33984 12.111V2.04761L10.8182 2.04761L10.8182 12.111L3.33984 12.111Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.66 4.97388C13.66 4.69774 13.4361 4.47388 13.16 4.47388C12.8838 4.47388 12.66 4.69774 12.66 4.97388V13.9523H5.40491C5.12876 13.9523 4.90491 14.1761 4.90491 14.4523C4.90491 14.7284 5.12876 14.9523 5.40491 14.9523H13.16C13.4361 14.9523 13.66 14.7284 13.66 14.4523V4.97388Z\",\n fill: color\n }));\n});\nexport default CopyOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var EyeOpen = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 31.625C8.64336 31.625 0.533984 17.3656 0.196875 16.759C-0.065625 16.2867 -0.065625 15.7129 0.196875 15.2406C0.533984 14.6344 8.64336 0.375 25 0.375C41.3566 0.375 49.466 14.6344 49.8031 15.241C50.0656 15.7133 50.0656 16.2871 49.8031 16.7594C49.466 17.3656 41.3566 31.625 25 31.625ZM3.40117 15.9977C5.25977 18.8145 12.557 28.5 25 28.5C37.4824 28.5 44.7473 18.8223 46.5988 16.0023C44.7402 13.1855 37.443 3.5 25 3.5C12.5176 3.5 5.25273 13.1777 3.40117 15.9977ZM25 25.375C19.8305 25.375 15.625 21.1695 15.625 16C15.625 10.8305 19.8305 6.625 25 6.625C30.1695 6.625 34.375 10.8305 34.375 16C34.375 21.1695 30.1695 25.375 25 25.375ZM25 9.75C21.5539 9.75 18.75 12.5539 18.75 16C18.75 19.4461 21.5539 22.25 25 22.25C28.4461 22.25 31.25 19.4461 31.25 16C31.25 12.5539 28.4461 9.75 25 9.75Z\",\n fill: color\n }));\n});\nexport default EyeOpen;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var EyeClosed = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 44 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.2553 6.05501C36.5966 5.71376 37.1514 5.71376 37.4926 6.05501C37.8339 6.39626 37.8339 6.95103 37.4926 7.29228L32.3765 12.4084C38.3601 15.8067 42.6046 20.7607 42.7917 20.9825C43.0682 21.3097 43.0699 21.7874 42.7936 22.113C42.3893 22.5908 32.7818 33.7978 22.0001 33.7978C18.9909 33.7978 15.9678 33.1203 13.0065 31.7785L7.74272 37.0423C7.57292 37.2121 7.34897 37.2978 7.12495 37.2978C6.90092 37.2978 6.67698 37.212 6.50545 37.0423C6.1642 36.701 6.1642 36.1462 6.50545 35.805L17.0426 25.2678C17.0453 25.265 17.0481 25.2622 17.0509 25.2595C17.0531 25.2573 17.0553 25.2551 17.0575 25.2529L25.7063 16.6041C25.7081 16.6023 25.7098 16.6005 25.7116 16.5987C25.7134 16.5969 25.7152 16.5952 25.717 16.5934L30.2895 12.0208C30.3028 12.0067 30.3164 11.9931 30.3304 11.9799L36.2553 6.05501ZM31.0895 13.6954L27.5301 17.2548C28.4835 18.476 28.9998 19.9721 28.9998 21.5478C28.9998 25.4083 25.8603 28.5478 21.9999 28.5478C20.4242 28.5478 18.9281 28.0314 17.7069 27.078L14.3353 30.4497C16.8728 31.5113 19.445 32.0478 22 32.0478C30.6537 32.0478 38.863 23.8071 40.9489 21.5478C39.6267 20.1195 35.855 16.3016 31.0895 13.6954ZM18.9574 25.8276C19.8392 26.458 20.8929 26.7977 21.9999 26.7977C24.8943 26.7977 27.2499 24.4422 27.2499 21.5477C27.2499 20.4409 26.9092 19.3873 26.2793 18.5056L18.9574 25.8276Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.7418 10.3057C25.7504 9.63545 23.8184 9.29773 22.0001 9.29773C11.2183 9.29773 1.61084 20.5047 1.20659 20.9825C0.951064 21.2835 0.930064 21.721 1.15762 22.0482C1.27837 22.2215 4.17111 26.3287 9.18485 29.659C9.33358 29.7587 9.49985 29.806 9.66785 29.806C9.94963 29.806 10.2279 29.6695 10.3959 29.4122C10.6636 29.0115 10.5534 28.4672 10.1509 28.2012C6.46889 25.753 3.94889 22.7973 3.00561 21.595C5.01989 19.4075 13.2834 11.0478 22.0001 11.0478C23.6293 11.0478 25.3741 11.3558 27.1835 11.963C27.642 12.1275 28.139 11.8738 28.2913 11.4135C28.4453 10.955 28.2003 10.4598 27.7418 10.3057Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2197 14.6685C22.8224 14.5985 22.4164 14.5477 22 14.5477C18.1395 14.5477 15 17.6872 15 21.5477C15 21.9642 15.0508 22.3702 15.1225 22.7674C15.1977 23.1909 15.567 23.4902 15.9817 23.4902C16.0325 23.4902 16.0832 23.4867 16.1357 23.4762C16.6099 23.3922 16.9285 22.9371 16.8445 22.4629C16.7902 22.1654 16.75 21.8627 16.75 21.5477C16.75 18.6532 19.1055 16.2977 22 16.2977C22.315 16.2977 22.6177 16.338 22.9152 16.3905C23.3807 16.485 23.8444 16.1559 23.9284 15.6817C24.0124 15.2075 23.694 14.7525 23.2197 14.6685Z\",\n fill: color\n }));\n});\nexport default EyeClosed;","import { lightPalette } from '../../theme/roots/palette';\nimport { Color } from '../../utils/types/palette';\nexport var getInputBackgroundColor = function getInputBackgroundColor(readOnly, disabled) {\n if (readOnly || disabled) {\n return lightPalette[Color.BackgroundHover];\n }\n return lightPalette[Color.BackgroundStateless];\n};\nexport var getInputTextColor = function getInputTextColor(readOnly, disabled) {\n if (readOnly) {\n return lightPalette[Color.AccentPrimaryHover];\n }\n if (disabled) {\n return lightPalette[Color.TextPlaceholder];\n }\n return lightPalette[Color.TextPrimary];\n};\nexport var getInputBorderColor = function getInputBorderColor(readOnly, disabled) {\n if (readOnly) {\n return lightPalette[Color.BordersItem];\n }\n if (disabled) {\n return lightPalette[Color.BordersSecondary];\n }\n return lightPalette[Color.BorderPrimaryStateless];\n};\nexport var handleCopyIcon = function handleCopyIcon(value, setShowCopyMessage) {\n navigator.clipboard.writeText(value);\n setShowCopyMessage(true);\n};","export var Type = {\n Text: 'text',\n Password: 'password'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { FontVariant as FV } from '../../utils/types/typography';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { sizeInputMixin, fontSizeInputMixin, errorMixin } from './input.mixin';\nimport { InputSize } from '../../utils/types';\nimport { getInputBackgroundColor, getInputTextColor, getInputBorderColor } from './input.utils';\nvar baseClassName = 'Input';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-150k0cz-0\"\n})(function (_ref) {\n var iconClickStart = _ref.iconClickStart,\n iconClickEnd = _ref.iconClickEnd,\n disabled = _ref.disabled,\n readOnly = _ref.readOnly,\n iconType = _ref.iconType,\n palette = _ref.theme.palette;\n return css([\"display:flex;color:\", \";cursor:\", \";flex-shrink:0;\", \"\"], palette[PColor.IconsPrimary], (iconClickStart || iconClickEnd) && !disabled && !readOnly ? 'pointer' : 'default', iconType === 'end' && css([\"color:\", \";\"], palette[PColor.IconsSecondary]));\n});\nvar CopyIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'CopyIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-1\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"display:flex;color:\", \";cursor:pointer;\"], palette[PColor.IconsSecondary]);\n});\nvar PasswordIcon = /*#__PURE__*/styled(CopyIcon).attrs({\n className: generateClassNames(baseClassName, 'PasswordIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-2\"\n})([\"\"]);\nvar Container = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Container')\n}).withConfig({\n componentId: \"sc-150k0cz-3\"\n})(function () {\n return css([\"display:block;color:inherit;font-size:inherit;width:100%;min-width:0;margin:0;padding:0;border:0;background-color:transparent;outline:none;\"]);\n});\nvar Base = /*#__PURE__*/styled.input.attrs({\n className: generateClassNames(baseClassName, 'Base')\n}).withConfig({\n componentId: \"sc-150k0cz-4\"\n})(function (_ref3) {\n var palette = _ref3.theme.palette,\n _ref3$isEllipsis = _ref3.isEllipsis,\n isEllipsis = _ref3$isEllipsis === void 0 ? false : _ref3$isEllipsis;\n return css([\"display:block;color:inherit;width:100%;min-width:fit-content;margin:0;padding:0;border:0;background-color:transparent;outline:none;\", \" &::placeholder{color:\", \";}\"], isEllipsis && css([\"text-overflow:ellipsis;\"]), palette[PColor.TextPlaceholder]);\n});\nvar Input = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-150k0cz-5\"\n})(function (_ref4) {\n var _ref4$size = _ref4.size,\n size = _ref4$size === void 0 ? InputSize.Md : _ref4$size,\n _ref4$error = _ref4.error,\n error = _ref4$error === void 0 ? false : _ref4$error,\n _ref4$fullWidth = _ref4.fullWidth,\n fullWidth = _ref4$fullWidth === void 0 ? false : _ref4$fullWidth,\n _ref4$readOnly = _ref4.readOnly,\n readOnly = _ref4$readOnly === void 0 ? false : _ref4$readOnly,\n _ref4$disabled = _ref4.disabled,\n disabled = _ref4$disabled === void 0 ? false : _ref4$disabled,\n _ref4$isHovering = _ref4.isHovering,\n isHovering = _ref4$isHovering === void 0 ? false : _ref4$isHovering,\n _ref4$isSelectedItems = _ref4.isSelectedItems,\n isSelectedItems = _ref4$isSelectedItems === void 0 ? false : _ref4$isSelectedItems,\n theme = _ref4.theme;\n return css([\"position:relative;display:inline-flex;align-items:center;box-sizing:border-box;column-gap:8px;cursor:text;transition:all 100ms ease-out;width:\", \";pointer-events:\", \";background-color:\", \";border-radius:\", \";border:1px solid \", \";color:\", \";\", \" \", \";\", \"{\", \"}\", \" \", \" &:hover{color:\", \";}\", \"\"], fullWidth ? '100%' : '300px', disabled ? 'none' : 'auto', getInputBackgroundColor(readOnly, disabled), theme.shape.borderRadius[BRSize.Md], getInputBorderColor(readOnly, disabled), disabled ? theme.palette[PColor.TextPlaceholder] : theme.palette[PColor.TextPrimary], sizeInputMixin[size], isSelectedItems && \"\\n height: fit-content;\\n\\n \".concat(Base, \" {\\n max-width: fit-content;\\n min-width: 20px;\\n flex-grow: 1;\\n width: 40px;\\n }\\n \"), Base, fontSizeInputMixin[size], !readOnly && !disabled && css([\"&:focus-within{background-color:\", \"!important;border:1px solid \", \";&:hover{border:1px solid \", \";\", \"{color:\", \";}}}\", \" &:hover{background-color:\", \";border:1px solid \", \";\", \"{color:\", \";}}\"], theme.palette[PColor.BackgroundSecondary], theme.palette[PColor.AccentStateless], theme.palette[PColor.AccentStateless], Icon, theme.palette[PColor.IconsPrimary], isHovering && css([\"\", \"{color:\", \";}\"], Icon, theme.palette[PColor.IconsPrimaryHover]), theme.palette[PColor.BackgroundStateless], theme.palette[PColor.BordersPrimaryHover], Icon, theme.palette[PColor.IconsPrimaryHover]), disabled && css([\"\", \"{color:\", \";}\"], Icon, theme.palette[PColor.IconsMuted]), getInputTextColor(readOnly, disabled), error && errorMixin);\n});\nvar ClearIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'ClearIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-6\"\n})(function (_ref5) {\n var palette = _ref5.theme.palette;\n return css([\"display:flex;cursor:pointer;color:\", \";\"], palette[PColor.IconsPrimary]);\n});\nvar NotificationBox = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'NotificationBox')\n}).withConfig({\n componentId: \"sc-150k0cz-7\"\n})(function (_ref6) {\n var _ref6$size = _ref6.size,\n size = _ref6$size === void 0 ? InputSize.Md : _ref6$size,\n _ref6$isTextarea = _ref6.isTextarea,\n isTextarea = _ref6$isTextarea === void 0 ? false : _ref6$isTextarea,\n palette = _ref6.theme.palette;\n return css([\"display:flex;position:absolute;align-items:center;max-height:34px;right:0px;padding:8px 12px;gap:6px;bottom:\", \";box-shadow:0px 2px 6px \", \";background-color:\", \";border-radius:4px;align-items:center;\", \"\"], size === InputSize.Md ? '45px' : '35px', palette[PColor.LargeShadow], palette[PColor.BackgroundStateless], isTextarea && \"\\n bottom: \".concat(size === InputSize.Md ? 27 : 22, \"px;\\n right: \").concat(size === InputSize.Md ? 16 : 12, \"px;\\n \"));\n});\nvar NotificationIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'NotificationIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-8\"\n})(function (_ref7) {\n var palette = _ref7.theme.palette;\n return css([\"display:flex;color:\", \";\"], palette[PColor.IconsPrimary]);\n});\nvar NotificationText = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'NotificationText')\n}).withConfig({\n componentId: \"sc-150k0cz-9\"\n})(function (_ref8) {\n var _ref8$theme = _ref8.theme,\n palette = _ref8$theme.palette,\n font = _ref8$theme.typography.font;\n return css([\"display:flex;white-space:nowrap;\", \";color:\", \";\"], font[FV.TextSmall], palette[PColor.TextPrimary]);\n});\nvar FieldWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'fieldWrapper')\n}).withConfig({\n componentId: \"sc-150k0cz-10\"\n})(function (_ref9) {\n var isSelectedItems = _ref9.isSelectedItems;\n return css([\"width:100%;height:100%;display:inline-flex;flex-wrap:wrap;gap:8px;max-height:120px;\", \";::-webkit-scrollbar{display:none;}\"], isSelectedItems && \"\\n overflow-y: auto;\\n \");\n});\nvar Styled = applyDisplayNames({\n Input: Input,\n Container: Container,\n Base: Base,\n Icon: Icon,\n CopyIcon: CopyIcon,\n PasswordIcon: PasswordIcon,\n ClearIcon: ClearIcon,\n NotificationBox: NotificationBox,\n NotificationIcon: NotificationIcon,\n NotificationText: NotificationText,\n FieldWrapper: FieldWrapper\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"inputType\", \"children\", \"iconStart\", \"iconEnd\", \"iconChange\", \"clearIcon\", \"iconClickStart\", \"iconClickEnd\", \"clearIconClick\", \"size\", \"className\", \"style\", \"fullWidth\", \"readOnly\", \"disabled\", \"hideCopyIcon\", \"focusOnMount\", \"focusOnClick\", \"isEllipsis\", \"copyTextMessage\", \"copySuccessIcon\", \"error\", \"renderTags\", \"showPlaceholder\"];\nimport React, { useState, useRef, useEffect } from 'react';\nimport PT from 'prop-types';\nimport CopyOutline from '@scaleflex/icons/copy-outline';\nimport EyeOpen from '@scaleflex/icons/eye-open';\nimport EyeClosed from '@scaleflex/icons/eye-closed';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { handleCopyIcon } from './input.utils';\nimport { Type } from './types';\nimport Styled from './input.styles';\nvar getIconSize = function getIconSize(sizeName, iconType) {\n switch (sizeName) {\n case InputSize.Md:\n return iconType === 'start' ? 15 : 14;\n case InputSize.Sm:\n default:\n return iconType === 'start' ? 13 : 10;\n }\n};\nvar getPasswordIconSize = function getPasswordIconSize(sizeName) {\n switch (sizeName) {\n case InputSize.Md:\n return 16;\n case InputSize.Sm:\n default:\n return 14;\n }\n};\nvar Input = intrinsicComponent(function (_ref, ref) {\n var _rest$selectedItems;\n var inputType = _ref.inputType,\n children = _ref.children,\n iconStart = _ref.iconStart,\n iconEnd = _ref.iconEnd,\n iconChange = _ref.iconChange,\n clearIcon = _ref.clearIcon,\n iconClickStart = _ref.iconClickStart,\n iconClickEnd = _ref.iconClickEnd,\n clearIconClick = _ref.clearIconClick,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n className = _ref.className,\n style = _ref.style,\n fullWidth = _ref.fullWidth,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n _ref$hideCopyIcon = _ref.hideCopyIcon,\n hideCopyIcon = _ref$hideCopyIcon === void 0 ? false : _ref$hideCopyIcon,\n _ref$focusOnMount = _ref.focusOnMount,\n focusOnMount = _ref$focusOnMount === void 0 ? false : _ref$focusOnMount,\n _ref$focusOnClick = _ref.focusOnClick,\n focusOnClick = _ref$focusOnClick === void 0 ? true : _ref$focusOnClick,\n _ref$isEllipsis = _ref.isEllipsis,\n isEllipsis = _ref$isEllipsis === void 0 ? false : _ref$isEllipsis,\n copyTextMessage = _ref.copyTextMessage,\n copySuccessIcon = _ref.copySuccessIcon,\n error = _ref.error,\n renderTags = _ref.renderTags,\n showPlaceholder = _ref.showPlaceholder,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isHovering = _useState2[0],\n setIsHovering = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n showCopyMessage = _useState4[0],\n setShowCopyMessage = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isVisible = _useState6[0],\n setIsVisible = _useState6[1];\n var inputRef = useRef(null);\n var isSelectedItems = (_rest$selectedItems = rest.selectedItems) === null || _rest$selectedItems === void 0 ? void 0 : _rest$selectedItems.length;\n var placeholder = rest.value || isSelectedItems ? '' : rest.placeholder;\n var showCopyIcon = isHovering && readOnly && rest.value.length > 0 && !hideCopyIcon;\n var handleFocus = function handleFocus() {\n var _inputRef$current;\n if (disabled || readOnly) return;\n showPlaceholder === null || showPlaceholder === void 0 || showPlaceholder(false);\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();\n };\n useEffect(function () {\n if (focusOnMount) {\n handleFocus();\n }\n }, []);\n useEffect(function () {\n setTimeout(function () {\n return setShowCopyMessage(false);\n }, 2000);\n }, [showCopyMessage]);\n var handleEntering = function handleEntering() {\n setTimeout(function () {\n setIsHovering(true);\n }, 150);\n };\n var handleLeaving = function handleLeaving() {\n setTimeout(function () {\n setIsHovering(false);\n }, 200);\n };\n var handleIconClick = function handleIconClick(event, type) {\n if (disabled || readOnly) return;\n if (focusOnClick) {\n handleFocus();\n }\n if (type === 'start') {\n if (iconClickStart) {\n iconClickStart(event);\n }\n } else if (type === 'end') {\n if (iconClickEnd) {\n iconClickEnd(event);\n }\n } else if (clearIconClick) {\n clearIconClick(event);\n }\n };\n var renderIcon = function renderIcon(_icon, type) {\n return _icon ? /*#__PURE__*/React.createElement(Styled.Icon, {\n onClick: function onClick(event) {\n return handleIconClick(event, type);\n },\n iconClickStart: iconClickStart,\n iconClickEnd: iconClickEnd,\n iconType: type,\n disabled: disabled,\n readOnly: readOnly\n }, typeof _icon === 'function' ? _icon({\n size: getIconSize(size, type)\n }) : _icon) : undefined;\n };\n var renderClearIcon = function renderClearIcon() {\n return disabled || readOnly || !clearIcon ? undefined : /*#__PURE__*/React.createElement(Styled.ClearIcon, {\n onClick: function onClick(event) {\n return handleIconClick(event, 'clear');\n }\n }, typeof clearIcon === 'function' ? clearIcon({\n size: getIconSize(size, 'clear')\n }) : clearIcon);\n };\n var renderCopyIcon = function renderCopyIcon(icon) {\n return showCopyIcon ? /*#__PURE__*/React.createElement(Styled.CopyIcon, {\n onClick: function onClick() {\n return handleCopyIcon(rest.value, setShowCopyMessage);\n }\n }, typeof icon === 'function' ? icon() : icon) : undefined;\n };\n var toggleVisibility = function toggleVisibility(event) {\n event.stopPropagation();\n setIsVisible(!isVisible);\n };\n var renderPasswordIcon = function renderPasswordIcon() {\n return /*#__PURE__*/React.createElement(Styled.PasswordIcon, {\n onClick: function onClick(event) {\n return toggleVisibility(event);\n }\n }, isVisible ? /*#__PURE__*/React.createElement(EyeClosed, {\n size: getPasswordIconSize(size)\n }) : /*#__PURE__*/React.createElement(EyeOpen, {\n size: getPasswordIconSize(size)\n }));\n };\n var getInputType = function getInputType() {\n if (!inputType && rest !== null && rest !== void 0 && rest.type) {\n return rest === null || rest === void 0 ? void 0 : rest.type;\n }\n if (inputType === Type.Password && !isVisible) {\n return Type.Password;\n }\n return Type.Text;\n };\n var renderField = function renderField() {\n return /*#__PURE__*/React.createElement(Styled.FieldWrapper, {\n isSelectedItems: Boolean(isSelectedItems)\n }, renderTags && renderTags(), /*#__PURE__*/React.createElement(Styled.Base, _extends({}, rest, {\n placeholder: placeholder,\n ref: inputRef,\n readOnly: Boolean(readOnly),\n type: getInputType(),\n isEllipsis: isEllipsis\n })));\n };\n var renderCopyText = function renderCopyText() {\n return /*#__PURE__*/React.createElement(Styled.NotificationBox, {\n size: size\n }, /*#__PURE__*/React.createElement(Styled.NotificationIcon, null, copySuccessIcon), /*#__PURE__*/React.createElement(Styled.NotificationText, null, copyTextMessage));\n };\n return /*#__PURE__*/React.createElement(Styled.Input, {\n onClick: focusOnClick ? handleFocus : undefined,\n ref: ref,\n size: size,\n onMouseEnter: handleEntering,\n onMouseLeave: handleLeaving,\n className: className,\n style: style,\n readOnly: readOnly,\n disabled: disabled,\n fullWidth: Boolean(fullWidth),\n error: error,\n clearIcon: clearIcon,\n isHovering: rest.isHovering,\n isSelectedItems: Boolean(isSelectedItems)\n }, renderIcon(iconStart, 'start'), renderField(), renderCopyIcon( /*#__PURE__*/React.createElement(CopyOutline, {\n size: getIconSize(size, 'copy')\n })), showCopyMessage && renderCopyText(), renderClearIcon(), inputType === Type.Password && renderPasswordIcon(), renderIcon(iconEnd, 'end'), renderIcon(iconChange, ''), children && /*#__PURE__*/React.createElement(React.Fragment, null, children));\n});\nexport var defaultProps = {\n size: InputSize.Md,\n error: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n copyTextMessage: 'Copied!'\n};\nInput.defaultProps = defaultProps;\nexport var propTypes = {\n size: PT.oneOf(objectValues(InputSize)),\n iconStart: PT.oneOfType([PT.node, PT.func]),\n iconEnd: PT.oneOfType([PT.node, PT.func]),\n iconChange: PT.oneOfType([PT.node, PT.func]),\n copySuccessIcon: PT.oneOfType([PT.node, PT.func]),\n clearIcon: PT.oneOfType([PT.node, PT.func]),\n error: PT.bool,\n fullWidth: PT.bool,\n value: PT.any,\n readOnly: PT.bool,\n disabled: PT.bool,\n iconClickStart: PT.func,\n showPlaceholder: PT.func,\n iconClickEnd: PT.func,\n clearIconClick: PT.func,\n focusOnMount: PT.bool,\n focusOnClick: PT.bool,\n copyTextMessage: PT.string,\n inputType: PT.string,\n renderTags: PT.func\n};\nInput.propTypes = propTypes;\nexport default Input;","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { useRef, useEffect } from 'react';\n/**\r\n * Creates DOM element to be used as React root.\r\n */\nfunction createRootElement(id) {\n var rootContainer = document.createElement('div');\n rootContainer.setAttribute('id', id);\n return rootContainer;\n}\n\n/**\r\n * Appends element as last child of body.\r\n */\nfunction addRootElement(rootElem) {\n document.body.append(rootElem);\n}\n\n/**\r\n * Hook to create a React Portal.\r\n * Automatically handles creating and tearing-down the root elements (no SRR\r\n * makes this trivial), so there is no need to ensure the parent target already\r\n * exists.\r\n * @example\r\n * const target = usePortal(id, [id]);\r\n * return createPortal(children, target);\r\n * @param {String} id The id of the target container, e.g 'modal' or 'spotlight'\r\n * @returns {HTMLElement} The DOM node to use as the Portal target.\r\n */\nfunction usePortal(id) {\n var rootElemRef = useRef(null);\n useEffect(function () {\n // Look for existing target dom element to append to\n var existingParent = document.querySelector(\"#\".concat(id));\n // Parent is either a new root or the existing dom element\n var parentElem = existingParent || createRootElement(id);\n\n // If there is no existing DOM element, add a new one.\n if (!existingParent) {\n addRootElement(parentElem);\n }\n\n // Add the detached element to the parent\n if (rootElemRef.current) {\n parentElem.append(rootElemRef.current);\n }\n return function removeElement() {\n if (rootElemRef.current) {\n rootElemRef.current.remove();\n }\n if (parentElem.childNodes.length === -1) {\n parentElem.remove();\n }\n };\n }, []);\n\n /**\r\n * It's important we evaluate this lazily:\r\n * - We need first render to contain the DOM element, so it shouldn't happen\r\n * in useEffect. We would normally put this in the constructor().\r\n * - We can't do 'const rootElemRef = useRef(document.createElement('div))',\r\n * since this will run every single render (that's a lot).\r\n * - We want the ref to consistently point to the same DOM element and only\r\n * ever run once.\r\n * @link https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\r\n */\n function getRootElem() {\n if (!rootElemRef.current) {\n rootElemRef.current = document.createElement('div');\n }\n return rootElemRef.current;\n }\n return getRootElem();\n}\nexport default usePortal;\nexport { usePortal };","export var Position = {\n AutoStart: 'auto-start',\n Auto: 'auto',\n AutoEnd: 'auto-end',\n TopStart: 'top-start',\n Top: 'top',\n TopEnd: 'top-end',\n BottomStart: 'bottom-start',\n Bottom: 'bottom',\n BottomEnd: 'bottom-end',\n LeftStart: 'left-start',\n Left: 'left',\n LeftEnd: 'left-end',\n RightStart: 'right-start',\n Right: 'right',\n RightEnd: 'right-end'\n};","export var Strategy = {\n Absloute: 'absolute',\n Fixed: 'fixed'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _PopperMixin;\nimport { css } from 'styled-components';\nimport { Position } from './types';\nexport var PopperMixin = (_PopperMixin = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_PopperMixin, Position.Auto, css([\"top:0px;bottom:0px;left:0px;right:0px;\"])), Position.AutoEnd, css([\"top:0px;bottom:0px;left:0px;right:0px;\"])), Position.AutoStart, css([\"top:0px;bottom:0px;left:0px;right:0px;\"])), Position.Right, css([\"left:-4px;\"])), Position.RightEnd, css([\"left:-4px;\"])), Position.RightStart, css([\"left:-4px;\"])), Position.Left, css([\"right:-4px;\"])), Position.LeftEnd, css([\"right:-4px;\"])), Position.LeftStart, css([\"right:-4px;\"])), Position.Top, css([\"bottom:-4px;\"])), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_PopperMixin, Position.TopEnd, css([\"bottom:-4px;\"])), Position.TopStart, css([\"bottom:-4px;\"])), Position.Bottom, css([\"top:-4px;\"])), Position.BottomEnd, css([\"top:-4px;\"])), Position.BottomStart, css([\"top:-4px;\"])));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { PopperMixin } from './popper.mixin';\nimport { Position } from './types';\nvar baseClassName = 'Popper';\nvar Popper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1373tsp-0\"\n})([\"\"]);\nvar PopperWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'wrapper')\n}).withConfig({\n componentId: \"sc-1373tsp-1\"\n})(function (_ref) {\n var zIndex = _ref.zIndex;\n return css([\"position:relative;z-index:\", \";\"], zIndex);\n});\nvar Arrow = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'arrow')\n}).withConfig({\n componentId: \"sc-1373tsp-2\"\n})(function (_ref2) {\n var _ref2$warning = _ref2.warning,\n warning = _ref2$warning === void 0 ? false : _ref2$warning,\n _ref2$position = _ref2.position,\n position = _ref2$position === void 0 ? Position.Right : _ref2$position,\n theme = _ref2.theme;\n return css([\"width:8px;height:8px;position:absolute;&::before{content:'';background:\", \";width:8px;height:8px;transform:rotate(45deg);position:absolute;top:0;left:0;z-index:-1;}\", \"\"], warning ? theme.palette[PColor.BackgroundOrange] : theme.palette[PColor.BackgroundGrey], PopperMixin[position]);\n});\nvar Overlay = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Overlay')\n}).withConfig({\n componentId: \"sc-1373tsp-3\"\n})(function () {\n return css([\"position:fixed;right:0;bottom:0;top:0;left:0;background-color:transparent;\"]);\n});\nvar Styled = applyDisplayNames({\n Popper: Popper,\n Overlay: Overlay,\n Arrow: Arrow,\n PopperWrapper: PopperWrapper\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"anchorEl\", \"children\", \"open\", \"warning\", \"position\", \"arrow\", \"popperOptions\", \"onClick\", \"overlay\", \"zIndex\", \"enableUnderlayingEvent\", \"wrapperStyles\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport { createPopper } from '@popperjs/core';\nimport usePortal from '../../hooks/use-portal';\nimport { intrinsicComponent, generateClassNames, useForkRef, objectValues } from '../../utils/functions';\nimport { Position, Strategy } from './types';\nimport Styled from './popper.styles';\nvar Popper = intrinsicComponent(function (_ref, ref) {\n var anchorEl = _ref.anchorEl,\n children = _ref.children,\n open = _ref.open,\n _ref$warning = _ref.warning,\n warning = _ref$warning === void 0 ? false : _ref$warning,\n _ref$position = _ref.position,\n initialPlacement = _ref$position === void 0 ? 'bottom' : _ref$position,\n _ref$arrow = _ref.arrow,\n arrow = _ref$arrow === void 0 ? false : _ref$arrow,\n popperOptions = _ref.popperOptions,\n onClick = _ref.onClick,\n _ref$overlay = _ref.overlay,\n overlay = _ref$overlay === void 0 ? false : _ref$overlay,\n _ref$zIndex = _ref.zIndex,\n zIndex = _ref$zIndex === void 0 ? 1300 : _ref$zIndex,\n enableUnderlayingEvent = _ref.enableUnderlayingEvent,\n _ref$wrapperStyles = _ref.wrapperStyles,\n wrapperStyles = _ref$wrapperStyles === void 0 ? {} : _ref$wrapperStyles,\n rest = _objectWithoutProperties(_ref, _excluded);\n var target = usePortal(generateClassNames('Popper'));\n var popperRef = useRef(null);\n var handlePopperRef = useForkRef(popperRef, ref);\n useEffect(function () {\n if (!anchorEl || !open || popperRef.current === null) {\n return undefined;\n }\n var defaultModifiers = [{\n name: 'arrow',\n options: {\n element: '[data-popper-arrow]'\n }\n }, {\n name: 'offset',\n options: {\n offset: [0, 10]\n }\n }];\n var popperModifiers = arrow ? defaultModifiers : [];\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n var popper = createPopper(anchorEl, popperRef.current, _objectSpread(_objectSpread({\n placement: initialPlacement\n }, popperOptions), {}, {\n modifiers: popperModifiers\n }));\n handlePopperRef.current = popper;\n return function () {\n popper.destroy();\n handlePopperRef.current = null;\n };\n }, [anchorEl, open, popperOptions, initialPlacement, arrow]);\n var passEventToUnderlayingEvent = function passEventToUnderlayingEvent(event) {\n setTimeout(function () {\n if (event.clientX && event.clientY) {\n var elem = document.elementFromPoint(event.clientX, event.clientY);\n if (elem) {\n elem.dispatchEvent(event.nativeEvent);\n }\n }\n }, 0);\n };\n var handleOnClicking = function handleOnClicking(event) {\n event.persist();\n event.preventDefault();\n event.stopPropagation();\n if (onClick) {\n onClick(event);\n }\n if (enableUnderlayingEvent) {\n passEventToUnderlayingEvent(event);\n }\n };\n var renderOverlay = function renderOverlay() {\n return /*#__PURE__*/React.createElement(Styled.Overlay, {\n onClick: handleOnClicking,\n onContextMenu: handleOnClicking\n });\n };\n if (!open) {\n return /*#__PURE__*/React.createElement(\"div\", {\n hidden: true,\n ref: handlePopperRef\n });\n }\n var render = function render() {\n var _handlePopperRef$stat;\n return /*#__PURE__*/React.createElement(Styled.PopperWrapper, {\n zIndex: zIndex,\n style: _objectSpread({}, wrapperStyles)\n }, overlay && renderOverlay(), /*#__PURE__*/React.createElement(Styled.Popper, _extends({\n ref: handlePopperRef\n }, rest), children, arrow && /*#__PURE__*/React.createElement(Styled.Arrow, {\n warning: warning,\n \"data-popper-arrow\": true,\n position: (handlePopperRef === null || handlePopperRef === void 0 || (_handlePopperRef$stat = handlePopperRef.state) === null || _handlePopperRef$stat === void 0 ? void 0 : _handlePopperRef$stat.placement) || initialPlacement\n })));\n };\n return /*#__PURE__*/createPortal(render(), target);\n});\nPopper.defaultProps = {};\nexport var propTypes = {\n anchorEl: PT.oneOfType([PT.instanceOf(Element), PT.object]),\n popperOptions: PT.shape({\n modifiers: PT.arrayOf(PT.shape({\n data: PT.object,\n effect: PT.func,\n enabled: PT.bool,\n fn: PT.func,\n name: PT.any.isRequired,\n options: PT.object,\n phase: PT.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PT.arrayOf(PT.string),\n requiresIfExists: PT.arrayOf(PT.string)\n })),\n onFirstUpdate: PT.func,\n placement: PT.oneOf(objectValues(Position)),\n strategy: PT.oneOf(objectValues(Strategy))\n }),\n overlay: PT.bool,\n warning: PT.bool,\n arrow: PT.bool,\n zIndex: PT.number,\n enableUnderlayingEvent: PT.bool,\n wrapperStyles: PT.object\n};\nPopper.propTypes = propTypes;\nexport default Popper;","import styled, { css, keyframes } from 'styled-components';\nimport { generateClassNames, applyDisplayNames, scrollBar } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nvar baseClassName = 'Menu';\nvar Overlay = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Overlay')\n}).withConfig({\n componentId: \"sc-10okxhw-0\"\n})(function () {\n return css([\"position:fixed;right:0;bottom:0;top:0;left:0;background-color:transparent;z-index:-1;\"]);\n});\nvar opacityKeyframes = /*#__PURE__*/keyframes([\"from{opacity:0;}to{opacity:1;}\"]);\nvar transformKeyframes = /*#__PURE__*/keyframes([\"from{transform:scale(0.97);margin-top:0px;}to{transform:scale(1);margin-top:4px;}\"]);\nvar fadeInAnimation = /*#__PURE__*/css([\"animation:\", \" 250ms 0ms cubic-bezier(0.4,0,0.2,1),\", \" 250ms cubic-bezier(0.4,0,0.2,1);\"], opacityKeyframes, transformKeyframes);\nvar Menu = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-10okxhw-1\"\n})(function (_ref) {\n var rect = _ref.rect,\n theme = _ref.theme,\n scroll = _ref.scroll,\n _ref$maxHeight = _ref.maxHeight,\n maxHeight = _ref$maxHeight === void 0 ? '' : _ref$maxHeight;\n return css([\"min-width:\", \"px;width:195px;min-height:16px;overflow-x:hidden;overflow-y:auto;transition:opacity 250ms cubic-bezier(0.4,0,0,1),transform 250ms cubic-bezier(0.4,0,0,1),margin-top 250ms cubic-bezier(0.4,0,0,1);outline:0;box-shadow:0 2px 4px \", \";border-radius:\", \";\", \" \", \" margin-top:4px;\", \"\"], rect.width, theme.palette[PColor.MediumShadow], theme.shape.borderRadius[BRSize.Md], scroll && scrollBar, maxHeight && css([\"max-height:\", \";\"], Number.isNaN(+maxHeight) ? maxHeight : \"\".concat(maxHeight, \"px\")), fadeInAnimation);\n});\nvar Styled = applyDisplayNames({\n Menu: Menu,\n Overlay: Overlay\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"id\", \"children\", \"open\", \"fullWidth\", \"anchorElPosition\", \"anchorEl\", \"onClose\", \"containerProps\", \"alignCenter\", \"maxHeight\", \"position\", \"popperOptions\", \"enableOverlay\", \"zIndex\", \"hideScroll\", \"scroll\", \"enableUnderlayingEvent\", \"popperWrapperStyles\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { propTypes as popperPropTypes } from '../popper/popper.component';\nimport { Position } from '../popper/types';\nimport Popper from '../popper';\nimport Styled from './menu.styles';\nvar Menu = intrinsicComponent(function (_ref, ref) {\n var id = _ref.id,\n children = _ref.children,\n open = _ref.open,\n fullWidth = _ref.fullWidth,\n anchorElPosition = _ref.anchorElPosition,\n anchorEl = _ref.anchorEl,\n onClose = _ref.onClose,\n containerProps = _ref.containerProps,\n alignCenter = _ref.alignCenter,\n maxHeight = _ref.maxHeight,\n position = _ref.position,\n popperOptions = _ref.popperOptions,\n _ref$enableOverlay = _ref.enableOverlay,\n enableOverlay = _ref$enableOverlay === void 0 ? true : _ref$enableOverlay,\n zIndex = _ref.zIndex,\n _ref$hideScroll = _ref.hideScroll,\n hideScroll = _ref$hideScroll === void 0 ? true : _ref$hideScroll,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? true : _ref$scroll,\n _ref$enableUnderlayin = _ref.enableUnderlayingEvent,\n enableUnderlayingEvent = _ref$enableUnderlayin === void 0 ? false : _ref$enableUnderlayin,\n _ref$popperWrapperSty = _ref.popperWrapperStyles,\n popperWrapperStyles = _ref$popperWrapperSty === void 0 ? {} : _ref$popperWrapperSty,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n timeout = _useState2[0],\n setTimeoutState = _useState2[1];\n var _useState3 = useState(new DOMRect()),\n _useState4 = _slicedToArray(_useState3, 2),\n rect = _useState4[0],\n setRect = _useState4[1];\n var menuRef = useRef(null);\n var updateRect = useCallback(function () {\n var _anchorEl$getBounding;\n var defaultPosition = _objectSpread({\n top: 0,\n left: 0,\n height: 0,\n width: 0\n }, anchorElPosition || {});\n var defaultRect = new DOMRect(defaultPosition.left, defaultPosition.top, defaultPosition.width, defaultPosition.height);\n setRect((_anchorEl$getBounding = anchorEl === null || anchorEl === void 0 ? void 0 : anchorEl.getBoundingClientRect()) !== null && _anchorEl$getBounding !== void 0 ? _anchorEl$getBounding : defaultRect);\n }, [open, timeout, anchorEl]);\n var handleWindowSizeChanged = useCallback(function () {\n if (open) {\n if (timeout) {\n clearTimeout(timeout);\n }\n setTimeoutState(setTimeout(updateRect, 300));\n }\n }, [open, timeout]);\n useEffect(function () {\n window.addEventListener('resize', handleWindowSizeChanged);\n return function () {\n window.removeEventListener('resize', handleWindowSizeChanged);\n };\n }, [handleWindowSizeChanged]);\n useEffect(function () {\n updateRect();\n }, [anchorElPosition, updateRect]);\n useEffect(function () {\n if (hideScroll) {\n if (open) {\n document.body.classList.add('Menu-open');\n updateRect();\n } else {\n document.body.classList.remove('Menu-open');\n }\n return function () {\n document.body.classList.remove('Menu-open');\n };\n }\n }, [open, updateRect]);\n var handleClose = function handleClose(event) {\n if (typeof onClose === 'function') {\n onClose(event);\n }\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Popper, {\n ref: menuRef,\n position: position || 'bottom-start',\n open: Boolean(anchorEl),\n anchorEl: anchorEl,\n overlay: Boolean(enableOverlay),\n onClick: handleClose,\n popperOptions: popperOptions,\n zIndex: zIndex,\n enableUnderlayingEvent: enableUnderlayingEvent,\n wrapperStyles: popperWrapperStyles\n }, /*#__PURE__*/React.createElement(Styled.Menu, _extends({}, containerProps, {\n alignCenter: Boolean(alignCenter),\n scroll: scroll,\n rect: rect\n }, rest, {\n ref: ref,\n maxHeight: maxHeight\n }), children)));\n});\nexport var defaultProps = {\n open: false,\n containerProps: {},\n maxHeight: 250,\n position: Position.BottomStart,\n enableOverlay: true,\n hideScroll: true,\n scroll: true\n};\nMenu.defaultProps = defaultProps;\nexport var propTypes = {\n anchorElPosition: PT.shape({\n left: PT.number,\n right: PT.number,\n top: PT.number,\n bottom: PT.number\n }),\n anchorEl: PT.instanceOf(Element),\n open: PT.bool,\n fullWidth: PT.bool,\n onClose: PT.func,\n id: PT.string,\n containerProps: PT.object,\n alignCenter: PT.bool,\n maxHeight: PT.oneOfType([PT.string, PT.number]),\n popperOptions: popperPropTypes.popperOptions,\n position: PT.oneOf(objectValues(Position)),\n enableOverlay: PT.bool,\n zIndex: PT.number,\n hideScroll: PT.bool,\n scroll: PT.bool,\n enableUnderlayingEvent: PT.bool,\n popperWrapperStyles: PT.object,\n style: PT.object\n};\nMenu.propTypes = propTypes;\nexport default Menu;","export var Size = {\n Sm: 'sm',\n Md: 'md'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\n// import type { With } from '../../utils/types';\n\n// import { Color as PaletteColor } from '../../utils/types/palette';\nimport { FontVariant as FV } from '../../utils/types/typography';\nimport { Size } from './types';\nexport var sizeMenuItemMixin = _defineProperty(_defineProperty({}, Size.Sm, function (_ref) {\n var font = _ref.theme.typography.font;\n return css([\"padding:8px 16px;min-height:32px;\", \"\"], font[FV.LabelMedium]);\n}), Size.Md, function (_ref2) {\n var font = _ref2.theme.typography.font;\n return css([\"padding:11px 16px;min-height:40px;\", \"\"], font[FV.LabelLarge]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\n// import { BorderRadiusSize as BRSize } from '../../utils/types/shape';\n\nimport { sizeMenuItemMixin } from './menu-item.mixin';\nimport { Size } from './types';\nvar baseClassName = 'MenuItem';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-rrzye0-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette,\n disabled = _ref.disabled;\n return css([\"flex-shrink:0;margin-right:10px;color:\", \";\"], disabled ? palette[PColor.TextPlaceholder] : palette[PColor.IconsPrimary]);\n});\nvar Actions = /*#__PURE__*/styled(Icon).attrs({\n className: generateClassNames(baseClassName, 'Actions')\n}).withConfig({\n componentId: \"sc-rrzye0-1\"\n})(function () {\n return css([\"margin-right:0px;margin-left:16px;\"]);\n});\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-rrzye0-2\"\n})([\"align-items:center;column-gap:4px;flex-grow:1;\"]);\nvar MenuItemWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'wrapper')\n}).withConfig({\n componentId: \"sc-rrzye0-3\"\n})(function (_ref2) {\n var _ref2$divider = _ref2.divider,\n divider = _ref2$divider === void 0 ? false : _ref2$divider,\n _ref2$noOptionsText = _ref2.noOptionsText,\n noOptionsText = _ref2$noOptionsText === void 0 ? false : _ref2$noOptionsText,\n _ref2$disabled = _ref2.disabled,\n disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,\n theme = _ref2.theme;\n return css([\"\", \" \", \"\"], divider && css([\"width:100%;height:1px;background:\", \";box-sizing:border-box;\"], theme.palette[PColor.BordersSecondary]), (noOptionsText || disabled) && css([\"color:\", \";\"], theme.palette[PColor.ButtonDisabledText]));\n});\nvar MenuItem = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-rrzye0-4\"\n})(function (_ref3) {\n var _ref3$size = _ref3.size,\n size = _ref3$size === void 0 ? Size.Sm : _ref3$size,\n active = _ref3.active,\n theme = _ref3.theme,\n _ref3$disableHover = _ref3.disableHover,\n disableHover = _ref3$disableHover === void 0 ? false : _ref3$disableHover,\n noOptionsText = _ref3.noOptionsText,\n disabled = _ref3.disabled;\n return css([\"display:flex;justify-content:space-between;flex-direction:row;align-items:center;width:100%;background:\", \";color:\", \";cursor:pointer;box-sizing:border-box;transition:all 100ms ease-out;\", \" &:focus-within,&:focus,&:hover{\", \";\", \"}\", \"\"], theme.palette[active ? PColor.BackgroundActive : PColor.BackgroundSecondary], theme.palette[PColor.TextPrimary], sizeMenuItemMixin[size], !disableHover && \"background-color: \".concat(theme.palette[PColor.BackgroundHover]), (noOptionsText || disabled) && css([\"cursor:default;background-color:white;\"]), (noOptionsText || disabled) && css([\"& > svg{path{fill:\", \";}}color:\", \";\"], theme.palette[PColor.ButtonDisabledText], theme.palette[PColor.ButtonDisabledText]));\n});\nvar MenuPrefix = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'prefix')\n}).withConfig({\n componentId: \"sc-rrzye0-5\"\n})(function () {\n return css([\"display:flex;\"]);\n});\nvar MenuContent = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'content')\n}).withConfig({\n componentId: \"sc-rrzye0-6\"\n})(function () {\n return css([\"flex-grow:1;line-height:16px;\"]);\n});\nvar MenuSuffix = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'suffix')\n}).withConfig({\n componentId: \"sc-rrzye0-7\"\n})(function () {\n return css([\"display:flex;margin-left:8px;\"]);\n});\nvar Styled = applyDisplayNames({\n MenuItemWrapper: MenuItemWrapper,\n MenuItem: MenuItem,\n MenuPrefix: MenuPrefix,\n MenuContent: MenuContent,\n MenuSuffix: MenuSuffix,\n Label: Label,\n Icon: Icon,\n Actions: Actions\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"list\", \"depth\", \"children\", \"disableHover\", \"noOptionsText\", \"disabled\", \"enableScrollIntoView\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useRef, useEffect } from 'react';\nimport Arrow from '@scaleflex/icons/arrow';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Menu from '../menu';\nimport { Size } from './types';\nimport Styled from './menu-item.styles';\nvar MenuItem = intrinsicComponent(function (_ref, ref) {\n var list = _ref.list,\n _ref$depth = _ref.depth,\n depth = _ref$depth === void 0 ? 0 : _ref$depth,\n children = _ref.children,\n disableHover = _ref.disableHover,\n noOptionsText = _ref.noOptionsText,\n disabled = _ref.disabled,\n enableScrollIntoView = _ref.enableScrollIntoView,\n props = _objectWithoutProperties(_ref, _excluded);\n var menuItemRef = useRef(null);\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n anchorEl = _React$useState2[0],\n setAnchorEl = _React$useState2[1];\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n selectedIds = _React$useState4[0],\n setSelectedIds = _React$useState4[1];\n var handleOpenMenu = function handleOpenMenu(event) {\n setAnchorEl(event.currentTarget);\n };\n var handleScroll = function handleScroll() {\n var _menuItemRef$current;\n (_menuItemRef$current = menuItemRef.current) === null || _menuItemRef$current === void 0 || _menuItemRef$current.scrollIntoView({\n behavior: 'auto',\n block: 'nearest'\n });\n };\n useEffect(function () {\n if (props.active && enableScrollIntoView) {\n handleScroll();\n }\n }, [props.active]);\n var handleSelectedId = function handleSelectedId(ev, selected, depthLevel) {\n var updatedArray = selectedIds.slice(0);\n updatedArray[depthLevel] = selected;\n setSelectedIds(updatedArray);\n handleOpenMenu(ev);\n };\n var handleCloseSubMenu = function handleCloseSubMenu(depthLevel) {\n var updatedArray = selectedIds.slice(0);\n updatedArray[depthLevel] = '';\n setSelectedIds(updatedArray);\n setAnchorEl(null);\n };\n var renderItems = function renderItems(options) {\n var depthLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return options.map(function (option) {\n var hasOptions = option.subList && option.subList.length > 0;\n var subMenu;\n if (selectedIds[depthLevel] === option.key && hasOptions) {\n var newDepthLevel = depthLevel + 1;\n subMenu = /*#__PURE__*/React.createElement(Menu, _extends({\n key: option.key,\n position: \"right\",\n open: Boolean(anchorEl),\n anchorEl: anchorEl,\n enableOverlay: false\n }, option.subMenuProps), /*#__PURE__*/React.createElement(MenuItem, _extends({\n list: option.subList,\n depth: newDepthLevel\n }, props)));\n }\n if (option.content === 'divider') {\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, {\n divider: true,\n key: option.key\n });\n }\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, _extends({\n disabled: false,\n key: option.key,\n onMouseLeave: function onMouseLeave() {\n return handleCloseSubMenu(depthLevel);\n }\n }, props), /*#__PURE__*/React.createElement(Styled.MenuItem, _extends({}, props, {\n className: option.className,\n ref: ref,\n active: Boolean(option.active),\n onClick: option.onClick ? function (event) {\n return option.onClick(_objectSpread({\n event: event\n }, props));\n } : undefined,\n onMouseEnter: function onMouseEnter(ev) {\n return handleSelectedId(ev, option.key, depthLevel);\n },\n disableHover: disableHover || option.disableHover\n }), option.prefix && /*#__PURE__*/React.createElement(Styled.MenuPrefix, null, typeof option.prefix === 'function' ? option.prefix(props) : option.prefix), option.content && /*#__PURE__*/React.createElement(Styled.MenuContent, null, typeof option.content === 'function' ? option.content(props) : option.content), (option.suffix || option.subList) && /*#__PURE__*/React.createElement(Styled.MenuSuffix, null, typeof option.suffix === 'function' ? option.suffix(props) : option.suffix, option.subList && /*#__PURE__*/React.createElement(Arrow, {\n size: 10,\n color: \"#768A9F\"\n }))), subMenu);\n });\n };\n if (!list) {\n if (props.value === 'divider') {\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, {\n divider: true,\n key: props.value\n });\n }\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, {\n noOptionsText: Boolean(noOptionsText),\n disabled: Boolean(disabled)\n }, /*#__PURE__*/React.createElement(Styled.MenuItem, _extends({}, props, {\n ref: menuItemRef,\n disableHover: disableHover,\n noOptionsText: noOptionsText,\n disabled: disabled\n }), children));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderItems(list, depth));\n});\nMenuItem.displayName = 'MenuItem';\nexport var defaultProps = {\n size: Size.Sm,\n active: false\n};\nMenuItem.defaultProps = defaultProps;\nMenuItem.propTypes = {\n size: PT.oneOf(objectValues(Size)),\n children: PT.oneOfType([PT.node, PT.func]),\n active: PT.bool,\n value: PT.oneOfType([PT.string, PT.number, PT.bool, PT.oneOf([null])]),\n depth: PT.number,\n disableHover: PT.bool,\n noOptionsText: PT.bool,\n disabled: PT.bool,\n enableScrollIntoView: PT.bool\n};\nexport default MenuItem;\n// list: PT.arrayOf(\n// PT.shape({\n// key: PT.string.isRequired,\n// content: PT.oneOfType([PT.string, PT.node]).isRequired,\n// prefix: PT.oneOfType([PT.string, PT.node]),\n// subList: PT.arrayOf(PT.object),\n// suffix: PT.oneOfType([PT.string, PT.node]),\n// onClick: PT.func,\n// disabled: PT.bool,\n// })\n// ),","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"disabled\", \"size\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport Styled from './menu-item.styles';\nvar getIconSize = function getIconSize(sizeName) {\n switch (sizeName) {\n case Size.Md:\n return 16;\n case Size.Sm:\n default:\n return 14;\n }\n};\nvar MenuItemIcon = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? Size.Md : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Icon, _extends({\n disabled: disabled\n }, rest, {\n ref: ref\n }), children && typeof children === 'function' ? children({\n size: getIconSize(size)\n }) : children);\n});\nMenuItemIcon.defaultProps = {\n size: Size.Md\n};\nMenuItemIcon.propTypes = {\n size: PT.oneOf(objectValues(Size)),\n children: PT.oneOfType([PT.node, PT.func]).isRequired,\n disabled: PT.bool\n};\nexport default MenuItemIcon;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './menu-item.styles';\nvar MenuItemLabel = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Label, _extends({}, rest, {\n ref: ref\n }), children);\n});\nMenuItemLabel.displayName = 'MenuItemLabel';\nexport default MenuItemLabel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport Styled from './menu-item.styles';\nvar MenuItemActions = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Actions, _extends({}, rest, {\n ref: ref\n }), children && typeof children === 'function' ? children({\n size: rest.size\n }) : children);\n});\nMenuItemActions.displayName = 'MenuItemActions';\nMenuItemActions.defaultProps = {\n size: Size.Md\n};\nMenuItemActions.propTypes = {\n size: PT.oneOf(objectValues(Size)),\n children: PT.oneOfType([PT.node, PT.func]).isRequired\n};\nexport default MenuItemActions;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CrossOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 44 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.3196 40.0403C44.2253 40.9461 44.2253 42.4146 43.3196 43.3204C42.4138 44.2262 40.9453 44.2262 40.0396 43.3204L21.9997 25.2802L3.95952 43.3207C3.05376 44.2264 1.58525 44.2264 0.679494 43.3207C-0.226258 42.4149 -0.226258 40.9464 0.679495 40.0406L18.7197 22.0001L0.679313 3.95941C-0.226437 3.05364 -0.226439 1.5851 0.679314 0.679328C1.58507 -0.226442 3.05358 -0.226443 3.95934 0.679328L21.9997 18.72L40.0398 0.679604C40.9455 -0.226163 42.414 -0.226165 43.3198 0.679605C44.2255 1.58537 44.2255 3.05392 43.3198 3.95969L25.2797 22.0001L43.3196 40.0403Z\",\n fill: color\n }));\n});\nexport default CrossOutline;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { FontVariant as FV } from '../../utils/types/typography';\nimport { InputSize } from '../../utils/types';\nexport var sizeHintMixin = _defineProperty(_defineProperty({}, InputSize.Sm, function (_ref) {\n var font = _ref.theme.typography.font;\n return css(font[FV.LabelExtraSmallUp]);\n}), InputSize.Md, function (_ref2) {\n var font = _ref2.theme.typography.font;\n return css(font[FV.LabelSmall]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { sizeHintMixin } from './form-hint.mixin';\nvar baseClassName = 'FormHint';\nvar FormHint = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1vu99sv-0\"\n})(function (_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n _ref$error = _ref.error,\n error = _ref$error === void 0 ? false : _ref$error,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n theme = _ref.theme;\n return css([\"display:flex;align-items:center;color:\", \";\", \" \", \"\"], error ? theme.palette[PColor.Error] : theme.palette[PColor.TextSecondary], disabled && css([\"color:\", \";\"], theme.palette[PColor.ButtonDisabledText]), sizeHintMixin[size]);\n});\nvar Styled = applyDisplayNames({\n FormHint: FormHint\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport Styled from './form-hint.styles';\nvar FormHint = intrinsicComponent(function (props, ref) {\n return /*#__PURE__*/React.createElement(Styled.FormHint, _extends({\n ref: ref\n }, props));\n});\nFormHint.defaultProps = {\n error: false\n};\nFormHint.propTypes = {\n error: PT.bool,\n size: PT.oneOf(objectValues(InputSize))\n};\nexport default FormHint;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { BadgeColor } from '../../utils/types';\nexport var colorBadgeMixin = _defineProperty(_defineProperty(_defineProperty({}, BadgeColor.Primary, function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"background-color:\", \";color:\", \";\"], palette[PaletteColor.AccentPrimary], palette[PaletteColor.ButtonPrimaryText]);\n}), BadgeColor.White, function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"background-color:\", \";color:\", \";\"], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimary]);\n}), BadgeColor.Secondary, function (_ref3) {\n var palette = _ref3.theme.palette;\n return css([\"background-color:\", \";color:\", \";\"], palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.TextPrimary]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { colorBadgeMixin } from './badge.mixin';\nvar baseClassName = 'Badge';\nvar defaultSize = 20;\nvar BadgeRoot = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1rfm40m-0\"\n})([\"position:relative;display:inline-flex;flex-shrink:0;vertical-align:middle;\"]);\nvar Badge = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName)\n}).withConfig({\n componentId: \"sc-1rfm40m-1\"\n})(function (_ref) {\n var size = _ref.size,\n _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'secondary' : _ref$color,\n fontSize = _ref.fontSize,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? '0 6px' : _ref$padding,\n inline = _ref.inline;\n return css([\"\", \" display:flex;flex-wrap:wrap;flex-direction:row;justify-content:center;align-items:center;align-content:center;height:\", \"px;min-width:\", \"px;line-height:1;padding:\", \";font-size:\", \";box-sizing:border-box;transition:transform 225ms cubic-bezier(0.4,0,0.2,1) 0ms;border-radius:\", \"px;z-index:1;\", \"\"], inline ? '' : 'position: absolute;', size || defaultSize, size || defaultSize, typeof padding === 'number' ? \"\".concat(padding, \"px\") : padding, typeof fontSize === 'number' ? \"\".concat(fontSize, \"px\") : fontSize, (size || defaultSize) / 2, colorBadgeMixin[color]);\n});\nvar Styled = applyDisplayNames({\n BadgeRoot: BadgeRoot,\n Badge: Badge\n});\nexport default Styled;","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"badgeContent\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { BadgeColor } from '../../utils/types';\nimport Styled from './badge.styles';\nvar Badge = intrinsicComponent(function (_ref, ref) {\n var badgeContent = _ref.badgeContent,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.BadgeRoot, {\n ref: ref\n }, /*#__PURE__*/React.createElement(Styled.Badge, rest, badgeContent));\n});\nBadge.defaultProps = {\n color: BadgeColor.Secondary,\n inline: false\n};\nBadge.propTypes = {\n color: PT.oneOf(objectValues(BadgeColor)),\n badgeContent: PT.node,\n size: PT.oneOfType([PT.number]),\n fontSize: PT.oneOfType([PT.number, PT.string]),\n padding: PT.oneOfType([PT.number, PT.string]),\n inline: PT.bool\n};\nexport default Badge;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Spinner = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 28 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.3465 44.355C33.5656 50.7844 22.9687 51.6268 14.3708 47.3665L17.8949 44.4545C24.754 47.117 32.7424 46.1093 38.709 41.1792C44.6755 36.249 47.1546 28.6071 45.8085 21.3893L49.3325 18.4773C51.9291 27.6967 49.1274 37.9256 41.3465 44.355Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.1749 2.63356L32.6509 5.54555C25.821 2.91828 17.838 3.86187 11.8366 8.82088C5.87009 13.7511 3.42028 21.4282 4.7372 28.6107L1.21311 31.5227C-1.38344 22.3034 1.45314 12.0456 9.19916 5.64502C16.9801 -0.784402 27.5768 -1.62682 36.1749 2.63356Z\",\n fill: color\n }));\n});\nexport default Spinner;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TwoArrowsRight = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.74299 0.152553C5.95998 -0.056404 6.30528 -0.0498885 6.51424 0.167105C6.7232 0.384099 6.71668 0.7294 6.49969 0.938357L1.43832 5.81227L6.51398 11.0759C6.72309 11.2928 6.71681 11.6381 6.49996 11.8472C6.28311 12.0563 5.9378 12.05 5.7287 11.8332L0.274151 6.1766C0.17369 6.07242 0.118752 5.93258 0.121433 5.78788C0.124113 5.64317 0.184193 5.50547 0.288444 5.40508L5.74299 0.152553Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9549 0.152554C11.1719 -0.0564031 11.5172 -0.0498876 11.7262 0.167106C11.9351 0.3841 11.9286 0.729401 11.7116 0.938357L6.65023 5.81227L11.7259 11.0759C11.935 11.2928 11.9287 11.6381 11.7119 11.8472C11.495 12.0563 11.1497 12.05 10.9406 11.8332L5.48606 6.1766C5.3856 6.07242 5.33067 5.93258 5.33335 5.78788C5.33603 5.64317 5.39611 5.50547 5.50036 5.40508L10.9549 0.152554Z\",\n fill: color\n }));\n});\nexport default TwoArrowsRight;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TwoArrowsLeft = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.25714 11.8474C6.04014 12.0564 5.69484 12.0499 5.48588 11.8329C5.27693 11.6159 5.28344 11.2706 5.50043 11.0616L10.5618 6.18773L5.48614 0.924074C5.27704 0.707224 5.28331 0.361919 5.50016 0.152813C5.71701 -0.0562931 6.06232 -0.0500145 6.27143 0.166835L11.726 5.8234C11.8264 5.92758 11.8814 6.06742 11.8787 6.21212C11.876 6.35683 11.8159 6.49453 11.7117 6.59492L6.25714 11.8474Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.04522 11.8474C0.828227 12.0564 0.482925 12.0499 0.273969 11.8329C0.065012 11.6159 0.0715275 11.2706 0.288521 11.0616L5.34989 6.18773L0.274227 0.924074C0.0651226 0.707224 0.0714006 0.361919 0.28825 0.152813C0.5051 -0.0562931 0.850407 -0.0500145 1.05951 0.166835L6.51406 5.8234C6.61452 5.92758 6.66946 6.06742 6.66678 6.21212C6.6641 6.35683 6.60402 6.49453 6.49977 6.59492L1.04522 11.8474Z\",\n fill: color\n }));\n});\nexport default TwoArrowsLeft;","export var ButtonType = {\n Default: 'default',\n Sidebar: 'sidebar'\n};","export var SideBar = {\n Left: 'left',\n Right: 'right'\n};","import { ButtonSize } from '../../utils/types';\nexport var getIconSize = function getIconSize(sizeName) {\n switch (sizeName) {\n case ButtonSize.Lg:\n return 18;\n case ButtonSize.Md:\n return 16;\n case ButtonSize.Sm:\n return 14;\n case ButtonSize.Xs:\n return 12;\n default:\n return 16;\n }\n};\nexport var getSideBarIconSize = function getSideBarIconSize(sizeName) {\n switch (sizeName) {\n case ButtonSize.Lg:\n return 12;\n case ButtonSize.Md:\n return 11;\n case ButtonSize.Sm:\n return 10;\n default:\n return 11;\n }\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _colorButtonMixin;\nimport { css } from 'styled-components';\nimport StyledBadge from '../badge/badge.styles';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { FontVariant } from '../../utils/types/typography';\nimport { ButtonSize, ButtonColor } from '../../utils/types';\nexport var colorButtonMixin = (_colorButtonMixin = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_colorButtonMixin, ButtonColor.Primary, function (_ref) {\n var palette = _ref.theme.palette,\n active = _ref.active;\n return css([\"background-color:\", \";color:\", \";\", \"{color:\", \";background:transparent;}&:hover{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{color:\", \";background:\", \";cursor:default;\", \"{color:\", \";background:transparent;}}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.Secondary, function (_ref2) {\n var palette = _ref2.theme.palette,\n active = _ref2.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \"{color:\", \";background:transparent;}&:hover{color:\", \";background-color:\", \";\", \"{color:\", \";}}&:focus{color:\", \";background-color:\", \";border:1px solid \", \";\", \"{color:\", \";}}&:active{color:\", \";background-color:\", \";\", \"{color:\", \";}}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;\", \"{color:\", \";}}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentStateless], StyledBadge.Badge, palette[PaletteColor.AccentStateless], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryHover], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], active && css([\"color:\", \";background-color:\", \";\", \"{color:\", \";}&:hover,&:focus{color:\", \";background-color:\", \";\", \"{color:\", \";}}\"], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.Basic, function (_ref3) {\n var palette = _ref3.theme.palette,\n active = _ref3.active;\n return css([\"background-color:transparent;border:1px solid \", \";color:\", \";\", \"{background-color:transparent;color:\", \";}&:hover{background-color:\", \";color:\", \";\", \"{color:\", \";}}&:active{background-color:\", \";color:\", \";\", \"{color:\", \";}}\", \" &:disabled{background-color:\", \";color:\", \";cursor:default;border:none;\", \"{color:\", \";}}\"], palette[PaletteColor.BordersButton], palette[PaletteColor.LinkStateless], StyledBadge.Badge, palette[PaletteColor.LinkStateless], palette[PaletteColor.BackgroundHover], palette[PaletteColor.LinkHover], StyledBadge.Badge, palette[PaletteColor.LinkHover], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkHover], StyledBadge.Badge, palette[PaletteColor.LinkHover], active && css([\"background-color:\", \";color:\", \";\", \"{color:\", \";}&:hover,&:focus{background-color:\", \";color:\", \";}\"], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkHover], StyledBadge.Badge, palette[PaletteColor.LinkHover], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkHover]), palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.BordersDisabled], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkPrimary, function (_ref4) {\n var palette = _ref4.theme.palette,\n active = _ref4.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkSecondary, function (_ref5) {\n var palette = _ref5.theme.palette,\n active = _ref5.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkBasicPrimary, function (_ref6) {\n var palette = _ref6.theme.palette,\n active = _ref6.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkBasicSecondary, function (_ref7) {\n var palette = _ref7.theme.palette,\n active = _ref7.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.ErrorPrimary, function (_ref8) {\n var palette = _ref8.theme.palette,\n active = _ref8.active;\n return css([\"background-color:\", \";color:\", \";\", \"{color:\", \";background:transparent;}&:hover{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{background-color:\", \";color:\", \";cursor:default;\", \"{color:\", \";background:transparent;}}\"], palette[PaletteColor.Error], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ErrorHover], palette[PaletteColor.ErrorActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.ErrorActive], palette[PaletteColor.ErrorActive]), palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.BordersDisabled], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.ErrorSecondary, function (_ref9) {\n var palette = _ref9.theme.palette,\n active = _ref9.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \"{color:\", \";background-color:transparent;}&:hover{background-color:\", \";color:\", \";border:none;\", \"{color:\", \";}}&:active{background-color:\", \";color:\", \";border:none;}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;\", \"{color:\", \";}}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.LinkStateless], palette[PaletteColor.BordersButton], StyledBadge.Badge, palette[PaletteColor.LinkStateless], palette[PaletteColor.ErrorHover], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ErrorActive], palette[PaletteColor.ButtonPrimaryText], active && css([\"background-color:\", \";color:\", \";border:none;&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.ErrorActive], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ErrorActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.ErrorBasic, function (_ref10) {\n var palette = _ref10.theme.palette,\n active = _ref10.active;\n return css([\"color:\", \";background-color:transparent;&:hover{color:\", \";}&:active{color:\", \";}\", \" &:disabled{color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.ErrorHover], palette[PaletteColor.ErrorActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.ErrorActive], palette[PaletteColor.ErrorActive]), palette[PaletteColor.BordersDisabled]);\n}), _defineProperty(_defineProperty(_defineProperty(_colorButtonMixin, ButtonColor.WarningPrimary, function (_ref11) {\n var palette = _ref11.theme.palette,\n active = _ref11.active;\n return css([\"background-color:\", \";color:\", \";\", \"{color:\", \";background:transparent;}&:hover{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{background-color:\", \";color:\", \";cursor:default;\", \"{color:\", \";background:transparent;}}\"], palette[PaletteColor.Warning], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.WarningHover], palette[PaletteColor.WarningActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.WarningActive], palette[PaletteColor.WarningActive]), palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.BordersDisabled], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.WarningSecondary, function (_ref12) {\n var palette = _ref12.theme.palette,\n active = _ref12.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \"{color:\", \";background-color:transparent;}&:hover{background-color:\", \";color:\", \";border:none;\", \"{color:\", \";}}&:active{background-color:\", \";color:\", \";border:none;}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;\", \"{color:\", \";}}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.LinkStateless], palette[PaletteColor.BordersButton], StyledBadge.Badge, palette[PaletteColor.LinkStateless], palette[PaletteColor.WarningHover], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.WarningActive], palette[PaletteColor.ButtonPrimaryText], active && css([\"background-color:\", \";color:\", \";border:none;\", \"{color:\", \";background-color:transparent;}&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.WarningActive], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.WarningActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.WarningBasic, function (_ref13) {\n var palette = _ref13.theme.palette,\n active = _ref13.active;\n return css([\"color:\", \";background-color:transparent;&:hover{color:\", \";}&:active{color:\", \";}\", \" &:disabled{color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.WarningHover], palette[PaletteColor.WarningActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.WarningActive], palette[PaletteColor.WarningActive]), palette[PaletteColor.BordersDisabled]);\n}));\nexport var sizeButtonMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:5px 10px;\"])), ButtonSize.Sm, css([\"padding:8px 12px;\"])), ButtonSize.Md, css([\"padding:11px 16px;\"])), ButtonSize.Lg, css([\"padding:14px 24px;\"]));\nexport var sizeSecondaryButtonMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:4px 10px;\"])), ButtonSize.Sm, css([\"padding:7px 12px;\"])), ButtonSize.Md, css([\"padding:10px 16px;\"])), ButtonSize.Lg, css([\"padding:13px 24px;\"]));\nexport var sizeSidebarMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:5px 10px;\"])), ButtonSize.Sm, css([\"padding:8px 12px;\"])), ButtonSize.Md, css([\"padding:11px 14px;\"])), ButtonSize.Lg, css([\"padding:14px 16px;\"]));\nexport var sizeSidebarDividerMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"height:14px;\"])), ButtonSize.Sm, css([\"height:16px;\"])), ButtonSize.Md, css([\"height:18px;\"])), ButtonSize.Lg, css([\"height:20px;\"]));\nexport var paddingIconLabelMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"margin-right:5px;\"])), ButtonSize.Sm, css([\"margin-right:6px;\"])), ButtonSize.Md, css([\"margin-right:7px;\"])), ButtonSize.Lg, css([\"margin-right:8px;\"]));\nexport var sizeButtonLabelMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, function (_ref14) {\n var font = _ref14.theme.typography.font;\n return css(font[FontVariant.ButtonSm]);\n}), ButtonSize.Sm, function (_ref15) {\n var font = _ref15.theme.typography.font;\n return css(font[FontVariant.ButtonMd]);\n}), ButtonSize.Md, function (_ref16) {\n var font = _ref16.theme.typography.font;\n return css(font[FontVariant.ButtonLg]);\n}), ButtonSize.Lg, function (_ref17) {\n var font = _ref17.theme.typography.font;\n return css(font[FontVariant.ButtonLgUp]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { colorButtonMixin, sizeButtonMixin, sizeButtonLabelMixin, sizeSidebarMixin, sizeSidebarDividerMixin, paddingIconLabelMixin, sizeSecondaryButtonMixin } from './button.mixin';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { ButtonSize, ButtonColor } from '../../utils/types';\nimport { ButtonType, SideBar } from './types';\nvar baseClassName = 'Button';\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-lxwit0-0\"\n})([\"display:flex;\"]);\nvar Badge = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Badge')\n}).withConfig({\n componentId: \"sc-lxwit0-1\"\n})([\"display:flex;margin-left:5px;\"]);\nvar Wrapper = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Body')\n}).withConfig({\n componentId: \"sc-lxwit0-2\"\n})(function () {\n return css([\"display:flex;align-items:center;\"]);\n});\nvar Button = /*#__PURE__*/styled.button.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-lxwit0-3\"\n})(function (_ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? ButtonColor.Secondary : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? ButtonSize.Md : _ref$size,\n buttonType = _ref.buttonType,\n active = _ref.active,\n theme = _ref.theme;\n return css([\"display:inline-flex;flex-shrink:0;flex-direction:row;align-items:center;justify-content:center;border-radius:\", \";transition:all 100ms ease-out;border:0;cursor:pointer;outline:none;\", \" \", \" \", \" \", \"{\", \" \", \"}\", \"{\", \"}\", \"\"], theme.shape.borderRadius[BRSize.Md], buttonType !== ButtonType.Sidebar && colorButtonMixin[color], buttonType === ButtonType.Sidebar ? sizeSidebarMixin[size] : sizeButtonMixin[size], color === ButtonColor.Secondary && sizeSecondaryButtonMixin[size], Label, sizeButtonLabelMixin[size], (color === ButtonColor.LinkBasicPrimary || color === ButtonColor.LinkBasicSecondary) && \"font-weight: 400\", Badge, sizeButtonLabelMixin[size], buttonType === ButtonType.Sidebar && css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \" \", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;}\"], theme.palette[PaletteColor.ButtonPrimaryText], theme.palette[PaletteColor.LinkStateless], theme.palette[PaletteColor.BordersButton], !active && css([\"&:hover{color:\", \";background-color:\", \";border:none;}&:active{color:\", \";background-color:\", \";border:none;}\"], theme.palette[PaletteColor.ButtonPrimaryText], theme.palette[PaletteColor.AccentPrimaryHover], theme.palette[PaletteColor.ButtonPrimaryText], theme.palette[PaletteColor.AccentPrimaryActive]), active && css([\"background-color:\", \";color:\", \";border:1px solid \", \";\"], theme.palette[PaletteColor.Accent_1_2_Opacity], theme.palette[PaletteColor.AccentPrimaryActive], theme.palette[PaletteColor.AccentPrimaryActive]), theme.palette[PaletteColor.BordersDisabled], theme.palette[PaletteColor.AccentPrimaryDisabled]));\n});\nvar StartIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'StartIcon')\n}).withConfig({\n componentId: \"sc-lxwit0-4\"\n})(function (_ref2) {\n var $loading = _ref2.$loading,\n _ref2$size = _ref2.size,\n size = _ref2$size === void 0 ? ButtonSize.Md : _ref2$size;\n return css([\"display:flex;svg{animation:\", \";}\", \"\"], $loading ? 'spinner 1.2s linear infinite' : '1.2s', paddingIconLabelMixin[size]);\n});\nvar SideArrows = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'SideBar')\n}).withConfig({\n componentId: \"sc-lxwit0-5\"\n})(function (_ref3) {\n var sideBarType = _ref3.sideBarType;\n return css([\"display:flex;\", \":12px;\"], \"margin-\".concat(sideBarType === SideBar.Left ? 'right' : 'left'));\n});\nvar Divider = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Divider')\n}).withConfig({\n componentId: \"sc-lxwit0-6\"\n})(function (_ref4) {\n var sideBarType = _ref4.sideBarType,\n _ref4$size = _ref4.size,\n size = _ref4$size === void 0 ? ButtonSize.Md : _ref4$size;\n return css([\"border-left-style:solid;border-width:1px;\", \" \", \":12px;\"], sizeSidebarDividerMixin[size], \"margin-\".concat(sideBarType === SideBar.Left ? 'right' : 'left'));\n});\nvar EndIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'EndIcon')\n}).withConfig({\n componentId: \"sc-lxwit0-7\"\n})([\"display:flex;margin-left:6px;\"]);\nvar Styled = applyDisplayNames({\n Button: Button,\n Wrapper: Wrapper,\n Label: Label,\n SideArrows: SideArrows,\n Divider: Divider,\n StartIcon: StartIcon,\n EndIcon: EndIcon,\n Badge: Badge\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"startIcon\", \"endIcon\", \"badge\", \"color\", \"active\", \"buttonType\", \"sideBarType\", \"size\", \"loading\", \"disabled\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport SpinnerIcon from '@scaleflex/icons/spinner';\nimport TwoArrowsRight from '@scaleflex/icons/two-arrows-right';\nimport TwoArrowsLeft from '@scaleflex/icons/two-arrows-left';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Badge from '../badge';\nimport { ButtonSize, ButtonColor } from '../../utils/types';\nimport { ButtonType, SideBar } from './types';\nimport { getIconSize, getSideBarIconSize } from './button.utils';\nimport Styled from './button.styles';\nvar Button = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n startIcon = _ref.startIcon,\n endIcon = _ref.endIcon,\n badge = _ref.badge,\n color = _ref.color,\n active = _ref.active,\n buttonType = _ref.buttonType,\n _ref$sideBarType = _ref.sideBarType,\n sideBarType = _ref$sideBarType === void 0 ? SideBar.Left : _ref$sideBarType,\n size = _ref.size,\n loading = _ref.loading,\n disabled = _ref.disabled,\n rest = _objectWithoutProperties(_ref, _excluded);\n var getSideBarArrows = function getSideBarArrows(props) {\n switch (sideBarType) {\n case SideBar.Right:\n return active ? /*#__PURE__*/React.createElement(TwoArrowsLeft, props) : /*#__PURE__*/React.createElement(TwoArrowsRight, props);\n case SideBar.Left:\n return active ? /*#__PURE__*/React.createElement(TwoArrowsRight, props) : /*#__PURE__*/React.createElement(TwoArrowsLeft, props);\n default:\n }\n };\n var getSideBarSection = function getSideBarSection() {\n var sideBarSection = [/*#__PURE__*/React.createElement(Styled.SideArrows, {\n key: \"arrows\",\n sideBarType: sideBarType\n }, getSideBarArrows({\n size: getSideBarIconSize(size)\n }))];\n var divider = /*#__PURE__*/React.createElement(Styled.Divider, {\n key: \"divider\",\n size: size,\n sideBarType: sideBarType\n });\n if (sideBarType === SideBar.Right) {\n sideBarSection.unshift(divider);\n } else {\n sideBarSection.push(divider);\n }\n return buttonType === ButtonType.Sidebar && sideBarSection;\n };\n return /*#__PURE__*/React.createElement(Styled.Button, _extends({\n type: \"button\",\n buttonType: buttonType\n }, rest, {\n disabled: loading || disabled,\n sideBarType: sideBarType,\n color: color,\n active: active,\n size: size,\n ref: ref\n }), sideBarType === SideBar.Left && getSideBarSection(), /*#__PURE__*/React.createElement(Styled.Wrapper, null, startIcon && /*#__PURE__*/React.createElement(Styled.StartIcon, {\n $loading: loading,\n size: size\n }, typeof startIcon === 'function' ? loading ? /*#__PURE__*/React.createElement(SpinnerIcon, {\n size: getIconSize(size)\n }) : startIcon({\n size: getIconSize(size)\n }) :\n // eslint-disable-next-line unicorn/no-nested-ternary\n loading ? /*#__PURE__*/React.createElement(SpinnerIcon, {\n size: getIconSize(size)\n }) : startIcon), loading && !startIcon && /*#__PURE__*/React.createElement(Styled.StartIcon, {\n $loading: loading\n }, /*#__PURE__*/React.createElement(SpinnerIcon, {\n size: getIconSize(size)\n })), /*#__PURE__*/React.createElement(Styled.Label, null, children), endIcon && /*#__PURE__*/React.createElement(Styled.EndIcon, null, typeof endIcon === 'function' ? endIcon({\n size: getIconSize(size)\n }) : endIcon)), sideBarType === SideBar.Right && getSideBarSection(), badge && /*#__PURE__*/React.createElement(Styled.Badge, null, /*#__PURE__*/React.createElement(Badge, {\n inline: true,\n size: 14,\n padding: \"0 1px\",\n badgeContent: badge,\n color: color === ButtonColor.Primary ? 'white' : 'secondary'\n })));\n});\nButton.defaultProps = {\n size: ButtonSize.Md,\n color: ButtonColor.Secondary,\n buttonType: ButtonType.Default,\n active: false\n};\nButton.propTypes = {\n size: PT.oneOf(objectValues(ButtonSize)),\n color: PT.oneOf(objectValues(ButtonColor)),\n buttonType: PT.oneOf(objectValues(ButtonType)),\n sideBarType: PT.oneOf(objectValues(SideBar)),\n startIcon: PT.oneOfType([PT.node, PT.func]),\n endIcon: PT.oneOfType([PT.node, PT.func]),\n badge: PT.node,\n active: PT.bool,\n loading: PT.bool,\n disabled: PT.bool\n};\nexport default Button;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Image2 = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 42 42\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.483002 4.49014V37.5097C0.483002 38.5725 0.90519 39.5917 1.65669 40.3432C2.40819 41.0947 3.42745 41.5169 4.49023 41.5169H37.5098C38.5726 41.5169 39.5918 41.0947 40.3433 40.3432C41.0948 39.5917 41.517 38.5725 41.517 37.5097V4.49014C41.517 3.42735 41.0948 2.4081 40.3433 1.6566C39.5918 0.905099 38.5726 0.48291 37.5098 0.48291H4.49023C3.42745 0.48291 2.40819 0.905099 1.65669 1.6566C0.90519 2.4081 0.483002 3.42735 0.483002 4.49014ZM38.9272 5.87776V31.3044L26.3817 19.5446L21.8068 22.3356L14.8048 15.3337L3.07279 23.0543V6.06233C3.07279 5.2695 3.38775 4.50913 3.94836 3.94851C4.50898 3.38789 5.26935 3.07294 6.06218 3.07294H36.1222C36.8661 3.07294 37.5795 3.36844 38.1055 3.89444C38.6316 4.42044 38.9272 5.13385 38.9272 5.87776Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.4602 15.6943C33.066 15.6943 35.1784 13.5819 35.1784 10.976C35.1784 8.37021 33.066 6.25777 30.4602 6.25777C27.8543 6.25777 25.7419 8.37021 25.7419 10.976C25.7419 13.5819 27.8543 15.6943 30.4602 15.6943Z\",\n fill: color\n }));\n});\nexport default Image2;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Undo = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 40 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5112 31.2036C39.5112 41.568 31.0785 50 20.7148 50H14.0613C12.9587 50 12.0652 49.1066 12.0652 48.004V47.3386C12.0652 46.2359 12.9586 45.3425 14.0613 45.3425H20.7148C28.5107 45.3425 34.8537 38.9995 34.8537 31.2036C34.8537 23.4078 28.5107 17.0648 20.7148 17.0648H8.4394L16.8935 25.5189C17.8015 26.4266 17.8015 27.9042 16.8935 28.8119C16.0124 29.6923 14.479 29.691 13.5999 28.8119L1.17111 16.3828C0.731285 15.943 0.488892 15.3581 0.488892 14.7359C0.488892 14.1142 0.731285 13.529 1.17111 13.0894L13.6006 0.65976C14.4797 -0.220001 16.0144 -0.220001 16.8936 0.65976C17.8016 1.56722 17.8016 3.04511 16.8936 3.95246L8.43951 12.4072H20.7148C31.0785 12.4072 39.5112 20.8395 39.5112 31.2036Z\",\n fill: color\n }));\n});\nexport default Undo;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Redo = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 40 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.98 31.2037C0.98 41.568 9.41216 50 19.7752 50H26.4284C27.5309 50 28.4244 49.1066 28.4244 48.004V47.3386C28.4244 46.2359 27.531 45.3425 26.4284 45.3425H19.7752C11.9798 45.3425 5.6372 38.9995 5.6372 31.2037C5.6372 23.4079 11.9798 17.0648 19.7752 17.0648H32.05L23.5964 25.5189C22.6884 26.4266 22.6884 27.9043 23.5964 28.812C24.4774 29.6924 26.0107 29.6911 26.8897 28.812L39.3178 16.3828C39.7576 15.943 40 15.3582 40 14.736C40 14.1142 39.7576 13.5291 39.3178 13.0895L26.8891 0.659821C26.01 -0.21994 24.4754 -0.21994 23.5962 0.659821C22.6883 1.56728 22.6883 3.04517 23.5962 3.95252L32.0498 12.4073H19.7752C9.41216 12.4073 0.98 20.8396 0.98 31.2037Z\",\n fill: color\n }));\n});\nexport default Redo;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Line = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.1901 7.27549L7.59689 39.8687C6.83412 40.6315 6.83412 41.8681 7.59689 42.6308C8.35965 43.3936 9.59626 43.3936 10.359 42.6308L42.9522 10.0376C43.715 9.27486 43.715 8.03825 42.9522 7.27549C42.1895 6.51272 40.9529 6.51272 40.1901 7.27549Z\",\n fill: color\n }));\n});\nexport default Line;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ImageFilters = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.2229 16.7653C41.3215 12.426 39.7436 8.284 36.6864 5.02956C33.6292 1.77513 29.4872 -2.09808e-05 25.0493 -2.09808e-05C20.6114 -2.09808e-05 16.3708 1.77513 13.3136 5.02956C10.2564 8.18538 8.6785 12.3274 8.77712 16.7653C3.45168 19.5266 0 25.1479 0 31.1637C0 37.2781 3.25444 42.6035 8.57988 45.4635C11.0454 46.7455 13.7081 47.4359 16.2722 47.4359C19.3294 47.4359 22.288 46.5483 24.9507 44.8718C29.9803 48.1262 36.0947 48.3234 41.4201 45.4635C46.7456 42.6035 50 37.2781 50 31.1637C50 25.0493 46.6469 19.5266 41.2229 16.7653ZM22.7811 43.0966C18.6391 45.3649 13.7081 45.3649 9.56607 42.998C5.22682 40.5325 2.66272 36.1933 2.66272 31.1637C2.66272 26.43 5.12821 22.0907 9.1716 19.6252C10.1578 24.359 13.3136 28.501 17.6529 30.6706C17.4556 35.4043 19.3294 39.8422 22.7811 43.0966ZM32.1499 27.8106C31.4596 24.5562 29.783 21.499 27.3176 19.2307C30.6706 17.357 34.8126 17.0611 38.4615 18.3432C37.7712 22.2879 35.503 25.7396 32.1499 27.8106ZM20.6114 28.1065C21.3018 25.2465 22.8797 22.6824 25.0493 20.8087C27.5148 22.8797 29.1913 25.8382 29.6844 28.9941C26.7258 30.0789 23.4714 30.0789 20.4142 28.9941C20.4142 28.6982 20.5128 28.4023 20.6114 28.1065ZM25.0493 17.4556C23.57 16.4694 21.8935 15.7791 20.1183 15.3846C19.428 15.1874 18.6391 15.6805 18.5404 16.3708C18.4418 16.7653 18.5404 17.0611 18.7377 17.357C18.9349 17.6528 19.2308 17.8501 19.5266 17.9487C20.7101 18.2446 21.7949 18.639 22.7811 19.2307C20.3156 21.499 18.6391 24.4576 17.9487 27.8106C14.5957 25.7396 12.2288 22.2879 11.6371 18.3432C11.9329 18.2446 12.1302 18.1459 12.426 18.0473C12.7219 17.9487 13.0178 17.7515 13.215 17.357C13.4122 17.0611 13.4122 16.6666 13.3136 16.3708C13.1164 15.6805 12.3274 15.286 11.6371 15.4832C11.5385 15.4832 11.5385 15.4832 11.4398 15.5818C11.8343 8.48124 17.7515 2.6627 25.0493 2.6627C32.3471 2.6627 38.2643 8.38262 38.6588 15.5818C34.0237 14.2012 28.9941 14.8915 25.0493 17.4556ZM29.783 31.7554C29.5858 35.5029 27.9093 39.0532 25.0493 41.5187C22.1893 39.0532 20.4142 35.6016 20.3156 31.7554C23.3728 32.7416 26.7258 32.7416 29.783 31.7554ZM32.4458 30.6706C36.785 28.4023 39.8422 24.359 40.927 19.6252C44.9704 22.0907 47.4359 26.43 47.4359 31.1637C47.4359 36.0947 44.8718 40.5325 40.5325 42.998C36.3905 45.3649 31.4596 45.3649 27.3176 43.0966C30.7692 39.8422 32.643 35.4043 32.4458 30.6706Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5819 14.8915C14.9901 14.9901 14.497 15.5818 14.497 16.1735C14.497 16.8639 15.0888 17.5542 15.8777 17.5542C16.6667 17.5542 17.2584 16.9625 17.2584 16.1735C17.2584 15.7791 17.0611 15.3846 16.7653 15.1874C16.3708 14.9901 15.9763 14.8915 15.5819 14.8915Z\",\n fill: color\n }));\n});\nexport default ImageFilters;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Crop = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5 2.00049C3.34315 2.00049 2 3.34364 2 5.00049V16.7505H5.5V5.50049H16.75V2.00049H5ZM45 2.00049H33.25V5.50049H44.5V16.7505H48V5.00049C48 3.34363 46.6569 2.00049 45 2.00049ZM5.5 33.2505H2V45.0005C2 46.6573 3.34315 48.0005 5 48.0005H16.75V44.5005H5.5V33.2505ZM48 33.2505H44.5V44.5005H33.25V48.0005H45C46.6569 48.0005 48 46.6573 48 45.0005V33.2505Z\",\n fill: color\n }));\n});\nexport default Crop;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CropLandscape = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 53 37\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.11841 3.93799V32.063H47.8684V3.93799H4.11841ZM3.49341 0.812988C2.1127 0.812988 0.993408 1.91229 0.993408 3.26835V32.7326C0.993408 34.0887 2.1127 35.188 3.49341 35.188H48.4934C49.8741 35.188 50.9934 34.0887 50.9934 32.7326V3.26835C50.9934 1.91229 49.8741 0.812988 48.4934 0.812988H3.49341Z\",\n fill: color\n }));\n});\nexport default CropLandscape;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Resize = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 0.5H3V2.375H2.375V3H0.5V0.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 21.125H3V21.2693H24.7308V43H24.875V45.5L0.5 45.5001V21.125ZM22.2308 43L3 43.0001V23.7693H22.2308V43Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 45.5H45.5V43H43.625V43.625H43V45.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 3V0.5H43V2.375H43.625V3H45.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.125 0.5V3H9.875V0.5H6.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.625 0.5V3H17.375V0.5H13.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.125 0.5V3H24.875V0.5H21.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.625 0.5V3H32.375V0.5H28.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.125 0.5V3H39.875V0.5H36.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 6.125H43V9.875H45.5V6.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 13.625H43V17.375H45.5V13.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 21.125H43V24.875H45.5V21.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 28.625H43V32.375H45.5V28.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 36.125H43V39.875H45.5V36.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.875 45.5V43H36.125V45.5H39.875Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.375 45.5V43H28.625V45.5H32.375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 17.375H3V13.625H0.5V17.375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 9.875H3V6.125H0.5V9.875Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1391 9.23718L26.3209 17.8619C25.8274 18.3446 25.8186 19.136 26.3013 19.6295C26.784 20.1231 27.5754 20.1319 28.069 19.6492L37.1012 10.815V16.9907C37.1012 17.681 37.6609 18.2407 38.3512 18.2407C39.0416 18.2407 39.6012 17.681 39.6012 16.9907V7.98718C39.6012 7.29683 39.0416 6.73718 38.3512 6.73718L29.3477 6.73718C28.6574 6.73718 28.0977 7.29683 28.0977 7.98718C28.0977 8.67754 28.6574 9.23718 29.3477 9.23718L35.1391 9.23718Z\",\n fill: color\n }));\n});\nexport default Resize;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Watermark = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.1323 0.500031H2.73399C1.42693 0.500031 0.399963 1.527 0.399963 2.83406V43.166C0.399963 44.4731 1.42693 45.5 2.73399 45.5H42.1323C43.4394 45.5 44.4664 44.4731 44.4664 43.166V2.83406C44.4664 1.527 43.4394 0.500031 42.1323 0.500031ZM41.6655 3.30086V25.8942L36.624 21.693C36.1572 21.2262 35.4103 21.2262 34.8502 21.5996L28.595 26.2677L15.5244 11.2365C15.3377 10.9565 14.9643 10.7697 14.5908 10.7697C14.2174 10.7697 13.8439 10.9565 13.5639 11.1432L3.20079 21.693V3.30086H41.6655ZM3.20079 42.6992V39.8984C4.22776 40.3652 5.72154 40.832 7.58876 40.832C9.36262 40.832 10.483 40.2718 11.3232 39.805C12.0701 39.4316 12.5369 39.1515 13.3771 39.2448C14.3108 39.3382 14.8709 39.5249 15.4311 39.805C16.2713 40.0851 17.2049 40.4585 18.9788 40.4585V38.3112C17.6717 38.3112 17.0182 38.0312 16.178 37.7511C15.5244 37.471 14.6842 37.1909 13.5639 37.0975C12.0701 36.9108 11.1365 37.471 10.2962 37.8444C9.54934 38.2179 8.80245 38.5913 7.4954 38.5913C5.06801 38.5913 3.6676 37.7511 3.10743 37.2843V35.0436C4.1344 35.5104 5.62818 35.9772 7.4954 35.9772C9.26926 35.9772 10.3896 35.417 11.2298 34.9502C11.9767 34.5768 12.4435 34.2967 13.2838 34.3901C14.2174 34.4834 14.7776 34.6702 15.3377 34.9502C16.178 35.2303 17.1116 35.6038 18.8854 35.6038V33.4565C17.5784 33.4565 16.9249 33.1764 16.0846 32.8963C15.4311 32.6162 14.5908 32.3361 13.4705 32.2428C11.9767 32.056 11.0431 32.6162 10.2029 32.9897C9.45598 33.3631 8.70909 33.7365 7.40204 33.7365C4.97465 33.7365 3.57424 32.8963 3.01407 32.4295V30.1888C4.04104 30.6556 5.53482 31.1224 7.40204 31.1224C9.1759 31.1224 10.2962 30.5623 11.1365 30.0955C11.8834 29.722 12.3502 29.4419 13.1904 29.5353C14.124 29.6287 14.6842 29.8154 15.2444 30.0955C16.0846 30.3755 17.0182 30.749 18.7921 30.749V28.6017C17.485 28.6017 16.8315 28.3216 15.9912 28.0415C15.3377 27.7614 14.4975 27.4814 13.3771 27.388C11.8834 27.2013 10.9498 27.7614 10.1095 28.1349C9.36262 28.5083 8.61573 28.8818 7.30868 28.8818C4.88129 28.8818 3.48088 28.0415 2.92071 27.5747V25.7075L14.124 14.2241L27.1012 29.0685C27.568 29.6287 28.4083 29.722 28.9684 29.2552L35.4103 24.4004L41.3854 29.4419V42.6058H3.20079V42.6992Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.7029 15.7179C35.4103 15.7179 37.651 13.4772 37.651 10.7697C37.651 8.06227 35.4103 5.82161 32.7029 5.82161C29.9954 5.82161 27.7547 8.06227 27.7547 10.7697C27.7547 13.4772 29.9954 15.7179 32.7029 15.7179ZM32.7029 8.15563C34.1966 8.15563 35.317 9.36933 35.317 10.7697C35.317 12.1702 34.1033 13.3838 32.7029 13.3838C31.3025 13.3838 30.0888 12.1702 30.0888 10.7697C30.0888 9.36933 31.2091 8.15563 32.7029 8.15563Z\",\n fill: color\n }));\n});\nexport default Watermark;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Images = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.4164 5.98527H1.06762C0.533808 5.98527 0 6.53674 0 7.08821V49C0 49.7353 0.533808 50.1029 1.06762 50.1029H43.4164C44.1281 50.1029 44.484 49.7353 44.484 49V7.08821C44.484 6.53674 44.1281 5.98527 43.4164 5.98527ZM35.7651 13.1544C37.9004 13.1544 39.5 15.0809 39.5 17.1029C39.5 19.3088 37.7224 20.6029 35.7651 20.6029C33.8078 20.6029 32 19.125 32 17.1029C31.8221 14.897 33.6299 13.1544 35.7651 13.1544ZM1.9573 45.875C2.13523 45.6912 14.2349 30.9853 16.548 27.8603C16.726 27.4926 17.2598 27.4926 17.4377 27.8603L29.7153 43.4853L35.0534 37.4191C35.4093 37.0514 35.7651 37.2353 35.9431 37.4191L42.5267 45.875H1.9573Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.9164 -3.8147e-06H6.74555C6.03381 -3.8147e-06 5.5 0.367643 5.5 1.10294V4.29294H7.5V2.20588H47.6892V39H46.2473V44.1176H48.9164C49.6281 44.1176 49.984 43.75 49.984 43.0147V1.10294C49.984 0.367643 49.6281 -3.8147e-06 48.9164 -3.8147e-06Z\",\n fill: color\n }));\n});\nexport default Images;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Reset = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 0C38.8071 0 50 11.1929 50 25C50 38.807 38.8071 50 25 50C14.111 50 4.854 43.0397 1.42326 33.333C0.963005 32.0312 1.6455 30.603 2.94725 30.143C4.249 29.6828 5.67725 30.365 6.1375 31.667C8.88425 39.4382 16.2957 45 25 45C36.0457 45 45 36.0457 45 25C45 13.9543 36.0457 5 25 5C21.121 5 17.8345 6.40292 14.7095 8.6015C12.6078 10.0803 10.663 11.8526 8.6895 13.75H16.25C17.6308 13.75 18.75 14.8693 18.75 16.25C18.75 17.6307 17.6308 18.75 16.25 18.75H2.5C1.11926 18.75 0 17.6307 0 16.25V2.5C0 1.1193 1.11926 0 2.5 0C3.88075 0 5 1.1193 5 2.5V10.3593C7.12075 8.31457 9.38601 6.23342 11.8325 4.51222C15.5128 1.9229 19.7882 0 25 0Z\",\n fill: color\n }));\n});\nexport default Reset;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Text = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.4229 8.89453L39.7891 16.6582H38.8613C38.6823 15.291 38.4382 14.3145 38.1289 13.7285C37.6243 12.7845 36.9489 12.0928 36.1025 11.6533C35.2725 11.1976 34.1738 10.9697 32.8066 10.9697H28.1436V36.2627C28.1436 38.2972 28.3633 39.5667 28.8027 40.0713C29.4212 40.7549 30.3734 41.0967 31.6592 41.0967H32.8066V42H18.7686V41.0967H19.9404C21.3402 41.0967 22.333 40.6735 22.9189 39.8271C23.277 39.3063 23.4561 38.1182 23.4561 36.2627V10.9697H19.4766C17.9303 10.9697 16.8317 11.0837 16.1807 11.3115C15.3343 11.6208 14.61 12.2148 14.0078 13.0938C13.4056 13.9727 13.0475 15.1608 12.9336 16.6582H12.0059L12.3965 8.89453H39.4229Z\",\n fill: color\n }));\n});\nexport default Text;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TextAlignLeft = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 45 29\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 1.89502C0 1.20466 0.559644 0.64502 1.25 0.64502H28.75C29.4404 0.64502 30 1.20466 30 1.89502C30 2.58538 29.4404 3.14502 28.75 3.14502H1.25C0.559645 3.14502 0 2.58538 0 1.89502Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 14.395C0 13.7047 0.559644 13.145 1.25 13.145H43.75C44.4404 13.145 45 13.7047 45 14.395C45 15.0854 44.4404 15.645 43.75 15.645H1.25C0.559645 15.645 0 15.0854 0 14.395Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.25 25.645C0.559644 25.645 0 26.2047 0 26.895C0 27.5854 0.559645 28.145 1.25 28.145H28.75C29.4404 28.145 30 27.5854 30 26.895C30 26.2047 29.4404 25.645 28.75 25.645H1.25Z\",\n fill: color\n }));\n});\nexport default TextAlignLeft;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TextAlignCenter = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 1.50049C38 0.810132 37.4404 0.250488 36.75 0.250488H9.25C8.55964 0.250488 8 0.810132 8 1.50049C8 2.19084 8.55964 2.75049 9.25 2.75049H36.75C37.4404 2.75049 38 2.19084 38 1.50049Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 14.0005C45.5 13.3101 44.9404 12.7505 44.25 12.7505H1.75C1.05964 12.7505 0.5 13.3101 0.5 14.0005C0.5 14.6908 1.05964 15.2505 1.75 15.2505H44.25C44.9404 15.2505 45.5 14.6908 45.5 14.0005Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.75 25.2505C37.4404 25.2505 38 25.8101 38 26.5005C38 27.1908 37.4404 27.7505 36.75 27.7505H9.25C8.55964 27.7505 8 27.1908 8 26.5005C8 25.8101 8.55964 25.2505 9.25 25.2505H36.75Z\",\n fill: color\n }));\n});\nexport default TextAlignCenter;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var RotationLeft = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 45 43\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.66027 14.6997L3.59752 14.4437L3.09232 3.93218C3.05918 3.24262 2.47331 2.71049 1.78375 2.74363C1.09419 2.77677 0.562061 3.36263 0.595202 4.05219L1.16041 15.8123C1.19355 16.5018 1.77942 17.034 2.46898 17.0008L14.2291 16.4356C14.9186 16.4025 15.4508 15.8166 15.4176 15.1271C15.3845 14.4375 14.7986 13.9054 14.1091 13.9385L5.48447 14.353C8.23224 7.41077 15.0052 2.50049 22.925 2.50049C33.2802 2.50049 41.6748 10.8951 41.6748 21.2503C41.6748 22.4035 41.5706 23.5324 41.3713 24.6281L43.7968 25.261C44.0449 23.9622 44.1748 22.6214 44.1748 21.2503C44.1748 9.51435 34.6609 0.000488281 22.925 0.000488281C15.0467 0.000488281 8.16974 4.28779 4.50001 10.6566L2.66027 14.6997Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.88491 34.708L8.27773 36.6309C8.82614 37.1539 9.40248 37.6479 10.0043 38.1103L11.5276 36.128C10.9528 35.6863 10.4043 35.2121 9.88491 34.708Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3142 39.6567C13.9038 40.5764 15.6235 41.2961 17.439 41.7814L18.0846 39.3662C16.4846 38.9385 14.9685 38.3041 13.5662 37.4928L12.3142 39.6567Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1654 42.3209C21.0738 42.4394 22.0002 42.5005 22.9408 42.5005C23.8815 42.5005 24.8079 42.4394 25.7162 42.3209L25.3929 39.8419C24.5915 39.9465 23.7731 40.0005 22.9408 40.0005C22.1086 40.0005 21.2902 39.9465 20.4888 39.8419L20.1654 42.3209Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.4427 41.7814C30.2582 41.2961 31.9779 40.5764 33.5674 39.6567L32.3154 37.4928C30.9132 38.3041 29.397 38.9385 27.7971 39.3662L28.4427 41.7814Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.8774 38.1103C37.3494 36.9791 38.6692 35.6594 39.8004 34.1873L37.8181 32.664C36.8193 33.9638 35.6538 35.1292 34.354 36.128L35.8774 38.1103Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.3468 31.8773C42.2665 30.2878 42.9862 28.5681 43.4715 26.7526L41.0563 26.107C40.6286 27.707 39.9942 29.2231 39.1829 30.6253L41.3468 31.8773Z\",\n fill: color\n }));\n});\nexport default RotationLeft;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var RotationRight = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2753 26.8064H24.4689L36.5656 14.7096C32.735 11.0806 28.7027 9.66933 23.6624 9.66933C13.3802 9.66933 6.32372 15.3145 3.50118 25.5967L0.275391 24.7903C3.50118 13.0968 11.9689 6.44355 23.6625 6.44355C29.7109 6.44355 34.348 8.25806 38.9851 12.2903L50.2754 1L50.2753 26.8064Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.5495 46.3628L33.1382 44.3467C33.743 43.9435 34.3479 43.3386 34.9527 42.9355L36.5656 44.75C35.9608 45.1532 35.3559 45.758 34.5495 46.3628Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.2913 49.387C26.6865 49.5886 26.0817 49.5886 25.4768 49.7903L25.0736 47.3709C26.4848 47.1693 27.8962 46.7661 29.3074 46.3628L30.1139 48.5806C29.1058 48.9838 28.2994 49.1854 27.2913 49.387ZM20.4365 49.9919C18.8235 49.7903 17.2107 49.5886 15.5978 48.9838L16.4042 46.766C17.8155 47.1693 19.2268 47.5724 20.6381 47.5724L20.4365 49.9919ZM11.1623 46.9677C9.75104 46.1612 8.33971 45.1532 7.13003 43.9435L8.74296 42.129C9.75104 43.137 10.9607 43.9435 12.372 44.7499L11.1623 46.9677ZM3.90425 40.3144C2.89617 38.9032 2.08974 37.2903 1.6865 35.879L3.90425 35.0726C4.50909 36.4838 5.11393 37.6935 5.92036 38.9032L3.90425 40.3144Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.2996 30.0322L0.880241 30.2338C0.678647 29.2257 0.678647 28.4193 0.678647 27.4112H3.09801C3.09801 28.4193 3.2996 29.2258 3.2996 30.0322Z\",\n fill: color\n })), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"rect\", {\n width: \"50\",\n height: \"50\",\n fill: \"white\",\n transform: \"translate(0.275391)\"\n })));\n});\nexport default RotationRight;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var LockOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 51 51\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.5 20H38V12.5C38 5.6 32.4 0 25.5 0C18.6 0 13 5.6 13 12.5V20H10.5C9.1 20 8 21.1 8 22.5V47.5C8 48.9 9.1 50 10.5 50H40.5C41.9 50 43 48.9 43 47.5V22.5C43 21.1 41.9 20 40.5 20ZM15.5 12.5C15.5 7 20 2.5 25.5 2.5C31 2.5 35.5 7 35.5 12.5V20H15.5V12.5ZM40.5 47.5H10.5V22.5H40.5V47.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.3 37.3V41.3H26.8V37.3C28.3 36.8 29.3 35.4 29.3 33.8C29.3 31.7 27.6 30 25.5 30C23.4 30 21.7 31.7 21.7 33.8C21.8 35.4 22.8 36.8 24.3 37.3ZM25.5 32.5C26.2 32.5 26.8 33.1 26.8 33.8C26.8 34.5 26.2 35.1 25.5 35.1C24.8 35.1 24.2 34.5 24.2 33.8C24.3 33.1 24.8 32.5 25.5 32.5Z\",\n fill: color\n }));\n});\nexport default LockOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var UnlockOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.2754 7.5C34.2754 3.1 29.8754 0 24.7754 0C17.8754 0 12.2754 5.6 12.2754 12.5V20H9.77539C8.37539 20 7.27539 21.1 7.27539 22.5V47.5C7.27539 48.9 8.37539 50 9.77539 50H39.7754C41.1754 50 42.2754 48.9 42.2754 47.5V22.5C42.2754 21.1 41.1754 20 39.7754 20H14.7754V12.5C14.7754 7 19.2754 2.5 24.7754 2.5C28.4754 2.5 31.7754 4.5 33.4754 7.6L36.2754 7.5ZM39.7754 47.5H9.77539V22.5H39.7754V47.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.7754 30C22.6754 30 20.9754 31.7 20.9754 33.7C20.9754 35.3 21.9754 36.7 23.4754 37.2V41.2H25.9754V37.2C27.4754 36.7 28.4754 35.3 28.4754 33.7C28.5754 31.7 26.8754 30 24.7754 30ZM24.7754 35C24.0754 35 23.4754 34.4 23.4754 33.7C23.4754 33 24.0754 32.4 24.7754 32.4C25.4754 32.4 25.9754 33 25.9754 33.7C25.9754 34.4 25.4754 35 24.7754 35Z\",\n fill: color\n }));\n});\nexport default UnlockOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Point = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"25\",\n cy: \"25\",\n r: \"8.33333\",\n fill: color\n }));\n});\nexport default Point;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var About = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.6793 7.32203C32.916 -2.44013 17.0863 -2.44122 7.32197 7.32203C-2.44128 17.0853 -2.4402 32.915 7.32197 42.6793C17.0852 52.4404 32.9149 52.4415 42.6793 42.6793C52.4414 32.915 52.4403 17.0864 42.6793 7.32203ZM28.2605 35.8705C28.2605 37.6716 26.8007 39.1314 24.9995 39.1314C23.1984 39.1314 21.7386 37.6716 21.7386 35.8705V22.8267C21.7386 21.0256 23.1984 19.5658 24.9995 19.5658C26.8007 19.5658 28.2605 21.0256 28.2605 22.8267V35.8705ZM24.9419 17.2527C23.0636 17.2527 21.8114 15.9222 21.8506 14.2798C21.8114 12.558 23.0636 11.2678 24.98 11.2678C26.8974 11.2678 28.1105 12.5591 28.1507 14.2798C28.1496 15.9222 26.8985 17.2527 24.9419 17.2527Z\",\n fill: color\n }));\n});\nexport default About;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Warning = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.9856 38.314L31.3034 3.80423C29.9688 1.42247 27.6118 0 24.9985 0C22.3852 0 20.0282 1.42247 18.6936 3.80423C18.6836 3.82245 18.6751 3.84067 18.665 3.8589L1.04158 38.2594C-0.321602 40.6914 -0.347383 43.612 0.971367 46.0713C2.29314 48.5321 4.67439 50 7.345 50H42.5544C45.225 50 47.7041 48.5321 49.0258 46.0713C50.3445 43.6121 50.3188 40.6913 48.9856 38.314ZM22.0659 15.8013C22.0659 14.0842 23.3789 12.6924 24.9985 12.6924C26.6182 12.6924 27.9311 14.0843 27.9311 15.8013V28.2372C27.9311 29.9541 26.6181 31.3462 24.9985 31.3462C23.3789 31.3462 22.0659 29.954 22.0659 28.2372V15.8013ZM24.9985 43.7821C22.5728 43.7821 20.5995 41.6902 20.5995 39.1186C20.5995 36.5471 22.5727 34.4552 24.9985 34.4552C27.4242 34.4552 29.3974 36.5471 29.3974 39.1186C29.3975 41.6901 27.4243 43.7821 24.9985 43.7821Z\",\n fill: color\n }));\n});\nexport default Warning;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var InfoOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 50C11.2033 50 0 38.7967 0 25C0 11.2033 11.2033 0 25 0C38.7967 0 50 11.2033 50 25C50 38.7967 38.6929 50 25 50ZM25 3.52697C13.1743 3.52697 3.63071 13.1743 3.63071 24.8963C3.63071 36.6183 13.278 46.2656 25 46.2656C36.8257 46.2656 46.3693 36.6183 46.3693 24.8963C46.3693 13.1743 36.8257 3.52697 25 3.52697Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.3755 13.125C28.3755 11.3992 26.9765 10 25.2505 10C23.5245 10 22.1255 11.3992 22.1255 13.125C22.1255 14.8516 23.5245 16.25 25.2505 16.25C26.9765 16.25 28.3755 14.8516 28.3755 13.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.563 38.5H29.938C30.8009 38.5 31.5005 37.8012 31.5005 36.9375C31.5005 36.0746 30.8009 35.375 29.938 35.375H28.3755V20.9375C28.3755 20.0746 27.6759 19.375 26.813 19.375H20.563C19.7001 19.375 19.0005 20.0746 19.0005 20.9375C19.0005 21.8012 19.7001 22.5 20.563 22.5H22.1255V35.375H20.563C19.7001 35.375 19.0005 36.0746 19.0005 36.9375C19.0005 37.8012 19.7001 38.5 20.563 38.5Z\",\n fill: color\n }));\n});\nexport default InfoOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ImageOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.3032 17.8662C34.0646 17.8662 36.3032 15.6276 36.3032 12.8662C36.3032 10.1048 34.0646 7.86618 31.3032 7.86618C28.5418 7.86618 26.3032 10.1048 26.3032 12.8662C26.3032 15.6276 28.5418 17.8662 31.3032 17.8662ZM31.3032 15.3662C32.6839 15.3662 33.8032 14.2469 33.8032 12.8662C33.8032 11.4855 32.6839 10.3662 31.3032 10.3662C29.9225 10.3662 28.8032 11.4855 28.8032 12.8662C28.8032 14.2469 29.9225 15.3662 31.3032 15.3662Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.9372 15.1063C16.3967 15.0794 16.8338 15.3071 17.075 15.6991L25.0831 28.7141L29.8357 24.4289C30.0935 24.1966 30.4362 24.0818 30.7819 24.1121C31.1276 24.1424 31.4452 24.3151 31.6586 24.5887L40.2822 35.6497C40.5759 36.0264 40.6292 36.5376 40.4196 36.9668C40.21 37.396 39.7741 37.6683 39.2964 37.6683H6.70331C6.2766 37.6683 5.87937 37.4506 5.64974 37.091C5.42011 36.7313 5.38981 36.2794 5.56937 35.8923L14.8765 15.8282C15.0702 15.4106 15.4777 15.1333 15.9372 15.1063ZM16.1652 18.991L8.66108 35.1683H36.7368L30.5126 27.1848L25.6422 31.5761C25.3666 31.8246 24.9947 31.9378 24.6274 31.885C24.26 31.8322 23.9351 31.6189 23.7406 31.3027L16.1652 18.991Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 3C0.5 1.61929 1.61929 0.5 3 0.5H43C44.3807 0.5 45.5 1.61929 45.5 3V43C45.5 44.3807 44.3807 45.5 43 45.5H3C1.61929 45.5 0.5 44.3807 0.5 43V3ZM3 3H43V43H3V3Z\",\n fill: color\n }));\n});\nexport default ImageOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Custom = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.562515 0.562512H3.68752V2.90626H2.90627V3.68751H0.562515V0.562512ZM0.562515 44.3125V47.4375H3.68752V45.0938H2.90627V44.3125H0.562515ZM44.3125 47.4375H47.4375V44.3125H45.0938V45.0938H44.3125V47.4375ZM47.4375 3.68751V0.562512H44.3125V2.90626H45.0938V3.68751H47.4375ZM7.59376 0.562512V3.68751H12.2813V0.562512H7.59376ZM16.9688 0.562512V3.68751H21.6563V0.562512H16.9688ZM26.3438 0.562512V3.68751H31.0313V0.562512H26.3438ZM35.7188 0.562512V3.68751H40.4063V0.562512H35.7188ZM47.4375 7.59376H44.3125V12.2813H47.4375V7.59376ZM47.4375 16.9688H44.3125V21.6563H47.4375V16.9688ZM47.4375 26.3438H44.3125V31.0313H47.4375V26.3438ZM47.4375 35.7188H44.3125V40.4063H47.4375V35.7188ZM40.4063 47.4375V44.3125H35.7188V47.4375H40.4063ZM31.0313 47.4375V44.3125H26.3438V47.4375H31.0313ZM21.6563 47.4375V44.3125H16.9688V47.4375H21.6563ZM12.2813 47.4375V44.3125H7.59377V47.4375H12.2813ZM0.562515 40.4063H3.68752V35.7188H0.562515V40.4063ZM0.562515 31.0313H3.68752V26.3438H0.562515V31.0313ZM0.562515 21.6563H3.68752V16.9688H0.562515V21.6563ZM0.562515 12.2813H3.68752V7.59376H0.562515V12.2813Z\",\n fill: color\n }));\n});\nexport default Custom;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FlipY = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.5001 24.0625C38.2086 24.0625 38.8284 23.5858 39.0102 22.901C39.1921 22.2162 38.8904 21.4948 38.2753 21.1433L3.27531 1.14333C2.79171 0.866989 2.19757 0.868973 1.71583 1.14854C1.23409 1.4281 0.937592 1.94298 0.937592 2.49996V22.5C0.937592 23.3629 1.63715 24.0625 2.50009 24.0625L37.5001 24.0625ZM4.06259 20.9375L4.06259 5.19243L31.6164 20.9375L4.06259 20.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2753 28.8566C38.8904 28.5051 39.1921 27.7837 39.0102 27.0989C38.8284 26.4142 38.2086 25.9375 37.5001 25.9375H35.3126V26.9504L34.5374 27.3933L35.3126 28.75V29.0625H35.4912L36.0878 30.1066L38.2753 28.8566Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.3378 35.1066L31.7128 32.6066L30.1624 29.8933L25.7874 32.3933L27.3378 35.1066Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.9376 25.9375H26.5626L26.5626 29.0625H30.9376L30.9376 25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5878 40.1066L22.9628 37.6066L21.4124 34.8933L17.0374 37.3933L18.5878 40.1066Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1876 25.9375H17.8126V29.0625H22.1876V25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.83781 45.1066L14.2128 42.6066L12.6624 39.8933L8.28738 42.3933L9.83781 45.1066Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4376 25.9375H9.0626V29.0625H13.4376V25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.27531 48.8566L5.46281 47.6066L4.06259 45.1562V45H3.97331L3.91238 44.8933L3.72578 45H0.937592V47.5C0.937592 48.0569 1.23409 48.5718 1.71583 48.8514C2.19758 49.1309 2.79171 49.1329 3.27531 48.8566Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.6876 25.9375L2.50009 25.9375C1.63715 25.9375 0.937592 26.637 0.937592 27.5V30H4.06259V29.0625H4.6876V25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.937592 35V40L4.06259 40V35H0.937592Z\",\n fill: color\n }));\n});\nexport default FlipY;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FlipX = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24.0625 1.93758C24.0625 1.22909 23.5858 0.609274 22.901 0.427427C22.2163 0.245581 21.4949 0.547225 21.1434 1.16237L1.14337 39.2874C0.867028 39.771 0.869012 40.3651 1.14858 40.8468C1.42814 41.3286 1.94302 41.6251 2.5 41.6251H22.5C23.3629 41.6251 24.0625 40.9255 24.0625 40.0626V1.93758ZM20.9375 38.5001H5.19247L20.9375 7.82128V38.5001Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.8566 1.16237C28.5051 0.547225 27.7837 0.245581 27.099 0.427428C26.4142 0.609274 25.9375 1.22909 25.9375 1.93758V4.12508H26.9504L27.3934 4.9003L28.75 4.12508H29.0625V3.94651L30.1066 3.34986L28.8566 1.16237Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1066 12.0999L32.6066 7.72486L29.8934 9.2753L32.3934 13.6503L35.1066 12.0999Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 8.50008V12.8751H29.0625V8.50008H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.1066 23.9749L37.6066 19.5999L34.8934 21.1503L37.3934 25.5253L40.1066 23.9749Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 20.3751V24.7501H29.0625V20.3751H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.1066 32.7249L42.6066 28.3499L39.8934 29.9003L42.3934 34.2753L45.1066 32.7249Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 29.1251V33.5001H29.0625V29.1251H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.8566 39.2874L47.6066 37.0999L45.1562 38.5001H45V38.5894L44.8934 38.6503L45 38.8369V41.6251H47.5C48.057 41.6251 48.5719 41.3286 48.8514 40.8468C49.131 40.3651 49.133 39.771 48.8566 39.2874Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 37.8751V40.0626C25.9375 40.9255 26.6371 41.6251 27.5 41.6251H30V38.5001H29.0625V37.8751H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35 41.6251H40V38.5001H35V41.6251Z\",\n fill: color\n }));\n});\nexport default FlipX;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Ellipse = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25.2047 46.875C37.2859 46.875 47.0797 37.0812 47.0797 25C47.0797 12.9188 37.2859 3.125 25.2047 3.125C13.1235 3.125 3.32968 12.9188 3.32968 25C3.32968 37.0812 13.1235 46.875 25.2047 46.875ZM25.2047 50C39.0118 50 50.2047 38.8071 50.2047 25C50.2047 11.1929 39.0118 0 25.2047 0C11.3976 0 0.204681 11.1929 0.204681 25C0.204681 38.8071 11.3976 50 25.2047 50Z\",\n fill: color\n }));\n});\nexport default Ellipse;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Landscape = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 51 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.11841 3.93805V32.063H47.8684V3.93805H4.11841ZM3.49341 0.813049C2.1127 0.813049 0.993408 1.91235 0.993408 3.26841V32.7327C0.993408 34.0887 2.1127 35.188 3.49341 35.188H48.4934C49.8741 35.188 50.9934 34.0887 50.9934 32.7327V3.26841C50.9934 1.91235 49.8741 0.813049 48.4934 0.813049H3.49341Z\",\n fill: color\n }));\n});\nexport default Landscape;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Stroke = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.50015 7.9997C5.50015 6.61898 6.61944 5.49969 8.00015 5.49969H38.0002C39.3809 5.49969 40.5002 6.61898 40.5002 7.99969V37.9997C40.5002 39.3804 39.3809 40.4997 38.0002 40.4997H8.00015C6.61944 40.4997 5.50015 39.3804 5.50015 37.9997V7.9997ZM8.00015 7.99969H38.0002V37.9997H8.00015V7.99969Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 3C0.5 1.61929 1.61929 0.5 3 0.5H43C44.3807 0.5 45.5 1.61929 45.5 3V43C45.5 44.3807 44.3807 45.5 43 45.5H3C1.61929 45.5 0.5 44.3807 0.5 43V3ZM3 3H43V43H3V3Z\",\n fill: color\n }));\n});\nexport default Stroke;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Transparency = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.166672 0.166664H8.50001V8.5H0.166672V0.166664Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.8333 8.5H8.50001V16.8333H0.166672V25.1667H8.50001V33.5H0.166672V41.8333H8.50001V33.5H16.8333V41.8333H25.1667V33.5H33.5V41.8333H41.8333V33.5H33.5V25.1667H41.8333V16.8333H33.5V8.5H41.8333V0.166664H33.5V8.5H25.1667V0.166664H16.8333V8.5ZM16.8333 16.8333V8.5H25.1667V16.8333H16.8333ZM16.8333 25.1667V33.5H25.1667V25.1667H33.5V16.8333H25.1667V25.1667H16.8333ZM16.8333 25.1667H8.50001V16.8333H16.8333V25.1667Z\",\n fill: color\n }));\n});\nexport default Transparency;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Shadow = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.95831 0.458374C1.5776 0.458374 0.458313 1.57766 0.458313 2.95837V35.4584C0.458313 36.8391 1.5776 37.9584 2.95831 37.9584H7.54167V43.7917C7.54167 45.8627 9.2206 47.5417 11.2917 47.5417H43.7917C45.8627 47.5417 47.5417 45.8627 47.5417 43.7917V11.2917C47.5417 9.22059 45.8627 7.54166 43.7917 7.54166H37.9583V2.95837C37.9583 1.57766 36.839 0.458374 35.4583 0.458374H2.95831ZM35.4583 2.95837H2.95831L2.95831 35.4584H35.4583V2.95837ZM15.7267 37.9584L10.0417 43.746V37.9584H15.7267ZM11.5135 45.0417L18.4712 37.9584H28.5529L21.4696 45.0417H11.5135ZM24.4159 45.0417H34.2932L45.0417 34.1339V24.0207L37.9583 31.3242V35.4584C37.9583 36.8391 36.839 37.9584 35.4583 37.9584H31.4912C31.4689 37.9859 31.445 38.0126 31.4194 38.0382L24.4159 45.0417ZM45.0417 21.3515L37.9583 28.655V18.9107L45.0417 11.8338V21.3515ZM37.0311 45.0417H43.7917C44.482 45.0417 45.0417 44.482 45.0417 43.7917V36.9124L37.0311 45.0417ZM43.8844 10.045C43.8538 10.0428 43.8229 10.0417 43.7917 10.0417H37.9583V15.9657L43.8844 10.045Z\",\n fill: color\n }));\n});\nexport default Shadow;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var RadiusCorner = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 3H23V0.5H3C1.61929 0.5 0.5 1.61929 0.5 3V43C0.5 44.3807 1.61929 45.5 3 45.5H43C44.3807 45.5 45.5 44.3807 45.5 43V23H43V43H3V3Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 7.25076H43V5.50076C43 5.15718 42.9321 4.83576 42.8113 4.54446L45.1206 3.58682C45.3651 4.17636 45.5 4.82281 45.5 5.50076V7.25076Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.75 0.500763V3.00076H28.25V0.500763H24.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.75 0.500763V3.00076H35.25V0.500763H31.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.75 0.500763V3.00076H40.5C40.8436 3.00076 41.165 3.06868 41.4563 3.18948L42.414 0.880166C41.8244 0.635694 41.178 0.500763 40.5 0.500763H38.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 10.7508H43V14.2508H45.5V10.7508Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 17.7508H43V21.2508H45.5V17.7508Z\",\n fill: color\n }));\n});\nexport default RadiusCorner;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Position = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 9.24878H11.7501V10.9675H10.9688V11.7488H9.25008V9.24878Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 34.2488V36.7488H11.7501V35.03H10.9688V34.2488H9.25008Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.2501 36.7488H36.7501V34.2488H35.0313V35.03H34.2501V36.7488Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 11.7488V9.24878H34.2501V10.9675H35.0313V11.7488H36.7501Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.4063 9.24878V11.7488H17.8438V9.24878H14.4063Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2813 9.24878V11.7488H24.7188V9.24878H21.2813Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.1563 9.24878V11.7488H31.5938V9.24878H28.1563Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 14.405H34.2501V17.8425H36.7501V14.405Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 21.28H34.2501V24.7175H36.7501V21.28Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 28.155H34.2501V31.5925H36.7501V28.155Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.5938 36.7488V34.2488H28.1563V36.7488H31.5938Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.7188 36.7488V34.2488H21.2813V36.7488H24.7188Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8438 36.7488V34.2488H14.4063V36.7488H17.8438Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 31.5925H11.7501V28.155H9.25008V31.5925Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 24.7175H11.7501V21.28H9.25008V24.7175Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 17.8425H11.7501V14.405H9.25008V17.8425Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.0002 26.7497C25.0712 26.7497 26.7502 25.0708 26.7502 22.9997C26.7502 20.9286 25.0712 19.2497 23.0002 19.2497C20.9291 19.2497 19.2502 20.9286 19.2502 22.9997C19.2502 25.0708 20.9291 26.7497 23.0002 26.7497Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V43C0.5 44.3807 1.61929 45.5 3 45.5H43C44.3807 45.5 45.5 44.3807 45.5 43V3C45.5 1.61929 44.3807 0.5 43 0.5H3ZM43 3H3V43H43V3Z\",\n fill: color\n }));\n});\nexport default Position;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Spacing = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.29986 0.991788C4.78802 0.503633 5.57947 0.503633 6.06763 0.991788L9.367 4.29116C9.85516 4.77932 9.85516 5.57077 9.367 6.05893C8.87885 6.54708 8.08739 6.54708 7.59924 6.05893L6.43374 4.89344V34.0829L7.59924 32.9174C8.08739 32.4293 8.87885 32.4293 9.367 32.9174C9.85516 33.4056 9.85516 34.197 9.367 34.6852L6.06763 37.9846C5.8332 38.219 5.51524 38.3507 5.18371 38.3507C4.85217 38.3507 4.53422 38.219 4.29981 37.9845L1.00084 34.6851C0.512712 34.1969 0.512761 33.4055 1.00095 32.9174C1.48913 32.4292 2.28059 32.4293 2.76871 32.9175L3.93374 34.0827V4.89344L2.76825 6.05893C2.2801 6.54708 1.48864 6.54708 1.00049 6.05893C0.51233 5.57077 0.51233 4.77932 1.00049 4.29116L4.29986 0.991788ZM13.1588 8.34109V1.49725H46.3156V8.34102H43.398V7.19776C43.398 5.54595 42.0562 4.20442 40.4047 4.20442H31.8516V26.0992C31.8516 28.1387 33.5088 29.7957 35.5481 29.7957H36.5137V32.4599H23.01V29.7957H23.9756C26.0151 29.7957 27.6721 28.1387 27.6721 26.0992V4.20448H19.0697C17.418 4.20448 16.0763 5.54604 16.0763 7.19783V8.34109H13.1588ZM46.9995 39.7088C47.4877 39.2207 47.4877 38.4292 46.9995 37.9411L43.7001 34.6417C43.212 34.1535 42.4205 34.1535 41.9324 34.6417C41.4442 35.1298 41.4442 35.9213 41.9324 36.4095L43.0979 37.5749L15.0832 37.5749L16.2484 36.4099C16.7366 35.9218 16.7366 35.1303 16.2485 34.6421C15.7604 34.154 14.9689 34.1539 14.4807 34.642L11.1814 37.941C10.9469 38.1754 10.8152 38.4934 10.8152 38.8249C10.8152 39.1564 10.9469 39.4744 11.1813 39.7088L14.4807 43.0082C14.9688 43.4964 15.7603 43.4964 16.2485 43.0082C16.7366 42.5201 16.7366 41.7286 16.2485 41.2404L15.083 40.0749L43.0979 40.0749L41.9324 41.2404C41.4442 41.7286 41.4442 42.5201 41.9324 43.0082C42.4205 43.4964 43.212 43.4964 43.7001 43.0082L46.9995 39.7088Z\",\n fill: color\n }));\n});\nexport default Spacing;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Padding = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.8334 9.19949C13.8334 8.50914 14.3931 7.94949 15.0834 7.94949H31.3334C32.0238 7.94949 32.5834 8.50914 32.5834 9.19949C32.5834 9.88985 32.0238 10.4495 31.3334 10.4495H15.0834C14.3931 10.4495 13.8334 9.88985 13.8334 9.19949Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.0834 35.5496C14.3931 35.5496 13.8334 36.1092 13.8334 36.7996C13.8334 37.4899 14.3931 38.0496 15.0834 38.0496H31.3334C32.0238 38.0496 32.5834 37.4899 32.5834 36.7996C32.5834 36.1092 32.0238 35.5496 31.3334 35.5496H15.0834Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.8001 13.4163C37.4905 13.4163 38.0501 13.9759 38.0501 14.6663V30.9163C38.0501 31.6066 37.4905 32.1663 36.8001 32.1663C36.1098 32.1663 35.5501 31.6066 35.5501 30.9163V14.6663C35.5501 13.9759 36.1098 13.4163 36.8001 13.4163Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.45 14.6663C10.45 13.9759 9.89038 13.4163 9.20003 13.4163C8.50967 13.4163 7.95003 13.9759 7.95003 14.6663L7.95003 30.9163C7.95003 31.6066 8.50967 32.1663 9.20003 32.1663C9.89038 32.1663 10.45 31.6066 10.45 30.9163L10.45 14.6663Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V43C0.5 44.3807 1.61929 45.5 3 45.5H43C44.3807 45.5 45.5 44.3807 45.5 43V3C45.5 1.61929 44.3807 0.5 43 0.5H3ZM43 3H3V43H43V3Z\",\n fill: color\n }));\n});\nexport default Padding;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Polygon = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.103 18.4866L24.0002 3.8811L3.89749 18.4866L11.5761 42.1188H36.4244L44.103 18.4866ZM25.8371 1.35293C24.7418 0.557164 23.2587 0.557162 22.1634 1.35292L2.06066 15.9584C0.96539 16.7542 0.507082 18.1647 0.925439 19.4523L8.604 43.0845C9.02236 44.372 10.2222 45.2438 11.5761 45.2438H36.4244C37.7782 45.2438 38.9781 44.372 39.3965 43.0845L47.075 19.4523C47.4934 18.1647 47.0351 16.7542 45.9398 15.9584L25.8371 1.35293Z\",\n fill: color\n }));\n});\nexport default Polygon;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var PolygonSides = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.0078 29.9669H25.835L24.7803 35.9727H27.4609L28.5156 29.9669H32.2363V27.4473H28.9551L29.6875 23.2872H33.3496V20.7383H30.1416L31.2109 14.6446H28.5303L27.4609 20.7383H24.6191L25.6885 14.6446H23.0225L21.9531 20.7383H18.1006V23.2872H21.499L20.7666 27.4473H17.002V29.9669H20.3271L19.2725 35.9727H21.9531L23.0078 29.9669ZM26.2744 27.4473H23.4473L24.165 23.2872H27.0068L26.2744 27.4473Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.5448 0.821208C24.421 0.184598 25.6075 0.184597 26.4837 0.821207L48.4803 16.8026C49.3565 17.4392 49.7231 18.5677 49.3885 19.5977L40.9865 45.4562C40.6518 46.4862 39.692 47.1836 38.6089 47.1836H11.4197C10.3366 47.1836 9.37672 46.4862 9.04204 45.4562L0.640107 19.5977C0.305422 18.5677 0.672067 17.4392 1.54829 16.8026L23.5448 0.821208ZM25.0143 2.84375L47.0108 18.8252L38.6089 44.6836H11.4197L3.01775 18.8252L25.0143 2.84375Z\",\n fill: color\n }));\n});\nexport default PolygonSides;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowRight = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.5 15.0005C45.5 15.7079 45.2003 16.3822 44.6753 16.8562L30.8291 29.3562C29.8042 30.2814 28.2234 30.2006 27.2982 29.1758C26.373 28.1509 26.4537 26.57 27.4786 25.6448L36.5 17.5005L3 17.5005C1.61928 17.5005 0.499999 16.3812 0.499999 15.0005C0.499999 13.6198 1.61929 12.5005 3 12.5005L36.5 12.5005L27.4786 4.35618C26.4537 3.43096 26.373 1.85011 27.2982 0.82525C28.2234 -0.199608 29.8042 -0.280382 30.8291 0.644837L44.6753 13.1448C45.2003 13.6189 45.5 14.2931 45.5 15.0005Z\",\n fill: color\n }));\n});\nexport default ArrowRight;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FontItalic = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19 48L26.9931 2H31.2019L23.2087 48H19Z\",\n fill: color\n }));\n});\nexport default FontItalic;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FontBold = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 14 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.214966 17.4813V0.518677H6.61123C8.82693 0.518677 10.5075 0.914783 11.653 1.70699C12.7985 2.49144 13.3712 3.64481 13.3712 5.16709C13.3712 5.99814 13.1413 6.7321 12.6814 7.36898C12.2216 7.99809 11.5819 8.46021 10.7625 8.75535C11.699 8.97282 12.4348 9.41164 12.9699 10.0718C13.5133 10.732 13.7851 11.5397 13.7851 12.4951C13.7851 14.1261 13.2249 15.361 12.1045 16.1998C10.9841 17.0386 9.38713 17.4658 7.31357 17.4813H0.214966ZM3.97748 10.0951V14.6736H7.20069C8.08697 14.6736 8.77677 14.4795 9.27007 14.0911C9.77174 13.695 10.0226 13.1513 10.0226 12.4601C10.0226 10.9067 9.1572 10.1184 7.42644 10.0951H3.97748ZM3.97748 7.62528H6.76173C8.65971 7.59421 9.6087 6.89132 9.6087 5.5166C9.6087 4.74769 9.36623 4.19625 8.88128 3.86228C8.4047 3.52054 7.64801 3.34967 6.61123 3.34967H3.97748V7.62528Z\",\n fill: color\n }));\n});\nexport default FontBold;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var UploadOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5911 1.54582C16.7075 0.680052 15.2937 0.680014 14.4101 1.54573L4.05296 11.6925C3.15635 12.5709 3.14159 14.0098 4.01999 14.9064C4.89839 15.8031 6.33733 15.8178 7.23394 14.9394L13.7278 8.57741V30.4419C13.7278 31.6971 14.7454 32.7147 16.0006 32.7147C17.2558 32.7147 18.2733 31.6971 18.2733 30.4419V8.57782L24.766 14.9393C25.6625 15.8178 27.1015 15.8031 27.9799 14.9065C28.8584 14.01 28.8437 12.571 27.9471 11.6926L17.5911 1.54582Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.78827 36.5543C1.53308 36.5543 0.515541 37.5719 0.515541 38.827C0.515541 40.0822 1.53308 41.0998 2.78827 41.0998H29.1519C30.4071 41.0998 31.4246 40.0822 31.4246 38.827C31.4246 37.5719 30.4071 36.5543 29.1519 36.5543H2.78827Z\",\n fill: color\n }));\n});\nexport default UploadOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowLeftOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 28 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M26.907 0.71085C25.7493 -0.292553 23.9445 -0.224769 22.8758 0.862251L0.931376 23.1837C-0.0773525 24.2097 -0.0773525 25.7913 0.931376 26.8173L22.8758 49.1388C23.9445 50.2258 25.7493 50.2936 26.907 49.2902C28.0647 48.2868 28.1369 46.5921 27.0683 45.5051L6.90997 25.0005L27.0683 4.49589C28.1369 3.40888 28.0647 1.71425 26.907 0.71085Z\",\n fill: color\n }));\n});\nexport default ArrowLeftOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowRightOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 28 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.09286 0.71085C2.25057 -0.292553 4.05541 -0.224769 5.12407 0.862251L27.0685 23.1837C28.0772 24.2097 28.0772 25.7913 27.0685 26.8173L5.12407 49.1388C4.05541 50.2258 2.25057 50.2936 1.09286 49.2902C-0.0648579 48.2868 -0.137051 46.5921 0.93161 45.5051L21.0899 25.0005L0.93161 4.49589C-0.137051 3.40888 -0.0648579 1.71425 1.09286 0.71085Z\",\n fill: color\n }));\n});\nexport default ArrowRightOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var PlusOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 38 38\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9167 21.0838L16.9167 35.6672C16.9167 36.8177 17.8494 37.7505 19 37.7505C20.1506 37.7505 21.0833 36.8177 21.0833 35.6672L21.0833 21.0838H35.6667C36.8173 21.0838 37.75 20.1511 37.75 19.0005C37.75 17.8499 36.8173 16.9172 35.6667 16.9172L21.0833 16.9172L21.0833 2.33382C21.0833 1.18323 20.1506 0.250488 19 0.250488C17.8494 0.250488 16.9167 1.18323 16.9167 2.33382L16.9167 16.9172H2.33333C1.18274 16.9172 0.25 17.8499 0.25 19.0005C0.25 20.1511 1.18274 21.0838 2.33333 21.0838H16.9167Z\",\n fill: color\n }));\n});\nexport default PlusOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowTool = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.04757 38.9503C0.437373 38.3401 0.437373 37.3508 1.04757 36.7406L33.9229 3.86697L23.8354 3.33584C22.9736 3.29047 22.3118 2.5551 22.3572 1.69335C22.4026 0.831601 23.138 0.169794 23.9997 0.215167L37.5909 0.930759C38.3892 0.972794 39.027 1.61063 39.0691 2.40894L39.7846 16.0001C39.83 16.8619 39.1682 17.5972 38.3065 17.6426C37.4447 17.688 36.7093 17.0262 36.664 16.1644L36.1328 6.07651L3.25728 38.9503C2.64708 39.5605 1.65776 39.5605 1.04757 38.9503Z\",\n fill: color\n }));\n});\nexport default ArrowTool;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Compare = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.1607 4.16667V2.08333C27.1607 0.93274 26.2279 0 25.0773 0C23.9267 0 22.994 0.932741 22.994 2.08333V4.16667H4.244C1.94281 4.16667 0.0773315 6.03215 0.0773315 8.33333V41.6667C0.0773315 43.9679 1.94281 45.8333 4.244 45.8333H22.994V47.9167C22.994 49.0673 23.9267 50 25.0773 50C26.2279 50 27.1607 49.0673 27.1607 47.9167V45.8333H45.9107C48.2118 45.8333 50.0773 43.9678 50.0773 41.6667V8.33333C50.0773 6.03215 48.2119 4.16667 45.9107 4.16667H27.1607ZM22.994 8.33333H4.244L4.244 41.6667H22.994V8.33333ZM27.1607 41.6667V8.33333H45.9107V41.6667H27.1607Z\",\n fill: color\n }));\n});\nexport default Compare;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var MinusOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 38 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M35.835 5.0769L2.16498 5.0769C1.00277 5.0769 0.0606079 4.14726 0.0606079 3.00048C0.060608 1.85371 1.00277 0.924072 2.16498 0.924072L35.835 0.924074C36.9972 0.924074 37.9394 1.85372 37.9394 3.00049C37.9394 4.14726 36.9972 5.0769 35.835 5.0769Z\",\n fill: color\n }));\n});\nexport default MinusOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Temprature = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.48799 3.125H17.0311L17.0311 24.4063C17.0311 26.6148 18.1889 28.4084 19.5429 29.5401C21.7011 31.3438 23.0656 34.0456 23.0656 37.069C23.0656 42.4847 18.6753 46.875 13.2595 46.875C7.84382 46.875 3.45351 42.4847 3.45351 37.069C3.45351 34.0456 4.81799 31.3438 6.97617 29.5401C8.33021 28.4084 9.48799 26.6148 9.48799 24.4063V3.125ZM20.1561 3.125C20.1561 1.39911 18.757 0 17.0311 0H9.48799C7.7621 0 6.36299 1.39911 6.36299 3.125V24.4063C6.36299 25.4785 5.79482 26.4547 4.97216 27.1423C2.13398 29.5143 0.328506 33.0808 0.328506 37.069C0.328506 44.2106 6.11793 50 13.2595 50C20.4012 50 26.1906 44.2106 26.1906 37.069C26.1906 33.0808 24.3851 29.5143 21.5469 27.1423C20.7243 26.4547 20.1561 25.4785 20.1561 24.4063V3.125ZM35.6715 1.25C35.6715 0.559645 35.1119 0 34.4215 0H28.1715C27.4812 0 26.9215 0.559644 26.9215 1.25C26.9215 1.94036 27.4812 2.5 28.1715 2.5L34.4215 2.5C35.1119 2.5 35.6715 1.94036 35.6715 1.25ZM35.6715 8.24951C35.6715 7.55916 35.1119 6.99951 34.4215 6.99951H28.1715C27.4812 6.99951 26.9215 7.55916 26.9215 8.24951C26.9215 8.93987 27.4812 9.49951 28.1715 9.49951H34.4215C35.1119 9.49951 35.6715 8.93987 35.6715 8.24951ZM34.4215 13.999C35.1119 13.999 35.6715 14.5587 35.6715 15.249C35.6715 15.9394 35.1119 16.499 34.4215 16.499H28.1715C27.4812 16.499 26.9215 15.9394 26.9215 15.249C26.9215 14.5587 27.4812 13.999 28.1715 13.999H34.4215ZM13.2594 43.7501C16.366 43.7501 18.8844 41.2317 18.8844 38.1251C18.8844 35.4037 16.9519 33.1337 14.3844 32.6126V10.3662C14.3844 9.67582 13.8247 9.11617 13.1344 9.11617C12.444 9.11617 11.8844 9.67582 11.8844 10.3662V32.6694C9.44245 33.2829 7.63441 35.4928 7.63441 38.1251C7.63441 41.2317 10.1528 43.7501 13.2594 43.7501Z\",\n fill: color\n }));\n});\nexport default Temprature;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Contrast = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.4376 40.6858V38.5625V4.18746V3.31418C10.8133 4.10816 3.25006 12.1708 3.25006 22C3.25006 31.8292 10.8133 39.8918 20.4376 40.6858ZM40.7501 22C40.7501 31.8292 33.1868 39.8918 23.5626 40.6858V38.5625V4.18746V3.31418C33.1868 4.10816 40.7501 12.1708 40.7501 22ZM43.8751 22C43.8751 34.0812 34.0813 43.875 22.0001 43.875C9.91883 43.875 0.125061 34.0812 0.125061 22C0.125061 9.91877 9.91883 0.125 22.0001 0.125C34.0813 0.125 43.8751 9.91877 43.8751 22Z\",\n fill: color\n }));\n});\nexport default Contrast;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FineTune = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.3679 7.50003C15.7995 10.005 13.5592 11.875 10.8823 11.875C8.20528 11.875 5.96506 10.005 5.39665 7.50003H1.5448C0.854444 7.50003 0.2948 6.94039 0.2948 6.25003C0.2948 5.55967 0.854444 5.00003 1.5448 5.00003H5.39665C5.96506 2.49504 8.20528 0.625031 10.8823 0.625031C13.5592 0.625031 15.7995 2.49504 16.3679 5.00003H48.4557C49.1461 5.00003 49.7057 5.55967 49.7057 6.25003C49.7057 6.94039 49.1461 7.50003 48.4557 7.50003H16.3679ZM14.0073 6.25003C14.0073 7.97592 12.6082 9.37503 10.8823 9.37503C9.15637 9.37503 7.75726 7.97592 7.75726 6.25003C7.75726 4.52414 9.15637 3.12503 10.8823 3.12503C12.6082 3.12503 14.0073 4.52414 14.0073 6.25003Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M34.5715 27.625C37.2485 27.625 39.4887 25.755 40.0571 23.25H48.4554C49.1458 23.25 49.7054 22.6904 49.7054 22C49.7054 21.3096 49.1458 20.75 48.4554 20.75H40.0571C39.4887 18.245 37.2485 16.375 34.5715 16.375C31.8946 16.375 29.6543 18.245 29.0859 20.75H1.5448C0.854444 20.75 0.2948 21.3096 0.2948 22C0.2948 22.6904 0.854444 23.25 1.5448 23.25H29.0859C29.6543 25.755 31.8946 27.625 34.5715 27.625ZM34.5715 25.125C36.2974 25.125 37.6965 23.7259 37.6965 22C37.6965 20.2741 36.2974 18.875 34.5715 18.875C32.8456 18.875 31.4465 20.2741 31.4465 22C31.4465 23.7259 32.8456 25.125 34.5715 25.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.7702 39C22.2018 41.505 19.9615 43.375 17.2845 43.375C14.6076 43.375 12.3673 41.505 11.7989 39H1.5448C0.854444 39 0.2948 38.4403 0.2948 37.75C0.2948 37.0596 0.854444 36.5 1.5448 36.5H11.7989C12.3673 33.995 14.6076 32.125 17.2845 32.125C19.9615 32.125 22.2018 33.995 22.7702 36.5H48.4554C49.1458 36.5 49.7054 37.0596 49.7054 37.75C49.7054 38.4403 49.1458 39 48.4554 39H22.7702ZM20.4095 37.75C20.4095 39.4759 19.0104 40.875 17.2845 40.875C15.5587 40.875 14.1595 39.4759 14.1595 37.75C14.1595 36.0241 15.5587 34.625 17.2845 34.625C19.0104 34.625 20.4095 36.0241 20.4095 37.75Z\",\n fill: color\n }));\n});\nexport default FineTune;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Saturation = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.2341 37.6984H37.5121V37.4237C41.4447 33.4687 43.875 28.0182 43.875 22C43.875 15.9819 41.4447 10.5314 37.5121 6.57632V6.30045H37.2328C33.2942 2.47819 27.9219 0.125031 22 0.125031C9.91877 0.125031 0.125 9.9188 0.125 22C0.125 34.0813 9.91877 43.875 22 43.875C24.718 43.875 27.3203 43.3793 29.7213 42.4733H30.5303V42.1494C33.0389 41.0861 35.308 39.5679 37.2341 37.6984ZM20.4257 3.31519C10.807 4.1148 3.25 12.1749 3.25 22C3.25 31.8252 10.807 39.8853 20.4257 40.6849V3.31519ZM34.3871 36.0759C33.221 37.1029 31.9263 37.9873 30.5303 38.7017V5.29836C31.9263 6.01281 33.221 6.89715 34.3871 7.92411V36.0759ZM37.5121 11.4641C39.5556 14.4669 40.75 18.094 40.75 22C40.75 25.9061 39.5556 29.5332 37.5121 32.536V11.4641ZM23.5507 40.6868C24.8796 40.578 26.1693 40.3307 27.4053 39.9592V4.04089C26.1693 3.66941 24.8796 3.42203 23.5507 3.31324V40.6868Z\",\n fill: color\n }));\n});\nexport default Saturation;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Annotate = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.1442 31.379C45.4585 31.379 44.8974 31.9429 44.8974 32.6321V43.7349C44.8974 45.8025 43.2267 47.4817 41.157 47.4943H6.22156C4.16433 47.4943 2.49361 45.8151 2.48114 43.7349V11.1283C2.48114 9.06067 4.15186 7.38147 6.22156 7.36894H17.2807C17.9665 7.36894 18.5275 6.80503 18.5275 6.1158C18.5275 5.42658 17.9665 4.86267 17.2807 4.86267H6.22156C2.79284 4.8752 0 7.66969 0 11.1283V43.7349C0 47.1935 2.79284 50.0005 6.22156 50.0005H41.157C44.5982 50.0005 47.3786 47.1935 47.3786 43.7474V32.6321C47.391 31.9429 46.83 31.379 46.1442 31.379Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.8923 1.65462C44.698 -0.55089 41.157 -0.55089 38.9627 1.65462L16.7571 23.9729C16.6075 24.1233 16.4953 24.3113 16.4329 24.5243L13.5154 35.1258C13.3907 35.5644 13.5154 36.0281 13.8396 36.3413C14.1513 36.6546 14.6251 36.7799 15.049 36.6672L25.5969 33.7348C25.8089 33.6722 25.9959 33.5719 26.1455 33.409L48.3636 11.0782C50.5455 8.87267 50.5455 5.31377 48.3636 3.10826L46.8923 1.65462ZM19.4751 24.7875L37.6535 6.51678L43.5135 12.4065L25.3351 30.6897L19.4751 24.7875ZM18.3031 27.1559L22.9911 31.8677L16.5077 33.6722L18.3031 27.1559ZM46.5931 9.31127L45.2715 10.6396L39.4115 4.74986L40.7331 3.42154C41.9425 2.206 43.9249 2.206 45.1343 3.42154L46.5931 4.88771C47.815 6.11578 47.815 8.09573 46.5931 9.31127Z\",\n fill: color\n }));\n});\nexport default Annotate;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Blur = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.3626 41.293C17.5103 41.4285 16.7096 40.8474 16.5742 39.9952C16.4387 39.143 17.0198 38.3423 17.872 38.2068C18.2902 38.1403 18.6988 38.0456 19.0958 37.9246C21.9368 37.059 24.1957 34.8468 25.1254 32.0335C25.2671 31.6049 25.378 31.1621 25.4555 30.7076C25.6005 29.857 26.4076 29.2849 27.2583 29.4299C28.109 29.5749 28.681 30.3821 28.536 31.2327C28.432 31.8429 28.283 32.4379 28.0926 33.0142C26.8449 36.7893 23.8206 39.7519 20.0065 40.914C19.4728 41.0766 18.9239 41.2038 18.3626 41.293Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.9356 31.0645C33.9356 23.9644 24.1764 8.59028 19.4747 1.59549C18.2785 -0.184172 15.7216 -0.184172 14.5254 1.59548C9.82374 8.59028 0.0645752 23.9644 0.0645752 31.0645C0.0645752 40.4177 7.64685 48 17.0001 48C26.3533 48 33.9356 40.4177 33.9356 31.0645ZM30.8106 31.0645C30.8106 29.8836 30.375 28.0316 29.4236 25.578C28.5 23.1959 27.1988 20.5159 25.7187 17.7756C22.8106 12.3913 19.3287 6.98743 17.0001 3.51586C14.6715 6.98743 11.1895 12.3913 8.28145 17.7756C6.80135 20.5159 5.50017 23.1959 4.57655 25.578C3.62517 28.0316 3.18958 29.8836 3.18958 31.0645C3.18958 38.6918 9.37274 44.875 17.0001 44.875C24.6274 44.875 30.8106 38.6918 30.8106 31.0645Z\",\n fill: color\n }));\n});\nexport default Blur;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var PinOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.0081 15.2287L36.7869 17.6214L28.935 29.9601C30.5809 33.9266 30.3662 38.0903 27.1408 41.3158L26.5656 41.8909C25.9554 42.5011 24.9661 42.5011 24.3559 41.8909L14.4122 31.9472L2.99211 43.3673C2.38192 43.9775 1.3926 43.9775 0.782403 43.3673C0.17221 42.7571 0.172211 41.7678 0.782403 41.1576L12.2025 29.7375L2.25883 19.7938C1.64864 19.1836 1.64864 18.1943 2.25883 17.5841L2.50512 17.3378C5.73058 14.1123 10.2231 13.5688 14.1897 15.2147L26.5283 7.36283L28.9211 1.14165C29.327 0.0863053 30.6847 -0.201832 31.4843 0.597706L43.552 12.6655C44.3516 13.465 44.0634 14.8228 43.0081 15.2287ZM29.0752 9.44618L30.9747 4.50752L39.6422 13.1751L34.7035 15.0745L25.4251 29.655L26.0486 31.1577C27.234 34.0146 27.0773 36.5309 25.4342 38.5498L5.64209 18.7576C7.75439 17.2384 10.4304 17.0382 12.992 18.1011L14.4948 18.7246L29.0752 9.44618Z\",\n fill: color\n }));\n});\nexport default PinOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Duplicate = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.312012 34.847V3.39883C0.312012 1.67294 1.71112 0.273834 3.43701 0.273834H26.807C28.5329 0.273834 29.932 1.67294 29.932 3.39883V34.847C29.932 36.5729 28.5329 37.972 26.807 37.972H3.43701C1.71112 37.972 0.312012 36.5729 0.312012 34.847ZM3.43701 34.847V3.39883L26.807 3.39883L26.807 34.847L3.43701 34.847Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.6874 12.5434C35.6874 11.6805 34.9878 10.9809 34.1249 10.9809C33.2619 10.9809 32.5624 11.6805 32.5624 12.5434V40.6009H9.89033C9.02739 40.6009 8.32783 41.3005 8.32783 42.1634C8.32783 43.0263 9.02739 43.7259 9.89033 43.7259H34.1249C34.9878 43.7259 35.6874 43.0263 35.6874 42.1634V12.5434Z\",\n fill: color\n }));\n});\nexport default Duplicate;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var DeleteOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.75 17.3125C15.75 16.4496 16.4496 15.75 17.3125 15.75C18.1754 15.75 18.875 16.4496 18.875 17.3125L18.875 32.9375C18.875 33.8005 18.1754 34.5 17.3125 34.5C16.4496 34.5 15.75 33.8005 15.75 32.9375L15.75 17.3125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.6875 15.75C25.8246 15.75 25.125 16.4496 25.125 17.3125L25.125 32.9375C25.125 33.8005 25.8246 34.5 26.6875 34.5C27.5504 34.5 28.25 33.8005 28.25 32.9375V17.3125C28.25 16.4496 27.5504 15.75 26.6875 15.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.625 6.37503V3.25003C12.625 1.52414 14.0241 0.125031 15.75 0.125031H28.25C29.9759 0.125031 31.375 1.52414 31.375 3.25003V6.37503H42.3125C43.1754 6.37503 43.875 7.07459 43.875 7.93753C43.875 8.80048 43.1754 9.50003 42.3125 9.50003H39.1875V40.75C39.1875 42.4759 37.7884 43.875 36.0625 43.875H7.9375C6.21161 43.875 4.8125 42.4759 4.8125 40.75V9.50003L1.6875 9.50003C0.824554 9.50003 0.125 8.80048 0.125 7.93753C0.125 7.07459 0.824555 6.37503 1.6875 6.37503H12.625ZM15.75 3.25003H28.25V6.37503H15.75V3.25003ZM7.9375 9.50003L7.9375 40.75H36.0625V9.50003H7.9375Z\",\n fill: color\n }));\n});\nexport default DeleteOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CropFrame = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 3H31.75V0.5H43C44.3807 0.5 45.5 1.61929 45.5 3V14.25H43V3Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 14.25V3H14.25V0.5H3C1.61929 0.5 0.5 1.61929 0.5 3V14.25H3Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 31.75V43C0.5 44.3807 1.61929 45.5 3 45.5H14.25V43H3V31.75H0.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 31.75H45.5V43C45.5 44.3807 44.3807 45.5 43 45.5H31.75V43H43V31.75Z\",\n fill: color\n }));\n});\nexport default CropFrame;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Portrait = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 36 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.0559 46.8755L32.0559 3.12555L3.93091 3.12555L3.93091 46.8755H32.0559ZM35.1809 3.12555C35.1809 1.39966 33.7818 0.000549316 32.0559 0.000549316H3.93091C2.20502 0.000549316 0.805908 1.39966 0.805908 3.12555V46.8755C0.805908 48.6014 2.20502 50.0005 3.93091 50.0005H32.0559C33.7818 50.0005 35.1809 48.6014 35.1809 46.8755L35.1809 3.12555Z\",\n fill: color\n }));\n});\nexport default Portrait;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var WarningOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.961 39.0119L28.2837 7.27185C27.5934 6.17538 26.3971 5.5 24.9981 5.5C23.5956 5.5 22.3967 6.17887 21.7073 7.28034L4.06571 38.9613L4.03009 39.0197C3.33595 40.159 3.32316 41.4697 3.9939 42.6216C4.67405 43.786 5.89 44.5 7.34459 44.5H42.554C44.0596 44.5 45.3464 43.7436 46.0016 42.6231C46.6817 41.4564 46.652 40.1455 45.9968 39.0706L45.961 39.0119ZM49.0254 44.3856C47.7038 46.6495 45.2246 48 42.554 48H7.34459C4.67398 48 2.29272 46.6495 0.970942 44.3856C-0.347811 42.1231 -0.322029 39.4361 1.04116 37.1987L18.6646 5.55018C18.6697 5.5418 18.6743 5.53342 18.6789 5.52504C18.6836 5.51666 18.6882 5.50828 18.6932 5.49989C20.0278 3.30867 22.3849 2 24.9981 2C27.6114 2 29.9685 3.30867 31.303 5.49989L48.9853 37.2489C50.3185 39.436 50.3442 42.1232 49.0254 44.3856Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.0001 16C22.0001 14.3431 23.3433 13 25.0001 13C26.657 13 28.0001 14.3431 28.0001 16V28C28.0001 29.6569 26.657 31 25.0001 31C23.3433 31 22.0001 29.6569 22.0001 28V16Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.0001 37C28.0001 38.6569 26.657 40 25.0001 40C23.3433 40 22.0001 38.6569 22.0001 37C22.0001 35.3431 23.3433 34 25.0001 34C26.657 34 28.0001 35.3431 28.0001 37Z\",\n fill: color\n }));\n});\nexport default WarningOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Success = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.5 10.5001C20.5 16.023 16.0228 20.5001 10.5 20.5001C4.97714 20.5001 0.5 16.023 0.5 10.5001C0.5 4.97727 4.97714 0.500122 10.5 0.500122C16.0228 0.500122 20.5 4.97727 20.5 10.5001ZM7.88239 9.56904C8.00439 9.62145 8.11473 9.69763 8.20698 9.79314L9.49998 11.0861L12.793 7.79314C12.8852 7.69763 12.9956 7.62145 13.1176 7.56904C13.2396 7.51663 13.3708 7.48905 13.5036 7.48789C13.6363 7.48674 13.768 7.51204 13.8909 7.56232C14.0138 7.6126 14.1255 7.68686 14.2194 7.78075C14.3133 7.87464 14.3875 7.98629 14.4378 8.10919C14.4881 8.23208 14.5134 8.36376 14.5122 8.49654C14.5111 8.62932 14.4835 8.76054 14.4311 8.88255C14.3787 9.00455 14.3025 9.1149 14.207 9.20714L10.207 13.2071C10.0194 13.3946 9.76514 13.4999 9.49998 13.4999C9.23482 13.4999 8.98051 13.3946 8.79298 13.2071L6.79298 11.2071C6.69747 11.1149 6.62129 11.0046 6.56888 10.8825C6.51647 10.7605 6.48889 10.6293 6.48773 10.4965C6.48658 10.3638 6.51188 10.2321 6.56216 10.1092C6.61244 9.98629 6.6867 9.87464 6.78059 9.78075C6.87448 9.68686 6.98613 9.6126 7.10903 9.56232C7.23193 9.51204 7.3636 9.48674 7.49638 9.48789C7.62916 9.48905 7.76038 9.51663 7.88239 9.56904Z\",\n fill: color\n }));\n});\nexport default Success;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Error = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.5 20.5001C16.0228 20.5001 20.5 16.023 20.5 10.5001C20.5 4.97727 16.0228 0.500122 10.5 0.500122C4.97715 0.500122 0.5 4.97727 0.5 10.5001C0.5 16.023 4.97715 20.5001 10.5 20.5001ZM15.4375 7.0912L11.8155 10.7132L15.4638 14.309C15.6213 14.4665 15.7 14.6503 15.7 14.8865C15.7 15.1227 15.6213 15.3064 15.4638 15.4639C15.3063 15.6214 15.1226 15.7001 14.8864 15.7001C14.6501 15.7001 14.4664 15.6214 14.3089 15.4639L10.6869 11.8419L7.06483 15.4639C6.77612 15.7789 6.25118 15.7789 5.93622 15.4639C5.77874 15.3064 5.7 15.0964 5.7 14.8865C5.7 14.6765 5.77874 14.4928 5.93622 14.3353L9.55827 10.7132L5.93622 7.0912C5.77874 6.93372 5.7 6.72374 5.7 6.51377C5.7 6.3038 5.77874 6.12007 5.93622 5.96259C6.25118 5.64763 6.74987 5.64763 7.06483 5.96259L10.6869 9.58464L14.3089 5.93634C14.5976 5.62138 15.1226 5.62138 15.4375 5.93634C15.595 6.09382 15.6738 6.27755 15.6738 6.51377C15.6738 6.74999 15.595 6.93372 15.4375 7.0912Z\",\n fill: color\n }));\n});\nexport default Error;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ErrorOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.3438 16.4782L28.2887 25.5333L37.4095 34.5228C37.8032 34.9165 38 35.3758 38 35.9664C38 36.5569 37.8032 37.0162 37.4095 37.4099C37.0158 37.8036 36.5564 38.0005 35.9659 38.0005C35.3753 38.0005 34.916 37.8036 34.5223 37.4099L25.4672 28.3548L16.4121 37.4099C15.6903 38.1973 14.378 38.1973 13.5906 37.4099C13.1969 37.0162 13 36.4913 13 35.9664C13 35.4414 13.1969 34.9821 13.5906 34.5884L22.6457 25.5333L13.5906 16.4782C13.1969 16.0845 13 15.5595 13 15.0346C13 14.5097 13.1969 14.0504 13.5906 13.6567C14.378 12.8693 15.6247 12.8693 16.4121 13.6567L25.4672 22.7118L34.5223 13.591C35.2441 12.8036 36.5564 12.8036 37.3438 13.591C37.7375 13.9847 37.9344 14.4441 37.9344 15.0346C37.9344 15.6252 37.7375 16.0845 37.3438 16.4782Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-0.000488281 25.0005C-0.000488281 38.7972 11.2028 50.0005 24.9995 50.0005C38.6925 50.0005 49.9995 38.7972 49.9995 25.0005C49.9995 11.2038 38.7962 0.000488281 24.9995 0.000488281C11.2028 0.000488281 -0.000488281 11.2038 -0.000488281 25.0005ZM3.63022 24.8968C3.63022 13.1748 13.1738 3.52746 24.9995 3.52746C36.8252 3.52746 46.3688 13.1748 46.3688 24.8968C46.3688 36.6187 36.8252 46.266 24.9995 46.266C13.2775 46.266 3.63022 36.6187 3.63022 24.8968Z\",\n fill: color\n }));\n});\nexport default ErrorOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Loading = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.9338 5.26853C27.8524 4.75154 25.7006 4.56814 23.5381 4.72351C22.4874 4.799 21.4379 4.95535 20.4183 5.18855L19.3724 0.636496C20.6245 0.350265 21.9128 0.158175 23.2017 0.065597C25.8579 -0.125223 28.5034 0.100753 31.0653 0.737277L29.9338 5.26853Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.9\",\n d: \"M40.6131 11.9278C38.5498 9.48098 35.9044 7.52805 32.963 6.2805L34.7952 1.98303C38.4106 3.51633 41.6615 5.91575 44.1962 8.922L40.6131 11.9278Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.8\",\n d: \"M45.3329 23.5739L45.3303 23.5392C45.097 20.3085 44.1359 17.275 42.4734 14.5227L46.4838 12.1129C48.5302 15.501 49.7133 19.2325 50 23.2036L45.3329 23.5739Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.7\",\n d: \"M46.2688 38.2308L42.2981 35.7565C43.9958 33.0458 45.0372 29.9357 45.3095 26.7618L49.9744 27.1604C49.639 31.0674 48.3577 34.8958 46.2688 38.2308Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.6\",\n d: \"M34.4209 48.1735L32.6626 43.8456C35.6192 42.6505 38.2938 40.7405 40.3975 38.3222L43.9338 41.3828C41.3483 44.3551 38.0588 46.7033 34.4209 48.1735V48.1735Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.5\",\n d: \"M26.8033 49.9345C24.1593 50.1242 21.5262 49.9011 18.9766 49.2716L20.1013 44.7386C22.1729 45.25 24.3148 45.4309 26.4673 45.2766C27.5283 45.2004 28.5879 45.0416 29.6165 44.8049L30.6697 49.3551C29.4061 49.6459 28.1052 49.841 26.8033 49.9345V49.9345Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.4\",\n d: \"M15.2449 48.0311C11.6272 46.5033 8.37276 44.1086 5.83362 41.1063L9.412 38.0952C11.479 40.5388 14.1272 42.4877 17.0704 43.7306L15.2449 48.0311Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.3\",\n d: \"M3.54069 37.9198C1.48217 34.5223 0.292537 30.78 0.00479729 26.7959L0 26.7274L4.66972 26.3918L4.67579 26.478C4.90861 29.7017 5.87511 32.7443 7.54751 35.504L3.54069 37.9198Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.2\",\n d: \"M4.69761 23.2075L0.0335693 22.802C0.374666 18.8955 1.66191 15.0691 3.75587 11.7373L7.72274 14.2175C6.02088 16.9257 4.97478 20.0344 4.69761 23.2075V23.2075Z\",\n fill: color\n }));\n});\nexport default Loading;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"color2\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ColorPicker = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$color2 = _ref.color2,\n color2 = _ref$color2 === void 0 ? '#F8FAFB' : _ref$color2,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 42 42\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.0001 6.11477C42.0001 4.48089 41.3639 2.94468 40.2086 1.78931C37.8238 -0.595528 33.9433 -0.595878 31.5582 1.78931L25.666 7.68191L22.9908 5.00654C22.5351 4.5509 21.7965 4.5509 21.3407 5.00654L17.8405 8.50695C17.3849 8.96259 17.3849 9.70141 17.8405 10.1572L20.5157 12.8325L3.63971 29.7097C3.5116 29.8378 3.41511 29.9939 3.35783 30.1658L2.27826 33.4048L1.30626 34.3769C-0.435198 36.1186 -0.435314 38.9525 1.30626 40.6943C3.04783 42.436 5.88157 42.4359 7.62314 40.6943L8.59514 39.7223L11.834 38.6426C12.0058 38.5853 12.1619 38.4888 12.29 38.3607L29.1661 21.4835L31.8413 24.1588C32.297 24.6145 33.0357 24.6145 33.4914 24.1588L36.9916 20.6584C37.4472 20.2028 37.4472 19.464 36.9916 19.0082L34.3164 16.3328L40.2086 10.4402C41.3639 9.28486 42.0001 7.74876 42.0001 6.11477ZM20.5157 26.8341H9.81507L22.1658 14.4826L27.516 19.8333L20.5157 26.8341ZM32.6663 21.6836L20.3156 9.332L22.1657 7.48168L34.5163 19.8333L32.6663 21.6836ZM38.5585 8.79014L32.6663 14.6827L27.316 9.332L33.2081 3.4394C34.6833 1.96421 37.0835 1.96409 38.5584 3.4394C40.0263 4.84774 40.0261 7.3818 38.5585 8.79014Z\",\n fill: color\n }));\n});\nexport default ColorPicker;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Menu = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 7.75049C0 6.92206 0.671573 6.25049 1.5 6.25049H48.5C49.3284 6.25049 50 6.92206 50 7.75049V9.43806C50 10.2665 49.3284 10.9381 48.5 10.9381H1.5C0.671571 10.9381 0 10.2665 0 9.43806V7.75049ZM0 24.1567C0 23.3283 0.671573 22.6567 1.5 22.6567H48.5C49.3284 22.6567 50 23.3283 50 24.1567V25.8443C50 26.6727 49.3284 27.3443 48.5 27.3443H1.5C0.671571 27.3443 0 26.6727 0 25.8443V24.1567ZM1.5 39.0629C0.671573 39.0629 0 39.7345 0 40.5629V42.2505C0 43.0789 0.671571 43.7505 1.5 43.7505H48.5C49.3284 43.7505 50 43.0789 50 42.2505V40.5629C50 39.7345 49.3284 39.0629 48.5 39.0629H1.5Z\",\n fill: color\n }));\n});\nexport default Menu;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var MoveDownOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.23229 1.23267C2.20863 0.256387 3.79154 0.256434 4.76782 1.23277L22.9989 19.465L41.2323 1.23267C42.2086 0.256387 43.7915 0.256434 44.7678 1.23277C45.7441 2.20911 45.7441 3.79203 44.7677 4.76831L24.7665 24.7683C24.2977 25.2371 23.6618 25.5005 22.9987 25.5005C22.3357 25.5005 21.6998 25.2371 21.231 24.7682L1.23218 4.7682C0.255899 3.79186 0.255946 2.20895 1.23229 1.23267Z\",\n fill: color\n }));\n});\nexport default MoveDownOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var MoveUpOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.2326 1.23271C22.2089 0.256404 23.7918 0.256417 24.7681 1.23274L44.7678 21.2327C45.7441 22.2091 45.7441 23.792 44.7678 24.7683C43.7914 25.7446 42.2085 25.7446 41.2322 24.7682L23.0003 6.53602L4.76775 24.7683C3.79143 25.7446 2.20852 25.7446 1.23222 24.7682C0.255916 23.7919 0.255928 22.209 1.23225 21.2327L21.2326 1.23271Z\",\n fill: color\n }));\n});\nexport default MoveUpOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowSidebarLeftOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25 47.5006C37.4264 47.5006 47.5 37.427 47.5 25.0006C47.5 12.5742 37.4264 2.50061 25 2.50061C12.5736 2.50061 2.5 12.5742 2.5 25.0006C2.5 37.427 12.5736 47.5006 25 47.5006ZM25 50.0006C38.8071 50.0006 50 38.8077 50 25.0006C50 11.1935 38.8071 0.000610352 25 0.000610352C11.1929 0.000610352 0 11.1935 0 25.0006C0 38.8077 11.1929 50.0006 25 50.0006Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.7355 35.1357C27.1751 35.7705 26.2217 35.7926 25.6359 35.1773L17.3026 26.423C17.0301 26.1368 16.8819 25.755 16.8752 25.3647C16.8686 24.9745 17.0037 24.5881 17.2652 24.2923L25.5985 14.8647C26.1593 14.2302 27.1128 14.2089 27.6981 14.8247C28.2539 15.4093 28.2679 16.3516 27.7348 16.9546L20.36 25.2978L27.6974 33.0057C28.2536 33.59 28.2681 34.5323 27.7355 35.1357ZM26.6695 34.3756C26.7058 34.3748 26.753 34.3599 26.7984 34.3085C26.9042 34.1886 26.8989 33.9798 26.792 33.8676L19.0594 25.7444C18.8357 25.5095 18.829 25.1425 19.0438 24.8995L26.7983 16.1268C26.9041 16.007 26.899 15.7983 26.7921 15.6859C26.7464 15.6377 26.7001 15.6249 26.6639 15.6256C26.6276 15.6263 26.5805 15.6412 26.5351 15.6926L18.2017 25.1202C18.1562 25.1717 18.1235 25.2514 18.1251 25.3435C18.1266 25.4356 18.1619 25.5128 18.208 25.5612L26.5413 34.3154C26.5871 34.3635 26.6334 34.3763 26.6695 34.3756Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.7984 34.3085C26.753 34.3599 26.7058 34.3748 26.6695 34.3756C26.6334 34.3763 26.5871 34.3635 26.5413 34.3154L18.208 25.5612C18.1619 25.5128 18.1266 25.4356 18.1251 25.3435C18.1235 25.2514 18.1562 25.1717 18.2017 25.1202L26.5351 15.6926C26.5805 15.6412 26.6276 15.6263 26.6639 15.6256C26.7001 15.6249 26.7464 15.6377 26.7921 15.6859C26.899 15.7983 26.9041 16.007 26.7983 16.1268L19.0438 24.8995C18.829 25.1425 18.8357 25.5095 19.0594 25.7444L26.792 33.8676C26.8989 33.9798 26.9042 34.1886 26.7984 34.3085Z\",\n fill: color\n }));\n});\nexport default ArrowSidebarLeftOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowSidebarRightOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25 47.5006C37.4264 47.5006 47.5 37.427 47.5 25.0006C47.5 12.5742 37.4264 2.50061 25 2.50061C12.5736 2.50061 2.5 12.5742 2.5 25.0006C2.5 37.427 12.5736 47.5006 25 47.5006ZM25 50.0006C38.8071 50.0006 50 38.8077 50 25.0006C50 11.1935 38.8071 0.000610352 25 0.000610352C11.1929 0.000610352 0 11.1935 0 25.0006C0 38.8077 11.1929 50.0006 25 50.0006Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.2645 14.8655C22.8249 14.2307 23.7783 14.2086 24.3641 14.8239L32.6974 23.5781C32.9699 23.8644 33.1181 24.2461 33.1248 24.6364C33.1314 25.0267 32.9963 25.4131 32.7348 25.7089L24.4015 35.1365C23.8406 35.7709 22.8872 35.7923 22.3019 35.1765C21.7461 34.5919 21.7321 33.6496 22.2652 33.0465L29.6399 24.7034L22.3026 16.9954C21.7464 16.4112 21.7319 15.4689 22.2645 14.8655ZM23.3305 15.6256C23.2942 15.6264 23.247 15.6413 23.2016 15.6927C23.0958 15.8126 23.1011 16.0214 23.208 16.1336L30.9406 24.2568C31.1643 24.4917 31.171 24.8586 30.9562 25.1016L23.2017 33.8744C23.0959 33.9942 23.101 34.2029 23.2079 34.3153C23.2536 34.3634 23.2999 34.3763 23.3361 34.3756C23.3724 34.3748 23.4195 34.36 23.4649 34.3086L31.7983 24.881C31.8438 24.8295 31.8765 24.7497 31.8749 24.6577C31.8734 24.5656 31.838 24.4883 31.792 24.44L23.4587 15.6858C23.4129 15.6377 23.3666 15.6249 23.3305 15.6256Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2016 15.6927C23.247 15.6413 23.2942 15.6264 23.3305 15.6256C23.3666 15.6249 23.4129 15.6377 23.4587 15.6858L31.792 24.44C31.838 24.4883 31.8734 24.5656 31.8749 24.6577C31.8765 24.7497 31.8438 24.8295 31.7983 24.881L23.4649 34.3086C23.4195 34.36 23.3724 34.3748 23.3361 34.3756C23.2999 34.3763 23.2536 34.3634 23.2079 34.3153C23.101 34.2029 23.0959 33.9942 23.2017 33.8744L30.9562 25.1016C31.171 24.8586 31.1643 24.4917 30.9406 24.2568L23.208 16.1336C23.1011 16.0214 23.0958 15.8126 23.2016 15.6927Z\",\n fill: color\n }));\n});\nexport default ArrowSidebarRightOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Annotation = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.5577 38.9423H34.8557C31.8069 38.9423 29.327 41.4224 29.327 44.4712C29.327 45.9293 28.1406 47.1157 26.6827 47.1157H5.52902C4.07066 47.1157 2.88467 45.9293 2.88467 44.4712V42.5459C2.88467 41.0886 4.07028 39.9025 5.5275 39.9018L9.33952 39.8999C9.34067 39.8999 9.34219 39.8995 9.34334 39.8995C9.38683 39.8995 9.43031 39.8968 9.47418 39.893C9.49211 39.8915 9.50966 39.8884 9.52759 39.8861C9.54628 39.8835 9.56535 39.8819 9.58405 39.8789L19.7636 38.1229C19.7689 38.1217 19.7739 38.1206 19.7788 38.1195C19.7948 38.1164 19.8105 38.113 19.8261 38.1095C19.8517 38.1038 19.8769 38.0981 19.9017 38.0908C19.9192 38.0863 19.9368 38.0809 19.9543 38.0756C19.9776 38.068 20.0008 38.0599 20.0241 38.0512C20.0409 38.0447 20.0581 38.039 20.0748 38.0321C20.1107 38.0168 20.1458 38.0008 20.1805 37.9829C20.1942 37.9756 20.208 37.9672 20.2217 37.9596C20.2461 37.9459 20.2702 37.9321 20.2938 37.9169C20.3083 37.9077 20.3228 37.8978 20.3373 37.8879C20.3602 37.8719 20.3831 37.8551 20.4052 37.8375C20.417 37.8284 20.4292 37.8192 20.4411 37.8093C20.4746 37.7815 20.5074 37.7525 20.5383 37.7212L46.2479 12.0109C48.3097 9.94895 48.3097 6.59377 46.2479 4.53146L43.2632 1.54708C41.2014 -0.515234 37.846 -0.514853 35.7841 1.54708L10.075 27.2574C10.0437 27.2883 10.0147 27.3215 9.9865 27.355C9.97696 27.3665 9.9678 27.3783 9.95865 27.3901C9.9411 27.4127 9.92432 27.4355 9.90829 27.4588C9.89838 27.4729 9.88846 27.4874 9.8793 27.5019C9.86443 27.5252 9.85069 27.5488 9.83734 27.5729C9.82857 27.5885 9.81941 27.6042 9.81102 27.6198C9.79424 27.653 9.77898 27.6862 9.76448 27.7205C9.75723 27.7377 9.75113 27.7556 9.74426 27.7732C9.73625 27.7953 9.72824 27.8178 9.72099 27.8403C9.71527 27.8586 9.70993 27.8769 9.70497 27.8952C9.69849 27.9189 9.69276 27.9429 9.68742 27.9673C9.68361 27.9841 9.67979 28.0009 9.67674 28.0177C9.6756 28.0226 9.67445 28.0272 9.67369 28.0318L8.12378 37.0158L5.52597 37.017C2.47879 37.0185 0 39.4989 0 42.5459V44.4712C0 47.5201 2.48032 50.0005 5.52902 50.0005H26.6827C29.7314 50.0005 32.2117 47.5201 32.2117 44.4712C32.2117 43.0132 33.3977 41.8267 34.8557 41.8267H48.5577C49.3542 41.8267 50 41.1813 50 40.3847C50 39.5878 49.3542 38.9423 48.5577 38.9423ZM12.043 31.2653L16.5306 35.7531L11.1076 36.6885L12.043 31.2653ZM33.5567 7.85382L35.7288 10.026L15.3065 30.4493L13.1344 28.2771L33.5567 7.85382ZM19.5183 34.6613L17.3462 32.4891L37.7689 12.0658L39.941 14.238L19.5183 34.6613ZM37.8239 3.58651C38.7611 2.64958 40.2859 2.64958 41.2235 3.58651L44.2078 6.57126C45.145 7.50858 45.145 9.03376 44.2078 9.97108L41.9804 12.1986L35.5965 5.81401L37.8239 3.58651Z\",\n fill: color\n }));\n});\nexport default Annotation;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Rotate90 = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 42\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.4326 40.0282C46.1217 40.5666 45.6098 40.9595 45.0093 41.1204C44.4088 41.2813 43.7691 41.197 43.2307 40.8862C42.6923 40.5754 42.2995 40.0634 42.1386 39.463C41.9777 38.8625 42.0619 38.2227 42.3727 37.6843C45.2819 32.6454 46.0703 26.6571 44.5644 21.0369C43.0584 15.4167 39.3816 10.6249 34.3426 7.71563C25.1427 2.4043 13.7736 4.38306 6.93632 12.1744L14.5457 12.0831H14.5744C15.196 12.0795 15.7937 12.3229 16.2358 12.7599C16.678 13.1969 16.9284 13.7916 16.9321 14.4133C16.9357 15.0349 16.6923 15.6326 16.2553 16.0747C15.8183 16.5169 15.2236 16.7673 14.6019 16.771L2.37222 16.9175H2.34409C2.03391 16.9175 1.72681 16.856 1.44059 16.7364C1.15437 16.6169 0.894721 16.4417 0.676697 16.2211C0.458674 16.0004 0.28661 15.7387 0.170478 15.4511C0.0543471 15.1635 -0.00354164 14.8557 0.000167612 14.5455L0.147346 2.31591C0.151046 2.00811 0.215338 1.70404 0.336549 1.42108C0.457761 1.13812 0.633519 0.881802 0.853788 0.666765C1.07406 0.451728 1.33453 0.282182 1.62032 0.167807C1.90611 0.0534328 2.21164 -0.00353076 2.51944 0.000169355C2.82725 0.00386947 3.13132 0.0681609 3.41428 0.189372C3.69724 0.310584 3.95356 0.486342 4.16859 0.706611C4.38363 0.926881 4.55318 1.18735 4.66755 1.47314C4.78193 1.75894 4.83889 2.06446 4.83519 2.37227L4.77171 7.65586C9.37537 3.16334 15.4496 0.489016 21.8718 0.127065C28.2941 -0.234886 34.6303 1.74001 39.7096 5.6868C44.7889 9.63359 48.2679 15.2855 49.5038 21.5981C50.7397 27.9107 49.6485 34.4574 46.4326 40.0282Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25 28C26.6569 28 28 26.6569 28 25C28 23.3431 26.6569 22 25 22C23.3431 22 22 23.3431 22 25C22 26.6569 23.3431 28 25 28ZM25 32C28.866 32 32 28.866 32 25C32 21.134 28.866 18 25 18C21.134 18 18 21.134 18 25C18 28.866 21.134 32 25 32Z\",\n fill: color\n }));\n});\nexport default Rotate90;","function _objectDestructuringEmpty(t) {\n if (null == t) throw new TypeError(\"Cannot destructure \" + t);\n}\nexport { _objectDestructuringEmpty as default };","export var Size = {\n Xs: 'xs',\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { Size } from './types';\nvar baseClassName = 'CrossButton';\nvar crossButtonPaddingMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Size.Xs, css([\"padding:5px;height:20px;\"])), Size.Sm, css([\"padding:6px;height:24px;\"])), Size.Md, css([\"padding:9px;\"])), Size.Lg, css([\"padding:12px;\"]));\nvar CrossButton = /*#__PURE__*/styled.button.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-ygfku-0\"\n})(function (_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? Size.Lg : _ref$size,\n theme = _ref.theme;\n return css([\"display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;\", \" color:\", \";background:transparent;border:none;transition:all 100ms ease-out;&:hover{color:\", \";background:\", \";}&:active{color:\", \";background:\", \";}\"], crossButtonPaddingMixin[size], theme.palette[PaletteColor.IconsSecondary], theme.palette[PaletteColor.IconsPrimary], theme.palette[PaletteColor.BackgroundHover], theme.palette[PaletteColor.IconsPrimaryHover], theme.palette[PaletteColor.BackgroundActive]);\n});\nvar Styled = applyDisplayNames({\n CrossButton: CrossButton\n});\nexport default Styled;","import _objectDestructuringEmpty from \"@babel/runtime/helpers/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport PT from 'prop-types';\nimport CrossOutline from '@scaleflex/icons/cross-outline';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport Styled from './cross-button.styles';\nvar getIconSize = function getIconSize(sizeName) {\n switch (sizeName) {\n case Size.Lg:\n return 16;\n case Size.Xs:\n return 10;\n case Size.Sm:\n default:\n return 12;\n }\n};\nvar CrossButton = intrinsicComponent(function (_ref, ref) {\n var rest = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n return /*#__PURE__*/React.createElement(Styled.CrossButton, _extends({}, rest, {\n ref: ref\n }), /*#__PURE__*/React.createElement(CrossOutline, {\n size: getIconSize(rest.size)\n }));\n});\nCrossButton.defaultProps = {\n size: Size.Lg\n};\nCrossButton.propTypes = {\n size: PT.oneOf(objectValues(Size))\n};\nexport default CrossButton;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\n// import { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport InputStyled from '../input/input.styles';\nimport { fontSizeInputMixin } from '../input/input.mixin';\nimport { Size } from '../menu-item/types';\nimport CrossButton from '../cross-button/cross-button.component';\nvar baseClassName = 'Select';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-mfrapg-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette,\n size = _ref.size;\n return css([\"display:flex;flex-shrink:0;color:\", \";padding:\", \";\"], palette[PColor.IconsPrimary], size === Size.Md ? '2.5px' : '2px');\n});\nvar TickIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'tickIcon')\n}).withConfig({\n componentId: \"sc-mfrapg-1\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"color:\", \";\"], palette[PColor.AccentStateless]);\n});\nvar Container = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Container')\n}).withConfig({\n componentId: \"sc-mfrapg-2\"\n})(function (_ref3) {\n var _ref3$fullWidth = _ref3.fullWidth,\n fullWidth = _ref3$fullWidth === void 0 ? false : _ref3$fullWidth;\n return css([\"position:relative;display:inline-flex;\", \"\"], fullWidth ? 'width: 100%' : '');\n});\nvar StyledCrossButton = /*#__PURE__*/styled(CrossButton).attrs({\n className: generateClassNames(baseClassName, 'CrossButton')\n}).withConfig({\n componentId: \"sc-mfrapg-3\"\n})(function () {\n return css([\"display:none;margin-right:6px;\"]);\n});\nvar Select = /*#__PURE__*/styled(InputStyled.Input).attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-mfrapg-4\"\n})(function (_ref4) {\n var palette = _ref4.theme.palette,\n disabled = _ref4.disabled,\n readOnly = _ref4.readOnly,\n _ref4$size = _ref4.size,\n size = _ref4$size === void 0 ? 'sm' : _ref4$size,\n isValueExists = _ref4.isValueExists;\n return css([\"cursor:\", \";user-select:none;gap:0px;background:\", \";\", \" \", \";\"], disabled || readOnly ? 'default' : 'pointer', disabled ? palette[PColor.BackgroundHover] : palette[PColor.BackgroundStateless], isValueExists && \"\\n &:hover {\\n \".concat(StyledCrossButton, \" {\\n display: flex;\\n }\\n }\\n \"), fontSizeInputMixin[size]);\n});\nvar Label = /*#__PURE__*/styled.label.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-mfrapg-5\"\n})(function (_ref5) {\n var hideEllipsis = _ref5.hideEllipsis,\n _ref5$size = _ref5.size,\n size = _ref5$size === void 0 ? Size.Md : _ref5$size;\n return \"\\n flex-grow: 1;\\n margin-right: \".concat(size === Size.Md ? 8 : 12, \"px;\\n\\n \").concat(!hideEllipsis && css([\"white-space:nowrap;text-overflow:ellipsis;overflow:hidden;\"]), \"\\n \");\n});\nvar Placeholder = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Placeholder')\n}).withConfig({\n componentId: \"sc-mfrapg-6\"\n})(function (_ref6) {\n var palette = _ref6.theme.palette,\n size = _ref6.size;\n return css([\"width:100%;color:\", \";margin-right:\", \"px;\"], palette[PColor.TextPlaceholder], size === Size.Md ? 16 : 12);\n});\nvar Input = /*#__PURE__*/styled.input.attrs({\n className: generateClassNames(baseClassName, 'Input'),\n 'aria-hidden': 'true',\n tabindex: '-1'\n}).withConfig({\n componentId: \"sc-mfrapg-7\"\n})([\"left:0;width:100%;bottom:0;opacity:0;position:absolute;pointer-events:none;box-sizing:border-box;\"]);\nvar Styled = applyDisplayNames({\n Container: Container,\n Select: Select,\n Label: Label,\n Icon: Icon,\n TickIcon: TickIcon,\n Input: Input,\n Placeholder: Placeholder,\n StyledCrossButton: StyledCrossButton\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport { Tick } from '@scaleflex/icons/tick';\nimport { MenuItemActions, MenuItemLabel } from '../menu-item';\nimport { InputSize } from '../../utils/types';\nimport Styled from './select.styles';\nexport var getIconSize = function getIconSize(size) {\n switch (size) {\n case InputSize.Md:\n return 16;\n case InputSize.Sm:\n default:\n return 14;\n }\n};\nexport var renderIcon = function renderIcon(_icon, size) {\n return _icon ? /*#__PURE__*/React.createElement(Styled.Icon, null, typeof _icon === 'function' ? _icon({\n size: getIconSize(size)\n }) : _icon) : undefined;\n};\nvar generateChildren = function generateChildren(children) {\n var isActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var size = arguments.length > 2 ? arguments[2] : undefined;\n var hideMenuItemsActions = arguments.length > 3 ? arguments[3] : undefined;\n var miChildren = /*#__PURE__*/React.createElement(MenuItemLabel, null, children);\n if (isActive && children) {\n var miActions = /*#__PURE__*/React.createElement(MenuItemActions, null, /*#__PURE__*/React.createElement(Styled.TickIcon, null, /*#__PURE__*/React.createElement(Tick, {\n size: getIconSize(size)\n })));\n if (React.Children.count(children) === 1) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, miChildren, !hideMenuItemsActions && miActions);\n }\n if (React.Children.count(children) > 1 && !React.Children.toArray(children).some(function (child) {\n var _child$type;\n return (child === null || child === void 0 || (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'MenuItemActions';\n })) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children, miActions);\n }\n }\n return miChildren;\n};\nexport var renderOption = function renderOption(menuItem, _ref) {\n var _type, _props, _props2, _props3;\n var value = _ref.value,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n _ref$hideMenuItemsAct = _ref.hideMenuItemsActions,\n hideMenuItemsActions = _ref$hideMenuItemsAct === void 0 ? false : _ref$hideMenuItemsAct,\n onClose = _ref.onClose,\n onChange = _ref.onChange;\n if (! /*#__PURE__*/React.isValidElement(menuItem)) {\n return menuItem;\n }\n if (((_type = menuItem.type) === null || _type === void 0 ? void 0 : _type.displayName) !== 'MenuItem') {\n return /*#__PURE__*/React.cloneElement(menuItem);\n }\n var menuItemValue = menuItem === null || menuItem === void 0 || (_props = menuItem.props) === null || _props === void 0 ? void 0 : _props.value;\n var valueArr = multiple ? Array.isArray(value) ? value : [] : [value];\n var active = valueArr.length > 0 && valueArr.includes(menuItemValue);\n var isDisabledMenuItem = menuItem === null || menuItem === void 0 || (_props2 = menuItem.props) === null || _props2 === void 0 ? void 0 : _props2.disabled;\n return /*#__PURE__*/React.cloneElement(menuItem, {\n active: active,\n size: size,\n children: generateChildren(menuItem === null || menuItem === void 0 || (_props3 = menuItem.props) === null || _props3 === void 0 ? void 0 : _props3.children, active, size, hideMenuItemsActions),\n onClick: function onClick() {\n var _menuItemValue$toStri;\n if (!multiple && typeof onClose === 'function') {\n onClose();\n }\n if (typeof onChange === 'function' && !isDisabledMenuItem && !!(menuItemValue !== null && menuItemValue !== void 0 && (_menuItemValue$toStri = menuItemValue.toString()) !== null && _menuItemValue$toStri !== void 0 && _menuItemValue$toStri.length)) {\n var newValue = menuItemValue;\n if (multiple) {\n newValue = _toConsumableArray(Array.isArray(value) ? value : []);\n var index = newValue.indexOf(menuItemValue);\n if (index > -1) {\n newValue.splice(index, 1);\n } else {\n newValue.push(menuItemValue);\n }\n }\n onChange(newValue);\n }\n }\n });\n};\nvar getOptionValue = function getOptionValue(option) {\n var children = option.props ? option.props.children : option;\n if (Array.isArray(children)) return children.map(function (child) {\n return getOptionValue(child);\n }).join(' ');\n if (_typeof(children) === 'object') return getOptionValue(children.props.children);\n return children;\n};\nvar renderOptionValue = function renderOptionValue(option, showSelectionKey) {\n if (option && option.children) {\n var child = showSelectionKey ? option.value : option.children;\n while (typeof child !== 'string') {\n if (Array.isArray(child)) {\n child = getOptionValue(child[1]);\n } else {\n child = getOptionValue(child);\n }\n }\n return child;\n }\n};\nexport var renderValue = function renderValue(_ref2) {\n var value = _ref2.value,\n _ref2$multiple = _ref2.multiple,\n multiple = _ref2$multiple === void 0 ? false : _ref2$multiple,\n children = _ref2.children,\n _ref2$showSelectionKe = _ref2.showSelectionKey,\n showSelectionKey = _ref2$showSelectionKe === void 0 ? false : _ref2$showSelectionKe;\n var optionsProps = [];\n React.Children.forEach(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _type2 = child === null || child === void 0 ? void 0 : child.type,\n displayName = _type2.displayName;\n if (displayName === 'MenuItem' && Boolean(child.props)) {\n optionsProps.push(_objectSpread({}, child.props));\n }\n }\n });\n var activeOptions = multiple ? optionsProps.filter(function (itemProps) {\n return Array.isArray(value) && value.includes(itemProps.value);\n }) : [optionsProps.find(function (itemProps) {\n return itemProps.value === value;\n })];\n if (activeOptions.length > 0) {\n return activeOptions.map(function (option) {\n return renderOptionValue(option, showSelectionKey);\n }).join(', ');\n }\n return Array.isArray(value) ? value.join(', ') : value;\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"size\", \"error\", \"multiple\", \"onChange\", \"value\", \"fullWidth\", \"selectProps\", \"MenuProps\", \"readOnly\", \"disabled\", \"scroll\", \"placeholder\", \"showSelectionKey\", \"hideMenuItemsActions\", \"showClearIcon\", \"renderLabel\", \"onRequestClose\", \"hideEllipsis\"];\nimport React, { useState } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport ArrowTick from '../arrow-tick';\nimport Menu from '../menu';\nimport { propTypes as menuPropTypes } from '../menu/menu.component';\nimport { renderValue, renderOption } from './select.utils';\nimport { InputSize } from '../../utils/types';\nimport Styled from './select.styles';\nimport { Size } from '../cross-button/types';\nvar Select = intrinsicComponent(function (_ref, ref) {\n var _value$toString;\n var children = _ref.children,\n size = _ref.size,\n error = _ref.error,\n multiple = _ref.multiple,\n onChange = _ref.onChange,\n value = _ref.value,\n fullWidth = _ref.fullWidth,\n selectProps = _ref.selectProps,\n MenuProps = _ref.MenuProps,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? true : _ref$scroll,\n placeholder = _ref.placeholder,\n showSelectionKey = _ref.showSelectionKey,\n hideMenuItemsActions = _ref.hideMenuItemsActions,\n showClearIcon = _ref.showClearIcon,\n renderLabel = _ref.renderLabel,\n onRequestClose = _ref.onRequestClose,\n _ref$hideEllipsis = _ref.hideEllipsis,\n hideEllipsis = _ref$hideEllipsis === void 0 ? false : _ref$hideEllipsis,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(undefined),\n _useState2 = _slicedToArray(_useState, 2),\n anchorEl = _useState2[0],\n setAnchorEl = _useState2[1];\n var open = Boolean(anchorEl);\n var handleClick = function handleClick(event) {\n return setAnchorEl(event.currentTarget);\n };\n var isValueExists = Array.isArray(value) ? !!value.length : !!(value !== null && value !== void 0 && (_value$toString = value.toString()) !== null && _value$toString !== void 0 && _value$toString.length);\n var handleClose = function handleClose() {\n if (onRequestClose) {\n onRequestClose();\n }\n setAnchorEl(undefined);\n };\n var handleClearSelection = function handleClearSelection(event) {\n event.stopPropagation();\n if (typeof onChange === 'function') {\n onChange('');\n }\n };\n return /*#__PURE__*/React.createElement(Styled.Container, {\n ref: ref,\n fullWidth: Boolean(fullWidth)\n }, /*#__PURE__*/React.createElement(Styled.Select, _extends({}, rest, {\n disabled: disabled,\n size: size,\n error: error,\n fullWidth: Boolean(fullWidth),\n readOnly: readOnly,\n showSelectionKey: showSelectionKey,\n isValueExists: isValueExists,\n onClick: readOnly || disabled ? undefined : handleClick\n }), isValueExists && /*#__PURE__*/React.createElement(Styled.Label, {\n hideEllipsis: hideEllipsis,\n size: size\n }, typeof renderLabel === 'function' ? renderLabel(value) : renderValue({\n value: value,\n multiple: multiple,\n children: children,\n showSelectionKey: showSelectionKey\n })), !isValueExists && /*#__PURE__*/React.createElement(Styled.Placeholder, {\n size: size\n }, placeholder), !readOnly && showClearIcon && /*#__PURE__*/React.createElement(Styled.StyledCrossButton, {\n size: size === Size.Md ? Size.Sm : Size.Xs,\n onClick: handleClearSelection\n }), /*#__PURE__*/React.createElement(Styled.Icon, {\n size: size\n }, /*#__PURE__*/React.createElement(ArrowTick, {\n type: open ? 'top' : 'bottom',\n IconProps: {\n size: size === Size.Md ? 11 : 10\n }\n })), /*#__PURE__*/React.createElement(Styled.Input, selectProps)), /*#__PURE__*/React.createElement(Menu, _extends({\n onClose: handleClose,\n scroll: scroll,\n open: open,\n anchorEl: anchorEl\n }, MenuProps), React.Children.map(children, function (child) {\n return renderOption(child, {\n value: value,\n multiple: multiple,\n size: size,\n hideMenuItemsActions: hideMenuItemsActions,\n onClose: handleClose,\n onChange: readOnly || disabled ? undefined : onChange\n });\n })));\n});\nexport var defaultProps = {\n size: InputSize.Md,\n error: false,\n multiple: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n showClearIcon: false,\n scroll: true,\n hideMenuItemsActions: false\n};\nSelect.defaultProps = defaultProps;\nexport var simpleValuePropTypes = PT.oneOfType([PT.string, PT.number, PT.oneOf([null])]);\nexport var propTypes = {\n size: PT.oneOf(objectValues(InputSize)),\n error: PT.bool,\n multiple: PT.bool,\n fullWidth: PT.bool,\n children: PT.oneOfType([PT.element, PT.arrayOf(PT.element)]),\n value: PT.oneOfType([PT.string, PT.number, PT.bool, PT.oneOf([null]), PT.arrayOf(simpleValuePropTypes)]),\n onChange: PT.func,\n MenuProps: PT.exact(menuPropTypes),\n // eslint-disable-next-line react/forbid-prop-types\n selectProps: PT.object,\n readOnly: PT.bool,\n disabled: PT.bool,\n showClearIcon: PT.bool,\n hideMenuItemsActions: PT.bool,\n showSelectionKey: PT.bool,\n scroll: PT.bool,\n renderLabel: PT.func,\n onRequestClose: PT.func,\n hideEllipsis: PT.bool\n};\nSelect.propTypes = propTypes;\nexport default Select;","function useDrag(onMove, onStart, onEnd) {\n var onDragging = function onDragging(e) {\n if (typeof onMove === 'function') {\n var _e$touches;\n onMove(((_e$touches = e.touches) === null || _e$touches === void 0 ? void 0 : _e$touches[0]) || e);\n }\n };\n var disableSliding = function disableSliding(e) {\n document.removeEventListener('mousemove', onDragging);\n document.removeEventListener('mouseup', disableSliding);\n document.removeEventListener('mouseleave', disableSliding);\n document.removeEventListener('touchmove', onDragging);\n document.removeEventListener('touchend', disableSliding);\n document.removeEventListener('touchcancel', disableSliding);\n if (typeof onEnd === 'function') {\n var _e$touches2;\n onEnd(((_e$touches2 = e.touches) === null || _e$touches2 === void 0 ? void 0 : _e$touches2[0]) || e);\n }\n };\n var enableDrag = function enableDrag(e) {\n document.addEventListener('mousemove', onDragging);\n document.addEventListener('mouseup', disableSliding);\n document.addEventListener('mouseleave', disableSliding);\n document.addEventListener('touchmove', onDragging);\n document.addEventListener('touchend', disableSliding);\n document.addEventListener('touchcancel', disableSliding);\n if (typeof onStart === 'function') {\n var _e$touches3;\n onStart(((_e$touches3 = e.touches) === null || _e$touches3 === void 0 ? void 0 : _e$touches3[0]) || e);\n }\n };\n return {\n onMouseDown: enableDrag,\n onTouchStart: enableDrag\n };\n}\nexport default useDrag;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nvar baseClassName = 'ColorPicker';\nvar colorItemClassName = 'ColorItem';\n\n// const ColorPicker = styled.div.attrs({\n// className: generateClassNames(baseClassName, 'root'),\n// })`\n// display: flex;\n// flex-direction: column;\n// align-items: center;\n// `;\n\nvar ColorPickerWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-qj4xo5-0\"\n})([\"background-color:\", \";box-shadow:0px 1px 2px rgba(78,77,77,0.15);border-radius:2px;padding:12px;max-width:300px;\"], function (_ref) {\n var theme = _ref.theme;\n return theme.palette[PColor.BackgroundSecondary];\n});\nvar ColorPickerIcon = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'icon')\n}).withConfig({\n componentId: \"sc-qj4xo5-1\"\n})([\"display:flex;justify-content:space-between;align-items:center;cursor:pointer;\"]);\nvar RangePickerWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'range-picker')\n}).withConfig({\n componentId: \"sc-qj4xo5-2\"\n})(function (_ref2) {\n var color = _ref2.color;\n return css([\"position:relative;border-radius:2px;width:100%;height:180px;user-select:none;cursor:crosshair;background-color:\", \";\"], color);\n});\nvar WhiteGradient = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'white-gradient')\n}).withConfig({\n componentId: \"sc-qj4xo5-3\"\n})([\"background:linear-gradient(to right,white 0%,rgba(255,255,255,0) 100%);z-index:0;position:absolute;width:100%;height:100%;border-radius:2px;user-select:none;pointer-events:none;top:-1px;\"]);\nvar BlackGradient = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'black-gradient')\n}).withConfig({\n componentId: \"sc-qj4xo5-4\"\n})([\"background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,black 100%);z-index:1;position:absolute;width:100%;height:100%;border-radius:2px;user-select:none;pointer-events:none;\"]);\nvar ColorPointer = /*#__PURE__*/styled.span.attrs(function (_ref3) {\n var _ref3$left = _ref3.left,\n left = _ref3$left === void 0 ? 0 : _ref3$left,\n _ref3$top = _ref3.top,\n top = _ref3$top === void 0 ? 0 : _ref3$top,\n _ref3$considerTopWidt = _ref3.considerTopWidth,\n considerTopWidth = _ref3$considerTopWidt === void 0 ? false : _ref3$considerTopWidt,\n style = _ref3.style;\n return {\n className: generateClassNames(baseClassName, 'pointer'),\n style: _objectSpread({\n left: left - 7,\n // 7\n top: top - (considerTopWidth ? 7 : 0)\n }, style)\n };\n}).withConfig({\n componentId: \"sc-qj4xo5-5\"\n})(function (_ref4) {\n var theme = _ref4.theme,\n pointerColor = _ref4.pointerColor;\n return css([\"display:inline-block;box-sizing:border-box;width:15px;height:15px;border-radius:20px;box-shadow:0px 1px 2px rgba(78,77,77,0.15);border:2px solid \", \";background-color:\", \";position:absolute;cursor:pointer;z-index:11;user-select:none;outline:none;\"], theme.palette[PColor.BackgroundSecondary], pointerColor);\n});\nvar BarWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'bar-wrapper')\n}).withConfig({\n componentId: \"sc-qj4xo5-6\"\n})([\"margin-top:8px;position:relative;width:100%;height:12px;\"]);\nvar Bar = /*#__PURE__*/styled.table.attrs({\n className: generateClassNames(baseClassName, 'bar')\n}).withConfig({\n componentId: \"sc-qj4xo5-7\"\n})([\"border-radius:4px;width:100%;height:8px;border-collapse:collapse;\"]);\nvar BarColorStop = /*#__PURE__*/styled.td.attrs(function (_ref5) {\n var $color = _ref5.$color;\n return {\n className: generateClassNames(baseClassName, 'stop'),\n style: {\n backgroundColor: $color\n }\n };\n}).withConfig({\n componentId: \"sc-qj4xo5-8\"\n})([\"padding:0;user-select:none;pointer-events:none;&:first-child{width:4px;border-top-left-radius:4px;border-bottom-left-radius:4px;}&:last-child{width:4px;border-top-right-radius:4px;border-bottom-right-radius:4px;}\"]);\nvar ColorPickerAction = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'action')\n}).withConfig({\n componentId: \"sc-qj4xo5-9\"\n})([\"display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;\"]);\nvar ColorItemWrapper = /*#__PURE__*/styled.label.attrs({\n className: generateClassNames(colorItemClassName, 'label')\n}).withConfig({\n componentId: \"sc-qj4xo5-10\"\n})(function (_ref6) {\n var theme = _ref6.theme,\n size = _ref6.size,\n color = _ref6.color,\n stroke = _ref6.stroke,\n value = _ref6.value;\n return css([\"border-radius:2px;border:\", \";box-sizing:border-box;width:\", \"px;height:\", \"px;background-color:\", \";user-select:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 300ms;margin-bottom:8px;background:\", \";input{display:none;}\"], \"1px solid \".concat(stroke), size, size, color, value === 'rgba(0,0,0,0)' && \"repeating-conic-gradient(\".concat(theme.palette[PColor.LinkPrimary], \" 0% 25%, transparent 0% 50%) 50% / 8px 8px\"));\n});\nvar ColorItemsContainer = /*#__PURE__*/styled.div.withConfig({\n componentId: \"sc-qj4xo5-11\"\n})([\"display:flex;flex-wrap:wrap;align-content:space-between;margin-top:14px;margin-left:12px;& > .item{margin-right:8px;display:flex;justify-content:center;}\"]);\nvar Select = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'select')\n}).withConfig({\n componentId: \"sc-qj4xo5-12\"\n})(function (_ref7) {\n var value = _ref7.value;\n return css([\"width:\", \";\"], value === 'rgb' ? '25%' : '35%');\n});\nvar SelectWrapper = /*#__PURE__*/styled.div.withConfig({\n componentId: \"sc-qj4xo5-13\"\n})({\n display: 'flex',\n alignItems: 'center',\n gap: '12px'\n});\nvar Styled = applyDisplayNames({\n ColorPickerWrapper: ColorPickerWrapper,\n RangePickerWrapper: RangePickerWrapper,\n WhiteGradient: WhiteGradient,\n BlackGradient: BlackGradient,\n ColorPointer: ColorPointer,\n BarWrapper: BarWrapper,\n Bar: Bar,\n BarColorStop: BarColorStop,\n ColorPickerAction: ColorPickerAction,\n ColorPickerIcon: ColorPickerIcon,\n ColorItemsContainer: ColorItemsContainer,\n ColorItemWrapper: ColorItemWrapper,\n Select: Select,\n SelectWrapper: SelectWrapper\n});\nexport default Styled;","import React, { useMemo } from 'react';\nimport PT from 'prop-types';\nimport Tick from '@scaleflex/icons/tick';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './color-picker.styles';\nvar ColorItem = intrinsicComponent(function (_ref, ref) {\n var value = _ref.value,\n onChange = _ref.onChange,\n checked = _ref.checked,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size;\n var checkIconColor = useMemo(function () {\n if (value === '#ffffff' || value === 'rgba(0,0,0,0)') {\n return 'black';\n }\n return 'white';\n }, [value]);\n return /*#__PURE__*/React.createElement(Styled.ColorItemWrapper, {\n ref: ref,\n color: value,\n size: size,\n stroke: value === 'rgba(0,0,0,0)' ? '#a8a8a8' : '#E9EEF2',\n value: value\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"radio\",\n value: value,\n checked: checked,\n onChange: onChange\n }), checked && /*#__PURE__*/React.createElement(Tick, {\n color: checkIconColor\n }));\n});\nColorItem.defaultProps = {};\nColorItem.propTypes = {\n value: PT.string.isRequired,\n checked: PT.bool,\n onChange: PT.func.isRequired,\n size: PT.number\n};\nexport default ColorItem;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"defaultColor\", \"onChange\", \"pinnedColors\", \"showTransparentColor\", \"hidePinIcon\", \"containerProps\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useMemo, useEffect } from 'react';\nimport PT from 'prop-types';\nimport { PinOutline, DeleteOutline } from '@scaleflex/icons';\nimport Select from '../select';\nimport MenuItem from '../menu-item';\nimport Input from '../input';\nimport useDrag from '../../hooks/use-drag';\nimport { intrinsicComponent, colorToHsl, hexToRgb, hslToHex, hslToHsv, hsvToHsl, restrictNumber, mapNumber, colorToHex, getElemDocumentCoords, rgbToHex, validateHex, rgbStringToArray } from '../../utils/functions';\nimport Styled from './color-picker.styles';\nimport ColorItem from './color-item.component';\nvar transparentColor = ['rgba(0,0,0,0)'];\nvar transparentColorHex = '#00000000';\nvar colorsHuesCount = 360;\nvar ColorPicker = intrinsicComponent(function (_ref, ref) {\n var _ref$defaultColor = _ref.defaultColor,\n defaultColor = _ref$defaultColor === void 0 ? '#000000' : _ref$defaultColor,\n onChange = _ref.onChange,\n _ref$pinnedColors = _ref.pinnedColors,\n pinnedColors = _ref$pinnedColors === void 0 ? [] : _ref$pinnedColors,\n _ref$showTransparentC = _ref.showTransparentColor,\n showTransparentColor = _ref$showTransparentC === void 0 ? false : _ref$showTransparentC,\n _ref$hidePinIcon = _ref.hidePinIcon,\n hidePinIcon = _ref$hidePinIcon === void 0 ? false : _ref$hidePinIcon,\n containerProps = _ref.containerProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n var showedColors = showTransparentColor ? transparentColor.concat(pinnedColors) : pinnedColors;\n var isTransparentColor = function isTransparentColor(color) {\n return color === transparentColorHex || color === transparentColor[0];\n };\n var _useState = useState({\n color: '#ff0000',\n pointerLeft: 0\n }),\n _useState2 = _slicedToArray(_useState, 2),\n bar = _useState2[0],\n setBar = _useState2[1];\n var _useState3 = useState({\n color: isTransparentColor(defaultColor) ? '#00000000' : colorToHex(defaultColor) || '#000000',\n pointer: {\n left: 0,\n top: 0\n }\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n rangePicker = _useState4[0],\n setRangePicker = _useState4[1];\n var _useState5 = useState(showedColors),\n _useState6 = _slicedToArray(_useState5, 2),\n localPinnedColors = _useState6[0],\n setLocalPinnedColors = _useState6[1];\n var _useState7 = useState('hex'),\n _useState8 = _slicedToArray(_useState7, 2),\n inputType = _useState8[0],\n setInputType = _useState8[1];\n var _useState9 = useState([]),\n _useState10 = _slicedToArray(_useState9, 2),\n rgbColorValue = _useState10[0],\n setRgbColorValue = _useState10[1];\n var _useState11 = useState(colorToHex(rangePicker.color)),\n _useState12 = _slicedToArray(_useState11, 2),\n hexInputValue = _useState12[0],\n setHexInputValue = _useState12[1];\n var _useState13 = useState(null),\n _useState14 = _slicedToArray(_useState13, 2),\n barRef = _useState14[0],\n setBarRef = _useState14[1];\n var _useState15 = useState(null),\n _useState16 = _slicedToArray(_useState15, 2),\n rangePickerRef = _useState16[0],\n setRangePickerRef = _useState16[1];\n var isColorChecked = function isColorChecked(checkedColor) {\n if (checkedColor === transparentColor[0] && rangePicker.color === transparentColorHex) {\n return true;\n }\n return checkedColor === rangePicker.color;\n };\n var filterTransparentColor = function filterTransparentColor(colors) {\n return colors.filter(function (item) {\n return item !== 'rgba(0,0,0,0)';\n });\n };\n var getRgbColor = function getRgbColor(color) {\n return isTransparentColor(color) ? transparentColor[0] : \"rgb(\".concat(hexToRgb(color).join(', '), \")\");\n };\n var handlePinnedColors = function handlePinnedColors(hexColor, type) {\n if (type === 'add') {\n var newLocalPinnedColors = [].concat(_toConsumableArray(localPinnedColors), [hexColor]);\n setLocalPinnedColors(newLocalPinnedColors);\n if (typeof onChange === 'function') {\n onChange(rangePicker.color, getRgbColor(hexColor), filterTransparentColor(newLocalPinnedColors));\n }\n } else {\n var _newLocalPinnedColors = localPinnedColors.filter(function (item) {\n return item !== rangePicker.color;\n });\n setLocalPinnedColors(_newLocalPinnedColors);\n if (typeof onChange === 'function') {\n onChange(rangePicker.color, getRgbColor(hexColor), filterTransparentColor(_newLocalPinnedColors));\n }\n }\n };\n var changeBarPosByColor = function changeBarPosByColor(color) {\n if (barRef !== null) {\n var _ref2 = getElemDocumentCoords(barRef),\n left = _ref2.left;\n var _colorToHsl = colorToHsl(color || rangePicker.color),\n _colorToHsl2 = _slicedToArray(_colorToHsl, 1),\n h = _colorToHsl2[0];\n var targetColorElem = barRef.querySelector(\"[data-hue='\".concat(h, \"']\"));\n if (targetColorElem !== null) {\n var targetColorRgb = targetColorElem.style.backgroundColor || bar.color;\n setBar({\n color: targetColorRgb,\n pointerLeft: getElemDocumentCoords(targetColorElem).left - left || bar.pointerLeft\n });\n }\n }\n };\n var handleRgbInput = function handleRgbInput(value, index) {\n if (value > 255 || Number.isNaN(value)) {\n return;\n }\n var rgbArr = rgbColorValue;\n rgbArr[index] = value;\n var newHexColor = rgbToHex.apply(void 0, _toConsumableArray(rgbArr));\n setRgbColorValue(_toConsumableArray(rgbArr));\n if (validateHex(newHexColor)) {\n setRangePicker(_objectSpread(_objectSpread({}, rangePicker), {}, {\n color: newHexColor\n }));\n changeBarPosByColor(newHexColor);\n }\n };\n var updateRgb = function updateRgb(color) {\n if (color.includes('rgb')) {\n setRgbColorValue(rgbStringToArray(color));\n } else {\n setRgbColorValue(hexToRgb(color));\n }\n };\n var getHexColor = function getHexColor(color) {\n return isTransparentColor(color) ? transparentColorHex : color;\n };\n var changeRangePickerPointerPosByColor = function changeRangePickerPointerPosByColor(color) {\n if (rangePickerRef !== null) {\n var _ref3 = getElemDocumentCoords(rangePickerRef),\n width = _ref3.width,\n height = _ref3.height;\n var colorHsl = colorToHsl(color);\n var colorHsv = hslToHsv(colorHsl[0], colorHsl[1] / 100, colorHsl[2] / 100);\n var left = mapNumber(colorHsv[1], 0, 100, 0, width);\n var top = height - mapNumber(colorHsv[2], 0, 100, 0, height);\n setRangePicker({\n color: getHexColor(color),\n pointer: {\n left: left,\n top: top\n }\n });\n changeBarPosByColor(color);\n updateRgb(color);\n if (typeof onChange === 'function') {\n onChange(getHexColor(color), getRgbColor(color), filterTransparentColor(localPinnedColors));\n }\n }\n };\n var changeRangePickerColorByPosition = function changeRangePickerColorByPosition(left, top, barColor) {\n if (rangePickerRef !== null) {\n var _ref4 = getElemDocumentCoords(rangePickerRef),\n width = _ref4.width,\n height = _ref4.height;\n var _colorToHsl3 = colorToHsl(barColor),\n _colorToHsl4 = _slicedToArray(_colorToHsl3, 1),\n barColorHue = _colorToHsl4[0];\n var restrictedLeft = restrictNumber(left, 0, width) || 0;\n var restrictedTop = restrictNumber(top, 0, height) || 0;\n var hsl = hsvToHsl(barColorHue, restrictedLeft / width, (height - restrictedTop) / height);\n var hexColor = hslToHex(hsl[0], hsl[1], hsl[2]);\n setRangePicker({\n color: hexColor,\n pointer: {\n left: restrictedLeft,\n top: restrictedTop\n }\n });\n if (typeof onChange === 'function') {\n onChange(hexColor, \"rgb(\".concat(hexToRgb(hexColor).join(', '), \")\"), filterTransparentColor(localPinnedColors));\n }\n }\n };\n var changeBarColorByPosition = function changeBarColorByPosition(pointerLeft) {\n var barElem = barRef;\n if (barElem !== null) {\n var _ref5 = getElemDocumentCoords(barElem),\n width = _ref5.width;\n var mappedPointerLeft = restrictNumber(Math.round(mapNumber(pointerLeft, 0, width, 0, colorsHuesCount)), 0, colorsHuesCount);\n var targetColorElem = barElem.querySelector(\"[data-hue='\".concat(mappedPointerLeft, \"']\"));\n var targetColorRgb = targetColorElem.style.backgroundColor;\n setBar({\n color: targetColorRgb,\n pointerLeft: restrictNumber(pointerLeft, 0, width)\n });\n return targetColorRgb;\n }\n return bar.color;\n };\n var updateBarColor = function updateBarColor(e) {\n var barElem = barRef;\n if (barElem !== null) {\n var _e$touches;\n var _ref6 = getElemDocumentCoords(barElem),\n left = _ref6.left;\n var pointerEvent = ((_e$touches = e.touches) === null || _e$touches === void 0 ? void 0 : _e$touches[0]) || e;\n var barColor = changeBarColorByPosition(pointerEvent.pageX - left);\n changeRangePickerColorByPosition(rangePicker.pointer.left, rangePicker.pointer.top, barColor);\n }\n };\n var updateRangePickerColor = function updateRangePickerColor(e) {\n var rangePickerElem = rangePickerRef;\n if (rangePickerElem !== null) {\n var _ref7 = getElemDocumentCoords(rangePickerElem),\n left = _ref7.left,\n top = _ref7.top,\n height = _ref7.height,\n width = _ref7.width;\n var pointerLeft = e ? restrictNumber(e.pageX - left, 0, width) : rangePicker.pointer.left || 0;\n var pointerTop = e ? restrictNumber(e.pageY - top, 0, height) : rangePicker.pointer.left || 0;\n changeRangePickerColorByPosition(pointerLeft, pointerTop, bar.color);\n }\n };\n var moveBarPointerByArrows = function moveBarPointerByArrows(e) {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') {\n return;\n }\n changeBarColorByPosition(bar.pointerLeft + (e.key === 'ArrowLeft' ? -1 : 1));\n };\n var moveRangePickerPointerByArrows = function moveRangePickerPointerByArrows(e) {\n var currentDirection = 0;\n if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n currentDirection = -1;\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n currentDirection = 1;\n }\n if (currentDirection) {\n changeRangePickerColorByPosition((rangePicker.pointer.left || 0) + (['ArrowLeft', 'ArrowRight'].includes(e.key) ? currentDirection : 0), (rangePicker.pointer.top || 0) + (['ArrowUp', 'ArrowDown'].includes(e.key) ? currentDirection : 0), bar.color);\n }\n };\n var validateHexAndUpdate = function validateHexAndUpdate(color) {\n var testHex = validateHex(color);\n if (testHex) {\n changeRangePickerPointerPosByColor(color);\n }\n setHexInputValue(color);\n };\n useEffect(function () {\n changeBarPosByColor(rangePicker.color);\n changeRangePickerPointerPosByColor(rangePicker.color);\n }, [barRef]);\n useEffect(function () {\n setHexInputValue(rangePicker.color);\n updateRgb(rangePicker.color);\n }, [rangePicker.color]);\n var barColors = useMemo(function () {\n return _toConsumableArray(new Array(colorsHuesCount + 1)).map(function (_, h) {\n return /*#__PURE__*/React.createElement(Styled.BarColorStop, {\n key: h,\n $color: \"hsl(\".concat(h, \", 100%, 50%)\"),\n \"data-hue\": h\n });\n });\n }, []);\n var barPointSliding = useDrag(updateBarColor, updateBarColor, null);\n var rangePickerPointSliding = useDrag(updateRangePickerColor, updateRangePickerColor, null);\n return /*#__PURE__*/React.createElement(Styled.ColorPickerWrapper, _extends({\n ref: ref\n }, rest), /*#__PURE__*/React.createElement(Styled.ColorPickerAction, null, /*#__PURE__*/React.createElement(Styled.SelectWrapper, null, /*#__PURE__*/React.createElement(Styled.Select, {\n value: inputType\n }, /*#__PURE__*/React.createElement(Select, {\n size: \"sm\",\n value: inputType,\n MenuProps: _objectSpread({\n zIndex: 11112\n }, containerProps),\n onChange: function onChange(ev) {\n return setInputType(ev);\n },\n fullWidth: true,\n hideEllipsis: true\n }, /*#__PURE__*/React.createElement(MenuItem, {\n value: \"hex\"\n }, \"Hex\"), /*#__PURE__*/React.createElement(MenuItem, {\n value: \"rgb\"\n }, \"RGB\"))), inputType === 'hex' ? /*#__PURE__*/React.createElement(Input, {\n size: \"sm\",\n error: !/^#([\\da-f]{3}){1,2}$/i.test(rangePicker.color),\n value: hexInputValue,\n onChange: function onChange(e) {\n return validateHexAndUpdate(e.target.value);\n },\n style: {\n width: '45%'\n }\n }) : rgbColorValue.map(function (rgb, index) {\n return /*#__PURE__*/React.createElement(Input, {\n key: index,\n size: \"sm\",\n value: rgb,\n onChange: function onChange(e) {\n var _e$target;\n return handleRgbInput(Number((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value), index);\n },\n style: {\n width: '20%'\n }\n });\n })), rangePicker.color !== transparentColorHex && !hidePinIcon && /*#__PURE__*/React.createElement(Styled.ColorPickerIcon, {\n onClick: function onClick() {\n return localPinnedColors.some(function (checkedColor) {\n return isColorChecked(checkedColor);\n }) ? handlePinnedColors(rangePicker.color, 'delete') : handlePinnedColors(rangePicker.color, 'add');\n }\n }, localPinnedColors.some(function (checkedColor) {\n return isColorChecked(checkedColor);\n }) ? /*#__PURE__*/React.createElement(DeleteOutline, null) : /*#__PURE__*/React.createElement(PinOutline, null))), /*#__PURE__*/React.createElement(Styled.RangePickerWrapper, _extends({\n ref: setRangePickerRef,\n color: bar.color\n }, rangePickerPointSliding), /*#__PURE__*/React.createElement(Styled.WhiteGradient, null), /*#__PURE__*/React.createElement(Styled.BlackGradient, null), /*#__PURE__*/React.createElement(Styled.ColorPointer, {\n tabIndex: -1,\n left: rangePicker.pointer.left || 0,\n top: rangePicker.pointer.top || 0,\n onKeyDown: moveRangePickerPointerByArrows,\n pointerColor: hexInputValue,\n considerTopWidth: true\n })), /*#__PURE__*/React.createElement(Styled.BarWrapper, barPointSliding, /*#__PURE__*/React.createElement(Styled.Bar, {\n ref: setBarRef\n }, /*#__PURE__*/React.createElement(\"tbody\", null, /*#__PURE__*/React.createElement(\"tr\", null, barColors))), /*#__PURE__*/React.createElement(Styled.ColorPointer, {\n tabIndex: -1,\n left: bar.pointerLeft,\n onKeyDown: moveBarPointerByArrows,\n considerTopWidth: false,\n pointerColor: hexInputValue,\n style: {\n top: -3\n }\n })), /*#__PURE__*/React.createElement(Styled.ColorItemsContainer, null, localPinnedColors.map(function (color) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"item\",\n key: color\n }, /*#__PURE__*/React.createElement(ColorItem, {\n value: color,\n checked: isColorChecked(color),\n onChange: function onChange(ev) {\n return changeRangePickerPointerPosByColor(ev.target.value);\n }\n }));\n })));\n});\nColorPicker.defaultProps = {\n defaultColor: '#000000',\n pinnedColors: [],\n showTransparentColor: false,\n hidePinIcon: false\n};\nColorPicker.propTypes = {\n defaultColor: PT.string,\n onChange: PT.func,\n pinnedColors: PT.array,\n showTransparentColor: PT.bool,\n hidePinIcon: PT.bool\n};\nexport default ColorPicker;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { ButtonSize, IconButtonColor } from '../../utils/types';\nexport var colorButtonMixin = _defineProperty(_defineProperty(_defineProperty({}, IconButtonColor.Primary, function (_ref) {\n var palette = _ref.theme.palette,\n active = _ref.active;\n return css([\"background-color:\", \";color:\", \";&:hover{background-color:\", \";}&:focus{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{color:\", \";background:\", \";cursor:default;}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity]);\n}), IconButtonColor.Secondary, function (_ref2) {\n var palette = _ref2.theme.palette,\n active = _ref2.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";&:hover{color:\", \";background-color:\", \";}&:focus{background-color:\", \";color:\", \";border:1px solid \", \";}&:active{color:\", \";background-color:\", \";}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentStateless], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";background-color:\", \";&:hover,&:focus{color:\", \";background-color:\", \";}\"], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity]);\n}), IconButtonColor.Basic, function (_ref3) {\n var palette = _ref3.theme.palette,\n active = _ref3.active;\n return css([\"background-color:transparent;color:\", \";border:none;&:hover{background-color:\", \";color:\", \";}&:focus{background-color:\", \";color:\", \";}&:active{background-color:\", \";color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.IconsPrimary], palette[PaletteColor.BackgroundHover], palette[PaletteColor.IconsPrimaryHover], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive], active && css([\"background-color:\", \";color:\", \";&:hover,&:focus{background-color:\", \";color:\", \";}\"], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive]), palette[PaletteColor.BordersDisabled]);\n});\nexport var squarePaddingMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:6px;\"])), ButtonSize.Sm, css([\"padding:9px;\"])), ButtonSize.Md, css([\"padding:12px;\"])), ButtonSize.Lg, css([\"padding:11px;\"]));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport ButtonStyled from '../button/button.styles';\nimport { colorButtonMixin, squarePaddingMixin } from './icon-button.mixin';\nimport { ButtonSize, IconButtonColor } from '../../utils/types';\nvar baseClassName = 'IconButton';\nvar IconButton = /*#__PURE__*/styled(ButtonStyled.Button).attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-10edh45-0\"\n})(function (_ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? IconButtonColor.Secondary : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? ButtonSize.Md : _ref$size;\n return css([\"\", \" \", \"\"], squarePaddingMixin[size], colorButtonMixin[color]);\n});\nvar Styled = applyDisplayNames({\n IconButton: IconButton\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { getIconSize } from '../button/button.utils';\nimport { ButtonSize, IconButtonColor } from '../../utils/types';\nimport Styled from './icon-button.styles';\nvar IconButton = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.IconButton, _extends({}, rest, {\n ref: ref\n }), children && (typeof children === 'function' ? children({\n size: getIconSize(rest.size)\n }) : children));\n});\nIconButton.defaultProps = {\n size: ButtonSize.Md,\n color: IconButtonColor.Secondary,\n active: false\n};\nIconButton.propTypes = {\n children: PT.oneOfType([PT.node, PT.func]).isRequired,\n size: PT.oneOf(objectValues(ButtonSize)),\n color: PT.oneOf(objectValues(IconButtonColor)),\n disabled: PT.bool,\n active: PT.bool\n};\nexport default IconButton;","export var onClickByMouseDown = function onClickByMouseDown(event, callback) {\n event.preventDefault();\n if (event.button !== 0) {\n return;\n }\n if (callback) {\n callback(event);\n }\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { InputSize } from '../../utils/types';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { FontVariant as FV } from '../../utils/types/typography';\nexport var errorMixin = function errorMixin(_ref) {\n var palette = _ref.theme.palette;\n return css([\"background:\", \" !important;border:1px solid \", \" !important;\"], palette[PaletteColor.BackgroundSecondary], palette[PaletteColor.Error]);\n};\nexport var heightTextAreaMixin = _defineProperty(_defineProperty({}, InputSize.Sm, function () {\n return css([\"height:136px;\"]);\n}), InputSize.Md, function () {\n return css([\"height:152px;\"]);\n});\nexport var sizeTextAreaMixin = _defineProperty(_defineProperty({}, InputSize.Sm, function (_ref2) {\n var font = _ref2.theme.typography.font;\n return css([\"padding:8px 12px;\", \"\"], font[FV.InputMd]);\n}), InputSize.Md, function (_ref3) {\n var font = _ref3.theme.typography.font;\n return css([\"padding:8px 16px;\", \"\"], font[FV.InputLg]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { errorMixin, sizeTextAreaMixin, heightTextAreaMixin } from './textarea.mixin';\nimport { getInputBackgroundColor, getInputTextColor, getInputBorderColor } from '../input/input.utils';\nvar baseClassName = 'Textarea';\nvar Textarea = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1usif6k-0\"\n})(function (_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n _ref$error = _ref.error,\n error = _ref$error === void 0 ? false : _ref$error,\n _ref$fullWidth = _ref.fullWidth,\n fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth,\n _ref$readOnly = _ref.readOnly,\n readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$autoSize = _ref.autoSize,\n autoSize = _ref$autoSize === void 0 ? false : _ref$autoSize,\n theme = _ref.theme;\n return css([\"position:relative;display:inline-flex;flex-direction:column;align-items:flex-end;justify-content:space-between;cursor:text;box-sizing:border-box;transition:all 100ms ease-out;width:\", \";pointer-events:\", \";background-color:\", \";border-radius:\", \";border:1px solid \", \";color:\", \";\", \" \", \" &:hover{color:\", \";}\", \" \", \"\"], fullWidth ? '100%' : '300px', disabled ? 'none' : 'auto', getInputBackgroundColor(readOnly, disabled), theme.shape.borderRadius[BRSize.Md], getInputBorderColor(readOnly, disabled), disabled ? theme.palette[PColor.TextPlaceholder] : theme.palette[PColor.TextPrimary], heightTextAreaMixin[size], !readOnly && !disabled && css([\"&:focus-within{background-color:\", \"!important;border:1px solid \", \";&:hover{border:1px solid \", \";}}&:hover{background-color:\", \";border:1px solid \", \";}\"], theme.palette[PColor.BackgroundSecondary], theme.palette[PColor.AccentStateless], theme.palette[PColor.AccentStateless], theme.palette[PColor.BackgroundStateless], theme.palette[PColor.BordersPrimaryHover]), getInputTextColor(readOnly, disabled), error && errorMixin, autoSize && css([\"width:auto;height:auto;\"]));\n});\nvar Base = /*#__PURE__*/styled.textarea.attrs({\n className: generateClassNames(baseClassName, 'Base')\n}).withConfig({\n componentId: \"sc-1usif6k-1\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette,\n _ref2$readOnly = _ref2.readOnly,\n readOnly = _ref2$readOnly === void 0 ? false : _ref2$readOnly,\n _ref2$size = _ref2.size,\n size = _ref2$size === void 0 ? InputSize.Md : _ref2$size;\n return css([\"display:block;width:100%;height:100%;color:inherit;outline:none;resize:none;min-width:0;margin:0;padding:0;border:0;background-color:transparent;outline:none;font-size:inherit;line-height:inherit;color:inherit;font-weight:inherit;font-family:inherit;box-sizing:border-box;flex:1;\", \" \", \";&::placeholder{color:\", \";}::-webkit-scrollbar{width:12px;}::-webkit-scrollbar-track{width:8px;}::-webkit-scrollbar-thumb{background:\", \";border-radius:8px;border:4px solid \", \";}\"], readOnly && \"padding-bottom: 0px;\", sizeTextAreaMixin[size], palette[PColor.TextPlaceholder], palette[PColor.BorderPrimaryStateless], palette[PColor.BackgroundStateless]);\n});\nvar ActionsButtonsWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'ActionsButtonsWrapper')\n}).withConfig({\n componentId: \"sc-1usif6k-2\"\n})(function (_ref3) {\n var _ref3$size = _ref3.size,\n size = _ref3$size === void 0 ? InputSize.Md : _ref3$size;\n return css([\"display:flex;align-items:center;width:100%;column-gap:12px;box-sizing:border-box;\", \";.SfxButton-Label{font-weight:500;}\"], sizeTextAreaMixin[size]);\n});\nvar CopyIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'CopyIcon')\n}).withConfig({\n componentId: \"sc-1usif6k-3\"\n})(function (_ref4) {\n var palette = _ref4.theme.palette;\n return css([\"cursor:pointer;color:\", \";margin-left:auto;\"], palette[PColor.IconsPrimary]);\n});\nvar Styled = applyDisplayNames({\n Textarea: Textarea,\n CopyIcon: CopyIcon,\n Base: Base,\n ActionsButtonsWrapper: ActionsButtonsWrapper\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"fullWidth\", \"size\", \"value\", \"readOnly\", \"disabled\", \"error\", \"cols\", \"rows\", \"copyTextMessage\", \"copySuccessIcon\", \"showActionButton\", \"showClearButton\", \"showCopyIcon\", \"disableActionButton\", \"isActionButtonLoading\", \"actionButtonLabel\", \"clearAllButtonLabel\", \"onClickActionButton\", \"onClear\", \"onChange\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useEffect, useRef } from 'react';\nimport PT from 'prop-types';\nimport CopyOutline from '@scaleflex/icons/copy-outline';\nimport { onClickByMouseDown } from '../../utils/functions/on-click-by-mouse-down';\nimport { intrinsicComponent, objectValues, useForkRef } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { handleCopyIcon } from '../input/input.utils';\nimport { getIconSize } from '../button/button.utils';\nimport InputStyled from '../input/input.styles';\nimport { Size } from '../menu-item/types';\nimport Button from '../button';\nimport Styled from './textarea.styles';\nvar Textarea = intrinsicComponent(function (_ref, ref) {\n var _inputRef$current;\n var fullWidth = _ref.fullWidth,\n size = _ref.size,\n value = _ref.value,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n error = _ref.error,\n cols = _ref.cols,\n rows = _ref.rows,\n _ref$copyTextMessage = _ref.copyTextMessage,\n copyTextMessage = _ref$copyTextMessage === void 0 ? '' : _ref$copyTextMessage,\n copySuccessIcon = _ref.copySuccessIcon,\n _ref$showActionButton = _ref.showActionButton,\n showActionButton = _ref$showActionButton === void 0 ? false : _ref$showActionButton,\n _ref$showClearButton = _ref.showClearButton,\n showClearButton = _ref$showClearButton === void 0 ? false : _ref$showClearButton,\n _ref$showCopyIcon = _ref.showCopyIcon,\n showCopyIcon = _ref$showCopyIcon === void 0 ? false : _ref$showCopyIcon,\n _ref$disableActionBut = _ref.disableActionButton,\n disableActionButton = _ref$disableActionBut === void 0 ? false : _ref$disableActionBut,\n _ref$isActionButtonLo = _ref.isActionButtonLoading,\n isActionButtonLoading = _ref$isActionButtonLo === void 0 ? false : _ref$isActionButtonLo,\n actionButtonLabel = _ref.actionButtonLabel,\n clearAllButtonLabel = _ref.clearAllButtonLabel,\n onClickActionButton = _ref.onClickActionButton,\n onClear = _ref.onClear,\n onChange = _ref.onChange,\n rest = _objectWithoutProperties(_ref, _excluded);\n var inputRef = useRef(null);\n var textareaRef = useForkRef(inputRef, ref);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isHovering = _useState2[0],\n setIsHovering = _useState2[1];\n var _useState3 = useState({}),\n _useState4 = _slicedToArray(_useState3, 2),\n overflowStyles = _useState4[0],\n setOverflowStyles = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n showCopyMessage = _useState6[0],\n setShowCopyMessage = _useState6[1];\n var _useState7 = useState(value),\n _useState8 = _slicedToArray(_useState7, 2),\n inputValue = _useState8[0],\n setInputValue = _useState8[1];\n var actionButtonHandler = function actionButtonHandler(event) {\n if (onClickActionButton) {\n onClickActionButton(event);\n }\n };\n var clearAllHandler = function clearAllHandler(event) {\n setInputValue('');\n if (onClear) {\n onClear(event);\n }\n };\n var onChangeHandler = function onChangeHandler(event) {\n setInputValue(event.target.value);\n if (onChange) {\n onChange(event);\n }\n };\n var copyIconHandler = function copyIconHandler() {\n if (showCopyIcon) {\n handleCopyIcon(inputValue, setShowCopyMessage);\n }\n };\n useEffect(function () {\n var current = inputRef.current;\n if (current && current.scrollHeight > current.clientHeight) {\n setOverflowStyles({\n paddingRight: size === Size.Md ? '4px' : '0px'\n });\n }\n }, [(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.scrollHeight, size]);\n useEffect(function () {\n setTimeout(function () {\n return setShowCopyMessage(false);\n }, 2000);\n }, [showCopyMessage]);\n useEffect(function () {\n setInputValue(value);\n }, [value]);\n var handleEntering = function handleEntering() {\n setTimeout(function () {\n setIsHovering(true);\n }, 150);\n };\n var handleLeaving = function handleLeaving() {\n setTimeout(function () {\n setIsHovering(false);\n }, 200);\n };\n var renderCopyText = function renderCopyText() {\n return /*#__PURE__*/React.createElement(InputStyled.NotificationBox, {\n size: size,\n isTextarea: true\n }, /*#__PURE__*/React.createElement(InputStyled.NotificationIcon, null, copySuccessIcon), /*#__PURE__*/React.createElement(InputStyled.NotificationText, null, copyTextMessage));\n };\n return /*#__PURE__*/React.createElement(Styled.Textarea, {\n size: size,\n value: inputValue,\n onMouseEnter: handleEntering,\n onMouseLeave: handleLeaving,\n readOnly: readOnly,\n disabled: disabled,\n fullWidth: Boolean(fullWidth),\n error: error,\n autoSize: Boolean(cols) || Boolean(rows)\n }, /*#__PURE__*/React.createElement(Styled.Base, _extends({}, rest, {\n value: inputValue,\n ref: textareaRef,\n size: size,\n onChange: onChangeHandler,\n readOnly: readOnly,\n disabled: disabled,\n style: _objectSpread({}, overflowStyles)\n })), (showActionButton || showClearButton || showCopyIcon) && /*#__PURE__*/React.createElement(Styled.ActionsButtonsWrapper, {\n size: size\n }, showActionButton && /*#__PURE__*/React.createElement(Button, {\n color: \"link-primary\",\n size: \"sm\",\n disabled: disableActionButton,\n loading: isActionButtonLoading,\n onMouseDown: function onMouseDown(event) {\n return onClickByMouseDown(event, actionButtonHandler);\n }\n }, actionButtonLabel), showClearButton && /*#__PURE__*/React.createElement(Button, {\n color: \"link-secondary\",\n size: \"sm\",\n onMouseDown: function onMouseDown(event) {\n return onClickByMouseDown(event, clearAllHandler);\n }\n }, clearAllButtonLabel), showCopyIcon && /*#__PURE__*/React.createElement(Styled.CopyIcon, {\n showCopyIcon: isHovering && inputValue.length > 0,\n size: size,\n onMouseDown: function onMouseDown(event) {\n return onClickByMouseDown(event, copyIconHandler);\n }\n }, /*#__PURE__*/React.createElement(CopyOutline, {\n size: getIconSize(size)\n }), showCopyMessage && renderCopyText())));\n});\nTextarea.defaultProps = {\n size: InputSize.Md,\n error: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n disableActionButton: false,\n isActionButtonLoading: false,\n actionButtonLabel: 'Action',\n clearAllButtonLabel: 'Clear all'\n};\nexport var propTypes = {\n error: PT.bool,\n readOnly: PT.bool,\n disabled: PT.bool,\n fullWidth: PT.bool,\n disableActionButton: PT.bool,\n isActionButtonLoading: PT.bool,\n value: PT.any,\n size: PT.oneOf(objectValues(InputSize)),\n copySuccessIcon: PT.oneOfType([PT.node, PT.func]),\n copyTextMessage: PT.string,\n cols: PT.number,\n rows: PT.number,\n showActionButton: PT.bool,\n showClearButton: PT.bool,\n showCopyIcon: PT.bool,\n actionButtonLabel: PT.string,\n clearAllButtonLabel: PT.string,\n onClickActionButton: PT.func,\n onClear: PT.func\n};\nTextarea.propTypes = propTypes;\nexport default Textarea;","export var Type = {\n Input: 'input',\n Textarea: 'textarea'\n};","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport StyledLabel from '../label/label.styles';\nimport StyledFormHint from '../form-hint/form-hint.styles';\nvar baseClassName = 'InputGroup';\nvar InputGroup = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-zhtjwh-0\"\n})([\"\", \"{margin-top:4px;}\", \"{margin-bottom:4px;}\"], StyledFormHint.FormHint, StyledLabel.Label);\nvar Styled = applyDisplayNames({\n InputGroup: InputGroup\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"type\", \"error\", \"label\", \"hint\", \"LabelProps\", \"InputProps\", \"inputProps\", \"inputRef\", \"TextareaProps\", \"readOnly\", \"disabled\", \"size\", \"value\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Label from '../label';\nimport { propTypes as labelPropTypes } from '../label/label.component';\nimport Input from '../input';\nimport { propTypes as inputPropTypes } from '../input/input.component';\nimport { InputSize } from '../../utils/types';\nimport Textarea from '../textarea';\nimport { propTypes as textareaPropTypes } from '../textarea/textarea.component';\nimport FormHint from '../form-hint';\nimport { Type } from './types';\nimport Styled from './input-group.styles';\nvar InputGroup = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n type = _ref.type,\n error = _ref.error,\n label = _ref.label,\n hint = _ref.hint,\n LabelPropsData = _ref.LabelProps,\n InputPropsData = _ref.InputProps,\n inputProps = _ref.inputProps,\n inputRef = _ref.inputRef,\n TextareaPropsData = _ref.TextareaProps,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n size = _ref.size,\n value = _ref.value,\n rest = _objectWithoutProperties(_ref, _excluded);\n var renderLabel = function renderLabel() {\n if (label) {\n if (typeof label === 'function') {\n return label({\n error: error\n });\n }\n if (_typeof(label) === 'object') {\n return label;\n }\n return /*#__PURE__*/React.createElement(Label, _extends({\n size: size,\n error: error,\n disabled: disabled\n }, LabelPropsData || {}), label);\n }\n return null;\n };\n var renderField = function renderField() {\n var fieldProps = _objectSpread({\n value: value,\n readOnly: readOnly,\n disabled: disabled,\n size: size,\n error: error\n }, rest);\n if (type === Type.Input) {\n return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, InputPropsData || {}, inputProps, {\n ref: (inputRef === null || inputRef === void 0 ? void 0 : inputRef.ref) || inputRef,\n readOnly: readOnly,\n disabled: disabled\n }));\n }\n if (type === Type.Textarea) {\n return /*#__PURE__*/React.createElement(Textarea, _extends({}, fieldProps, TextareaPropsData || {}));\n }\n return null;\n };\n var renderHint = function renderHint() {\n if (hint) {\n if (typeof hint === 'function') {\n return hint({\n error: error\n });\n }\n if (_typeof(hint) === 'object') {\n return hint;\n }\n return /*#__PURE__*/React.createElement(FormHint, {\n size: size,\n error: error,\n disabled: disabled\n }, hint);\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Styled.InputGroup, {\n ref: ref\n }, renderLabel(), renderField(), renderHint());\n});\nInputGroup.defaultProps = {\n type: Type.Input,\n error: false,\n readOnly: false\n};\nInputGroup.propTypes = {\n type: PT.oneOf(objectValues(Type)),\n size: PT.oneOf(objectValues(InputSize)),\n label: PT.node,\n hint: PT.node,\n error: PT.bool,\n value: PT.any,\n LabelProps: PT.exact(labelPropTypes),\n InputProps: PT.exact(inputPropTypes),\n inputProps: PT.object,\n inputRef: PT.oneOfType([PT.func, PT.object]),\n TextareaProps: PT.exact(textareaPropTypes),\n readOnly: PT.bool,\n disabled: PT.bool\n};\nexport default InputGroup;","export var Size = {\n Xs: 'xs',\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg',\n Xl: 'xl'\n};","import * as React from 'react';\nvar ModalMenuContext = /*#__PURE__*/React.createContext({\n modalOpened: false\n});\nif (process.env.NODE_ENV !== 'production') {\n ModalMenuContext.displayName = 'ModalMenuContext';\n}\nexport default ModalMenuContext;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Size } from './types';\nexport var modalSizeMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Size.Xs, css([\"max-width:300px;\"])), Size.Sm, css([\"max-width:600px;\"])), Size.Md, css([\"max-width:960px;\"])), Size.Lg, css([\"max-width:1280px;\"])), Size.Xl, css([\"max-width:1920px;\"]));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { modalSizeMixin } from './modal.mixin';\nimport { Size } from './types';\nvar baseClassName = 'Modal';\nvar Wrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Wrapper')\n}).withConfig({\n componentId: \"sc-80m07l-0\"\n})(function (_ref) {\n var open = _ref.open;\n return css([\"position:fixed;right:0px;bottom:0px;top:0px;left:0px;z-index:1200;visibility:\", \";\"], open ? 'visible' : 'hidden');\n});\nvar Overlay = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Overlay')\n}).withConfig({\n componentId: \"sc-80m07l-1\"\n})(function (_ref2) {\n var open = _ref2.open;\n return css([\"position:fixed;right:0px;bottom:0px;top:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:-1;transition:opacity 251ms cubic-bezier(0.4,0,0.2,1) 0ms;opacity:\", \";\"], open ? '1' : '0');\n});\nvar Container = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Container')\n}).withConfig({\n componentId: \"sc-80m07l-2\"\n})(function (_ref3) {\n var theme = _ref3.theme,\n _ref3$open = _ref3.open,\n open = _ref3$open === void 0 ? false : _ref3$open,\n _ref3$fullWidth = _ref3.fullWidth,\n fullWidth = _ref3$fullWidth === void 0 ? false : _ref3$fullWidth,\n _ref3$maxWidth = _ref3.maxWidth,\n maxWidth = _ref3$maxWidth === void 0 ? Size.Sm : _ref3$maxWidth;\n return css([\"position:absolute;overflow-x:hidden;overflow-y:auto;transition:opacity 251ms cubic-bezier(0.4,0,0.2,1) 0ms,transform 167ms cubic-bezier(0.4,0,0.2,1) 0ms;outline:0;border-radius:\", \";background-color:\", \";box-shadow:0px 2px 4px \", \";visibility:\", \";opacity:\", \";display:flex;max-height:calc(100% - 64px);flex-direction:column;\", \" \", \" top:50%;left:50%;transform:translate(-50%,-50%);\"], theme.shape.borderRadius[BRSize.Lg], theme.palette[PColor.BackgroundSecondary], theme.palette[PColor.LightShadow], open ? 'visible' : 'hidden', open ? '1' : '0', fullWidth && css([\"width:calc(100% - 64px);\"]), modalSizeMixin[maxWidth]);\n});\nvar Modal = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-80m07l-3\"\n})(function () {\n return css([\"position:relative;padding-top:8px;padding-bottom:8px;margin:0;padding:0;outline:0;display:flex;flex-direction:column;\"]);\n});\nvar Styled = applyDisplayNames({\n Modal: Modal,\n Wrapper: Wrapper,\n Overlay: Overlay,\n Container: Container\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"open\", \"onClose\", \"maxWidth\", \"fullWidth\", \"modalStyles\", \"hideOverlay\", \"disableOverlayClick\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useEffect, isValidElement } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport ModalMenuContext from './modal-menu-context';\nimport Styled from './modal.styles';\nvar isValidSingleFragmentChildren = function isValidSingleFragmentChildren(children) {\n return children && /*#__PURE__*/isValidElement(children) && React.Children.count(children) === 1 && children.type === React.Fragment;\n};\nvar Modal = intrinsicComponent(function (_ref, ref) {\n var _children = _ref.children,\n open = _ref.open,\n onClose = _ref.onClose,\n maxWidth = _ref.maxWidth,\n fullWidth = _ref.fullWidth,\n modalStyles = _ref.modalStyles,\n hideOverlay = _ref.hideOverlay,\n disableOverlayClick = _ref.disableOverlayClick,\n rest = _objectWithoutProperties(_ref, _excluded);\n var children = isValidSingleFragmentChildren(_children) ? _children.props.children : _children;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var target = document.querySelector('body');\n useEffect(function () {\n if (open) {\n document.body.classList.add('Modal-open');\n } else {\n document.body.classList.remove('Modal-open');\n }\n return function () {\n document.body.classList.remove('Modal-open');\n };\n }, [open]);\n var handleClose = function handleClose() {\n if (typeof onClose === 'function') {\n onClose();\n }\n };\n useEffect(function () {\n var keyListener = function keyListener(ev) {\n if (ev.key === 'Escape') {\n handleClose();\n }\n };\n document.addEventListener('keydown', keyListener);\n return function () {\n return document.removeEventListener('keydown', keyListener);\n };\n });\n var render = function render() {\n return /*#__PURE__*/React.createElement(ModalMenuContext.Provider, {\n value: {\n modalOpened: Boolean(open)\n }\n }, /*#__PURE__*/React.createElement(Styled.Wrapper, {\n style: _objectSpread({}, modalStyles),\n open: Boolean(open),\n ref: ref\n }, !hideOverlay && /*#__PURE__*/React.createElement(Styled.Overlay, {\n onClick: function onClick() {\n return disableOverlayClick ? null : handleClose();\n },\n open: Boolean(open)\n }), /*#__PURE__*/React.createElement(Styled.Container, _extends({}, rest, {\n maxWidth: maxWidth,\n fullWidth: fullWidth,\n open: Boolean(open)\n }), /*#__PURE__*/React.createElement(Styled.Modal, null, React.Children.map(children, function (child) {\n if ( /*#__PURE__*/isValidElement(child) && child.type.displayName === 'ModalTitle') {\n return /*#__PURE__*/React.cloneElement(child, _objectSpread({\n onClose: handleClose\n }, child.props || {}));\n }\n return child;\n })))));\n };\n return /*#__PURE__*/createPortal(render(), target);\n});\nexport var defaultProps = {\n open: false,\n fullWidth: false,\n disableOverlayClick: false,\n hideOverlay: false,\n maxWidth: Size.Xs\n};\nModal.defaultProps = defaultProps;\nexport var propTypes = {\n onClose: PT.func,\n modalStyles: PT.object,\n disableOverlayClick: PT.bool,\n hideOverlay: PT.bool,\n children: PT.node.isRequired,\n maxWidth: PT.oneOf(objectValues(Size)),\n open: PT.bool,\n fullWidth: PT.bool\n};\nModal.propTypes = propTypes;\nexport default Modal;","export var Align = {\n Left: 'left',\n Center: 'center',\n Right: 'right'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Align } from './types';\nvar baseClassName = 'ModalActions';\nvar ModalActions = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1wg6u00-0\"\n})(function (_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? Align.Center : _ref$align;\n return css([\"position:relative;display:flex;align-items:center;padding:24px;justify-content:\", \";gap:12px;\"], align === Align.Right ? 'flex-end' : align);\n});\nvar Styled = applyDisplayNames({\n ModalActions: ModalActions\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Styled from './modal-actions.styles';\nimport { Align } from './types';\nvar ModalActions = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ModalActions, _extends({}, rest, {\n ref: ref\n }), children);\n});\nModalActions.defaultProps = {\n align: Align.Center\n};\nModalActions.propTypes = {\n children: PT.node.isRequired,\n align: PT.oneOf(objectValues(Align))\n};\nModalActions.displayName = 'ModalActions';\nexport default ModalActions;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'ModalContent';\nvar ModalContent = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1ng1w0v-0\"\n})(function () {\n return css([\"position:relative;padding:12px 24px 0px;\"]);\n});\nvar Styled = applyDisplayNames({\n ModalContent: ModalContent\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './modal-content.styles';\nvar ModalContent = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ModalContent, _extends({}, rest, {\n ref: ref\n }), children);\n});\nModalContent.defaultProps = {};\nModalContent.propTypes = {\n children: PT.node.isRequired\n};\nModalContent.displayName = 'ModalContent';\nexport default ModalContent;","export var Variant = {\n Default: 'default',\n WithIcon: 'with-icon'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { Variant } from './types';\nvar baseClassName = 'ModalTitle';\nvar Icon = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-l3tf49-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"display:flex;margin-bottom:8px;padding:14.5px;border-radius:50%;background:\", \";color:\", \";\"], palette[PColor.Accent_1_2_Opacity], palette[PColor.AccentStateless]);\n});\nvar LabelPrimary = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'LabelPrimary')\n}).withConfig({\n componentId: \"sc-l3tf49-1\"\n})(function (_ref2) {\n var _ref2$variant = _ref2.variant,\n variant = _ref2$variant === void 0 ? Variant.Default : _ref2$variant;\n return css([\"font-size:18px;line-height:27px;font-weight:\", \";\"], variant === Variant.Default ? 400 : 500);\n});\nvar LabelSecondary = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'LabelSecondary')\n}).withConfig({\n componentId: \"sc-l3tf49-2\"\n})([\"font-size:12px;line-height:14px;margin-top:4px;\"]);\nvar Close = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Close')\n}).withConfig({\n componentId: \"sc-l3tf49-3\"\n})(function (_ref3) {\n var _ref3$variant = _ref3.variant,\n variant = _ref3$variant === void 0 ? Variant.Default : _ref3$variant,\n palette = _ref3.theme.palette;\n return css([\"position:absolute;display:flex;top:\", \"px;right:\", \"px;color:\", \";&:hover{color:\", \";}cursor:pointer;\"], variant === Variant.WithIcon ? 2 : 8, variant === Variant.WithIcon ? 2 : 8, palette[PColor.IconsSecondary], palette[PColor.AccentPrimary]);\n});\nvar ModalTitle = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-l3tf49-4\"\n})(function (_ref4) {\n var _ref4$variant = _ref4.variant,\n variant = _ref4$variant === void 0 ? Variant.Default : _ref4$variant,\n _ref4$theme = _ref4.theme,\n palette = _ref4$theme.palette,\n borderRadius = _ref4$theme.shape.borderRadius;\n return css([\"position:relative;color:\", \";border-radius:\", \" \", \" 0px 0px;\", \" \", \" \", \"\"], palette[PColor.TextPrimary], borderRadius[BRSize.Md], borderRadius[BRSize.Md], function () {\n var paddingY = variant === Variant.WithIcon ? 26 : 14;\n var paddingX = variant === Variant.WithIcon ? 12 : 14;\n var paddingLeft = 18;\n var paddingRight = variant === Variant.WithIcon ? paddingLeft : 40;\n return css([\"padding:\", \"px \", \"px \", \"px \", \"px;\"], paddingY, paddingRight, paddingX, paddingLeft);\n }, variant === Variant.Default && css([\"background:\", \";border-bottom:1px solid \", \";\"], palette[PColor.BackgroundPrimary], palette[PColor.BordersSecondary]), variant === Variant.WithIcon && css([\"display:flex;align-items:center;flex-direction:column;\"]));\n});\nvar Styled = applyDisplayNames({\n ModalTitle: ModalTitle,\n LabelPrimary: LabelPrimary,\n LabelSecondary: LabelSecondary,\n Close: Close,\n Icon: Icon\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"secondary\", \"onClose\", \"primaryLabelStyles\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport CrossButton from '../cross-button';\nimport Styled from './modal-title.styles';\nimport { Variant } from './types';\nvar ModalTitle = intrinsicComponent(function (_ref, ref) {\n var secondary = _ref.secondary,\n onClose = _ref.onClose,\n primaryLabelStyles = _ref.primaryLabelStyles,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ModalTitle, _extends({}, rest, {\n ref: ref\n }), rest.icon && /*#__PURE__*/React.createElement(Styled.Icon, {\n iconShadow: Boolean(rest.iconShadow)\n }, rest.icon), /*#__PURE__*/React.createElement(Styled.LabelPrimary, {\n variant: rest.variant,\n style: primaryLabelStyles\n }, rest.primary), rest.variant === Variant.WithIcon && secondary && /*#__PURE__*/React.createElement(Styled.LabelSecondary, null, secondary), /*#__PURE__*/React.createElement(Styled.Close, {\n variant: rest.variant\n }, /*#__PURE__*/React.createElement(CrossButton, {\n size: \"lg\",\n onClick: onClose\n })));\n});\nModalTitle.defaultProps = {\n iconShadow: true,\n variant: Variant.Default\n};\nModalTitle.propTypes = {\n primary: PT.node.isRequired,\n secondary: PT.node,\n icon: PT.node,\n iconShadow: PT.bool,\n onClose: PT.func,\n primaryLabelStyles: PT.object,\n variant: PT.oneOf(objectValues(Variant))\n};\nModalTitle.displayName = 'ModalTitle';\nexport default ModalTitle;","export var Status = {\n Success: 'success',\n Info: 'info',\n Error: 'error',\n Warning: 'warning'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'PopupStatus';\nvar PopupStatus = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-qash56-0\"\n})(function () {\n return css([\"display:flex;\"]);\n});\nvar Styled = applyDisplayNames({\n PopupStatus: PopupStatus\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"status\", \"notificationBackground\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { Success, About, Error, Warning, InfoOutline, WarningOutline, ErrorOutline } from '@scaleflex/icons';\nimport { lightPalette } from '@scaleflex/ui/theme/roots/palette';\nimport { Color } from '@scaleflex/ui/utils/types/palette';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Status } from './types';\nimport Styled from './popup-status.styles';\nvar getPopupStatusIcon = function getPopupStatusIcon(status, notificationBackground) {\n switch (status) {\n case Status.Warning:\n return notificationBackground ? /*#__PURE__*/React.createElement(Warning, {\n color: lightPalette[Color.Warning],\n size: 20\n }) : /*#__PURE__*/React.createElement(WarningOutline, {\n color: lightPalette[Color.Warning],\n size: 12\n });\n case Status.Error:\n return notificationBackground ? /*#__PURE__*/React.createElement(Error, {\n color: lightPalette[Color.Error],\n size: 20\n }) : /*#__PURE__*/React.createElement(ErrorOutline, {\n color: lightPalette[Color.Error],\n size: 12\n });\n case Status.Info:\n return notificationBackground ? /*#__PURE__*/React.createElement(About, {\n color: lightPalette[Color.Info],\n size: 20\n }) : /*#__PURE__*/React.createElement(InfoOutline, {\n color: lightPalette[Color.Info],\n size: 12\n });\n case Status.Success:\n default:\n return /*#__PURE__*/React.createElement(Success, {\n color: lightPalette[Color.Success],\n size: 20\n });\n }\n};\nvar PopupStatus = intrinsicComponent(function (_ref, ref) {\n var status = _ref.status,\n _ref$notificationBack = _ref.notificationBackground,\n notificationBackground = _ref$notificationBack === void 0 ? true : _ref$notificationBack,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.PopupStatus, _extends({\n status: status\n }, rest, {\n ref: ref\n }), getPopupStatusIcon(status, notificationBackground));\n});\nexport var defaultProps = {\n status: Status.Success\n};\nPopupStatus.defaultProps = defaultProps;\nexport var propTypes = {\n status: PT.oneOf(objectValues(Status))\n};\nPopupStatus.propTypes = propTypes;\nexport default PopupStatus;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Color as PaletteColor } from '@scaleflex/ui/utils/types/palette';\nimport { Status } from '../popup-status/types';\nexport var popupContentMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Status.Success, function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundGreen]);\n}), Status.Info, function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundBlue]);\n}), Status.Error, function (_ref3) {\n var palette = _ref3.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundRed]);\n}), Status.Warning, function (_ref4) {\n var palette = _ref4.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundOrange]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { FontVariant } from '../../utils/types/typography';\nimport { popupContentMixin } from './popup-content.mixin';\nvar baseClassName = 'PopupContent';\nvar LabelWrapper = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'LabelWrapper')\n}).withConfig({\n componentId: \"sc-njbmnt-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"display:flex;flex-grow:1;margin-left:44px;margin-right:28px;padding:16px;padding-right:0;overflow:hidden;background:\", \";\"], palette[PColor.ButtonPrimaryText]);\n});\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-njbmnt-1\"\n})(function (_ref2) {\n var _ref2$theme = _ref2.theme,\n palette = _ref2$theme.palette,\n font = _ref2$theme.typography.font;\n return css([\"max-width:100%;overflow:hidden;text-overflow:ellipsis;color:\", \";\", \"\"], palette[PColor.TextPrimary], font[FontVariant.TextSmallUp]);\n});\nvar PopupContent = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'PopupContent')\n}).withConfig({\n componentId: \"sc-njbmnt-2\"\n})(function (_ref3) {\n var theme = _ref3.theme;\n return css([\"position:relative;display:flex;align-items:center;width:360px;border-radius:4px;box-shadow:0px 2px 6px \", \";\"], theme.palette[PColor.LargeShadow]);\n});\nvar CloseWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'PopupContent')\n}).withConfig({\n componentId: \"sc-njbmnt-3\"\n})(function (_ref4) {\n var theme = _ref4.theme;\n return css([\"position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:flex-start;box-sizing:border-box;padding:2px;height:fit-content;cursor:pointer;background:\", \";border-radius:0 4px 4px 0;height:100%;\"], theme.palette[PColor.BackgroundStateless]);\n});\nvar PopupStatus = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'PopupStatus')\n}).withConfig({\n componentId: \"sc-njbmnt-4\"\n})(function (_ref5) {\n var _ref5$status = _ref5.status,\n status = _ref5$status === void 0 ? 'success' : _ref5$status;\n return css([\"position:absolute;display:flex;left:0;z-index:1;height:100%;min-width:44px;align-items:center;justify-content:center;box-sizing:border-box;border-radius:4px 0 0 4px;\", \"\"], popupContentMixin[status]);\n});\nvar Styled = applyDisplayNames({\n PopupContent: PopupContent,\n PopupStatus: PopupStatus,\n LabelWrapper: LabelWrapper,\n CloseWrapper: CloseWrapper,\n Label: Label\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"onClose\", \"message\", \"status\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport PopupStatus from '../popup-status';\nimport CrossButton from '../cross-button/cross-button.component';\nimport { defaultProps as popupStatusDefaultProps, propTypes as popupStatusPropTypes } from '../popup-status/popup-status.component';\nimport Styled from './popup-content.styles';\nvar PopupContent = intrinsicComponent(function (_ref, ref) {\n var onClose = _ref.onClose,\n message = _ref.message,\n status = _ref.status,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.PopupContent, _extends({}, rest, {\n ref: ref\n }), /*#__PURE__*/React.createElement(Styled.PopupStatus, _extends({\n status: status,\n message: message\n }, rest), /*#__PURE__*/React.createElement(PopupStatus, {\n status: status\n })), /*#__PURE__*/React.createElement(Styled.LabelWrapper, null, /*#__PURE__*/React.createElement(Styled.Label, null, message)), /*#__PURE__*/React.createElement(Styled.CloseWrapper, null, /*#__PURE__*/React.createElement(CrossButton, {\n size: \"sm\",\n onClick: onClose\n })));\n});\nexport var defaultProps = _objectSpread({}, popupStatusDefaultProps);\nPopupContent.defaultProps = defaultProps;\nexport var propTypes = _objectSpread(_objectSpread({}, popupStatusPropTypes), {}, {\n message: PT.node.isRequired,\n onClose: PT.func\n});\nPopupContent.propTypes = propTypes;\nexport default PopupContent;","export var Horizontal = {\n Center: 'center',\n Left: 'left',\n Right: 'right'\n};","export var Vertical = {\n Top: 'top',\n Bottom: 'bottom'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PaletteColor } from '../../utils/types/palette';\nimport { Horizontal, Vertical } from './types';\nexport var positionHorizontalMixin = _defineProperty(_defineProperty(_defineProperty({}, Horizontal.Left, css([\"left:25px;right:auto;\"])), Horizontal.Center, css([\"left:50%;right:auto;transform:translateX(-50%);\"])), Horizontal.Right, css([\"left:auto;right:25px;\"]));\nexport var positionVerticalMixin = _defineProperty(_defineProperty({}, Vertical.Top, css([\"top:25px;bottom:auto;\"])), Vertical.Bottom, css([\"top:auto;bottom:25px;\"]));\n\n// export const errorMixin = ({ theme: { palette } }: WithTheme) => css`\n// background: ${palette[PaletteColor.BackgroundSecondary]} !important;\n// border: 1px solid ${palette[PaletteColor.Error]} !important;\n// `;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PColor } from '../../utils/types/palette';\n// import { FontVariant } from '../../utils/types/typography';\n// import { BorderRadiusSize as BRSize } from '../../utils/types/shape';\n\nimport { positionHorizontalMixin, positionVerticalMixin } from './popup.mixin';\nimport { Horizontal, Vertical } from './types';\nvar baseClassName = 'Popup';\nvar Popup = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-jmtjri-0\"\n})(function (_ref) {\n var anchorOrigin = _ref.anchorOrigin;\n return css([\"position:fixed;display:flex;align-items:center;justify-content:center;z-index:1400;\", \" \", \"\"], positionHorizontalMixin[(anchorOrigin === null || anchorOrigin === void 0 ? void 0 : anchorOrigin.horizontal) || Horizontal.Left], positionVerticalMixin[(anchorOrigin === null || anchorOrigin === void 0 ? void 0 : anchorOrigin.vertical) || Vertical.Bottom]);\n});\nvar Styled = applyDisplayNames({\n Popup: Popup\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"autoHideDuration\", \"anchorOrigin\", \"open\", \"onClose\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues, generateClassNames } from '../../utils/functions';\nimport usePortal from '../../hooks/use-portal';\nimport PopupContent, { defaultProps as cDefaultProps, propTypes as cPropTypes } from '../popup-content/popup-content.component';\nimport { Horizontal, Vertical } from './types';\nimport Styled from './popup.styles';\nvar Popup = intrinsicComponent(function (props, ref) {\n var autoHideDuration = props.autoHideDuration,\n anchorOrigin = props.anchorOrigin,\n open = props.open,\n onClose = props.onClose,\n rest = _objectWithoutProperties(props, _excluded);\n var target = usePortal(generateClassNames('Popup'));\n var _useState = useState(autoHideDuration),\n _useState2 = _slicedToArray(_useState, 2),\n hoverHideDuration = _useState2[0],\n setHoverHideDuration = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isHovering = _useState4[0],\n setIsHovering = _useState4[1];\n var handleMouseLeave = function handleMouseLeave() {\n setIsHovering(false);\n setHoverHideDuration(1000);\n };\n useEffect(function () {\n if (open) setHoverHideDuration(autoHideDuration);\n }, [open]);\n useEffect(function () {\n var timeout = null;\n if (open && !isHovering && hoverHideDuration && typeof onClose === 'function') {\n timeout = setTimeout(onClose, hoverHideDuration);\n }\n return function () {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, [hoverHideDuration, isHovering, open, onClose]);\n var render = function render() {\n if (!open) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Styled.Popup, _extends({\n onMouseEnter: function onMouseEnter() {\n return setIsHovering(true);\n },\n onMouseLeave: handleMouseLeave\n }, props), /*#__PURE__*/React.createElement(PopupContent, _extends({\n onClose: onClose\n }, rest, {\n ref: ref\n })));\n };\n return /*#__PURE__*/createPortal(render(), target);\n});\nPopup.defaultProps = _objectSpread(_objectSpread({}, cDefaultProps), {}, {\n open: false,\n autoHideDuration: 5000,\n anchorOrigin: {\n vertical: Vertical.Bottom,\n horizontal: Horizontal.Left\n }\n});\nPopup.propTypes = _objectSpread(_objectSpread({}, cPropTypes), {}, {\n anchorOrigin: PT.exact({\n vertical: PT.oneOf(objectValues(Vertical)),\n horizontal: PT.oneOf(objectValues(Horizontal))\n }),\n open: PT.bool,\n autoHideDuration: PT.number,\n onClose: PT.func\n});\nexport default Popup;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PC } from '../../utils/types/palette';\nvar baseClassName = 'RotationSlider';\nvar RotationSliderList = /*#__PURE__*/styled.ul.attrs({\n className: generateClassNames(baseClassName, 'list')\n}).withConfig({\n componentId: \"sc-1xuruq0-0\"\n})([\"display:flex;align-items:center;position:relative;padding:0;width:100%;list-style:none;\"]);\nvar RotationSliderBigDot = /*#__PURE__*/styled.li.attrs({\n className: generateClassNames(baseClassName, 'big-dot')\n}).withConfig({\n componentId: \"sc-1xuruq0-1\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"width:8px;height:8px;border-radius:50%;background-color:\", \";cursor:pointer;\"], palette[PC.LinkPrimary]);\n});\nvar RotationSliderSmallDotWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'small-dot-wrapper')\n}).withConfig({\n componentId: \"sc-1xuruq0-2\"\n})([\"padding:2px;\"]);\nvar RotationSliderSmallDot = /*#__PURE__*/styled.li.attrs({\n className: generateClassNames(baseClassName, 'small-dot')\n}).withConfig({\n componentId: \"sc-1xuruq0-3\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"width:2px;height:2px;border-radius:50%;background-color:\", \";cursor:pointer;\"], palette[PC.LinkPrimary]);\n});\nvar RotationSliderControl = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'control')\n}).withConfig({\n componentId: \"sc-1xuruq0-4\"\n})(function (_ref3) {\n var palette = _ref3.theme.palette;\n return css([\"display:flex;justify-content:center;align-items:center;position:absolute;height:18px;width:2px;transform:translate(-50%,-50%);top:50%;background-color:\", \";& > input{border:0px;clip:rect(0px,0px,0px,0px);height:100%;margin:-1px;overflow:hidden;padding:0px;position:absolute;white-space:nowrap;width:100%;direction:ltr;}&::before{position:absolute;content:'';border-radius:inherit;width:100%;height:100%;box-shadow:0px 3px 1px -2px rgb(0 0 0 / 20%),0px 2px 2px 0px rgb(0 0 0 / 14%),0px 1px 5px 0px rgb(0 0 0 / 12%);}&::after{position:absolute;content:'';border-radius:50%;width:42px;height:42px;top:50%;left:50%;transform:translate(-50%,-50%);}\"], palette[PC.LinkActive]);\n});\nvar RotationSliderMark = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'mark')\n}).withConfig({\n componentId: \"sc-1xuruq0-5\"\n})([\"padding:4px;\"]);\nvar RotationSliderMarkText = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'mark-text')\n}).withConfig({\n componentId: \"sc-1xuruq0-6\"\n})(function (_ref4) {\n var palette = _ref4.theme.palette;\n return css([\"position:absolute;top:20px;font-size:14px;transform:translateX(-10%);color:\", \";\"], palette[PC.TextPrimary]);\n});\nvar Styled = applyDisplayNames({\n RotationSliderList: RotationSliderList,\n RotationSliderBigDot: RotationSliderBigDot,\n RotationSliderSmallDotWrapper: RotationSliderSmallDotWrapper,\n RotationSliderSmallDot: RotationSliderSmallDot,\n RotationSliderControl: RotationSliderControl,\n RotationSliderMark: RotationSliderMark,\n RotationSliderMarkText: RotationSliderMarkText\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"min\", \"max\", \"angle\", \"onChange\", \"onMouseDown\", \"onMouseUp\", \"step\", \"labelTooltipOptions\", \"annotation\", \"hideMarkText\", \"showCurrentMarkText\", \"value\", \"railProps\", \"trackProps\", \"thumbProps\", \"labelTooltipProps\", \"markStyles\", \"markTextStyles\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Slider from '../slider';\nimport { LabelTooltip } from '../slider/types';\nimport Styled from './rotation-slider.styles';\nvar RotationSlider = intrinsicComponent(function (_ref, ref) {\n var _ref$min = _ref.min,\n min = _ref$min === void 0 ? 0 : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 100 : _ref$max,\n _ref$angle = _ref.angle,\n angle = _ref$angle === void 0 ? 10 : _ref$angle,\n onChange = _ref.onChange,\n onMouseDown = _ref.onMouseDown,\n onMouseUp = _ref.onMouseUp,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step,\n _ref$labelTooltipOpti = _ref.labelTooltipOptions,\n labelTooltipOptions = _ref$labelTooltipOpti === void 0 ? LabelTooltip.Off : _ref$labelTooltipOpti,\n _ref$annotation = _ref.annotation,\n annotation = _ref$annotation === void 0 ? '°' : _ref$annotation,\n _ref$hideMarkText = _ref.hideMarkText,\n hideMarkText = _ref$hideMarkText === void 0 ? false : _ref$hideMarkText,\n _ref$showCurrentMarkT = _ref.showCurrentMarkText,\n showCurrentMarkText = _ref$showCurrentMarkT === void 0 ? false : _ref$showCurrentMarkT,\n value = _ref.value,\n _ref$railProps = _ref.railProps,\n railProps = _ref$railProps === void 0 ? {} : _ref$railProps,\n _ref$trackProps = _ref.trackProps,\n trackProps = _ref$trackProps === void 0 ? {} : _ref$trackProps,\n _ref$thumbProps = _ref.thumbProps,\n thumbProps = _ref$thumbProps === void 0 ? {} : _ref$thumbProps,\n _ref$labelTooltipProp = _ref.labelTooltipProps,\n labelTooltipProps = _ref$labelTooltipProp === void 0 ? {} : _ref$labelTooltipProp,\n _ref$markStyles = _ref.markStyles,\n markStyles = _ref$markStyles === void 0 ? {} : _ref$markStyles,\n _ref$markTextStyles = _ref.markTextStyles,\n markTextStyles = _ref$markTextStyles === void 0 ? {} : _ref$markTextStyles,\n rest = _objectWithoutProperties(_ref, _excluded);\n var handleChange = function handleChange(event, newValue) {\n if (onChange) {\n onChange(event, newValue);\n }\n };\n var getValue = function getValue() {\n if (value || value === 0) {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n return value;\n }\n return min;\n };\n var showMarkText = function showMarkText(index) {\n if (hideMarkText) return false;\n if (!showCurrentMarkText) return true;\n return getValue() === index;\n };\n var renderBar = function renderBar() {\n var barDom = [];\n var barDiv;\n for (var i = min; i <= max; i += step) {\n barDiv = [];\n if (i % angle === 0 || i === max) {\n barDiv = /*#__PURE__*/React.createElement(Styled.RotationSliderMark, {\n key: i,\n style: _objectSpread({}, markStyles)\n }, showMarkText(i) && /*#__PURE__*/React.createElement(Styled.RotationSliderMarkText, {\n style: _objectSpread({}, markTextStyles)\n }, i === min + 1 ? max : i, /*#__PURE__*/React.createElement(\"sup\", null, annotation)), /*#__PURE__*/React.createElement(Styled.RotationSliderBigDot, null));\n } else if (i % 10 === 0) {\n barDiv = /*#__PURE__*/React.createElement(Styled.RotationSliderSmallDotWrapper, {\n key: i\n }, /*#__PURE__*/React.createElement(Styled.RotationSliderSmallDot, null));\n }\n if (!Array.isArray(barDiv)) {\n barDom.push(barDiv);\n }\n }\n return barDom;\n };\n return /*#__PURE__*/React.createElement(Slider, _extends({\n min: min,\n max: max,\n step: step,\n value: getValue(),\n hideTrack: true,\n hideAnnotation: true,\n annotation: annotation,\n onChange: handleChange,\n labelTooltip: labelTooltipOptions,\n ref: ref,\n components: {\n Rail: function Rail(props, style) {\n return /*#__PURE__*/React.createElement(Styled.RotationSliderList, _extends({}, props, {\n styles: _objectSpread({}, style)\n }), renderBar());\n },\n Thumb: Styled.RotationSliderControl\n },\n componentsProps: {\n rail: _objectSpread(_objectSpread({}, railProps), {}, {\n style: _objectSpread({}, railProps.style)\n }),\n track: _objectSpread(_objectSpread({}, trackProps), {}, {\n style: _objectSpread({}, trackProps.style)\n }),\n thumb: _objectSpread(_objectSpread({}, thumbProps), {}, {\n style: _objectSpread({\n top: '15%'\n }, thumbProps.style)\n }),\n labelTooltip: _objectSpread(_objectSpread({}, labelTooltipProps), {}, {\n style: _objectSpread({}, labelTooltipProps.style)\n })\n }\n }, rest, {\n defaultValue: Number(rest.defaultValue),\n style: _objectSpread({\n width: 'auto',\n height: 'auto'\n }, rest.style)\n }));\n});\nRotationSlider.defaultProps = {\n annotation: '°',\n min: 0,\n max: 100,\n step: 1,\n labelTooltipOptions: LabelTooltip.Off\n};\nRotationSlider.propTypes = {\n value: PT.oneOfType([PT.array, PT.number]),\n min: PT.number,\n max: PT.number,\n angle: PT.number,\n onChange: PT.func,\n onMouseDown: PT.func,\n onMouseUp: PT.func,\n step: PT.number,\n annotation: PT.string,\n hideMarkText: PT.bool,\n showCurrentMarkText: PT.bool,\n railProps: PT.object,\n trackProps: PT.object,\n thumbProps: PT.object,\n labelTooltipProps: PT.object,\n markStyles: PT.object,\n markTextStyles: PT.object,\n labelTooltipOptions: PT.oneOf(objectValues(LabelTooltip))\n};\nexport default RotationSlider;","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\n// import type { With } from '../../utils/types';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PColor } from '../../utils/types/palette';\n// import type { SelectGroupProps } from './select-group.props';\nimport StyledInputGroup from '../input-group/input-group.styles';\nvar baseClassName = 'SelectGroup';\nvar SelectGroup = /*#__PURE__*/styled(StyledInputGroup.InputGroup).attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1uvutwe-0\"\n})([\"\"]);\nvar Styled = applyDisplayNames({\n SelectGroup: SelectGroup\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"size\", \"error\", \"label\", \"placeholder\", \"hint\", \"LabelProps\", \"SelectProps\", \"selectProps\", \"scroll\", \"fullWidth\", \"showSelectionKey\", \"value\", \"multiple\", \"hideMenuItemsActions\", \"onChange\", \"readOnly\", \"disabled\", \"showClearIcon\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { InputSize } from '../../utils/types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Label from '../label';\nimport { propTypes as labelPropTypes } from '../label/label.component';\nimport Select from '../select';\nimport { propTypes as selectPropTypes } from '../select/select.component';\nimport FormHint from '../form-hint';\nimport Styled from './select-group.styles';\nvar SelectGroup = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n size = _ref.size,\n error = _ref.error,\n label = _ref.label,\n placeholder = _ref.placeholder,\n hint = _ref.hint,\n LabelPropsData = _ref.LabelProps,\n SelectPropsData = _ref.SelectProps,\n selectProps = _ref.selectProps,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? true : _ref$scroll,\n fullWidth = _ref.fullWidth,\n showSelectionKey = _ref.showSelectionKey,\n value = _ref.value,\n multiple = _ref.multiple,\n hideMenuItemsActions = _ref.hideMenuItemsActions,\n onChange = _ref.onChange,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n showClearIcon = _ref.showClearIcon,\n rest = _objectWithoutProperties(_ref, _excluded);\n var renderLabel = function renderLabel() {\n if (label) {\n if (typeof label === 'function') {\n return label({\n error: error\n });\n }\n if (_typeof(label) === 'object') {\n return label;\n }\n return /*#__PURE__*/React.createElement(Label, _extends({\n error: error\n }, LabelPropsData || {}), label);\n }\n return null;\n };\n var renderHint = function renderHint() {\n if (hint) {\n if (typeof hint === 'function') {\n return hint({\n error: error\n });\n }\n if (_typeof(hint) === 'object') {\n return hint;\n }\n return /*#__PURE__*/React.createElement(FormHint, {\n error: error\n }, hint);\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Styled.SelectGroup, _extends({}, rest, {\n ref: ref\n }), renderLabel(), /*#__PURE__*/React.createElement(Select, _extends({\n error: error,\n value: value,\n size: size,\n scroll: scroll,\n onChange: onChange,\n multiple: multiple,\n fullWidth: Boolean(fullWidth)\n }, SelectPropsData || {}, {\n selectProps: selectProps,\n readOnly: readOnly,\n disabled: disabled,\n placeholder: placeholder,\n showSelectionKey: showSelectionKey,\n hideMenuItemsActions: hideMenuItemsActions,\n showClearIcon: showClearIcon\n }), children), renderHint());\n});\nSelectGroup.defaultProps = {\n error: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n scroll: true,\n hideMenuItemsActions: false\n};\nvar size = selectPropTypes.size,\n restSelectPropTypes = _objectWithoutProperties(selectPropTypes, [\"size\"]);\nSelectGroup.propTypes = _objectSpread(_objectSpread({}, restSelectPropTypes), {}, {\n // Extends from SelectProps: multiple, error, children, value, onChange\n fullWidth: PT.bool,\n size: PT.oneOf(objectValues(InputSize)),\n label: PT.node,\n hint: PT.node,\n LabelProps: PT.exact(labelPropTypes),\n SelectProps: PT.exact(selectPropTypes),\n selectProps: PT.object,\n readOnly: PT.bool,\n scroll: PT.bool,\n showSelectionKey: PT.bool,\n disabled: PT.bool\n});\nexport default SelectGroup;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nvar baseClassName = 'Backdrop';\nvar Backdrop = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-txa5a-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"position:fixed;display:flex;align-items:center;justify-content:center;inset:0px;background-color:\", \";transition:opacity 251ms cubic-bezier(0.4,0,0.2,1) 0ms;opacity:1;z-index:-1;\"], palette[PColor.Extra_0_3_Overlay]);\n});\nvar Styled = applyDisplayNames({\n Backdrop: Backdrop\n});\nexport default Styled;","import _objectDestructuringEmpty from \"@babel/runtime/helpers/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './backdrop.styles';\nvar Backdrop = intrinsicComponent(function (_ref, ref) {\n var rest = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n return /*#__PURE__*/React.createElement(Styled.Backdrop, _extends({}, rest, {\n ref: ref\n }));\n});\nBackdrop.defaultProps = {};\nBackdrop.propTypes = {};\nexport default Backdrop;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames, scrollBar } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { Shadows as PShadows } from '../../utils/types/shadows';\nimport { FontVariant as FV } from '../../utils/types/typography/font-variant';\nimport Accordion from '../accordion/accordion.component';\nimport AccordionHeaderStyled from '../accordion-header/accordion-header.styles';\nimport AccordionDetailsStyled from '../accordion-details/accordion-details.styles';\nvar baseClassName = 'Drawer';\nvar TemporaryDrawer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'temporary')\n}).withConfig({\n componentId: \"sc-1riasfx-0\"\n})(function (_ref) {\n var open = _ref.open;\n return css([\"position:absolute;inset:0px;z-index:1200;visibility:\", \";\"], !open && 'hidden');\n});\nvar PersistentDrawer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'persistent')\n}).withConfig({\n componentId: \"sc-1riasfx-1\"\n})([\"\"]);\nvar Drawer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1riasfx-2\"\n})(function (_ref2) {\n var open = _ref2.open,\n isCollapsed = _ref2.isCollapsed,\n _ref2$top = _ref2.top,\n top = _ref2$top === void 0 ? 0 : _ref2$top,\n _ref2$theme = _ref2.theme,\n palette = _ref2$theme.palette,\n shadows = _ref2$theme.shadows,\n breakpoints = _ref2$theme.breakpoints;\n return css([\"display:flex;flex-direction:column;flex:1 0 auto;background-color:\", \";box-shadow:\", \";overflow-y:overlay;overflow-x:hidden;transform:\", \";visibility:\", \";transition:200ms;height:calc(100% - \", \"px);\", \"{margin-top:0px;height:100%;}\", \" &{margin-top:0px;height:100%;}box-sizing:border-box;width:\", \";\", \"\"], palette[PColor.BackgroundStateless], shadows[PShadows.LeftPanelMd], open ? 'none' : 'translateX(-100%)', !open && 'hidden', top, breakpoints.down('md'), breakpoints.classes.sm, isCollapsed ? '68px' : '302px', scrollBar);\n});\nvar Header = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'header')\n}).withConfig({\n componentId: \"sc-1riasfx-3\"\n})(function (_ref3) {\n var isCollapsed = _ref3.isCollapsed;\n return css([\"display:\", \";justify-content:flex-start;align-items:center;position:relative;text-decoration:none;width:100%;box-sizing:border-box;text-align:left;margin-top:12px;transition:background-color 100ms ease-out;\"], isCollapsed ? 'none' : 'flex');\n});\nvar Body = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'body')\n}).withConfig({\n componentId: \"sc-1riasfx-4\"\n})([\"flex:1 1 auto;.SfxAccordionDetails-root{margin:0;}\"]);\nvar Footer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'footer')\n}).withConfig({\n componentId: \"sc-1riasfx-5\"\n})(function (_ref4) {\n var isCollapsed = _ref4.isCollapsed;\n return css([\"display:flex;flex-direction:column;width:100%;padding:\", \";\"], isCollapsed ? '0px' : '0px 8px');\n});\nvar List = /*#__PURE__*/styled.ul.attrs({\n className: generateClassNames(baseClassName, 'list')\n}).withConfig({\n componentId: \"sc-1riasfx-6\"\n})(function () {\n return css([\"list-style:none;margin:12px 0;padding:0;position:relative;\"]);\n});\nvar Item = /*#__PURE__*/styled.li.attrs({\n className: generateClassNames(baseClassName, 'item')\n}).withConfig({\n componentId: \"sc-1riasfx-7\"\n})(function (_ref5) {\n var palette = _ref5.theme.palette,\n isCollapsed = _ref5.isCollapsed,\n selected = _ref5.selected;\n return css([\"display:\", \";justify-content:flex-start;align-items:center;position:relative;text-decoration:none;width:100%;box-sizing:border-box;text-align:left;padding:13px 16px;transition:background-color 100ms ease-out;margin-bottom:4px;cursor:pointer;&:hover{background-color:\", \";& > *{color:\", \";}}\", \"\"], isCollapsed ? 'none' : 'flex', palette[PColor.BackgroundActive], palette[PColor.AccentStateless], selected && css([\"background-color:\", \";& > *{color:\", \" !important;}\"], palette[PColor.BackgroundActive], palette[PColor.AccentStateless]));\n});\nvar ItemText = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'text')\n}).withConfig({\n componentId: \"sc-1riasfx-8\"\n})(function (_ref6) {\n var _ref6$theme = _ref6.theme,\n palette = _ref6$theme.palette,\n font = _ref6$theme.typography.font,\n fontKey = _ref6.font,\n isCollapsed = _ref6.isCollapsed;\n return css([\"flex:1 1 auto;color:\", \";\", \";transition:color 100ms ease-out;display:\", \";user-select:none;\"], palette[PColor.TextPrimary], font[fontKey || FV.LabelLarge], isCollapsed && 'none');\n});\nvar Icon = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'icon')\n}).withConfig({\n componentId: \"sc-1riasfx-9\"\n})(function (_ref7) {\n var palette = _ref7.theme.palette,\n isCollapsed = _ref7.isCollapsed;\n return css([\"display:flex;flex-shrink:0;color:\", \";margin-right:\", \";transition:color 100ms ease-out;\"], palette[PColor.IconsPrimary], isCollapsed ? '0px' : '12px');\n});\nvar ItemButton = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'item-button')\n}).withConfig({\n componentId: \"sc-1riasfx-10\"\n})(function (_ref8) {\n var palette = _ref8.theme.palette,\n isCollapsed = _ref8.isCollapsed,\n selected = _ref8.selected;\n return css([\"display:flex;justify-content:\", \";align-items:center;border-radius:4px;box-sizing:border-box;text-align:left;padding:\", \";width:\", \";margin-bottom:8px;margin:\", \";transition:background-color 150ms cubic-bezier(0.4,0,0.2,1) 0ms;cursor:pointer;&:hover{background-color:\", \";& > *{color:\", \";}}\", \"\"], isCollapsed ? 'center' : 'flex-start', isCollapsed ? '12px 0px' : '13px 16px', isCollapsed && '56px', isCollapsed && '8px auto', palette[PColor.BackgroundActive], palette[PColor.AccentStateless], selected && css([\"background-color:\", \";& > *{color:\", \";}\"], palette[PColor.BackgroundActive], palette[PColor.AccentStateless]));\n});\nvar CollapsedButton = /*#__PURE__*/styled(ItemButton).attrs({\n className: generateClassNames(baseClassName, 'item-button')\n}).withConfig({\n componentId: \"sc-1riasfx-11\"\n})(function (_ref9) {\n var isCollapsed = _ref9.isCollapsed;\n return css([\"\", \"\"], !isCollapsed && css([\"padding:13px 16px;\"]));\n});\nvar DrawerAccordion = /*#__PURE__*/styled(Accordion).attrs({\n className: generateClassNames(baseClassName, 'accordion')\n}).withConfig({\n componentId: \"sc-1riasfx-12\"\n})(function (_ref10) {\n var _ref10$theme = _ref10.theme,\n palette = _ref10$theme.palette,\n font = _ref10$theme.typography.font,\n selected = _ref10.selected;\n return css([\"\", \"{padding:13px 16px;transition:background-color 100ms ease-out;\", \"{\", \";color:\", \";}&:hover{background-color:\", \";& > *{color:\", \";}}\", \"}\", \"{padding:0px 16px;}\"], AccordionHeaderStyled.Header, AccordionHeaderStyled.Label, font[FV.LabelLargeEmphasis], palette[PColor.TextPrimary], palette[PColor.BackgroundActive], palette[PColor.AccentStateless], selected && css([\"\", \"{color:\", \";}\"], AccordionHeaderStyled.Label, palette[PColor.AccentStateless]), AccordionDetailsStyled.AccordionDetails);\n});\nvar Styled = applyDisplayNames({\n TemporaryDrawer: TemporaryDrawer,\n PersistentDrawer: PersistentDrawer,\n Drawer: Drawer,\n Header: Header,\n Body: Body,\n Footer: Footer,\n List: List,\n Item: Item,\n ItemButton: ItemButton,\n Icon: Icon,\n ItemText: ItemText,\n DrawerAccordion: DrawerAccordion,\n CollapsedButton: CollapsedButton\n});\nexport default Styled;","import { createContext } from 'react';\nvar DrawerContext = /*#__PURE__*/createContext({\n isCollapsed: false,\n size: 20\n});\nif (process.env.NODE_ENV !== 'production') {\n DrawerContext.displayName = 'DrawerContext';\n}\nexport default DrawerContext;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"font\"];\nimport React, { useContext } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { FontVariant } from '../../utils/types/typography/font-variant';\nimport Styled from './drawer.styles';\nimport DrawerContext from './drawer.context';\nvar DrawerItemText = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n font = _ref.font,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed;\n return /*#__PURE__*/React.createElement(Styled.ItemText, _extends({\n font: font,\n isCollapsed: isCollapsed\n }, rest, {\n ref: ref\n }), children);\n});\nDrawerItemText.defaultProps = {};\nDrawerItemText.propTypes = {\n font: PT.oneOf(objectValues(FontVariant))\n};\nexport default DrawerItemText;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"size\"];\nimport React, { useContext } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './drawer.styles';\nimport DrawerContext from './drawer.context';\nvar DrawerItemIcon = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n iconSize = _ref.size,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed,\n size = _useContext.size;\n return /*#__PURE__*/React.createElement(Styled.Icon, _extends({}, rest, {\n isCollapsed: isCollapsed,\n ref: ref\n }), children && typeof children === 'function' ? children({\n size: size || iconSize\n }) : children);\n});\nDrawerItemIcon.defaultProps = {\n size: 20\n};\nDrawerItemIcon.propTypes = {\n size: PT.number,\n children: PT.oneOfType([PT.node, PT.func]).isRequired\n};\nexport default DrawerItemIcon;","export var Variant = {\n Auto: 'auto',\n Temporary: 'temporary',\n Persistent: 'persistent'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"open\", \"iconsSize\", \"collapsed\", \"top\", \"hideBackdrop\", \"disablePortal\", \"collapseButtonLabel\", \"persistentDrawerStyles\", \"temproryDrawerStyles\", \"variant\", \"onClose\", \"onCollapse\", \"onCollapseClick\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useEffect, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport ArrowSidebarLeftOutline from '@scaleflex/icons/arrow-sidebar-left-outline';\nimport ArrowSidebarRightOutline from '@scaleflex/icons/arrow-sidebar-right-outline';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { useMediaQuery, useTheme } from '../../theme/hooks';\nimport DrawerItemText from './drawer-item-text-component';\nimport DrawerItemIcon from './drawer-item-icon.component';\nimport DrawerContext from './drawer.context';\nimport Backdrop from '../backdrop';\nimport Styled from './drawer.styles';\nimport { Variant } from './types';\nvar Drawer = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n open = _ref.open,\n _ref$iconsSize = _ref.iconsSize,\n iconsSize = _ref$iconsSize === void 0 ? 20 : _ref$iconsSize,\n _ref$collapsed = _ref.collapsed,\n collapsed = _ref$collapsed === void 0 ? false : _ref$collapsed,\n top = _ref.top,\n hideBackdrop = _ref.hideBackdrop,\n disablePortal = _ref.disablePortal,\n _ref$collapseButtonLa = _ref.collapseButtonLabel,\n collapseButtonLabel = _ref$collapseButtonLa === void 0 ? 'Collapse menu' : _ref$collapseButtonLa,\n _ref$persistentDrawer = _ref.persistentDrawerStyles,\n persistentDrawerStyles = _ref$persistentDrawer === void 0 ? {} : _ref$persistentDrawer,\n _ref$temproryDrawerSt = _ref.temproryDrawerStyles,\n temproryDrawerStyles = _ref$temproryDrawerSt === void 0 ? {} : _ref$temproryDrawerSt,\n _ref$variant = _ref.variant,\n variant = _ref$variant === void 0 ? Variant.Auto : _ref$variant,\n onClose = _ref.onClose,\n onCollapse = _ref.onCollapse,\n onCollapseClick = _ref.onCollapseClick,\n rest = _objectWithoutProperties(_ref, _excluded);\n var theme = useTheme();\n var matchDownXl = useMediaQuery(theme.breakpoints.down('xl'));\n var _useState = useState(collapsed),\n _useState2 = _slicedToArray(_useState, 2),\n isCollapsed = _useState2[0],\n setIsCollapsed = _useState2[1];\n var temproryDrawerRef = useRef(null);\n var DrawerIconsSize = useMemo(function () {\n return iconsSize;\n }, [iconsSize]);\n var target = document.querySelector('body');\n useEffect(function () {\n setIsCollapsed(collapsed);\n }, [collapsed]);\n useEffect(function () {\n if (onCollapse) {\n onCollapse(isCollapsed);\n }\n }, [isCollapsed]);\n var handleCollapse = function handleCollapse() {\n var newCollpaseState = !isCollapsed;\n setIsCollapsed(newCollpaseState);\n if (onCollapseClick) {\n onCollapseClick(newCollpaseState);\n }\n };\n var handleClose = function handleClose() {\n if (typeof onClose === 'function') {\n onClose();\n }\n };\n var keyListener = function keyListener(ev) {\n var isTemporaryDrawer = false;\n if (temproryDrawerRef !== null && temproryDrawerRef !== void 0 && temproryDrawerRef.current) {\n var _temproryDrawerRef$cu;\n isTemporaryDrawer = (temproryDrawerRef === null || temproryDrawerRef === void 0 || (_temproryDrawerRef$cu = temproryDrawerRef.current) === null || _temproryDrawerRef$cu === void 0 ? void 0 : _temproryDrawerRef$cu.offsetWidth) > 0;\n }\n if (ev.key === 'Escape' && isTemporaryDrawer) {\n handleClose();\n }\n };\n useEffect(function () {\n document.addEventListener('keydown', keyListener);\n return function () {\n return document.removeEventListener('keydown', keyListener);\n };\n }, []);\n var renderDrawer = function renderDrawer(showCollapsedButton) {\n return /*#__PURE__*/React.createElement(Styled.Drawer, _extends({\n open: open,\n top: top\n }, rest, {\n isCollapsed: showCollapsedButton ? isCollapsed : false,\n ref: ref\n }), children, showCollapsedButton && /*#__PURE__*/React.createElement(Styled.CollapsedButton, {\n onClick: handleCollapse,\n isCollapsed: isCollapsed\n }, /*#__PURE__*/React.createElement(DrawerItemIcon, null, isCollapsed ? function (props) {\n return /*#__PURE__*/React.createElement(ArrowSidebarRightOutline, _extends({}, props, {\n size: iconsSize\n }));\n } : function (props) {\n return /*#__PURE__*/React.createElement(ArrowSidebarLeftOutline, _extends({}, props, {\n size: iconsSize\n }));\n }), /*#__PURE__*/React.createElement(DrawerItemText, null, collapseButtonLabel)));\n };\n var renderBackdrop = function renderBackdrop() {\n return !hideBackdrop && open ? /*#__PURE__*/React.createElement(Backdrop, {\n onClick: onClose\n }) : null;\n };\n var temporaryDrawer = function temporaryDrawer() {\n return disablePortal ? /*#__PURE__*/React.createElement(Styled.TemporaryDrawer, {\n ref: temproryDrawerRef,\n style: _objectSpread({}, temproryDrawerStyles),\n open: open\n }, renderBackdrop(), renderDrawer(false)) : ( /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Styled.TemporaryDrawer, {\n ref: temproryDrawerRef,\n style: _objectSpread({}, temproryDrawerStyles),\n open: open\n }, renderBackdrop(), renderDrawer(false)), target));\n };\n var persistentDrawer = function persistentDrawer() {\n return /*#__PURE__*/React.createElement(Styled.PersistentDrawer, {\n style: _objectSpread({}, persistentDrawerStyles)\n }, renderDrawer(true));\n };\n var getDrawerVariant = function getDrawerVariant() {\n switch (variant) {\n case Variant.Auto:\n return matchDownXl ? temporaryDrawer() : persistentDrawer();\n case Variant.Temporary:\n return temporaryDrawer();\n case Variant.Persistent:\n return persistentDrawer();\n default:\n return matchDownXl ? temporaryDrawer() : persistentDrawer();\n }\n };\n return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n value: {\n isCollapsed: !matchDownXl ? isCollapsed : false,\n size: DrawerIconsSize\n }\n }, getDrawerVariant());\n});\nexport var defaultProps = {\n open: false,\n hideBackdrop: false,\n iconsSize: 20,\n variant: Variant.Auto\n};\nDrawer.defaultProps = defaultProps;\nexport var propTypes = {\n onClose: PT.func.isRequired,\n onCollapse: PT.func,\n onCollapseClick: PT.func,\n children: PT.node.isRequired,\n top: PT.number,\n iconsSize: PT.number,\n open: PT.bool,\n hideBackdrop: PT.bool,\n collapsed: PT.bool,\n disablePortal: PT.bool,\n collapseButtonLabel: PT.string,\n persistentDrawerStyles: PT.object,\n temproryDrawerStyles: PT.object,\n variant: PT.oneOf(objectValues(Variant))\n};\nDrawer.propTypes = propTypes;\nexport default Drawer;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React, { useContext } from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport DrawerContext from './drawer.context';\nimport Styled from './drawer.styles';\nvar DrawerHeader = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed;\n return /*#__PURE__*/React.createElement(Styled.Header, _extends({}, rest, {\n isCollapsed: isCollapsed,\n ref: ref\n }), children);\n});\nDrawerHeader.defaultProps = {};\nDrawerHeader.propTypes = {};\nexport default DrawerHeader;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './drawer.styles';\nvar DrawerBody = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Body, _extends({}, rest, {\n ref: ref\n }), children);\n});\nDrawerBody.defaultProps = {};\nDrawerBody.propTypes = {};\nexport default DrawerBody;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './drawer.styles';\nvar DrawerList = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.List, _extends({}, rest, {\n ref: ref\n }), children);\n});\nDrawerList.defaultProps = {};\nDrawerList.propTypes = {};\nexport default DrawerList;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"selected\"];\nimport React, { useContext } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport DrawerContext from './drawer.context';\nimport Styled from './drawer.styles';\nvar DrawerItem = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n selected = _ref.selected,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed;\n return /*#__PURE__*/React.createElement(Styled.Item, _extends({\n selected: selected,\n isCollapsed: isCollapsed\n }, rest, {\n ref: ref\n }), children);\n});\nDrawerItem.defaultProps = {\n selected: false\n};\nDrawerItem.propTypes = {\n selected: PT.bool\n};\nexport default DrawerItem;","import{Input,Label}from\"@scaleflex/ui/core\";import styled from\"styled-components\";import{FontVariant as FV}from\"@scaleflex/ui/utils/types/typography\";var StyledHSVOptions=styled.div.withConfig({componentId:\"sc-1rfxjvn-0\"})([\"display:flex;width:100%;justify-content:space-between;gap:10px;.SfxSlider-root{min-width:100px;}\",\"\"],function(a){var b=a.isPhoneScreen;return b&&\"\\n flex-direction: column;\\n\\n .SfxSlider-root {\\n min-width: 230px;\\n }\\n \"}),StyledSliderContainer=styled.div.withConfig({componentId:\"sc-1rfxjvn-1\"})([\"display:flex;flex-direction:column;\"]),StyledSliderLabel=styled(Label).withConfig({componentId:\"sc-1rfxjvn-2\"})([\"\",\";\"],function(a){var b=a.theme;return b.typography.font[FV.LabelExtraSmallUp]}),StyledSliderWrapper=styled.div.withConfig({componentId:\"sc-1rfxjvn-3\"})([\"display:flex;align-items:center;\"]),StyledSliderInput=styled(Input).withConfig({componentId:\"sc-1rfxjvn-4\"})([\"display:inline-block;width:40px;height:28px;padding:6px 2px;margin-left:10px;border:none;.SfxInput-Base{text-align:center;width:100%;min-width:100%;max-width:100%;}\"]);export{StyledHSVOptions,StyledSliderContainer,StyledSliderLabel,StyledSliderWrapper,StyledSliderInput};","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=-1,DEFAULT_VALUE={brightness:0},MAX_VALUE=1,sliderStyle={width:150,padding:0,margin:0},BrightnessOptions=function(a){var b,c,d=a.t,e=useFinetune(Konva.Filters.Brighten,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({brightness:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_brightness-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_brightness-option-label\"},d(\"brightness\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_brightness-option\",min:MIN_VALUE,step:.05,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.brightness)&&void 0!==b?b:DEFAULT_VALUE.brightness,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.brightness)&&void 0!==c?c:DEFAULT_VALUE.brightness,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default BrightnessOptions;","import{DEFAULT_ZOOM_FACTOR}from\"./constants\";var getZoomFitFactor=function(a,b){return Math.min(a.width/b.width,a.height/b.height)||DEFAULT_ZOOM_FACTOR};export default getZoomFitFactor;","import Custom from\"@scaleflex/icons/custom\";import Ellipse from\"@scaleflex/icons/ellipse\";import Landscape from\"@scaleflex/icons/landscape\";import Portrait from\"@scaleflex/icons/portrait\";import ImageOutline from\"@scaleflex/icons/image-outline\";import{CUSTOM_CROP,ELLIPSE_CROP,ORIGINAL_CROP}from\"../../../utils/constants\";import toPrecisedFloat from\"../../../utils/toPrecisedFloat\";export var DEFAULT_CROP_PRESETS=[{titleKey:\"custom\",ratio:CUSTOM_CROP,icon:Custom,hide:function hide(){var a=0n.width||d.height>n.height?getZoomFitFactor(n,d):DEFAULT_ZOOM_FACTOR}})),c()};return React.createElement(React.Fragment,null,React.createElement(StyledToolsBarItemButtonWrapper,null,React.createElement(StyledToolsBarItemButtonLabel,{className:\"FIE_crop-tool-label FIE_selected-crop-preset-label\",isPhoneScreen:r},g(l||\"cropTool\")),React.createElement(StyledOpenMenuButton,{className:\"FIE_crop-presets-opener-button\",color:\"link-secondary\",size:\"lg\"},b?React.createElement(MoveUpOutline,{size:10}):React.createElement(MoveDownOutline,{size:10}))),React.createElement(Menu,{className:\"FIE_crop-presets-menu\",anchorEl:b,enableOverlay:!0,onClose:c,open:!!b,position:\"top\",popperOptions:{modifiers:[{name:\"offset\",options:{offset:[0,4]}}]},maxHeight:\"100%\"},React.createElement(StyledMenu,null,s.map(function renderPreset(a){var b=a.titleKey,c=a.descriptionKey,d=a.ratio,e=a.width,f=a.height,h=a.groups,i=a.icon,j=a.disableManualResize,l=a.noEffect;return h?React.createElement(CropPresetGroupsList,{key:b,titleKey:b,groups:h,Icon:i,theme:p,onItemSelect:t,t:g,disableManualResize:j}):React.createElement(CropPresetItem,{key:d,ratio:null!==d&&void 0!==d?d:toPrecisedFloat(e/f),titleKey:b,t:g,description:g(c),Icon:i,isActive:(k||ORIGINAL_CROP)===(null!==d&&void 0!==d?d:toPrecisedFloat(e/f))&&!m,theme:p,width:e,height:f,onClick:t,disableManualResize:j,noEffect:l})}))))};CropPresetsOption.defaultProps={anchorEl:null};export default CropPresetsOption;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useState}from\"react\";import{Crop as CropIcon}from\"@scaleflex/icons/crop\";import{useStore}from\"../../../hooks\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";import{StyledToolsBarItemButtonLabel}from\"../../ToolsBar/ToolsBar.styled\";import CropPresetsOption from\"./CropPresetsOption\";var Crop=function(a){var b=a.selectTool,c=a.isSelected,d=useStore(),e=d.config,f=d.t,g=useState(),h=_slicedToArray(g,2),i=h[0],j=h[1];return React.createElement(ToolsBarItemButton,{className:\"FIE_crop-tool\",id:TOOLS_IDS.CROP,Icon:CropIcon,onClick:function selectToolAndShowPresets(a,c){b(a),j(c.currentTarget)},isSelected:c},e[TOOLS_IDS.CROP].noPresets?React.createElement(StyledToolsBarItemButtonLabel,{className:\"FIE_crop-tool-label\"},f(\"cropTool\")):React.createElement(CropPresetsOption,{anchorEl:i,onClose:function closeCropPresets(){j(null)}}))};Crop.defaultProps={isSelected:!1};export default Crop;","import React,{useCallback,useMemo}from\"react\";import{FlipX as FlipXIcon}from\"@scaleflex/icons/flip-x\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{FLIP_DIRECTIONS,TOOLS_IDS}from\"../../../utils/constants\";import{TOGGLE_FLIP}from\"../../../actions\";import{usePhoneScreen,useStore}from\"../../../hooks\";var xFlipReverseSideStyle={transform:\"scaleX(-1)\"},FlipX=function(a){var b=a.selectTool,c=a.isSelected,d=a.t,e=useStore(),f=e.dispatch,g=e.adjustments.isFlippedX,h=usePhoneScreen(320),i=useMemo(function(){return{reverseLabelOfCurrXFlipDir:g?d(\"unFlipX\"):d(\"flipX\"),reverseIconOfCurrXFlipDir:function(){return React.createElement(FlipXIcon,{size:h?20:16,style:g?xFlipReverseSideStyle:void 0})}}},[g]),j=i.reverseLabelOfCurrXFlipDir,k=i.reverseIconOfCurrXFlipDir,l=useCallback(function(){f({type:TOGGLE_FLIP,payload:{direction:FLIP_DIRECTIONS.X}})},[]),m=useCallback(function(a){b(a),l()},[]);return React.createElement(ToolsBarItemButton,{className:\"FIE_flip-x-tool-button\",id:TOOLS_IDS.FLIP_X,label:j,Icon:k,onClick:m,isSelected:c})};FlipX.defaultProps={isSelected:!1};export default FlipX;","import React,{useCallback,useMemo}from\"react\";import{FlipY as FlipYIcon}from\"@scaleflex/icons/flip-y\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{FLIP_DIRECTIONS,TOOLS_IDS}from\"../../../utils/constants\";import{TOGGLE_FLIP}from\"../../../actions\";import{usePhoneScreen,useStore}from\"../../../hooks\";var xFlipReverseSideStyle={transform:\"scaleY(-1)\"},FlipY=function(a){var b=a.selectTool,c=a.isSelected,d=a.t,e=useStore(),f=e.dispatch,g=e.adjustments.isFlippedY,h=usePhoneScreen(320),i=useMemo(function(){return{reverseLabelOfCurrXFlipDir:g?d(\"unFlipY\"):d(\"flipY\"),reverseIconOfCurrXFlipDir:function(){return React.createElement(FlipYIcon,{size:h?20:16,style:g?xFlipReverseSideStyle:void 0})}}},[g]),j=i.reverseLabelOfCurrXFlipDir,k=i.reverseIconOfCurrXFlipDir,l=useCallback(function(){f({type:TOGGLE_FLIP,payload:{direction:FLIP_DIRECTIONS.Y}})},[]),m=useCallback(function(a){b(a),l()},[]);return React.createElement(ToolsBarItemButton,{className:\"FIE_flip-y-tool-button\",id:TOOLS_IDS.FLIP_Y,label:j,Icon:k,onClick:m,isSelected:c})};FlipY.defaultProps={isSelected:!1};export default FlipY;","import React from\"react\";import{RotationLeft as RotateIcon}from\"@scaleflex/icons/rotation-left\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var RotateButton=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_rotate-tool-button\",id:TOOLS_IDS.ROTATE,label:d(\"rotateTool\"),Icon:RotateIcon,onClick:b,isSelected:c})};RotateButton.defaultProps={isSelected:!1};export default RotateButton;","import styled from\"styled-components\";import{IconButton,RotationSlider}from\"@scaleflex/ui/core\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledRotationOptions=styled.div.withConfig({componentId:\"sc-wbx58r-0\"})([\"display:flex;align-items:center;gap:16px;\"]),StyledRotationSlider=styled(RotationSlider).withConfig({componentId:\"sc-wbx58r-1\"})([\".SfxRotationSlider-control{width:1px;height:10px;background-color:\",\";&:before{box-shadow:unset;}}.SfxRotationSlider-mark,.SfxRotationSlider-small-dot-wrapper{padding:0;.SfxRotationSlider-mark-text{top:10px;}.SfxRotationSlider-big-dot{width:4px;height:4px;}.SfxRotationSlider-small-dot{width:1px;height:1px;}}.SfxRotationSlider-list{gap:4px;}\"],function(a){var b=a.theme.palette;return b[PC.IconsSecondary]}),StyledRotateButton=styled(IconButton).withConfig({componentId:\"sc-wbx58r-2\"})([\"\"]);export{StyledRotationOptions,StyledRotationSlider,StyledRotateButton};","import React from\"react\";import RotationLeft from\"@scaleflex/icons/rotation-left\";import RotationRight from\"@scaleflex/icons/rotation-right\";import{Rotate90}from\"@scaleflex/icons\";import{useDebouncedCallback,usePhoneScreen,useStore}from\"../../../hooks\";import{CHANGE_ROTATION,SET_RESIZE}from\"../../../actions\";import restrictNumber from\"../../../utils/restrictNumber\";import getSizeAfterRotation from\"../../../utils/getSizeAfterRotation\";import{TOOLS_IDS}from\"../../../utils/constants\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{StyledRotationOptions,StyledRotationSlider,StyledRotateButton}from\"./Rotate.styled\";var RotateOptions=function(){var a=useStore(),b=a.dispatch,c=a.adjustments.rotation,d=void 0===c?0:c,e=a.resize,f=void 0===e?{}:e,g=a.config,h=g[TOOLS_IDS.ROTATE],i=usePhoneScreen(),j=useDebouncedCallback(function(a,c){var d=restrictNumber(c,-180,180);if(b({type:CHANGE_ROTATION,payload:{rotation:d}}),f.width&&f.height){var e=getSizeAfterRotation(f.width,f.height,d);b({type:SET_RESIZE,payload:{width:e.width,height:e.height}})}},20);return\"buttons\"===h.componentType?React.createElement(React.Fragment,null,React.createElement(ToolsBarItemButton,{className:\"FIE_rotate_button_left\",id:TOOLS_IDS.IMAGE,label:\"-\".concat(h.angle,\"\\xB0\"),Icon:RotationLeft,onClick:function changeRotationButtonNegative(a){var b=d-h.angle;j(a,b)}}),React.createElement(ToolsBarItemButton,{className:\"FIE_rotate_button_right\",id:TOOLS_IDS.IMAGE,label:\"+\".concat(h.angle,\"\\xB0\"),Icon:RotationRight,onClick:function changeRotationButtonPositive(a){var b=d+h.angle;j(a,b)}})):React.createElement(StyledRotationOptions,null,React.createElement(StyledRotationSlider,{className:\"FIE_rotate-slider\",showCurrentMarkText:!0,min:-180,max:180,step:i?h.angle/3:1,value:d,angle:h.angle||90,onChange:j}),React.createElement(StyledRotateButton,{size:\"sm\",color:\"basic\",onClick:function onClick(a){return j(a,d+90)}},React.createElement(Rotate90,{width:15})))};export default RotateOptions;","import React from\"react\";import{Contrast as ContrastIcon}from\"@scaleflex/icons/contrast\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var Contrast=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_contrast-tool-button\",id:TOOLS_IDS.CONTRAST,label:d(\"contrastTool\"),Icon:ContrastIcon,onClick:b,isSelected:c})};Contrast.defaultProps={isSelected:!1};export default Contrast;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=-100,DEFAULT_VALUE={contrast:0},MAX_VALUE=100,sliderStyle={width:150,padding:0,margin:0},ContrastOptions=function(a){var b,c,d=a.t,e=useFinetune(Konva.Filters.Contrast,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({contrast:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_contrast-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_contrast-option-label\"},d(\"contrastTool\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_contrast-option\",min:MIN_VALUE,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.contrast)&&void 0!==b?b:DEFAULT_VALUE.contrast,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.contrast)&&void 0!==c?c:DEFAULT_VALUE.contrast,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default ContrastOptions;","import React from\"react\";import{Saturation as SaturationIcon}from\"@scaleflex/icons/saturation\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var HSV=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_hsv-tool-button\",id:TOOLS_IDS.HSV,label:d(\"hsvTool\"),Icon:SaturationIcon,onClick:b,isSelected:c})};HSV.defaultProps={isSelected:!1};export default HSV;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune,usePhoneScreen}from\"../../../hooks\";import Slider from\"../../common/Slider\";import{StyledHSVOptions,StyledSliderContainer,StyledSliderLabel,StyledSliderInput,StyledSliderWrapper}from\"../tools.styled\";var DEFAULT_VALUE={hue:0,saturation:0,value:0},MAX_VALUE={hue:259,saturation:10,value:2},sliderStyle={padding:0,margin:0},isPhoneScreen=usePhoneScreen(),HSVOptions=function(a){var b,c,d,e,f,g,h=a.t,i=useFinetune(Konva.Filters.HSV,DEFAULT_VALUE),j=_slicedToArray(i,2),k=j[0],l=j[1],m=function(a,b){l(_defineProperty({},a,b>MAX_VALUE[a]?MAX_VALUE[a]:+b))};return React.createElement(StyledHSVOptions,{isPhoneScreen:isPhoneScreen},React.createElement(StyledSliderContainer,{className:\"FIE_hue-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_hue-option-label\"},h(\"hue\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_hue-option\",min:0,step:1,max:259,value:null!==(b=k.hue)&&void 0!==b?b:DEFAULT_VALUE.hue,onChange:function onChange(a){return m(\"hue\",a)},style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=k.hue)&&void 0!==c?c:DEFAULT_VALUE.hue,onChange:function onChange(a){var b=a.target.value;return m(\"hue\",b)}}))),React.createElement(StyledSliderContainer,{className:\"FIE_saturation-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_saturation-option-label\"},h(\"saturation\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_saturation-option\",min:-2,step:.5,max:10,value:null!==(d=k.saturation)&&void 0!==d?d:DEFAULT_VALUE.saturation,onChange:function onChange(a){return m(\"saturation\",a)},style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(e=k.saturation)&&void 0!==e?e:DEFAULT_VALUE.saturation,onChange:function onChange(a){var b=a.target.value;return m(\"saturation\",b)}}))),React.createElement(StyledSliderContainer,{className:\"FIE_value-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_value-option-label\"},h(\"value\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_value-option\",min:-2,step:.1,max:2,value:null!==(f=k.value)&&void 0!==f?f:DEFAULT_VALUE.value,onChange:function onChange(a){return m(\"value\",a)},style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(g=k.value)&&void 0!==g?g:DEFAULT_VALUE.value,onChange:function onChange(a){var b=a.target.value;return m(\"value\",b)}}))))};export default HSVOptions;","import React from\"react\";import{Blur as BlurIcon}from\"@scaleflex/icons/blur\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var Blur=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_blur-tool-button\",id:TOOLS_IDS.BLUR,label:d(\"blurTool\"),Icon:BlurIcon,onClick:b,isSelected:c})};Blur.defaultProps={isSelected:!1};export default Blur;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=0,DEFAULT_VALUE={blurRadius:0},MAX_VALUE=100,sliderStyle={width:150,padding:0,margin:0},BlurOptions=function(a){var b,c,d=a.t,e=useFinetune(Konva.Filters.Blur,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({blurRadius:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_blur-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_blur-option-label\"},d(\"blur\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_blur-option\",min:MIN_VALUE,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.blurRadius)&&void 0!==b?b:DEFAULT_VALUE.blurRadius,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.blurRadius)&&void 0!==c?c:DEFAULT_VALUE.blurRadius,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default BlurOptions;","import React from\"react\";import{Temprature as WarmthIcon}from\"@scaleflex/icons/tempreture\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var Warmth=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_warmth-tool-button\",id:TOOLS_IDS.WARMTH,label:d(\"warmthTool\"),Icon:WarmthIcon,onClick:b,isSelected:c})};Warmth.defaultProps={isSelected:!1};export default Warmth;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import{Warmth as CustomWarmth}from\"../../../custom/finetunes\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=0,DEFAULT_VALUE={warmth:0},MAX_VALUE=200,sliderStyle={width:150,padding:0,margin:0},WarmthOptions=function(a){var b,c,d=a.t,e=useFinetune(CustomWarmth,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({warmth:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_warmth-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_warmth-option-label\"},d(\"warmthTool\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_warmth-option\",min:MIN_VALUE,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.warmth)&&void 0!==b?b:DEFAULT_VALUE.warmth,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.warmth)&&void 0!==c?c:DEFAULT_VALUE.warmth,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default WarmthOptions;","import styled,{css}from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledCarouselWrapper=styled.div.withConfig({componentId:\"sc-1nr0bka-0\"})([\"max-width:680px;min-width:150px;position:relative;overflow:hidden;touch-action:pan-y pinch-zoom;\"]),StyledCarousel=styled.ul.withConfig({componentId:\"sc-1nr0bka-1\"})([\"padding:0;margin:0;white-space:nowrap;overflow:hidden;\"]),StyledCarouselItem=styled.li.withConfig({componentId:\"sc-1nr0bka-2\"})([\"padding:4px;display:inline-block;list-style-type:none;user-select:none;\"]),arrowsCommonStyles=css([\"position:absolute;top:0;height:100%;width:60px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1;svg{color:\",\";}\"],function(a){var b=a.theme.palette;return b[PC.IconsSecondary]}),StyledPrevArrowWrapper=styled.div.withConfig({componentId:\"sc-1nr0bka-3\"})([\"\",\" left:0;justify-content:flex-start;background:linear-gradient( 90deg,#ffffff 1.56%,rgba(255,255,255,0.89) 52.4%,rgba(255,255,255,0.532165) 76.04%,rgba(255,255,255,0) 100% );\"],arrowsCommonStyles),StyledNextArrowWrapper=styled.div.withConfig({componentId:\"sc-1nr0bka-4\"})([\"\",\" right:0;justify-content:flex-end;background:linear-gradient( 270deg,#ffffff 1.56%,rgba(255,255,255,0.89) 52.4%,rgba(255,255,255,0.532165) 76.04%,rgba(255,255,255,0) 100% );\"],arrowsCommonStyles);export{StyledCarouselWrapper,StyledCarousel,StyledCarouselItem,StyledPrevArrowWrapper,StyledNextArrowWrapper};","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{Children,useRef,useState,useEffect}from\"react\";import{ArrowLeftOutline,ArrowRightOutline}from\"@scaleflex/icons\";import{useResizeObserver}from\"../../../hooks\";import debounce from\"../../../utils/debounce\";import getScrollOffset from\"../../../utils/getScrollOffset\";import{StyledCarouselWrapper,StyledCarousel,StyledCarouselItem,StyledNextArrowWrapper,StyledPrevArrowWrapper}from\"./Carousel.styled\";var Carousel=function(a){var b=a.children,c=a.style,d=a.className,f=useRef(!1),g=useRef(),h=useResizeObserver(),i=_slicedToArray(h,1),j=i[0],k=useState(!1),l=_slicedToArray(k,2),m=l[0],n=l[1],o=useState(!1),p=_slicedToArray(o,2),q=p[0],r=p[1],s=Children.toArray(b),t=function(){if(g.current){var a=g.current,b=a.scrollWidth,c=a.offsetWidth,d=a.scrollLeft,e=Math.round(b-c),f=Math.round(e-d);n(0j,l=k?MAX_FILTER_PREVIEW_WIDTH:MAX_FILTER_PREVIEW_HEIGHT*j,m=k?MAX_FILTER_PREVIEW_WIDTH/j:MAX_FILTER_PREVIEW_HEIGHT;return React.createElement(StyledFilterItem,{className:\"FIE_filters-item\",onClick:h,\"aria-selected\":e},React.createElement(FilterItemPreview,{className:\"FIE_filters-item-preview\",width:MAX_FILTER_PREVIEW_WIDTH,height:MAX_FILTER_PREVIEW_HEIGHT},React.createElement(Layer,{onTap:h},React.createElement(Image,{image:f,filters:c?[c]:[],width:l,height:m,x:-(l-MAX_FILTER_PREVIEW_WIDTH)/2,y:-(m-MAX_FILTER_PREVIEW_HEIGHT)/2,ref:g}))),React.createElement(FilterItemLabel,{className:\"FIE_filters-item-label\"},b))};FilterItem.defaultProps={filterFn:void 0};export default memo(FilterItem);","import Konva from\"konva\";import*as CustomKonvaFilters from\"../../../custom/filters\";var konvaFilters=Konva.Filters;export var AVAILABLE_FILTERS=[{label:\"Original\",filterFn:null},{label:\"Invert\",filterFn:konvaFilters.Invert},{label:\"Black & White\",filterFn:CustomKonvaFilters.BlackAndWhite},{label:\"Sepia\",filterFn:konvaFilters.Sepia},{label:\"Solarize\",filterFn:konvaFilters.Solarize},{label:\"Clarendon\",filterFn:CustomKonvaFilters.Clarendon},{label:\"Gingham\",filterFn:CustomKonvaFilters.Gingham},{label:\"Moon\",filterFn:CustomKonvaFilters.Moon},{label:\"Lark\",filterFn:CustomKonvaFilters.Lark},{label:\"Reyes\",filterFn:CustomKonvaFilters.Reyes},{label:\"Juno\",filterFn:CustomKonvaFilters.Juno},{label:\"Slumber\",filterFn:CustomKonvaFilters.Slumber},{label:\"Crema\",filterFn:CustomKonvaFilters.Crema},{label:\"Ludwig\",filterFn:CustomKonvaFilters.Ludwig},{label:\"Aden\",filterFn:CustomKonvaFilters.Aden},{label:\"Perpetua\",filterFn:CustomKonvaFilters.Perpetua},{label:\"Amaro\",filterFn:CustomKonvaFilters.Amaro},{label:\"Mayfair\",filterFn:CustomKonvaFilters.Mayfair},{label:\"Rise\",filterFn:CustomKonvaFilters.Rise},{label:\"Hudson\",filterFn:CustomKonvaFilters.Hudson},{label:\"Valencia\",filterFn:CustomKonvaFilters.Valencia},{label:\"X-Pro II\",filterFn:CustomKonvaFilters.XPro2},{label:\"Sierra\",filterFn:CustomKonvaFilters.Sierra},{label:\"Willow\",filterFn:CustomKonvaFilters.Willow},{label:\"Lo-Fi\",filterFn:CustomKonvaFilters.LoFi},{label:\"Inkwell\",filterFn:konvaFilters.Grayscale},{label:\"Hefe\",filterFn:CustomKonvaFilters.Hefe},{label:\"Nashville\",filterFn:CustomKonvaFilters.Nashville},{label:\"Stinson\",filterFn:CustomKonvaFilters.Stinson},{label:\"Vesper\",filterFn:CustomKonvaFilters.Vesper},{label:\"Earlybird\",filterFn:CustomKonvaFilters.Earlybird},{label:\"Brannan\",filterFn:CustomKonvaFilters.Brannan},{label:\"Sutro\",filterFn:CustomKonvaFilters.Sutro},{label:\"Toaster\",filterFn:CustomKonvaFilters.Toaster},{label:\"Walden\",filterFn:CustomKonvaFilters.Walden},{label:\"1977\",filterFn:CustomKonvaFilters.NinteenSeventySeven},{label:\"Kelvin\",filterFn:CustomKonvaFilters.Kelvin},{label:\"Maven\",filterFn:CustomKonvaFilters.Maven},{label:\"Ginza\",filterFn:CustomKonvaFilters.Ginza},{label:\"Skyline\",filterFn:CustomKonvaFilters.Skyline},{label:\"Dogpatch\",filterFn:CustomKonvaFilters.Dogpatch},{label:\"Brooklyn\",filterFn:CustomKonvaFilters.Brooklyn},{label:\"Helena\",filterFn:CustomKonvaFilters.Helena},{label:\"Ashby\",filterFn:CustomKonvaFilters.Ashby},{label:\"Charmes\",filterFn:CustomKonvaFilters.Charmes}];","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import{useFilter,useStore}from\"../../../hooks\";import Carousel from\"../../common/Carousel\";import FilterItem from\"./FilterItem\";import{AVAILABLE_FILTERS}from\"./Filters.constants\";var style={maxWidth:\"100%\",width:\"100%\"},Filters=function(){var a=useStore(),b=a.originalImage,c=useFilter(),d=_slicedToArray(c,2),e=d[0],f=d[1];return React.createElement(Carousel,{className:\"FIE_filters\",style:style},AVAILABLE_FILTERS.map(function(a){return React.createElement(FilterItem,{key:a.label,filterLabel:a.label,filterFn:a.filterFn,applyFilter:f,isActive:e===a.filterFn,image:b})}))};export default Filters;","import React from\"react\";import{Text as TextIcon}from\"@scaleflex/icons/text\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var TextButton=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_text-tool-button\",id:TOOLS_IDS.TEXT,label:d(\"textTool\"),Icon:TextIcon,onClick:b,isSelected:c})};TextButton.defaultProps={isSelected:!1};export default TextButton;","import styled from\"styled-components\";import Label from\"@scaleflex/ui/core/label\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledOptions=styled.div.withConfig({componentId:\"sc-qvjmv1-0\"})([\"display:flex;align-items:center;justify-content:center;padding:8px 16px;margin-top:4px;gap:8px;flex-wrap:wrap;\",\" svg{color:\",\";}\"],function(a){var b=a.isPhoneScreen;return b&&\"\\n max-width: 315px;\\n padding: 0;\\n \"},function(a){var b=a.theme.palette;return b[PC.IconsPrimary]}),StyledOptionsWrapper=styled.div.withConfig({componentId:\"sc-qvjmv1-1\"})([\"display:flex;flex-wrap:wrap;margin-left:-4px;gap:4px;.FIE_annotation-option-triggerer{padding:6px;}\"]),StyledOptionPopupContent=styled.div.withConfig({componentId:\"sc-qvjmv1-2\"})([\"background:\",\";border-radius:4px;display:flex;flex-direction:column;padding:8px 12px;overflow:visible;\",\" \",\" *{font-family:'Roboto',sans-serif;}\"],function(a){var b=a.theme;return b.palette[\"bg-secondary\"]},function(a){var b=a.position;return b&&\"\\n display: grid;\\n grid-template-columns: repeat(4, auto);\\n padding: 0;\\n margin-top: 8px;\\n box-shadow: 0px 1px 2px \".concat(function(a){var b=a.theme;return b.palette[\"light-shadow\"]},\";\\n \")},function(a){var b=a.disablePadding;return b&&\"\\n padding: 0;\\n \"}),StyledSpacedOptionFields=styled.div.withConfig({componentId:\"sc-qvjmv1-3\"})([\"display:flex;align-items:center;gap:12px;\",\"\"],function(a){var b=a.preventFlex;return b&&\"\\n display: block;\\n\\n label {\\n margin-bottom: 8px;\\n }\\n \"}),StyledTwoColumnsContainer=styled.div.withConfig({componentId:\"sc-qvjmv1-4\"})([\"display:flex;align-items:center;justify-content:space-between;\"]),StyledColumn=styled.div.withConfig({componentId:\"sc-qvjmv1-5\"})([\"&:not(:first-child){margin-left:12px;}\"]),StyledIconWrapper=styled.div.withConfig({componentId:\"sc-qvjmv1-6\"})(function(a){var b=a.theme,c=a.addThinBorder,d=a.secondaryIconColor,e=a.active,f=a.watermarkTool;return\"\\n cursor: pointer;\\n padding: \".concat(f?\"6px\":\"8px 12px\",\";\\n border-radius: 2px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n gap: 6px;\\n\\n svg {\\n vertical-align: middle;\\n margin: 0 auto;\\n }\\n\\n \").concat(c?\"border: 0.5px solid \".concat(b.palette[\"borders-secondary\"],\";\\n padding: 8px 8px;\"):\"\",\";\\n color: \").concat(d?b.palette[PC.IconsSecondary]:\"\",\";\\n\\n \").concat(e&&\"\\n border-radius: 4px;\\n border-color: \".concat(b.palette[PC.AccentStateless],\";\\n background-color: \").concat(b.palette[PC.BackgroundActive],\";\\n\\n * {\\n color: \").concat(b.palette[PC.AccentStateless],\";\\n }\\n \"),\"\\n\\n :hover {\\n background: \").concat(b.palette[\"bg-primary-active\"],\";\\n }\\n \")}),StyledIconLabel=styled(Label).withConfig({componentId:\"sc-qvjmv1-7\"})([\"color:\",\";\"],function(a){var b=a.theme.palette;return b[PC.TextPrimary]});export{StyledTwoColumnsContainer,StyledColumn,StyledIconWrapper,StyledSpacedOptionFields,StyledOptions,StyledOptionsWrapper,StyledOptionPopupContent,StyledIconLabel};","import React from\"react\";import restrictNumber from\"../../../utils/restrictNumber\";import{Label}from\"@scaleflex/ui/core\";import{StyledSpacedOptionFields,StyledIconLabel,StyledOptionPopupContent}from\"./AnnotationOptions.styled\";import Slider from\"../Slider\";var MIN_PERCENTANGE=0,MAX_PERCENTANGE=1,OpacityField=function(a){var b=a.annotation,c=a.updateAnnotation,d=a.t,e=b.opacity,f=Math.round(100*e);return React.createElement(StyledOptionPopupContent,{disablePadding:!0},React.createElement(Label,null,d(\"transparency\")),React.createElement(StyledSpacedOptionFields,null,React.createElement(Slider,{annotation:\"%\",onChange:function changeOpacity(a){c({opacity:restrictNumber(a/100,MIN_PERCENTANGE,MAX_PERCENTANGE)})},value:f,noMargin:!0}),React.createElement(StyledIconLabel,null,\"\".concat(f,\"%\"))))};export default OpacityField;","import{Modal,ModalActions as SfxModalActions}from\"@scaleflex/ui/core\";import styled from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var ColorPickerModal=styled(Modal).withConfig({componentId:\"sc-7tf41j-0\"})([\"max-width:350px;\"]),ColorPickerWrap=styled.div.withConfig({componentId:\"sc-7tf41j-1\"})([\".SfxColorPicker-root{max-width:100%;padding:0;box-shadow:none;border:none;\",\"}.SfxColorPicker-action{display:flex;gap:12px;.SfxColorPicker-select{width:100px;}.SfxInput-root{width:190px !important;}}.SfxColorPicker-icon{color:\",\";}.SfxColorPicker-range-picker,.SfxColorPicker-bar-wrapper{width:100%;}\"],function(a){var b=a.hideModalTitle;return b&&\"padding-top: 12px;\"},function(a){var b=a.theme.palette;return b[PC.IconsPrimary]}),ModalActions=styled(SfxModalActions).withConfig({componentId:\"sc-7tf41j-2\"})([\"gap:12px;padding:24px;.SfxButton-root{flex:1;margin:0;height:40px;}\"]),Styled={ColorPickerModal:ColorPickerModal,ColorPickerWrap:ColorPickerWrap,ModalActions:ModalActions};export default Styled;","import React from\"react\";import{Button,ColorPicker,ModalContent,ModalTitle}from\"@scaleflex/ui/core\";import ColorPickerIcon from\"@scaleflex/icons/color-picker\";import{useStore}from\"../../../hooks\";import Styled from\"./ColorPickerModal.styled\";var modalStyles={zIndex:1301},ColorPickerModal=function(a){var b=a.hideModalTitle,c=a.defaultColor,d=void 0===c?\"\":c,e=a.onChange,f=a.open,g=a.pinnedColors,h=a.onClose,i=a.onApply,j=useStore(),k=j.t;return f?React.createElement(Styled.ColorPickerModal,{onClose:h,open:f,fullWidth:!0,modalStyles:modalStyles},!b&&React.createElement(ModalTitle,{onClose:h,primary:k(\"colorPickerModalTitleLabel\",\"Pick color\"),icon:React.createElement(ColorPickerIcon,{size:29}),iconShadow:!0,variant:\"with-icon\"}),React.createElement(ModalContent,null,React.createElement(Styled.ColorPickerWrap,{hideModalTitle:b},React.createElement(ColorPicker,{onChange:e,pinnedColors:g,defaultColor:d,showTransparentColor:!0}))),React.createElement(Styled.ModalActions,null,React.createElement(Button,{color:\"basic\",onClick:h},k(\"cancel\")),React.createElement(Button,{color:\"primary\",onClick:i},k(\"apply\")))):null};ColorPickerModal.defaultProps={defaultColor:\"\",pinnedColors:[],onChange:function onChange(){},open:!1,hideModalTitle:!1,onClose:function onClose(){},onApply:function onApply(){}};export default ColorPickerModal;","import styled from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledPickerTrigger=styled.div.attrs(function(a){var b=a.$color;return{style:{background:\"rgba(0,0,0,0)\"===b?\"repeating-conic-gradient(#5d6d7e 0% 25%, transparent 0% 50%) 50% / 8px 8px\":b}}}).withConfig({componentId:\"sc-zmv0gj-0\"})([\"background:\",\";border-radius:4px;width:32px;height:32px;border:1px solid \",\";cursor:pointer;box-sizing:border-box;\"],function(a){var b=a.theme;return b.palette[\"icons-primary\"]},function(a){var b=a.theme;return b.palette[PC.BorderPrimaryStateless]});export{StyledPickerTrigger};","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useEffect,useRef,useState}from\"react\";import{useStore}from\"../../../hooks\";import{SET_LATEST_COLOR}from\"../../../actions\";import ColorPickerModal from\"../ColorPickerModal\";import{StyledPickerTrigger}from\"./ColorInput.styled\";var pinnedColorsKey=\"FIE_pinnedColors\",ColorInput=function(a){var b,c=a.onChange,d=a.color,e=a.colorFor,f=useStore(),g=f.selectionsIds,h=void 0===g?[]:g,i=f.config.annotationsCommon,j=void 0===i?{}:i,k=f.dispatch,l=f.latestColors,m=void 0===l?{}:l,n=m[e],o=useState(),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useState(function(){return n||d||j.fill}),t=_slicedToArray(s,2),u=t[0],v=t[1],w=useState(null!==(b=window)&&void 0!==b&&b.localStorage?JSON.parse(localStorage.getItem(pinnedColorsKey)||\"[]\"):[]),x=_slicedToArray(w,2),y=x[0],z=x[1],A=useRef(u),B=function(a){var b;if(null!==(b=window)&&void 0!==b&&b.localStorage){var c=window.localStorage.getItem(pinnedColorsKey);if(JSON.stringify(a)!==c){var d=a.slice(-9);window.localStorage.setItem(pinnedColorsKey,JSON.stringify(d)),z(d)}}},C=function(a){r(q?null:a.currentTarget)};return useEffect(function(){var a=0===h.length&&n||d;v(a),c(a)},[d,h]),React.createElement(React.Fragment,null,React.createElement(StyledPickerTrigger,{className:\"FIE_color-picker-triggerer\",onClick:C,$color:u,onChange:c}),React.createElement(ColorPickerModal,{hideModalTitle:!0,onChange:function changeColor(a,b,d){v(b),c(b),B(d),n!==b&&k({type:SET_LATEST_COLOR,payload:{latestColors:_defineProperty({},e,b)}})},defaultColor:u,pinnedColors:y,open:!!q,onClose:function closePicker(a){c(A.current||u),C(a)},onApply:C}))};ColorInput.defaultProps={color:void 0};export default ColorInput;","import React from\"react\";import restrictNumber from\"../../../utils/restrictNumber\";import ColorInput from\"../ColorInput\";import{StyledSpacedOptionFields}from\"./AnnotationOptions.styled\";import Slider from\"../Slider\";var MIN_PERCENTANGE=0,MAX_PERCENTANGE=100,StrokeFields=function(a){var b=a.annotation,c=a.updateAnnotation,d=b.stroke,e=b.strokeWidth;return React.createElement(StyledSpacedOptionFields,null,React.createElement(Slider,{annotation:\"px\",onChange:function changeStrokeWidth(a){c({strokeWidth:restrictNumber(a,MIN_PERCENTANGE,MAX_PERCENTANGE)})},value:e,noMargin:!0}),React.createElement(ColorInput,{color:d,onChange:function changeStrokeColor(a){c({stroke:a})},colorFor:\"stroke\"}))};export default StrokeFields;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import React from\"react\";import Label from\"@scaleflex/ui/core/label\";import restrictNumber from\"../../../utils/restrictNumber\";import ColorInput from\"../ColorInput\";import{StyledTwoColumnsContainer,StyledColumn,StyledSpacedOptionFields}from\"./AnnotationOptions.styled\";import Slider from\"../Slider\";var ShadowFields=function(a){var b=a.annotation,c=a.updateAnnotation,d=a.t,e=b.shadowOffsetX,f=b.shadowOffsetY,g=b.shadowBlur,h=b.shadowColor,i=b.shadowOpacity,j=function(a,b){var d=2parseFloat(k))){var m=Math.min(10*h.width,10*h.height),o=getSizeAfterRotation(h.width,h.height,n),p=_defineProperty({},f,k?restrictNumber(k,0,m):k),q=\"height\"===f,r=q?\"width\":\"height\",s=null!==(d=c.ratioUnlocked)&&void 0!==d?d:i.ratioUnlocked;if(!s){var t=o.width/o.height;p[r]=q?Math.round(p[f]*t):Math.round(p[f]/t)}if(p[f]!==i[f]||p[r]!==i[r]){if(\"function\"==typeof b)return void b(p);g({type:SET_RESIZE,payload:p});var u=l.width&&l.height&&l||j,v=_objectSpread(_objectSpread({},i),p);g({type:ZOOM_CANVAS,payload:{factor:v.width&&v.height?getZoomFitFactor(u,v):DEFAULT_ZOOM_FACTOR,isAbsoluteZoom:!0}})}}},r=\"undefined\"==typeof i.width&&\"undefined\"==typeof i.height||h.width===i.width&&h.height===i.height,s=getProperDimensions((c.width||c.height)&&c||i,l,j,h,n),t=i.manualChangeDisabled,u=\"undefined\"!=typeof i.width&&!i.width,v=\"undefined\"!=typeof i.height&&!i.height;return React.createElement(StyledResizeWrapper,{className:\"FIE_resize-tool-options\",alignment:e},React.createElement(StyledResizeInput,{className:\"FIE_resize-width-option\",value:u?\"\":s.width,name:\"width\",onChange:t?void 0:q,inputMode:\"numeric\",title:p(\"resizeWidthTitle\"),label:p(\"width\"),inputProps:{type:\"number\"},size:\"sm\",iconEnd:\"px\",placeholder:\"Width\",disabled:t}),React.createElement(StyledRatioLockIcon,{className:\"FIE_resize-ratio-locker\",title:p(\"toggleRatioLockTitle\"),onClick:t?void 0:function toggleRatioLock(){return\"function\"==typeof b?void b({ratioUnlocked:!c.ratioUnlocked}):void g({type:SET_RESIZE,payload:{ratioUnlocked:!i.ratioUnlocked}})},color:\"basic\",size:\"sm\",disabled:t},c.ratioUnlocked||i.ratioUnlocked?React.createElement(UnlockOutline,{size:16,color:o.palette.success}):React.createElement(LockOutline,{size:16,color:o.palette.error})),React.createElement(StyledResizeInput,{className:\"FIE_resize-height-option\",value:v?\"\":s.height,name:\"height\",onChange:t?void 0:q,inputMode:\"numeric\",title:p(\"resizeHeightTitle\"),label:p(\"height\"),inputProps:{type:\"number\"},size:\"sm\",iconEnd:\"px\",placeholder:\"Height\",disabled:t}),!d&&React.createElement(StyledResetButton,{className:\"FIE_resize-reset-button\",size:\"sm\",color:\"basic\",onClick:r||t?void 0:function resetResize(){g({type:SET_RESIZE,payload:{width:void 0,height:void 0,ratioUnlocked:!1}});var a=l.width&&l.height&&l||j;g({type:ZOOM_CANVAS,payload:{factor:getZoomFitFactor(a,a)}})},disabled:r||t},React.createElement(Reset,null)))};Resize.defaultProps={onChange:void 0,currentSize:{},hideResetButton:!1,alignment:\"center\"};export default Resize;","import styled from\"styled-components\";var StyledWatermarkWrapper=styled.div.withConfig({componentId:\"sc-fvaj5j-0\"})([\"display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;overflow:hidden;\",\";\"],function(a){var b=a.noWrap;return b?\"flex-wrap: nowrap;\":\"\"}),StyledControlsWrapper=styled.div.withConfig({componentId:\"sc-fvaj5j-1\"})([\"margin-bottom:8px;\"]),StyledWatermarkGalleryItem=styled.div.withConfig({componentId:\"sc-fvaj5j-2\"})(function(a){var b=a.theme;return\"\\n padding: 6px 4px;\\n border: 1px solid \".concat(b.palette[\"borders-secondary\"],\";\\n width: fit-content;\\n height: 32px;\\n border-radius: 2px;\\n overflow: hidden;\\n cursor: pointer;\\n border-radius: 4px;\\n\\n :hover {\\n background: \").concat(b.palette[\"bg-primary-active\"],\";\\n }\\n\\n &[aria-selected='true'] {\\n background: \").concat(b.palette[\"bg-primary-active\"],\";\\n border-color: \").concat(b.palette[\"accent-primary-active\"],\";\\n }\\n\\n img {\\n max-width: 100%;\\n max-height: 100%;\\n }\\n \")});export{StyledWatermarkWrapper,StyledControlsWrapper,StyledWatermarkGalleryItem};","import React,{useMemo}from\"react\";import{useStore}from\"../../../hooks\";import{TOOLS_IDS,WATERMARK_ANNOTATION_ID}from\"../../../utils/constants\";import Carousel from\"../../common/Carousel\";import{SET_FEEDBACK}from\"../../../actions\";import{StyledWatermarkGalleryItem}from\"./Watermark.styled\";var WatermarksGallery=function(a){var b=a.addImgWatermark,c=a.loadAndSetWatermarkImg,d=a.style,e=useStore(),f=e.config,g=e.annotations,h=e.dispatch,i=e.t,j=useMemo(function(){var a;return null===(a=(g[WATERMARK_ANNOTATION_ID]||{}).image)||void 0===a?void 0:a.src},[g[WATERMARK_ANNOTATION_ID]]),k=function(a){var c=a.currentTarget.children[0];if(c.complete){if(!c.naturalWidth)return void h({type:SET_FEEDBACK,payload:{feedback:{message:i(\"mutualizedFailedToLoadImg\"),duration:2e3}}});b(c)}},l=f[TOOLS_IDS.WATERMARK]||{},m=l.gallery,n=void 0===m?[]:m;return 0===n.length?null:React.createElement(Carousel,{className:\"FIE_watermark-gallery\",style:d},n.map(function(a){var b=(null===a||void 0===a?void 0:a.url)||a,d=(null===a||void 0===a?void 0:a.previewUrl)||b;return React.createElement(StyledWatermarkGalleryItem,{className:\"FIE_watermark-selected-item\",onClick:function onClick(a){return b===d?k(a):c(b)},key:b,\"aria-selected\":b===j},React.createElement(\"img\",{src:d,alt:\"Failed to load.\",crossOrigin:\"Anonymous\",draggable:!1}))}))};WatermarksGallery.defaultProps={style:void 0};export default WatermarksGallery;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useState}from\"react\";import Menu from\"@scaleflex/ui/core/menu\";import Padding from\"@scaleflex/icons/padding\";import restrictNumber from\"../../../utils/restrictNumber\";import{StyledSpacedOptionFields,StyledIconWrapper,StyledOptionPopupContent,StyledIconLabel}from\"../../common/AnnotationOptions/AnnotationOptions.styled\";import Slider from\"../../common/Slider\";import{Label}from\"@scaleflex/ui/core\";var WatermarkPadding=function(a){var b=a.watermark,c=a.saveWatermark,d=a.t,e=useState(null),f=_slicedToArray(e,2),g=f[0],h=f[1],i=b.padding||0;return React.createElement(React.Fragment,null,React.createElement(StyledIconWrapper,{className:\"FIE_watermark-padding-triggerer\",title:d(\"padding\"),onClick:function openOptionPopup(a){h(a.currentTarget)},active:g},React.createElement(Padding,{size:20})),React.createElement(Menu,{className:\"FIE_watermark-padding-popup\",anchorEl:g,open:!!g,onClose:function closeOptionPopup(){h(null)},position:\"top\"},React.createElement(StyledOptionPopupContent,null,React.createElement(Label,null,d(\"padding\")),React.createElement(StyledSpacedOptionFields,null,React.createElement(Slider,{annotation:\"px\",onChange:function updatePadding(a){c({padding:restrictNumber(a,0,100)})},value:i,noMargin:!0}),React.createElement(StyledIconLabel,null,\"\".concat(i,\"px\"))))))};export default WatermarkPadding;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;cr?s*w/c:r*w/b,g=_objectSpread(_objectSpread(_objectSpread({},e.annotationsCommon),e[TOOLS_IDS.IMAGE]),{},{scaleX:d,scaleY:d,padding:1,image:a,width:b,height:c,x:t+r/2-b*d/2,y:u+s/2-c*d/2,id:WATERMARK_ANNOTATION_ID,name:TOOLS_IDS.IMAGE,replaceCurrent:!0});f({type:SET_ANNOTATION,payload:g})},y=function(a){f({type:SET_ANNOTATION,payload:_objectSpread(_objectSpread({},\"function\"==typeof a?a(q):a),{},{id:WATERMARK_ANNOTATION_ID})})},z=function(a){f({type:SET_FEEDBACK,payload:{feedback:{message:a,status:FEEDBACK_STATUSES.WARNING}}})},A=function(a,b){if(a){n(!0);var c=new Image;c.onload=function(){x(c),b&&URL.revokeObjectURL(a),n(!1)},c.onerror=function(){z(g(\"mutualizedFailedToLoadImg\")),b&&URL.revokeObjectURL(a),n(!1)},c.src=a}};useEffect(function(){q&&(f({type:CLEAR_ANNOTATIONS_SELECTIONS}),f({type:SELECT_ANNOTATION,payload:{annotationId:\"watermark\"}}))},[q]),useEffect(function(){q&&(0===d.length||d[0].id!==WATERMARK_ANNOTATION_ID)&&f({type:SELECT_ANNOTATION,payload:{annotationId:\"watermark\"}})},[d]);var B=[(!e.useCloudimage||\"function\"==typeof p.onUploadWatermarkImgClick)&&{key:\"upload-watermark\",label:g(\"uploadWatermark\"),icon:UploadOutline,onClick:function handleUploadWatermarkClick(){if(\"function\"==typeof p.onUploadWatermarkImgClick){var a=p.onUploadWatermarkImgClick(A);return void(a instanceof Promise&&a.then(function(){var a=0b.factor,f={x:(a.x-b.x||0)/b.factor,y:(a.y-b.y||0)/b.factor},g={x:a.x-f.x*a.factor,y:a.y-f.y*a.factor};if(e&&1===b.factor||(g.x=Math.min(0,Math.max(g.x,c*(1-b.factor))),g.y=Math.min(0,Math.max(g.y,d*(1-b.factor)))),1>a.factor){var h=c-c*a.factor,i=d-d*a.factor;g.x+=h/2,g.y+=i/2}return _objectSpread(_objectSpread({},g),{},{factor:a.factor})};export default calculateZoomData;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _objectWithoutProperties from\"@babel/runtime/helpers/objectWithoutProperties\";var _excluded=[\"preparedDimensions\"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;cf.x+f.width&&(g.width=f.x+f.width-g.x),g.y+g.height>f.y+f.height&&(g.height=f.y+f.height-g.y),\"number\"==typeof d&&!compareRatios(g.width/g.height,d)){var h=g.height*d,i=g.width/d;toPrecisedFloat(g.y+i)<=f.y+f.height?g.height=i:g.width=h}if((e.minWidth&&g.width<=e.minWidth||e.maxWidth&&g.width>=e.maxWidth)&&(g.width=restrictNumber(g.width,e.minWidth,e.maxWidth),g.x=a.x,g.y=a.y,\"number\"==typeof d&&(g.height=g.width/d)),(e.minHeight&&b.height<=e.minHeight||e.maxHeight&&b.height>=e.maxHeight)&&(g.height=restrictNumber(g.height,e.minHeight,e.maxHeight),g.x=a.x,g.y=a.y,\"number\"==typeof d&&(g.width=g.height*d)),\"string\"==typeof e.lockCropAreaAt){var j=getPositionByPlaceLabel(e.lockCropAreaAt,f,g),k=j.x,l=j.y;g.x=k,g.y=l}return g};","import _extends from\"@babel/runtime/helpers/extends\";import _defineProperty from\"@babel/runtime/helpers/defineProperty\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c=n.width&&j.height>=n.height;n.width&&n.height&&(df.scaledBy?f.scaledBy:1,J=_objectSpread(_objectSpread({},f),{},{width:f.width/I,height:f.height/I});F=boundResizing(J,_objectSpread(_objectSpread({},J),{},{x:0,y:0}),_objectSpread(_objectSpread({},J),{},{abstractX:0,abstractY:0}),!(A||B)&&C(),v)}else F=j;var K=F,L=K.x,M=void 0===L?0:L,x=K.y,N=void 0===x?0:x,y=K.width,O=K.height,P={x:k?f.width-M-y:M,y:l?f.height-N-O:N,ref:q,fill:\"#FFFFFF\",scaleX:1,scaleY:1,globalCompositeOperation:\"destination-out\",onDragEnd:w?void 0:H,onDragMove:w?void 0:function limitDragging(a){var b=a.target;b.setAttrs(boundDragging(b.attrs,t.current))},onTransformEnd:w?void 0:H,draggable:!w};return React.createElement(React.Fragment,null,React.createElement(Image,{image:e,x:k?f.width:0,y:l?f.height:0,width:f.width,height:f.height,filters:[Konva.Filters.Blur,Konva.Filters.Brighten],blurRadius:10,brightness:-.3,scaleX:k?-1:1,scaleY:l?-1:1,ref:s}),B?React.createElement(Ellipse,_extends({},P,{radiusX:y/2,radiusY:O/2,offset:{x:-y/2,y:-O/2}})):React.createElement(Rect,_extends({},P,{width:j.noEffect?0:y,height:j.noEffect?0:O})),j.noEffect&&React.createElement(TextNode,{name:\"Text\",id:\"no-preview-text-node\",text:p(\"cropItemNoEffect\"),x:f.width/2-noEffectTextDimensions.width/2,y:f.height/2-noEffectTextDimensions.height/2,fontSize:20,fill:\"#ffffff\",stroke:\"#ff0000\",strokeWidth:.2,shadowColor:\"#ff0000\",shadowBlur:10,annotationEvents:{},align:\"center\",width:noEffectTextDimensions.width,height:noEffectTextDimensions.height}),React.createElement(Transformer,{centeredScaling:!1,flipEnabled:!1,rotateEnabled:!1,nodes:q.current?[q.current]:[],anchorSize:14,anchorCornerRadius:7,enabledAnchors:G,ignoreStroke:!1,anchorStroke:c.palette[\"accent-primary\"],anchorFill:c.palette[\"access-primary\"],anchorStrokeWidth:2,borderStroke:c.palette[\"accent-primary\"],borderStrokeWidth:2,borderDash:[4],keepRatio:!A||!B,ref:r,boundBoxFunc:function boundBoxFunc(a,b){return boundResizing(a,b,t.current,!(A||B)&&C(),v)}}))};export default CropTransformer;","import React,{useMemo}from\"react\";import{Transformer}from\"react-konva\";import{NODES_TRANSFORMER_ID,POINTER_ICONS,TOOLS_IDS}from\"../../../utils/constants\";import{useStore}from\"../../../hooks\";import{CHANGE_POINTER_ICON,ENABLE_TEXT_CONTENT_EDIT}from\"../../../actions\";var NodesTransformer=function(){var a,b=useStore(),c=b.selectionsIds,d=void 0===c?[]:c,e=b.theme,f=b.designLayer,g=b.dispatch,h=b.config.useCloudimage,i=useMemo(function(){return null!==f&&void 0!==f&&f.findOne?d.map(function(a){return f.findOne(\"#\".concat(a))}).filter(Boolean):[]},[d]),j=function(){1===i.length&&i[0].name()===TOOLS_IDS.TEXT&&g({type:ENABLE_TEXT_CONTENT_EDIT,payload:{textIdOfEditableContent:i[0].id()}})},k=h?[\"top-left\",\"bottom-left\",\"top-right\",\"bottom-right\"]:void 0;return React.createElement(Transformer,{id:NODES_TRANSFORMER_ID,centeredScaling:!1,rotationSnaps:[0,45,90,135,180,225,270,315],nodes:i,rotateAnchorOffset:30,anchorSize:14,anchorCornerRadius:7,padding:1===i.length?null!==(a=i[0].attrs.padding)&&void 0!==a?a:1:1,ignoreStroke:!1,anchorStroke:e.palette[\"accent-primary\"],anchorFill:e.palette[\"access-primary\"],anchorStrokeWidth:2,borderStroke:e.palette[\"accent-primary\"],borderStrokeWidth:2,borderDash:[4],rotateEnabled:!h,onMouseOver:function changePointerIconToMove(){g({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS.MOVE}})},onMouseLeave:function changePointerIconToDraw(){g({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS.DRAW}})},onDblClick:j,onDblTap:j,enabledAnchors:k,flipEnabled:!h,shouldOverdrawWholeArea:!0})};export default NodesTransformer;","import React from\"react\";import{Layer}from\"react-konva\";import{useStore}from\"../../../hooks\";import{TOOLS_IDS,TRANSFORMERS_LAYER_ID}from\"../../../utils/constants\";import CropTransformer from\"./CropTransformer\";import NodesTransformer from\"./NodesTransformer\";var TransformersLayer=function(){var a=useStore(),b=a.toolId,c=a.shownImageDimensions;return React.createElement(Layer,{id:TRANSFORMERS_LAYER_ID,x:c.abstractX||0,y:c.abstractY||0},React.createElement(NodesTransformer,null),b===TOOLS_IDS.CROP&&React.createElement(CropTransformer,null))};export default TransformersLayer;","import styled from\"styled-components\";var StyledNodeControls=styled.div.withConfig({componentId:\"sc-1tst9ex-0\"})(function(a){var b=a.theme,c=a.top,d=a.left;return\"\\n position: absolute;\\n z-index: 1;\\n background: \".concat(b.palette[\"bg-secondary\"],\";\\n border-radius: 2px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0px 1px 2px \").concat(b.palette[\"light-shadow\"],\";\\n top: \").concat((c||0)+8,\"px;\\n left: \").concat((d||0)+4,\"px;\\n transform: translateX(-50%);\\n height: 32px;\\n\")});export{StyledNodeControls};","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useEffect,useMemo,useState}from\"react\";import IconButton from\"@scaleflex/ui/core/icon-button\";import DeleteOutline from\"@scaleflex/icons/delete-outline\";import Duplicate from\"@scaleflex/icons/duplicate\";import{useStore}from\"../../hooks\";import{DUPLICATE_ANNOTATIONS,REMOVE_ANNOTATIONS}from\"../../actions\";import{NODES_TRANSFORMER_ID,WATERMARK_ANNOTATION_ID}from\"../../utils/constants\";import debounce from\"../../utils/debounce\";import{StyledNodeControls}from\"./NodeControls.styled\";var NodeControls=function(){var a=useStore(),b=a.selectionsIds,c=void 0===b?[]:b,d=a.designLayer,e=a.annotations,f=a.dispatch,g=useState({left:0,top:0}),h=_slicedToArray(g,2),i=h[0],j=h[1],k=useMemo(function(){var a;return null===d||void 0===d||null===(a=d.getStage())||void 0===a?void 0:a.findOne(\"#\".concat(NODES_TRANSFORMER_ID))},[d]),l=c.length,m=debounce(function(){k&&j({left:(k.x()+k.width()/2)*k.scaleX(),top:(k.y()+k.height())*k.scaleY()})},0);if(useEffect(function(){m()},[c,k,e]),0===l||!k)return null;return React.createElement(StyledNodeControls,{className:\"FIE_annotation-controls-overlay\",left:i.left,top:i.top},c[0]!==WATERMARK_ANNOTATION_ID&&React.createElement(IconButton,{color:\"basic\",size:\"sm\",onClick:function duplicateSelectedNodes(){f({type:DUPLICATE_ANNOTATIONS,payload:{annotationsIds:c}})}},React.createElement(Duplicate,null)),React.createElement(IconButton,{color:\"basic\",size:\"sm\",onClick:function removeSelectedNodes(){f({type:REMOVE_ANNOTATIONS,payload:{annotationsIds:c}})}},React.createElement(DeleteOutline,null)))};export default NodeControls;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;ct),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useMemo(function(){return{cursor:g===POINTER_ICONS.DEFAULT&&h===TABS_IDS.ANNOTATE?POINTER_ICONS.DRAW:g}},[h,g]),A=function(a){f({type:ZOOM_CANVAS,payload:a})},B=useCallback(function(a){var b,c;a.evt.preventDefault(),null===(b=(c=a.currentTarget).container)||void 0===b||b.call(c).focus(),a.target instanceof Konva.Stage&&0t&&u&&(a.preventDefault(),y(!0),f({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS.DRAG}}))},E=function(a){\"Space\"===a.code&&(a.preventDefault(),C())},F=function(){c.current&&c.current.container().focus()};useEffect(function(){f({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS[x?\"DRAG\":\"DEFAULT\"]}})},[x]),useEffect(function(){y(h!==TABS_IDS.ANNOTATE&&h!==TABS_IDS.WATERMARK&&p.factor>t);var a;return c.current&&(a=c.current.container(),a.addEventListener(\"mouseenter\",F),a.addEventListener(\"keydown\",D),a.addEventListener(\"keyup\",E)),function(){a&&(a.removeEventListener(\"mouseenter\",F),a.removeEventListener(\"keydown\",D),a.removeEventListener(\"keyup\",E))}},[h,p.factor,t]);var G=l*(u&&p.factor||t);return React.createElement(StyledCanvasNode,{className:\"FIE_canvas-node\",tabIndex:-1,ref:c,width:j,height:k,scaleX:G,scaleY:G,x:u&&p.x||null,y:u&&p.y||null,zoomFactor:u&&p.factor||t,onWheel:u?function handleZoom(a){a.evt.preventDefault();var b=(p.factor||t)+a.evt.deltaY*-ZOOM_DELTA_TO_SCALE_CONVERT_FACTOR,c=a.currentTarget.getPointerPosition();A(_objectSpread(_objectSpread({},c),{},{factor:b}))}:void 0,onTap:B,onClick:B,onTouchMove:u?function(a){return zoomOnTouchesMove(a,A)}:void 0,onDragStart:function preventDraggingIfMultiTouches(a){var b;1<(null===(b=a.evt.touches)||void 0===b?void 0:b.length)&&y(!1)},onTouchEnd:u?function endTouchesZoomingEnablePanning(){endTouchesZooming(C)}:void 0,dragBoundFunc:function dragBoundFunc(a){var b=Math.min(0,Math.max(a.x,j*(1-p.factor))),c=Math.min(0,Math.max(a.y,k*(1-p.factor)));return{x:b,y:c}},draggable:u&&x,onDragEnd:function handleCanvasDragEnd(a){a.currentTarget.draggable()&&\"stage\"===a.target.nodeType.toLowerCase()&&u&&x&&A({factor:p.factor,x:a.target.x(),y:a.target.y(),preparedDimensions:!0})},style:z},b)};export default memo(CanvasNode);","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useCallback,useEffect,useRef}from\"react\";import{DesignLayer,TransformersLayer}from\"../Layers\";import{AppProviderOverridenValue}from\"../../context\";import{SET_CANVAS_SIZE}from\"../../actions\";import{useResizeObserver,useStore}from\"../../hooks\";import NodeControls from\"../NodeControls\";import CanvasNode from\"./CanvasNode\";import{CanvasContainer,StyledOrignalImage}from\"./MainCanvas.styled\";var MainCanvas=function(){var a=useResizeObserver(),b=_slicedToArray(a,1),c=b[0],d=useStore(),e=useRef(null),f=useCallback(function(a){var b=a.width,c=a.height;d.dispatch({type:SET_CANVAS_SIZE,payload:{canvasWidth:b,canvasHeight:c}})},[]);return useEffect(function(){c(e.current,f)},[]),React.createElement(CanvasContainer,{className:\"FIE_canvas-container\",ref:e},!d.textIdOfEditableContent&&React.createElement(NodeControls,null),d.isShowOriginalImage&&React.createElement(StyledOrignalImage,{className:\"FIE_original-image-compare\",src:d.originalImage.src}),React.createElement(CanvasNode,null,React.createElement(AppProviderOverridenValue,{overridingValue:d},React.createElement(DesignLayer,null),React.createElement(TransformersLayer,null))))};export default MainCanvas;","import styled from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledSeparator=styled.div.withConfig({componentId:\"sc-etsyb6-0\"})([\"display:inline-block;height:\",\";width:\",\";border-radius:1px;background:\",\";\"],function(a){return a.height},function(a){return a.width},function(a){var b=a.theme.palette;return b[PC.BordersSecondary]});export{StyledSeparator};","import React from\"react\";import{StyledSeparator}from\"./Separator.styled\";var Separator=function(a){var b=a.height,c=a.width;return React.createElement(StyledSeparator,{height:b,width:c})};Separator.defaultProps={height:\"24px\",width:\"1px\"};export default Separator;","import styled from\"styled-components\";import Button from\"@scaleflex/ui/core/button\";import IconButton from\"@scaleflex/ui/core/icon-button\";import Label from\"@scaleflex/ui/core/label\";import{CrossButton,InputGroup,SelectGroup}from\"@scaleflex/ui/core\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";import{FontVariant as FV}from\"@scaleflex/ui/utils/types/typography\";var StyledTopbar=styled.div.withConfig({componentId:\"sc-21g986-0\"})([\"padding:16px;box-sizing:border-box;position:relative;width:100%;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;border-bottom:1px solid \",\";[data-phone='true'] &{padding:6px 6px 4px 6px;\",\"}\"],function(a){var b=a.theme.palette;return b[PC.BordersSecondary]},function(a){var b=a.isPhoneScreen;return b&&\"\\n padding: 12px 12px 0px;\\n gap: 12px;\\n \"}),StyledMainButtonsWrapper=styled.div.withConfig({componentId:\"sc-21g986-1\"})([\"display:flex;align-items:center;order:1;\"]),StyledControlButtonsWrapper=styled.div.withConfig({componentId:\"sc-21g986-2\"})([\"display:flex;align-items:center;order:3;gap:4px;\"]),StyledHistoryButton=styled(IconButton).withConfig({componentId:\"sc-21g986-3\"})([\"margin:\",\";svg{color:\",\";}\"],function(a){var b=a.margin;return null!==b&&void 0!==b?b:\"0 4px\"},function(a){var b=a.theme.palette,c=a.disabled;return c?b[PC.IconsMuted]:b[PC.IconsPrimary]}),StyledZoomingWrapper=styled.div.withConfig({componentId:\"sc-21g986-4\"})([\"display:flex;align-items:center;gap:2px;\"]),StyledDimensionsLabel=styled(Label).withConfig({componentId:\"sc-21g986-5\"})([\"flex-shrink:0;color:\",\";\",\";\"],function(a){var b=a.theme.palette;return b[PC.TextPlaceholder]},function(a){var b=a.theme.typography;return b.font[FV.LabelMedium]}),StyledSmallButton=styled(IconButton).withConfig({componentId:\"sc-21g986-6\"})([\"padding:8px;svg{color:\",\";}\"],function(a){var b=a.theme.palette,c=a.showBackButton;return c?b[PC.IconsPrimary]:b[PC.IconsMuted]}),StyledFlexCenterAlignedContainer=styled.div.withConfig({componentId:\"sc-21g986-7\"})([\"width:\",\";height:32px;display:block;width:100%;order:4;\",\";@media (min-width:761px){display:flex;align-items:center;justify-content:center;width:fit-content;order:2;}\"],function(a){var b=a.showBackButton;return b?\"318px\":\"384px\"},function(a){var b=a.reverseDirection;return b?\"flex-direction: row-reverse\":\"\"}),StyledZoomPercentageLabel=styled(Label).withConfig({componentId:\"sc-21g986-8\"})([\"cursor:pointer;color:\",\";\",\";\"],function(a){var b=a.theme.palette;return b[PC.TextPrimary]},function(a){var b=a.theme.typography;return b.font[FV.InputMd]}),StyledBackButtonLabel=styled.span.withConfig({componentId:\"sc-21g986-9\"})([\"\",\";\"],function(a){var b=a.theme.typography;return b.font[FV.ButtonMdEmphasis]}),StyledCloseButton=styled(CrossButton).withConfig({componentId:\"sc-21g986-10\"})([\"padding:8px;z-index:111;\"]),StyledSaveButton=styled(Button).withConfig({componentId:\"sc-21g986-11\"})([\"padding:4px 12px;\"]),StyledFileNameInput=styled(InputGroup).withConfig({componentId:\"sc-21g986-12\"})([\"\"]),StyledFileExtensionSelect=styled(SelectGroup).withConfig({componentId:\"sc-21g986-13\"})([\"margin-top:16px;\"]),StyledQualityWrapper=styled.div.withConfig({componentId:\"sc-21g986-14\"})([\"width:100%;margin-top:16px;\"]),StyledResizeOnSave=styled.div.withConfig({componentId:\"sc-21g986-15\"})([\"margin-top:16px;width:100%;\"]),StyledResizeOnSaveLabel=styled(Label).withConfig({componentId:\"sc-21g986-16\"})([\"margin-bottom:4px;\"]),StyledHistoryButtons=styled.div.withConfig({componentId:\"sc-21g986-17\"})([\"display:flex;gap:6px;\"]),StyledImageOptionsButtons=styled.div.withConfig({componentId:\"sc-21g986-18\"})([\"display:flex;gap:12px;justify-content:\",\";\"],function(a){var b=a.isPhoneScreen;return b?\"space-between\":\"center\"}),StyledMenuIconButton=styled(IconButton).withConfig({componentId:\"sc-21g986-19\"})([\"@media (min-width:761px){display:none;}\"]),StyledDimensionsButtons=styled.div.withConfig({componentId:\"sc-21g986-20\"})([\"display:flex;gap:12px;align-items:center;\"]);export{StyledTopbar,StyledFlexCenterAlignedContainer,StyledHistoryButton,StyledZoomingWrapper,StyledSmallButton,StyledZoomPercentageLabel,StyledBackButtonLabel,StyledCloseButton,StyledSaveButton,StyledFileNameInput,StyledFileExtensionSelect,StyledQualityWrapper,StyledResizeOnSave,StyledDimensionsLabel,StyledMainButtonsWrapper,StyledControlButtonsWrapper,StyledHistoryButtons,StyledImageOptionsButtons,StyledMenuIconButton,StyledDimensionsButtons,StyledResizeOnSaveLabel};","import styled,{css}from\"styled-components\";import modalTitle from\"@scaleflex/ui/core/modal-title\";import{Modal,ModalActions}from\"@scaleflex/ui/core\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";import{FontVariant as FV}from\"@scaleflex/ui/utils/types/typography\";var StyledModal=styled(Modal).withConfig({componentId:\"sc-kpjpf5-0\"})([\"width:\",\";max-width:unset;\"],function(a){var b=a.width;return b||\"300px\"}),StyledModalTitle=styled(modalTitle).withConfig({componentId:\"sc-kpjpf5-1\"})(function(a){var b=a.theme,c=a.isWarning;return css([\"padding-bottom:0;.SfxModalTitle-Icon{background-color:\",\";}.SfxModalTitle-LabelPrimary{margin-bottom:24px;\",\";}.SfxModalTitle-LabelSecondary{\",\";text-align:center;}\"],c&&b.palette[PC.Orange_0_1_Overlay],b.typography.font[FV.TitleH3],b.typography.font[FV.TextLarge])}),StyledModalActions=styled(ModalActions).withConfig({componentId:\"sc-kpjpf5-2\"})([\"gap:12px;padding:24px;.SfxButton-root{flex:1;margin:0;height:40px;}\"]);export{StyledModal,StyledModalTitle,StyledModalActions};","import React from\"react\";import{Button,ModalContent}from\"@scaleflex/ui/core\";import{StyledModal,StyledModalTitle,StyledModalActions}from\"./Modal.styled\";var Modal=function(a){var b=a.title,c=a.hint,d=a.Icon,f=a.onDone,g=a.onCancel,h=a.doneLabel,i=a.cancelLabel,j=a.isOpened,k=a.doneButtonStyle,l=a.doneButtonColor,m=void 0===l?\"basic\":l,n=a.cancelButtonColor,o=void 0===n?\"basic\":n,p=a.children,q=a.areButtonsDisabled,r=a.zIndex,s=a.className,t=a.width,u=a.isWarning;return React.createElement(StyledModal,{className:s,open:j,onClose:g,style:{zIndex:r},onKeyUp:function onKeyUp(a){\"Enter\"===a.key&&f(a)},width:t},React.createElement(StyledModalTitle,{icon:React.createElement(d,{size:25}),iconShadow:!0,isWarning:u,onClose:g,primary:b,secondary:c,variant:\"with-icon\"}),p&&React.createElement(ModalContent,null,p),React.createElement(StyledModalActions,{align:\"center\"},React.createElement(Button,{color:o,onClick:g,size:\"md\",disabled:q},i),React.createElement(Button,{color:m,onClick:f,size:\"md\",warning:u,style:k,disabled:q},h)))};Modal.defaultProps={hint:\"\",isOpened:!1,doneLabel:\"Yes\",cancelLabel:\"No\",doneButtonStyle:void 0,doneButtonColor:\"basic\",cancelButtonColor:\"basic\",children:void 0,areButtonsDisabled:!1,zIndex:void 0,className:void 0,width:\"\",isWarning:!1};export default Modal;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useState,useCallback}from\"react\";import{Warning}from\"@scaleflex/icons\";import{useStore}from\"../../hooks\";import{RESET}from\"../../actions\";import Modal from\"../common/Modal\";import{CLOSING_REASONS}from\"../../utils/constants\";var ConfirmationModal=function(a){var b=a.children,c=a.isReset,d=useStore(),e=d.t,f=d.theme,g=d.config,h=d.dispatch,i=d.isResetted,j=d.haveNotSavedChanges,k=d.config.onClose,l=useState(!1),m=_slicedToArray(l,2),n=m[0],o=m[1];if(\"function\"!=typeof k&&!c)return React.createElement(\"span\",null);var p=function(){o(!1)},q=useCallback(function(){h({type:RESET,payload:{config:g}}),p()},[g]),r=function(){c||(k(CLOSING_REASONS.CLOSE_BUTTON,j),q())};return React.createElement(React.Fragment,null,React.cloneElement(b,{onClick:!(void 0!==i)||i?r:function openModal(){o(!0)}}),n&&React.createElement(Modal,{title:c?e(\"warning\"):e(\"discardChanges\"),hint:c?e(\"changesLoseWarningHint\"):e(\"discardChangesWarningHint\"),isOpened:n,onCancel:p,onDone:c?q:r,Icon:function WarningIcon(){return React.createElement(Warning,{color:f.palette.warning,size:25})},doneLabel:e(\"confirm\"),doneButtonColor:\"warning-primary\",cancelLabel:e(\"cancel\"),width:\"400px\",isWarning:!0}))};ConfirmationModal.defaultProps={isReset:!1};export default ConfirmationModal;","import React from\"react\";import CrossOutline from\"@scaleflex/icons/cross-outline\";import{useStore}from\"../../hooks\";import Separator from\"../common/Separator\";import{StyledCloseButton}from\"./Topbar.styled\";import ConfirmationModal from\"./ConfirmationModal\";var CloseButton=function(){var a=useStore(),b=a.config.onClose;return\"function\"==typeof b?React.createElement(React.Fragment,null,React.createElement(Separator,null),React.createElement(ConfirmationModal,null,React.createElement(StyledCloseButton,{className:\"FIE_topbar-close-button\",color:\"basic\",size:\"md\"},React.createElement(CrossOutline,null)))):null};export default CloseButton;","import{DEFAULT_SAVE_QUALITY}from\"./constants\";var getDefaultSaveQuality=function(a){return 0>=a||1 svg:not([color]){color:\",\"}:disabled,[aria-disabled=\\\"true\\\"]{cursor:not-allowed;}&::-webkit-scrollbar{width:4px;height:4px;}&::-webkit-scrollbar-track{background:rgba(203,211,218,0.35);}&::-webkit-scrollbar-thumb{background:rgba(203,211,218,1);border-radius:10px;}}\"],ROOT_CONTAINER_CLASS_NAME,ROOT_CONTAINER_CLASS_NAME,function(a){var b=a.theme;return b.palette[\"icons-primary\"]});export{FontsFaces,OverrideDefaultStyles};","import React,{useEffect,memo}from\"react\";import ThemeProvider from\"@scaleflex/ui/theme\";import App from\"../App\";import{AppProvider}from\"../../context\";import defaultConfig from\"../../context/defaultConfig\";import deepMerge from\"../../utils/deepMerge\";import assignFinetuneNamesToKonva from\"../../utils/assignFinetuneNamesToKonva\";import{FontsFaces,OverrideDefaultStyles}from\"./globalStyles\";var AssemblyPoint=function(a){var b=a.source,c=a.useCloudimage,d=a.cloudimage;if(!b||\"string\"!=typeof b&&!(b instanceof HTMLImageElement))throw new Error(\"`source` property is required either a string of image url or a HTMLImageElement for the image that will be edited.\");if(c){var e,f;if(null!==d&&void 0!==d&&null!==(e=d.imageSealing)&&void 0!==e&&e.enable&&!(null!==d&&void 0!==d&&null!==(f=d.imageSealing)&&void 0!==f&&f.salt))throw new Error(\"`salt` property of imageSealing object is required in cloudimage mode as long as `imageSealing` is enabled.\")}useEffect(function(){assignFinetuneNamesToKonva()},[]);var g=deepMerge(defaultConfig,a);return React.createElement(React.StrictMode,null,React.createElement(ThemeProvider,{theme:g.theme},React.createElement(FontsFaces,null),React.createElement(OverrideDefaultStyles,null),React.createElement(AppProvider,{config:g},React.createElement(App,null))))};AssemblyPoint.defaultProps={useCloudimage:!1,cloudimage:{}};export default memo(AssemblyPoint);","import _typeof from\"@babel/runtime/helpers/typeof\";import _classCallCheck from\"@babel/runtime/helpers/classCallCheck\";import _createClass from\"@babel/runtime/helpers/createClass\";import _defineProperty from\"@babel/runtime/helpers/defineProperty\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;carguments.length?b:c;throw new TypeError(\"Private element is not present on this object\")}import{createElement}from\"react\";import{createRoot}from\"react-dom/client\";import AssemblyPoint,{TOOLS,TABS}from\"react-filerobot-image-editor\";import deepMerge from\"react-filerobot-image-editor/lib/utils/deepMerge\";var _root=new WeakMap,_getCurrentImgDataFnRef=new WeakMap,_updateStateFnRef=new WeakMap,FilerobotImageEditor=function(){function a(b){var c=1B9.DefaultEventPriority,cE=Object.freeze(Object.defineProperty({__proto__:null,appendChild:K_,appendChildToContainer:$_,appendInitialChild:P_,cancelTimeout:G_,clearContainer:oE,commitMount:tE,commitTextUpdate:J_,commitUpdate:eE,createInstance:M_,createTextInstance:L_,detachDeletedInstance:sE,finalizeInitialChildren:T_,getChildHostContext:H_,getCurrentEventPriority:lE,getPublicInstance:A_,getRootHostContext:B_,hideInstance:nE,hideTextInstance:rE,idlePriority:H2.unstable_IdlePriority,insertBefore:G9,insertInContainerBefore:X_,isPrimaryRenderer:V_,noTimeout:U_,now:H2.unstable_now,prepareForCommit:I_,preparePortalMount:N_,prepareUpdate:R_,removeChild:q_,removeChildFromContainer:Q_,resetAfterCommit:F_,resetTextContent:D_,run:H2.unstable_runWithPriority,scheduleTimeout:z_,shouldDeprioritizeSubtree:j_,shouldSetTextContent:W_,supportsMutation:Z_,unhideInstance:aE,unhideTextInstance:iE,warnsIfNotActing:Y_},Symbol.toStringTag,{value:"Module"}));var uE=Object.defineProperty,dE=Object.defineProperties,hE=Object.getOwnPropertyDescriptors,Pv=Object.getOwnPropertySymbols,fE=Object.prototype.hasOwnProperty,pE=Object.prototype.propertyIsEnumerable,Mv=(t,e,n)=>e in t?uE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Lv=(t,e)=>{for(var n in e||(e={}))fE.call(e,n)&&Mv(t,n,e[n]);if(Pv)for(var n of Pv(e))pE.call(e,n)&&Mv(t,n,e[n]);return t},gE=(t,e)=>dE(t,hE(e)),Tv,Av;typeof window<"u"&&((Tv=window.document)!=null&&Tv.createElement||((Av=window.navigator)==null?void 0:Av.product)==="ReactNative")?ct.useLayoutEffect:ct.useEffect;function U9(t,e,n){if(!t)return;if(n(t)===!0)return t;let r=t.child;for(;r;){const s=U9(r,e,n);if(s)return s;r=r.sibling}}function W9(t){try{return Object.defineProperties(t,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return t}}const Iv=console.error;console.error=function(){const t=[...arguments].join("");if(t?.startsWith("Warning:")&&t.includes("useContext")){console.error=Iv;return}return Iv.apply(this,arguments)};const pm=W9(ct.createContext(null));class V9 extends ct.Component{render(){return ct.createElement(pm.Provider,{value:this._reactInternals},this.props.children)}}function mE(){const t=ct.useContext(pm);if(t===null)throw new Error("its-fine: useFiber must be called within a !");const e=ct.useId();return ct.useMemo(()=>{for(const n of[t,t?.alternate]){if(!n)continue;const r=U9(n,!1,s=>{let o=s.memoizedState;for(;o;){if(o.memoizedState===e)return!0;o=o.next}});if(r)return r}},[t,e])}function vE(){const t=mE(),[e]=ct.useState(()=>new Map);e.clear();let n=t;for(;n;){if(n.type&&typeof n.type=="object"){const r=n.type._context===void 0&&n.type.Provider===n.type?n.type:n.type._context;r&&r!==pm&&!e.has(r)&&e.set(r,ct.useContext(W9(r)))}n=n.return}return e}function yE(){const t=vE();return ct.useMemo(()=>Array.from(t.keys()).reduce((e,n)=>r=>ct.createElement(e,null,ct.createElement(n.Provider,gE(Lv({},r),{value:t.get(n)}))),e=>ct.createElement(V9,Lv({},e))),[t])}function bE(t){const e=L.useRef({});return L.useLayoutEffect(()=>{e.current=t}),L.useLayoutEffect(()=>()=>{e.current={}},[]),e.current}const wE=t=>{const e=L.useRef(),n=L.useRef(),r=L.useRef(),s=bE(t),o=yE(),c=d=>{const{forwardedRef:f}=t;f&&(typeof f=="function"?f(d):f.current=d)};return L.useLayoutEffect(()=>(n.current=new b1.Stage({width:t.width,height:t.height,container:e.current}),c(n.current),r.current=l1.createContainer(n.current,B9.LegacyRoot,!1,null),l1.updateContainer(L.createElement(o,{},t.children),r.current),()=>{b1.isBrowser&&(c(null),l1.updateContainer(null,r.current,null),n.current.destroy())}),[]),L.useLayoutEffect(()=>{c(n.current),Ap(n.current,t,s),l1.updateContainer(L.createElement(o,{},t.children),r.current,null)}),L.createElement("div",{ref:e,id:t.id,accessKey:t.accessKey,className:t.className,role:t.role,style:t.style,tabIndex:t.tabIndex,title:t.title})},gm="Layer",xE="Group",Y9="Rect",Z9="Ellipse",CE="Line",Ip="Image",SE="Text",_E="RegularPolygon",EE="Arrow",K9="Transformer",l1=b_(cE);l1.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:L.version,rendererPackageName:"react-konva"});const $9=L.forwardRef((t,e)=>L.createElement(V9,{},L.createElement(wE,{...t,forwardedRef:e}))),OE=S_;var _g=function(t,e,n,r){return Math.min(t/n,e/r)||1},pp="FIE_root",kE="FIE_design-layer",X9="FIE_transformers-layer",q9="FIE_original-image",Q9="FIE_nodes-transformer",El="watermark",Eg="353297d2-40b4-4684-a875-45a2178a8157",J9=.92,Mn={FINETUNE:"Finetune",FILTERS:"Filters",ADJUST:"Adjust",WATERMARK:"Watermark",ANNOTATE:"Annotate",RESIZE:"Resize"},_t={CROP:"Crop",ROTATE:"Rotate",FLIP_X:"Flip_X",FLIP_Y:"Flip_Y",BRIGHTNESS:"Brightness",CONTRAST:"Contrast",HSV:"HueSaturationValue",WARMTH:"Warmth",BLUR:"Blur",THRESHOLD:"Threshold",POSTERIZE:"Posterize",PIXELATE:"Pixelate",NOISE:"Noise",FILTERS:"Filters",RECT:"Rect",ELLIPSE:"Ellipse",POLYGON:"Polygon",TEXT:"Text",LINE:"Line",IMAGE:"Image",ARROW:"Arrow",WATERMARK:"Watermark",PEN:"Pen",RESIZE:"Resize"},mm={X:"X",Y:"Y"},oo=1,gd=["png","jpeg","jpg","webp"],PE=[].concat(gd,["svg","gif","avif","apng"]),Nv=gd[0],Os={DEFAULT:"default",DRAW:"crosshair",SELECT:"pointer",MOVE:"move",DRAG:"GRAB"},vm="Crop",tb="custom",Yc="ellipse",Cr={TOP_LEFT:"top-left",TOP_CENTER:"top-center",TOP_RIGHT:"top-right",MIDDLE_LEFT:"middle-left",MIDDLE_CENTER:"middle-center",MIDDLE_RIGHT:"middle-right",BOTTOM_LEFT:"bottom-left",BOTTOM_CENTER:"bottom-center",BOTTOM_RIGHT:"bottom-right"},Rv={WIDTH:14,HEIGHT:14},eb={AFTER_SAVE:"after-saving",CLOSE_BUTTON:"close-button-clicked"},md={WARNING:"warning",ERROR:"error"},Fv={top:"north",bottom:"south",left:"west",center:"center",right:"east"},ME={northwest:"top-left",northcenter:"top-center",northeast:"top-right",centerwest:"center-left",centercenter:"center-center",centereast:"center-right",southwest:"bottom-left",southcenter:"bottom-center",southeast:"bottom-right"},LE=function(t,e){var n=2{t.Konva[s.prototype.getClassName()]=s};t._registerNode=r,t.Konva._injectGlobal(t.Konva)})(Gv)),Gv}var Wv={},Vv;function rr(){return Vv||(Vv=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.Transform=void 0;const e=$e();class n{constructor(_=[1,0,0,1,0,0]){this.dirty=!1,this.m=_&&_.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new n(this.m)}copyInto(_){_.m[0]=this.m[0],_.m[1]=this.m[1],_.m[2]=this.m[2],_.m[3]=this.m[3],_.m[4]=this.m[4],_.m[5]=this.m[5]}point(_){var k=this.m;return{x:k[0]*_.x+k[2]*_.y+k[4],y:k[1]*_.x+k[3]*_.y+k[5]}}translate(_,k){return this.m[4]+=this.m[0]*_+this.m[2]*k,this.m[5]+=this.m[1]*_+this.m[3]*k,this}scale(_,k){return this.m[0]*=_,this.m[1]*=_,this.m[2]*=k,this.m[3]*=k,this}rotate(_){var k=Math.cos(_),R=Math.sin(_),G=this.m[0]*k+this.m[2]*R,T=this.m[1]*k+this.m[3]*R,D=this.m[0]*-R+this.m[2]*k,A=this.m[1]*-R+this.m[3]*k;return this.m[0]=G,this.m[1]=T,this.m[2]=D,this.m[3]=A,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(_,k){var R=this.m[0]+this.m[2]*k,G=this.m[1]+this.m[3]*k,T=this.m[2]+this.m[0]*_,D=this.m[3]+this.m[1]*_;return this.m[0]=R,this.m[1]=G,this.m[2]=T,this.m[3]=D,this}multiply(_){var k=this.m[0]*_.m[0]+this.m[2]*_.m[1],R=this.m[1]*_.m[0]+this.m[3]*_.m[1],G=this.m[0]*_.m[2]+this.m[2]*_.m[3],T=this.m[1]*_.m[2]+this.m[3]*_.m[3],D=this.m[0]*_.m[4]+this.m[2]*_.m[5]+this.m[4],A=this.m[1]*_.m[4]+this.m[3]*_.m[5]+this.m[5];return this.m[0]=k,this.m[1]=R,this.m[2]=G,this.m[3]=T,this.m[4]=D,this.m[5]=A,this}invert(){var _=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),k=this.m[3]*_,R=-this.m[1]*_,G=-this.m[2]*_,T=this.m[0]*_,D=_*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),A=_*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=k,this.m[1]=R,this.m[2]=G,this.m[3]=T,this.m[4]=D,this.m[5]=A,this}getMatrix(){return this.m}decompose(){var _=this.m[0],k=this.m[1],R=this.m[2],G=this.m[3],T=this.m[4],D=this.m[5],A=_*G-k*R;let B={x:T,y:D,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(_!=0||k!=0){var Z=Math.sqrt(_*_+k*k);B.rotation=k>0?Math.acos(_/Z):-Math.acos(_/Z),B.scaleX=Z,B.scaleY=A/Z,B.skewX=(_*R+k*G)/A,B.skewY=0}else if(R!=0||G!=0){var S=Math.sqrt(R*R+G*G);B.rotation=Math.PI/2-(G>0?Math.acos(-R/S):-Math.acos(R/S)),B.scaleX=A/S,B.scaleY=S,B.skewX=0,B.skewY=(_*R+k*G)/A}return B.rotation=t.Util._getRotation(B.rotation),B}}t.Transform=n;var r="[object Array]",s="[object Number]",o="[object String]",c="[object Boolean]",d=Math.PI/180,f=180/Math.PI,g="#",v="",x="0",C="Konva warning: ",y="Konva error: ",h="rgb(",w={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},E=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,M=[];const b=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(m){setTimeout(m,60)};t.Util={_isElement(m){return!!(m&&m.nodeType==1)},_isFunction(m){return!!(m&&m.constructor&&m.call&&m.apply)},_isPlainObject(m){return!!m&&m.constructor===Object},_isArray(m){return Object.prototype.toString.call(m)===r},_isNumber(m){return Object.prototype.toString.call(m)===s&&!isNaN(m)&&isFinite(m)},_isString(m){return Object.prototype.toString.call(m)===o},_isBoolean(m){return Object.prototype.toString.call(m)===c},isObject(m){return m instanceof Object},isValidSelector(m){if(typeof m!="string")return!1;var _=m[0];return _==="#"||_==="."||_===_.toUpperCase()},_sign(m){return m===0||m>0?1:-1},requestAnimFrame(m){M.push(m),M.length===1&&b(function(){const _=M;M=[],_.forEach(function(k){k()})})},createCanvasElement(){var m=document.createElement("canvas");try{m.style=m.style||{}}catch{}return m},createImageElement(){return document.createElement("img")},_isInDocument(m){for(;m=m.parentNode;)if(m==document)return!0;return!1},_urlToImage(m,_){var k=t.Util.createImageElement();k.onload=function(){_(k)},k.src=m},_rgbToHex(m,_,k){return((1<<24)+(m<<16)+(_<<8)+k).toString(16).slice(1)},_hexToRgb(m){m=m.replace(g,v);var _=parseInt(m,16);return{r:_>>16&255,g:_>>8&255,b:_&255}},getRandomColor(){for(var m=(Math.random()*16777215<<0).toString(16);m.length<6;)m=x+m;return g+m},getRGB(m){var _;return m in w?(_=w[m],{r:_[0],g:_[1],b:_[2]}):m[0]===g?this._hexToRgb(m.substring(1)):m.substr(0,4)===h?(_=E.exec(m.replace(/ /g,"")),{r:parseInt(_[1],10),g:parseInt(_[2],10),b:parseInt(_[3],10)}):{r:0,g:0,b:0}},colorToRGBA(m){return m=m||"black",t.Util._namedColorToRBA(m)||t.Util._hex3ColorToRGBA(m)||t.Util._hex4ColorToRGBA(m)||t.Util._hex6ColorToRGBA(m)||t.Util._hex8ColorToRGBA(m)||t.Util._rgbColorToRGBA(m)||t.Util._rgbaColorToRGBA(m)||t.Util._hslColorToRGBA(m)},_namedColorToRBA(m){var _=w[m.toLowerCase()];return _?{r:_[0],g:_[1],b:_[2],a:1}:null},_rgbColorToRGBA(m){if(m.indexOf("rgb(")===0){m=m.match(/rgb\(([^)]+)\)/)[1];var _=m.split(/ *, */).map(Number);return{r:_[0],g:_[1],b:_[2],a:1}}},_rgbaColorToRGBA(m){if(m.indexOf("rgba(")===0){m=m.match(/rgba\(([^)]+)\)/)[1];var _=m.split(/ *, */).map((k,R)=>k.slice(-1)==="%"?R===3?parseInt(k)/100:parseInt(k)/100*255:Number(k));return{r:_[0],g:_[1],b:_[2],a:_[3]}}},_hex8ColorToRGBA(m){if(m[0]==="#"&&m.length===9)return{r:parseInt(m.slice(1,3),16),g:parseInt(m.slice(3,5),16),b:parseInt(m.slice(5,7),16),a:parseInt(m.slice(7,9),16)/255}},_hex6ColorToRGBA(m){if(m[0]==="#"&&m.length===7)return{r:parseInt(m.slice(1,3),16),g:parseInt(m.slice(3,5),16),b:parseInt(m.slice(5,7),16),a:1}},_hex4ColorToRGBA(m){if(m[0]==="#"&&m.length===5)return{r:parseInt(m[1]+m[1],16),g:parseInt(m[2]+m[2],16),b:parseInt(m[3]+m[3],16),a:parseInt(m[4]+m[4],16)/255}},_hex3ColorToRGBA(m){if(m[0]==="#"&&m.length===4)return{r:parseInt(m[1]+m[1],16),g:parseInt(m[2]+m[2],16),b:parseInt(m[3]+m[3],16),a:1}},_hslColorToRGBA(m){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(m)){const[_,...k]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(m),R=Number(k[0])/360,G=Number(k[1])/100,T=Number(k[2])/100;let D,A,B;if(G===0)return B=T*255,{r:Math.round(B),g:Math.round(B),b:Math.round(B),a:1};T<.5?D=T*(1+G):D=T+G-T*G;const Z=2*T-D,S=[0,0,0];for(let I=0;I<3;I++)A=R+1/3*-(I-1),A<0&&A++,A>1&&A--,6*A<1?B=Z+(D-Z)*6*A:2*A<1?B=D:3*A<2?B=Z+(D-Z)*(2/3-A)*6:B=Z,S[I]=B*255;return{r:Math.round(S[0]),g:Math.round(S[1]),b:Math.round(S[2]),a:1}}},haveIntersection(m,_){return!(_.x>m.x+m.width||_.x+_.widthm.y+m.height||_.y+_.height1?(D=k,A=R,B=(k-G)*(k-G)+(R-T)*(R-T)):(D=m+S*(k-m),A=_+S*(R-_),B=(D-G)*(D-G)+(A-T)*(A-T))}return[D,A,B]},_getProjectionToLine(m,_,k){var R=t.Util.cloneObject(m),G=Number.MAX_VALUE;return _.forEach(function(T,D){if(!(!k&&D===_.length-1)){var A=_[(D+1)%_.length],B=t.Util._getProjectionToSegment(T.x,T.y,A.x,A.y,m.x,m.y),Z=B[0],S=B[1],I=B[2];I_.length){var D=_;_=m,m=D}for(R=0;R{_.width=0,_.height=0})},drawRoundedRectPath(m,_,k,R){let G=0,T=0,D=0,A=0;typeof R=="number"?G=T=D=A=Math.min(R,_/2,k/2):(G=Math.min(R[0]||0,_/2,k/2),T=Math.min(R[1]||0,_/2,k/2),A=Math.min(R[2]||0,_/2,k/2),D=Math.min(R[3]||0,_/2,k/2)),m.moveTo(G,0),m.lineTo(_-T,0),m.arc(_-T,T,T,Math.PI*3/2,0,!1),m.lineTo(_,k-A),m.arc(_-A,k-A,A,0,Math.PI/2,!1),m.lineTo(D,k),m.arc(D,k-D,D,Math.PI/2,Math.PI,!1),m.lineTo(0,G),m.arc(G,G,G,Math.PI,Math.PI*3/2,!1)}}})(Wv)),Wv}var f0={},Yv={},Bn={},Zv;function Ze(){if(Zv)return Bn;Zv=1,Object.defineProperty(Bn,"__esModule",{value:!0}),Bn.getComponentValidator=Bn.getBooleanValidator=Bn.getNumberArrayValidator=Bn.getFunctionValidator=Bn.getStringOrGradientValidator=Bn.getStringValidator=Bn.getNumberOrAutoValidator=Bn.getNumberOrArrayOfNumbersValidator=Bn.getNumberValidator=Bn.alphaComponent=Bn.RGBComponent=void 0;const t=$e(),e=rr();function n(h){return e.Util._isString(h)?'"'+h+'"':Object.prototype.toString.call(h)==="[object Number]"||e.Util._isBoolean(h)?h:Object.prototype.toString.call(h)}function r(h){return h>255?255:h<0?0:Math.round(h)}Bn.RGBComponent=r;function s(h){return h>1?1:h<1e-4?1e-4:h}Bn.alphaComponent=s;function o(){if(t.Konva.isUnminified)return function(h,w){return e.Util._isNumber(h)||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a number.'),h}}Bn.getNumberValidator=o;function c(h){if(t.Konva.isUnminified)return function(w,E){let M=e.Util._isNumber(w),b=e.Util._isArray(w)&&w.length==h;return!M&&!b&&e.Util.warn(n(w)+' is a not valid value for "'+E+'" attribute. The value should be a number or Array('+h+")"),w}}Bn.getNumberOrArrayOfNumbersValidator=c;function d(){if(t.Konva.isUnminified)return function(h,w){var E=e.Util._isNumber(h),M=h==="auto";return E||M||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a number or "auto".'),h}}Bn.getNumberOrAutoValidator=d;function f(){if(t.Konva.isUnminified)return function(h,w){return e.Util._isString(h)||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a string.'),h}}Bn.getStringValidator=f;function g(){if(t.Konva.isUnminified)return function(h,w){const E=e.Util._isString(h),M=Object.prototype.toString.call(h)==="[object CanvasGradient]"||h&&h.addColorStop;return E||M||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a string or a native gradient.'),h}}Bn.getStringOrGradientValidator=g;function v(){if(t.Konva.isUnminified)return function(h,w){return e.Util._isFunction(h)||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a function.'),h}}Bn.getFunctionValidator=v;function x(){if(t.Konva.isUnminified)return function(h,w){const E=Int8Array?Object.getPrototypeOf(Int8Array):null;return E&&h instanceof E||(e.Util._isArray(h)?h.forEach(function(M){e.Util._isNumber(M)||e.Util.warn('"'+w+'" attribute has non numeric element '+M+". Make sure that all elements are numbers.")}):e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a array of numbers.')),h}}Bn.getNumberArrayValidator=x;function C(){if(t.Konva.isUnminified)return function(h,w){var E=h===!0||h===!1;return E||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a boolean.'),h}}Bn.getBooleanValidator=C;function y(h){if(t.Konva.isUnminified)return function(w,E){return w==null||e.Util.isObject(w)||e.Util.warn(n(w)+' is a not valid value for "'+E+'" attribute. The value should be an object with properties '+h),w}}return Bn.getComponentValidator=y,Bn}var Kv;function ze(){return Kv||(Kv=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Factory=void 0;const e=rr(),n=Ze();var r="get",s="set";t.Factory={addGetterSetter(o,c,d,f,g){t.Factory.addGetter(o,c,d),t.Factory.addSetter(o,c,f,g),t.Factory.addOverloadedGetterSetter(o,c)},addGetter(o,c,d){var f=r+e.Util._capitalize(c);o.prototype[f]=o.prototype[f]||function(){var g=this.attrs[c];return g===void 0?d:g}},addSetter(o,c,d,f){var g=s+e.Util._capitalize(c);o.prototype[g]||t.Factory.overWriteSetter(o,c,d,f)},overWriteSetter(o,c,d,f){var g=s+e.Util._capitalize(c);o.prototype[g]=function(v){return d&&v!==void 0&&v!==null&&(v=d.call(this,v,c)),this._setAttr(c,v),f&&f.call(this),this}},addComponentsGetterSetter(o,c,d,f,g){var v=d.length,x=e.Util._capitalize,C=r+x(c),y=s+x(c),h,w;o.prototype[C]=function(){var M={};for(h=0;h{this._setAttr(c+x(_),void 0)}),this._fireChangeEvent(c,b,M),g&&g.call(this),this},t.Factory.addOverloadedGetterSetter(o,c)},addOverloadedGetterSetter(o,c){var d=e.Util._capitalize(c),f=s+d,g=r+d;o.prototype[c]=function(){return arguments.length?(this[f](arguments[0]),this):this[g]()}},addDeprecatedGetterSetter(o,c,d,f){e.Util.error("Adding deprecated "+c);var g=r+e.Util._capitalize(c),v=c+" property is deprecated and will be removed soon. Look at Konva change log for more information.";o.prototype[g]=function(){e.Util.error(v);var x=this.attrs[c];return x===void 0?d:x},t.Factory.addSetter(o,c,f,function(){e.Util.error(v)}),t.Factory.addOverloadedGetterSetter(o,c)},backCompat(o,c){e.Util.each(c,function(d,f){var g=o.prototype[f],v=r+e.Util._capitalize(d),x=s+e.Util._capitalize(d);function C(){g.apply(this,arguments),e.Util.error('"'+d+'" method is deprecated and will be removed soon. Use ""'+f+'" instead.')}o.prototype[d]=C,o.prototype[v]=C,o.prototype[x]=C})},afterSetFilter(){this._filterUpToDate=!1}}})(Yv)),Yv}var bs={},ws={},$v;function ib(){if($v)return ws;$v=1,Object.defineProperty(ws,"__esModule",{value:!0}),ws.HitContext=ws.SceneContext=ws.Context=void 0;const t=rr(),e=$e();function n(M){var b=[],m=M.length,_=t.Util,k,R;for(k=0;ktypeof A=="number"?Math.floor(A):A)),k+=s+D.join(r)+o)):(k+=G.property,M||(k+=v+G.val)),k+=f;return k}clearTrace(){this.traceArr=[]}_trace(M){var b=this.traceArr,m;b.push(M),m=b.length,m>=y&&b.shift()}reset(){var M=this.getCanvas().getPixelRatio();this.setTransform(1*M,0,0,1*M,0,0)}getCanvas(){return this.canvas}clear(M){var b=this.getCanvas();M?this.clearRect(M.x||0,M.y||0,M.width||0,M.height||0):this.clearRect(0,0,b.getWidth()/b.pixelRatio,b.getHeight()/b.pixelRatio)}_applyLineCap(M){const b=M.attrs.lineCap;b&&this.setAttr("lineCap",b)}_applyOpacity(M){var b=M.getAbsoluteOpacity();b!==1&&this.setAttr("globalAlpha",b)}_applyLineJoin(M){const b=M.attrs.lineJoin;b&&this.setAttr("lineJoin",b)}setAttr(M,b){this._context[M]=b}arc(M,b,m,_,k,R){this._context.arc(M,b,m,_,k,R)}arcTo(M,b,m,_,k){this._context.arcTo(M,b,m,_,k)}beginPath(){this._context.beginPath()}bezierCurveTo(M,b,m,_,k,R){this._context.bezierCurveTo(M,b,m,_,k,R)}clearRect(M,b,m,_){this._context.clearRect(M,b,m,_)}clip(...M){this._context.clip.apply(this._context,M)}closePath(){this._context.closePath()}createImageData(M,b){var m=arguments;if(m.length===2)return this._context.createImageData(M,b);if(m.length===1)return this._context.createImageData(M)}createLinearGradient(M,b,m,_){return this._context.createLinearGradient(M,b,m,_)}createPattern(M,b){return this._context.createPattern(M,b)}createRadialGradient(M,b,m,_,k,R){return this._context.createRadialGradient(M,b,m,_,k,R)}drawImage(M,b,m,_,k,R,G,T,D){var A=arguments,B=this._context;A.length===3?B.drawImage(M,b,m):A.length===5?B.drawImage(M,b,m,_,k):A.length===9&&B.drawImage(M,b,m,_,k,R,G,T,D)}ellipse(M,b,m,_,k,R,G,T){this._context.ellipse(M,b,m,_,k,R,G,T)}isPointInPath(M,b,m,_){return m?this._context.isPointInPath(m,M,b,_):this._context.isPointInPath(M,b,_)}fill(...M){this._context.fill.apply(this._context,M)}fillRect(M,b,m,_){this._context.fillRect(M,b,m,_)}strokeRect(M,b,m,_){this._context.strokeRect(M,b,m,_)}fillText(M,b,m,_){_?this._context.fillText(M,b,m,_):this._context.fillText(M,b,m)}measureText(M){return this._context.measureText(M)}getImageData(M,b,m,_){return this._context.getImageData(M,b,m,_)}lineTo(M,b){this._context.lineTo(M,b)}moveTo(M,b){this._context.moveTo(M,b)}rect(M,b,m,_){this._context.rect(M,b,m,_)}roundRect(M,b,m,_,k){this._context.roundRect(M,b,m,_,k)}putImageData(M,b,m){this._context.putImageData(M,b,m)}quadraticCurveTo(M,b,m,_){this._context.quadraticCurveTo(M,b,m,_)}restore(){this._context.restore()}rotate(M){this._context.rotate(M)}save(){this._context.save()}scale(M,b){this._context.scale(M,b)}setLineDash(M){this._context.setLineDash?this._context.setLineDash(M):"mozDash"in this._context?this._context.mozDash=M:"webkitLineDash"in this._context&&(this._context.webkitLineDash=M)}getLineDash(){return this._context.getLineDash()}setTransform(M,b,m,_,k,R){this._context.setTransform(M,b,m,_,k,R)}stroke(M){M?this._context.stroke(M):this._context.stroke()}strokeText(M,b,m,_){this._context.strokeText(M,b,m,_)}transform(M,b,m,_,k,R){this._context.transform(M,b,m,_,k,R)}translate(M,b){this._context.translate(M,b)}_enableTrace(){var M=this,b=x.length,m=this.setAttr,_,k,R=function(G){var T=M[G],D;M[G]=function(){return k=n(Array.prototype.slice.call(arguments,0)),D=T.apply(M,arguments),M._trace({method:G,args:k}),D}};for(_=0;_{s.dragStatus==="dragging"&&(r=!0)}),r},justDragged:!1,get node(){var r;return t.DD._dragElements.forEach(s=>{r=s.node}),r},_dragElements:new Map,_drag(r){const s=[];t.DD._dragElements.forEach((o,c)=>{const{node:d}=o,f=d.getStage();f.setPointersPositions(r),o.pointerId===void 0&&(o.pointerId=n.Util._getFirstPointerId(r));const g=f._changedPointerPositions.find(C=>C.id===o.pointerId);if(g){if(o.dragStatus!=="dragging"){var v=d.dragDistance(),x=Math.max(Math.abs(g.x-o.startPointerPos.x),Math.abs(g.y-o.startPointerPos.y));if(x{o.fire("dragmove",{type:"dragmove",target:o,evt:r},!0)})},_endDragBefore(r){const s=[];t.DD._dragElements.forEach(o=>{const{node:c}=o,d=c.getStage();if(r&&d.setPointersPositions(r),!d._changedPointerPositions.find(g=>g.id===o.pointerId))return;(o.dragStatus==="dragging"||o.dragStatus==="stopped")&&(t.DD.justDragged=!0,e.Konva._mouseListenClick=!1,e.Konva._touchListenClick=!1,e.Konva._pointerListenClick=!1,o.dragStatus="stopped");const f=o.node.getLayer()||o.node instanceof e.Konva.Stage&&o.node;f&&s.indexOf(f)===-1&&s.push(f)}),s.forEach(o=>{o.draw()})},_endDragAfter(r){t.DD._dragElements.forEach((s,o)=>{s.dragStatus==="stopped"&&s.node.fire("dragend",{type:"dragend",target:s.node,evt:r},!0),s.dragStatus!=="dragging"&&t.DD._dragElements.delete(o)})}},e.Konva.isBrowser&&(window.addEventListener("mouseup",t.DD._endDragBefore,!0),window.addEventListener("touchend",t.DD._endDragBefore,!0),window.addEventListener("mousemove",t.DD._drag),window.addEventListener("touchmove",t.DD._drag),window.addEventListener("mouseup",t.DD._endDragAfter,!1),window.addEventListener("touchend",t.DD._endDragAfter,!1))})(qv)),qv}var Jv;function dr(){if(Jv)return f0;Jv=1,Object.defineProperty(f0,"__esModule",{value:!0}),f0.Node=void 0;const t=rr(),e=ze(),n=Rp(),r=$e(),s=ym(),o=Ze();var c="absoluteOpacity",d="allEventListeners",f="absoluteTransform",g="absoluteScale",v="canvas",x="Change",C="children",y="konva",h="listening",w="mouseenter",E="mouseleave",M="set",b="Shape",m=" ",_="stage",k="transform",R="Stage",G="visible",T=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(m);let D=1,A=class Og{constructor(S){this._id=D++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(S),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(S){(S===k||S===f)&&this._cache.get(S)?this._cache.get(S).dirty=!0:S?this._cache.delete(S):this._cache.clear()}_getCache(S,I){var N=this._cache.get(S),z=S===k||S===f,W=N===void 0||z&&N.dirty===!0;return W&&(N=I.call(this),this._cache.set(S,N)),N}_calculate(S,I,N){if(!this._attachedDepsListeners.get(S)){const z=I.map(W=>W+"Change.konva").join(m);this.on(z,()=>{this._clearCache(S)}),this._attachedDepsListeners.set(S,!0)}return this._getCache(S,N)}_getCanvasCache(){return this._cache.get(v)}_clearSelfAndDescendantCache(S){this._clearCache(S),S===f&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(v)){const{scene:S,filter:I,hit:N}=this._cache.get(v);t.Util.releaseCanvas(S,I,N),this._cache.delete(v)}return this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(S){var I=S||{},N={};(I.x===void 0||I.y===void 0||I.width===void 0||I.height===void 0)&&(N=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()||void 0}));var z=Math.ceil(I.width||N.width),W=Math.ceil(I.height||N.height),Q=I.pixelRatio,tt=I.x===void 0?Math.floor(N.x):I.x,at=I.y===void 0?Math.floor(N.y):I.y,X=I.offset||0,q=I.drawBorder||!1,rt=I.hitCanvasPixelRatio||1;if(!z||!W){t.Util.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");return}const ot=Math.abs(Math.round(N.x)-tt)>.5?1:0,ft=Math.abs(Math.round(N.y)-at)>.5?1:0;z+=X*2+ot,W+=X*2+ft,tt-=X,at-=X;var it=new n.SceneCanvas({pixelRatio:Q,width:z,height:W}),Y=new n.SceneCanvas({pixelRatio:Q,width:0,height:0,willReadFrequently:!0}),J=new n.HitCanvas({pixelRatio:rt,width:z,height:W}),lt=it.getContext(),dt=J.getContext();return J.isCache=!0,it.isCache=!0,this._cache.delete(v),this._filterUpToDate=!1,I.imageSmoothingEnabled===!1&&(it.getContext()._context.imageSmoothingEnabled=!1,Y.getContext()._context.imageSmoothingEnabled=!1),lt.save(),dt.save(),lt.translate(-tt,-at),dt.translate(-tt,-at),this._isUnderCache=!0,this._clearSelfAndDescendantCache(c),this._clearSelfAndDescendantCache(g),this.drawScene(it,this),this.drawHit(J,this),this._isUnderCache=!1,lt.restore(),dt.restore(),q&&(lt.save(),lt.beginPath(),lt.rect(0,0,z,W),lt.closePath(),lt.setAttr("strokeStyle","red"),lt.setAttr("lineWidth",5),lt.stroke(),lt.restore()),this._cache.set(v,{scene:it,filter:Y,hit:J,x:tt,y:at}),this._requestDraw(),this}isCached(){return this._cache.has(v)}getClientRect(S){throw new Error('abstract "getClientRect" method call')}_transformedRect(S,I){var N=[{x:S.x,y:S.y},{x:S.x+S.width,y:S.y},{x:S.x+S.width,y:S.y+S.height},{x:S.x,y:S.y+S.height}],z=1/0,W=1/0,Q=-1/0,tt=-1/0,at=this.getAbsoluteTransform(I);return N.forEach(function(X){var q=at.point(X);z===void 0&&(z=Q=q.x,W=tt=q.y),z=Math.min(z,q.x),W=Math.min(W,q.y),Q=Math.max(Q,q.x),tt=Math.max(tt,q.y)}),{x:z,y:W,width:Q-z,height:tt-W}}_drawCachedSceneCanvas(S){S.save(),S._applyOpacity(this),S._applyGlobalCompositeOperation(this);const I=this._getCanvasCache();S.translate(I.x,I.y);var N=this._getCachedSceneCanvas(),z=N.pixelRatio;S.drawImage(N._canvas,0,0,N.width/z,N.height/z),S.restore()}_drawCachedHitCanvas(S){var I=this._getCanvasCache(),N=I.hit;S.save(),S.translate(I.x,I.y),S.drawImage(N._canvas,0,0,N.width/N.pixelRatio,N.height/N.pixelRatio),S.restore()}_getCachedSceneCanvas(){var S=this.filters(),I=this._getCanvasCache(),N=I.scene,z=I.filter,W=z.getContext(),Q,tt,at,X;if(S){if(!this._filterUpToDate){var q=N.pixelRatio;z.setSize(N.width/N.pixelRatio,N.height/N.pixelRatio);try{for(Q=S.length,W.clear(),W.drawImage(N._canvas,0,0,N.getWidth()/q,N.getHeight()/q),tt=W.getImageData(0,0,z.getWidth(),z.getHeight()),at=0;at{var I,N;if(!S)return this;for(I in S)I!==C&&(N=M+t.Util._capitalize(I),t.Util._isFunction(this[N])?this[N](S[I]):this._setAttr(I,S[I]))}),this}isListening(){return this._getCache(h,this._isListening)}_isListening(S){if(!this.listening())return!1;const I=this.getParent();return I&&I!==S&&this!==S?I._isListening(S):!0}isVisible(){return this._getCache(G,this._isVisible)}_isVisible(S){if(!this.visible())return!1;const I=this.getParent();return I&&I!==S&&this!==S?I._isVisible(S):!0}shouldDrawHit(S,I=!1){if(S)return this._isVisible(S)&&this._isListening(S);var N=this.getLayer(),z=!1;s.DD._dragElements.forEach(Q=>{Q.dragStatus==="dragging"&&(Q.node.nodeType==="Stage"||Q.node.getLayer()===N)&&(z=!0)});var W=!I&&!r.Konva.hitOnDragEnabled&&(z||r.Konva.isTransforming());return this.isListening()&&this.isVisible()&&!W}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){var S=this.getDepth(),I=this,N=0,z,W,Q,tt;function at(q){for(z=[],W=q.length,Q=0;Q0&&z[0].getDepth()<=S&&at(z)}const X=this.getStage();return I.nodeType!==R&&X&&at(X.getChildren()),N}getDepth(){for(var S=0,I=this.parent;I;)S++,I=I.parent;return S}_batchTransformChanges(S){this._batchingTransformChange=!0,S(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(k),this._clearSelfAndDescendantCache(f)),this._needClearTransformCache=!1}setPosition(S){return this._batchTransformChanges(()=>{this.x(S.x),this.y(S.y)}),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){const S=this.getStage();if(!S)return null;var I=S.getPointerPosition();if(!I)return null;var N=this.getAbsoluteTransform().copy();return N.invert(),N.point(I)}getAbsolutePosition(S){let I=!1,N=this.parent;for(;N;){if(N.isCached()){I=!0;break}N=N.parent}I&&!S&&(S=!0);var z=this.getAbsoluteTransform(S).getMatrix(),W=new t.Transform,Q=this.offset();return W.m=z.slice(),W.translate(Q.x,Q.y),W.getTranslation()}setAbsolutePosition(S){const{x:I,y:N,...z}=this._clearTransform();this.attrs.x=I,this.attrs.y=N,this._clearCache(k);var W=this._getAbsoluteTransform().copy();return W.invert(),W.translate(S.x,S.y),S={x:this.attrs.x+W.getTranslation().x,y:this.attrs.y+W.getTranslation().y},this._setTransform(z),this.setPosition({x:S.x,y:S.y}),this._clearCache(k),this._clearSelfAndDescendantCache(f),this}_setTransform(S){var I;for(I in S)this.attrs[I]=S[I]}_clearTransform(){var S={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,S}move(S){var I=S.x,N=S.y,z=this.x(),W=this.y();return I!==void 0&&(z+=I),N!==void 0&&(W+=N),this.setPosition({x:z,y:W}),this}_eachAncestorReverse(S,I){var N=[],z=this.getParent(),W,Q;if(!(I&&I._id===this._id)){for(N.unshift(this);z&&(!I||z._id!==I._id);)N.unshift(z),z=z.parent;for(W=N.length,Q=0;Q0?(this.parent.children.splice(S,1),this.parent.children.splice(S-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return t.Util.warn("Node has no parent. moveToBottom function is ignored."),!1;var S=this.index;return S>0?(this.parent.children.splice(S,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1}setZIndex(S){if(!this.parent)return t.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(S<0||S>=this.parent.children.length)&&t.Util.warn("Unexpected value "+S+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");var I=this.index;return this.parent.children.splice(I,1),this.parent.children.splice(S,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(c,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){var S=this.opacity(),I=this.getParent();return I&&!I._isUnderCache&&(S*=I.getAbsoluteOpacity()),S}moveTo(S){return this.getParent()!==S&&(this._remove(),S.add(this)),this}toObject(){var S=this.getAttrs(),I,N,z,W,Q;const tt={attrs:{},className:this.getClassName()};for(I in S)N=S[I],Q=t.Util.isObject(N)&&!t.Util._isPlainObject(N)&&!t.Util._isArray(N),!Q&&(z=typeof this[I]=="function"&&this[I],delete S[I],W=z?z.call(this):null,S[I]=N,W!==N&&(tt.attrs[I]=N));return t.Util._prepareToStringify(tt)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(S,I,N){var z=[];I&&this._isMatch(S)&&z.push(this);for(var W=this.parent;W;){if(W===N)return z;W._isMatch(S)&&z.push(W),W=W.parent}return z}isAncestorOf(S){return!1}findAncestor(S,I,N){return this.findAncestors(S,I,N)[0]}_isMatch(S){if(!S)return!1;if(typeof S=="function")return S(this);var I=S.replace(/ /g,"").split(","),N=I.length,z,W;for(z=0;z{try{const z=S?.callback;z&&delete S.callback,t.Util._urlToImage(this.toDataURL(S),function(W){I(W),z?.(W)})}catch(z){N(z)}})}toBlob(S){return new Promise((I,N)=>{try{const z=S?.callback;z&&delete S.callback,this.toCanvas(S).toBlob(W=>{I(W),z?.(W)},S?.mimeType,S?.quality)}catch(z){N(z)}})}setSize(S){return this.width(S.width),this.height(S.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return this.attrs.dragDistance!==void 0?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():r.Konva.dragDistance}_off(S,I,N){var z=this.eventListeners[S],W,Q,tt;for(W=0;W=0;if(N&&!this.isDragging()){var z=!1;s.DD._dragElements.forEach(W=>{this.isAncestorOf(W.node)&&(z=!0)}),z||this._createDragElement(S)}})}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var S=this.getStage();if(!S)return;const I=s.DD._dragElements.get(this._id),N=I&&I.dragStatus==="dragging",z=I&&I.dragStatus==="ready";N?this.stopDrag():z&&s.DD._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(S={x:0,y:0}){const I=this.getStage();if(!I)return!1;const N={x:-S.x,y:-S.y,width:I.width()+2*S.x,height:I.height()+2*S.y};return t.Util.haveIntersection(N,this.getClientRect())}static create(S,I){return t.Util._isString(S)&&(S=JSON.parse(S)),this._createNode(S,I)}static _createNode(S,I){var N=Og.prototype.getClassName.call(S),z=S.children,W,Q,tt;I&&(S.attrs.container=I),r.Konva[N]||(t.Util.warn('Can not find a node with class name "'+N+'". Fallback to "Shape".'),N="Shape");const at=r.Konva[N];if(W=new at(S.attrs),z)for(Q=z.length,tt=0;tt0}removeChildren(){return this.getChildren().forEach(o=>{o.parent=null,o.index=0,o.remove()}),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach(o=>{o.parent=null,o.index=0,o.destroy()}),this.children=[],this._requestDraw(),this}add(...o){if(o.length===0)return this;if(o.length>1){for(var c=0;c0?c[0]:void 0}_generalFind(o,c){var d=[];return this._descendants(f=>{const g=f._isMatch(o);return g&&d.push(f),!!(g&&c)}),d}_descendants(o){let c=!1;const d=this.getChildren();for(const f of d)if(c=o(f),c||f.hasChildren()&&(c=f._descendants(o),c))return!0;return!1}toObject(){var o=e.Node.prototype.toObject.call(this);return o.children=[],this.getChildren().forEach(c=>{o.children.push(c.toObject())}),o}isAncestorOf(o){for(var c=o.getParent();c;){if(c._id===this._id)return!0;c=c.getParent()}return!1}clone(o){var c=e.Node.prototype.clone.call(this,o);return this.getChildren().forEach(function(d){c.add(d.clone())}),c}getAllIntersections(o){var c=[];return this.find("Shape").forEach(d=>{d.isVisible()&&d.intersects(o)&&c.push(d)}),c}_clearSelfAndDescendantCache(o){var c;super._clearSelfAndDescendantCache(o),!this.isCached()&&((c=this.children)===null||c===void 0||c.forEach(function(d){d._clearSelfAndDescendantCache(o)}))}_setChildrenIndices(){var o;(o=this.children)===null||o===void 0||o.forEach(function(c,d){c.index=d}),this._requestDraw()}drawScene(o,c,d){var f=this.getLayer(),g=o||f&&f.getCanvas(),v=g&&g.getContext(),x=this._getCanvasCache(),C=x&&x.scene,y=g&&g.isCache;if(!this.isVisible()&&!y)return this;if(C){v.save();var h=this.getAbsoluteTransform(c).getMatrix();v.transform(h[0],h[1],h[2],h[3],h[4],h[5]),this._drawCachedSceneCanvas(v),v.restore()}else this._drawChildren("drawScene",g,c,d);return this}drawHit(o,c){if(!this.shouldDrawHit(c))return this;var d=this.getLayer(),f=o||d&&d.hitCanvas,g=f&&f.getContext(),v=this._getCanvasCache(),x=v&&v.hit;if(x){g.save();var C=this.getAbsoluteTransform(c).getMatrix();g.transform(C[0],C[1],C[2],C[3],C[4],C[5]),this._drawCachedHitCanvas(g),g.restore()}else this._drawChildren("drawHit",f,c);return this}_drawChildren(o,c,d,f){var g,v=c&&c.getContext(),x=this.clipWidth(),C=this.clipHeight(),y=this.clipFunc(),h=typeof x=="number"&&typeof C=="number"||y;const w=d===this;if(h){v.save();var E=this.getAbsoluteTransform(d),M=E.getMatrix();v.transform(M[0],M[1],M[2],M[3],M[4],M[5]),v.beginPath();let k;if(y)k=y.call(this,v,this);else{var b=this.clipX(),m=this.clipY();v.rect(b||0,m||0,x,C)}v.clip.apply(v,k),M=E.copy().invert().getMatrix(),v.transform(M[0],M[1],M[2],M[3],M[4],M[5])}var _=!w&&this.globalCompositeOperation()!=="source-over"&&o==="drawScene";_&&(v.save(),v._applyGlobalCompositeOperation(this)),(g=this.children)===null||g===void 0||g.forEach(function(k){k[o](c,d,f)}),_&&v.restore(),h&&v.restore()}getClientRect(o={}){var c,d=o.skipTransform,f=o.relativeTo,g,v,x,C,y={x:1/0,y:1/0,width:0,height:0},h=this;(c=this.children)===null||c===void 0||c.forEach(function(m){if(m.visible()){var _=m.getClientRect({relativeTo:h,skipShadow:o.skipShadow,skipStroke:o.skipStroke});_.width===0&&_.height===0||(g===void 0?(g=_.x,v=_.y,x=_.x+_.width,C=_.y+_.height):(g=Math.min(g,_.x),v=Math.min(v,_.y),x=Math.max(x,_.x+_.width),C=Math.max(C,_.y+_.height)))}});for(var w=this.find("Shape"),E=!1,M=0;Mit.indexOf("pointer")>=0?"pointer":it.indexOf("touch")>=0?"touch":"mouse",q=it=>{const Y=X(it);if(Y==="pointer")return s.Konva.pointerEventsEnabled&&at.pointer;if(Y==="touch")return at.touch;if(Y==="mouse")return at.mouse};function rt(it={}){return(it.clipFunc||it.clipWidth||it.clipHeight)&&e.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),it}const ot="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);";t.stages=[];class ft extends r.Container{constructor(Y){super(rt(Y)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),t.stages.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{rt(this.attrs)}),this._checkVisibility()}_validateAdd(Y){const J=Y.getType()==="Layer",lt=Y.getType()==="FastLayer";J||lt||e.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const Y=this.visible()?"":"none";this.content.style.display=Y}setContainer(Y){if(typeof Y===v){if(Y.charAt(0)==="."){var J=Y.slice(1);Y=document.getElementsByClassName(J)[0]}else{var lt;Y.charAt(0)!=="#"?lt=Y:lt=Y.slice(1),Y=document.getElementById(lt)}if(!Y)throw"Can not find container in document with id "+lt}return this._setAttr("container",Y),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),Y.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var Y=this.children,J=Y.length,lt;for(lt=0;lt-1&&t.stages.splice(J,1),e.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const Y=this._pointerPositions[0]||this._changedPointerPositions[0];return Y?{x:Y.x,y:Y.y}:(e.Util.warn(ot),null)}_getPointerById(Y){return this._pointerPositions.find(J=>J.id===Y)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(Y){Y=Y||{},Y.x=Y.x||0,Y.y=Y.y||0,Y.width=Y.width||this.width(),Y.height=Y.height||this.height();var J=new o.SceneCanvas({width:Y.width,height:Y.height,pixelRatio:Y.pixelRatio||1}),lt=J.getContext()._context,dt=this.children;return(Y.x||Y.y)&<.translate(-1*Y.x,-1*Y.y),dt.forEach(function(yt){if(yt.isVisible()){var gt=yt._toKonvaCanvas(Y);lt.drawImage(gt._canvas,Y.x,Y.y,gt.getWidth()/gt.getPixelRatio(),gt.getHeight()/gt.getPixelRatio())}}),J}getIntersection(Y){if(!Y)return null;var J=this.children,lt=J.length,dt=lt-1,yt;for(yt=dt;yt>=0;yt--){const gt=J[yt].getIntersection(Y);if(gt)return gt}return null}_resizeDOM(){var Y=this.width(),J=this.height();this.content&&(this.content.style.width=Y+x,this.content.style.height=J+x),this.bufferCanvas.setSize(Y,J),this.bufferHitCanvas.setSize(Y,J),this.children.forEach(lt=>{lt.setSize({width:Y,height:J}),lt.draw()})}add(Y,...J){if(arguments.length>1){for(var lt=0;ltQ&&e.Util.warn("The stage has "+dt+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),Y.setSize({width:this.width(),height:this.height()}),Y.draw(),s.Konva.isBrowser&&this.content.appendChild(Y.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(Y){return f.hasPointerCapture(Y,this)}setPointerCapture(Y){f.setPointerCapture(Y,this)}releaseCapture(Y){f.releaseCapture(Y,this)}getLayers(){return this.children}_bindContentEvents(){s.Konva.isBrowser&&tt.forEach(([Y,J])=>{this.content.addEventListener(Y,lt=>{this[J](lt)},{passive:!1})})}_pointerenter(Y){this.setPointersPositions(Y);const J=q(Y.type);J&&this._fire(J.pointerenter,{evt:Y,target:this,currentTarget:this})}_pointerover(Y){this.setPointersPositions(Y);const J=q(Y.type);J&&this._fire(J.pointerover,{evt:Y,target:this,currentTarget:this})}_getTargetShape(Y){let J=this[Y+"targetShape"];return J&&!J.getStage()&&(J=null),J}_pointerleave(Y){const J=q(Y.type),lt=X(Y.type);if(J){this.setPointersPositions(Y);var dt=this._getTargetShape(lt),yt=!(s.Konva.isDragging()||s.Konva.isTransforming())||s.Konva.hitOnDragEnabled;dt&&yt?(dt._fireAndBubble(J.pointerout,{evt:Y}),dt._fireAndBubble(J.pointerleave,{evt:Y}),this._fire(J.pointerleave,{evt:Y,target:this,currentTarget:this}),this[lt+"targetShape"]=null):yt&&(this._fire(J.pointerleave,{evt:Y,target:this,currentTarget:this}),this._fire(J.pointerout,{evt:Y,target:this,currentTarget:this})),this.pointerPos=null,this._pointerPositions=[]}}_pointerdown(Y){const J=q(Y.type),lt=X(Y.type);if(J){this.setPointersPositions(Y);var dt=!1;this._changedPointerPositions.forEach(yt=>{var gt=this.getIntersection(yt);if(c.DD.justDragged=!1,s.Konva["_"+lt+"ListenClick"]=!0,!gt||!gt.isListening())return;s.Konva.capturePointerEventsEnabled&>.setPointerCapture(yt.id),this[lt+"ClickStartShape"]=gt,gt._fireAndBubble(J.pointerdown,{evt:Y,pointerId:yt.id}),dt=!0;const Dt=Y.type.indexOf("touch")>=0;gt.preventDefault()&&Y.cancelable&&Dt&&Y.preventDefault()}),dt||this._fire(J.pointerdown,{evt:Y,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(Y){const J=q(Y.type),lt=X(Y.type);if(!J)return;s.Konva.isDragging()&&c.DD.node.preventDefault()&&Y.cancelable&&Y.preventDefault(),this.setPointersPositions(Y);var dt=!(s.Konva.isDragging()||s.Konva.isTransforming())||s.Konva.hitOnDragEnabled;if(!dt)return;var yt={};let gt=!1;var Dt=this._getTargetShape(lt);this._changedPointerPositions.forEach(Ht=>{const It=f.getCapturedShape(Ht.id)||this.getIntersection(Ht),qt=Ht.id,Bt={evt:Y,pointerId:qt};var ee=Dt!==It;if(ee&&Dt&&(Dt._fireAndBubble(J.pointerout,{...Bt},It),Dt._fireAndBubble(J.pointerleave,{...Bt},It)),It){if(yt[It._id])return;yt[It._id]=!0}It&&It.isListening()?(gt=!0,ee&&(It._fireAndBubble(J.pointerover,{...Bt},Dt),It._fireAndBubble(J.pointerenter,{...Bt},Dt),this[lt+"targetShape"]=It),It._fireAndBubble(J.pointermove,{...Bt})):Dt&&(this._fire(J.pointerover,{evt:Y,target:this,currentTarget:this,pointerId:qt}),this[lt+"targetShape"]=null)}),gt||this._fire(J.pointermove,{evt:Y,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(Y){const J=q(Y.type),lt=X(Y.type);if(!J)return;this.setPointersPositions(Y);const dt=this[lt+"ClickStartShape"],yt=this[lt+"ClickEndShape"];var gt={};let Dt=!1;this._changedPointerPositions.forEach(Ht=>{const It=f.getCapturedShape(Ht.id)||this.getIntersection(Ht);if(It){if(It.releaseCapture(Ht.id),gt[It._id])return;gt[It._id]=!0}const qt=Ht.id,Bt={evt:Y,pointerId:qt};let ee=!1;s.Konva["_"+lt+"InDblClickWindow"]?(ee=!0,clearTimeout(this[lt+"DblTimeout"])):c.DD.justDragged||(s.Konva["_"+lt+"InDblClickWindow"]=!0,clearTimeout(this[lt+"DblTimeout"])),this[lt+"DblTimeout"]=setTimeout(function(){s.Konva["_"+lt+"InDblClickWindow"]=!1},s.Konva.dblClickWindow),It&&It.isListening()?(Dt=!0,this[lt+"ClickEndShape"]=It,It._fireAndBubble(J.pointerup,{...Bt}),s.Konva["_"+lt+"ListenClick"]&&dt&&dt===It&&(It._fireAndBubble(J.pointerclick,{...Bt}),ee&&yt&&yt===It&&It._fireAndBubble(J.pointerdblclick,{...Bt}))):(this[lt+"ClickEndShape"]=null,s.Konva["_"+lt+"ListenClick"]&&this._fire(J.pointerclick,{evt:Y,target:this,currentTarget:this,pointerId:qt}),ee&&this._fire(J.pointerdblclick,{evt:Y,target:this,currentTarget:this,pointerId:qt}))}),Dt||this._fire(J.pointerup,{evt:Y,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),s.Konva["_"+lt+"ListenClick"]=!1,Y.cancelable&<!=="touch"&&Y.preventDefault()}_contextmenu(Y){this.setPointersPositions(Y);var J=this.getIntersection(this.getPointerPosition());J&&J.isListening()?J._fireAndBubble(Z,{evt:Y}):this._fire(Z,{evt:Y,target:this,currentTarget:this})}_wheel(Y){this.setPointersPositions(Y);var J=this.getIntersection(this.getPointerPosition());J&&J.isListening()?J._fireAndBubble(W,{evt:Y}):this._fire(W,{evt:Y,target:this,currentTarget:this})}_pointercancel(Y){this.setPointersPositions(Y);const J=f.getCapturedShape(Y.pointerId)||this.getIntersection(this.getPointerPosition());J&&J._fireAndBubble(k,f.createEvent(Y)),f.releaseCapture(Y.pointerId)}_lostpointercapture(Y){f.releaseCapture(Y.pointerId)}setPointersPositions(Y){var J=this._getContentPosition(),lt=null,dt=null;Y=Y||window.event,Y.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(Y.touches,yt=>{this._pointerPositions.push({id:yt.identifier,x:(yt.clientX-J.left)/J.scaleX,y:(yt.clientY-J.top)/J.scaleY})}),Array.prototype.forEach.call(Y.changedTouches||Y.touches,yt=>{this._changedPointerPositions.push({id:yt.identifier,x:(yt.clientX-J.left)/J.scaleX,y:(yt.clientY-J.top)/J.scaleY})})):(lt=(Y.clientX-J.left)/J.scaleX,dt=(Y.clientY-J.top)/J.scaleY,this.pointerPos={x:lt,y:dt},this._pointerPositions=[{x:lt,y:dt,id:e.Util._getFirstPointerId(Y)}],this._changedPointerPositions=[{x:lt,y:dt,id:e.Util._getFirstPointerId(Y)}])}_setPointerPosition(Y){e.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(Y)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var Y=this.content.getBoundingClientRect();return{top:Y.top,left:Y.left,scaleX:Y.width/this.content.clientWidth||1,scaleY:Y.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o.SceneCanvas({width:this.width(),height:this.height()}),this.bufferHitCanvas=new o.HitCanvas({pixelRatio:1,width:this.width(),height:this.height()}),!!s.Konva.isBrowser){var Y=this.container();if(!Y)throw"Stage has no container. A container is required.";Y.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),Y.appendChild(this.content),this._resizeDOM()}}cache(){return e.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(Y){Y.batchDraw()}),this}}t.Stage=ft,ft.prototype.nodeType=g,(0,d._registerNode)(ft),n.Factory.addGetterSetter(ft,"container")})(e6)),e6}var g0={},a6={},i6;function Gr(){return i6||(i6=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Shape=t.shapes=void 0;const e=$e(),n=rr(),r=ze(),s=dr(),o=Ze(),c=$e(),d=ob();var f="hasShadow",g="shadowRGBA",v="patternImage",x="linearGradient",C="radialGradient";let y;function h(){return y||(y=n.Util.createCanvasElement().getContext("2d"),y)}t.shapes={};function w(D){const A=this.attrs.fillRule;A?D.fill(A):D.fill()}function E(D){D.stroke()}function M(D){D.fill()}function b(D){D.stroke()}function m(){this._clearCache(f)}function _(){this._clearCache(g)}function k(){this._clearCache(v)}function R(){this._clearCache(x)}function G(){this._clearCache(C)}class T extends s.Node{constructor(A){super(A);let B;for(;B=n.Util.getRandomColor(),!(B&&!(B in t.shapes)););this.colorKey=B,t.shapes[B]=this}getContext(){return n.Util.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return n.Util.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(f,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(v,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var A=h();const B=A.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(B&&B.setTransform){const Z=new n.Transform;Z.translate(this.fillPatternX(),this.fillPatternY()),Z.rotate(e.Konva.getAngle(this.fillPatternRotation())),Z.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),Z.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const S=Z.getMatrix(),I=typeof DOMMatrix>"u"?{a:S[0],b:S[1],c:S[2],d:S[3],e:S[4],f:S[5]}:new DOMMatrix(S);B.setTransform(I)}return B}}_getLinearGradient(){return this._getCache(x,this.__getLinearGradient)}__getLinearGradient(){var A=this.fillLinearGradientColorStops();if(A){for(var B=h(),Z=this.fillLinearGradientStartPoint(),S=this.fillLinearGradientEndPoint(),I=B.createLinearGradient(Z.x,Z.y,S.x,S.y),N=0;Nthis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const A=this.hitStrokeWidth();return A==="auto"?this.hasStroke():this.strokeEnabled()&&!!A}intersects(A){var B=this.getStage();if(!B)return!1;const Z=B.bufferHitCanvas;return Z.getContext().clear(),this.drawHit(Z,void 0,!0),Z.context.getImageData(Math.round(A.x),Math.round(A.y),1,1).data[3]>0}destroy(){return s.Node.prototype.destroy.call(this),delete t.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(A){var B;if(!(!((B=this.attrs.perfectDrawEnabled)!==null&&B!==void 0)||B))return!1;const Z=A||this.hasFill(),S=this.hasStroke(),I=this.getAbsoluteOpacity()!==1;if(Z&&S&&I)return!0;const N=this.hasShadow(),z=this.shadowForStrokeEnabled();return!!(Z&&S&&N&&z)}setStrokeHitEnabled(A){n.Util.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),A?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var A=this.size();return{x:this._centroid?-A.width/2:0,y:this._centroid?-A.height/2:0,width:A.width,height:A.height}}getClientRect(A={}){const B=A.skipTransform,Z=A.relativeTo,S=this.getSelfRect(),I=!A.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,N=S.width+I,z=S.height+I,W=!A.skipShadow&&this.hasShadow(),Q=W?this.shadowOffsetX():0,tt=W?this.shadowOffsetY():0,at=N+Math.abs(Q),X=z+Math.abs(tt),q=W&&this.shadowBlur()||0,rt=at+q*2,ot=X+q*2,ft={width:rt,height:ot,x:-(I/2+q)+Math.min(Q,0)+S.x,y:-(I/2+q)+Math.min(tt,0)+S.y};return B?ft:this._transformedRect(ft,Z)}drawScene(A,B,Z){var S=this.getLayer(),I=A||S.getCanvas(),N=I.getContext(),z=this._getCanvasCache(),W=this.getSceneFunc(),Q=this.hasShadow(),tt,at,X=I.isCache,q=B===this;if(!this.isVisible()&&!q)return this;if(z){N.save();var rt=this.getAbsoluteTransform(B).getMatrix();return N.transform(rt[0],rt[1],rt[2],rt[3],rt[4],rt[5]),this._drawCachedSceneCanvas(N),N.restore(),this}if(!W)return this;if(N.save(),this._useBufferCanvas()&&!X){tt=this.getStage();const it=Z||tt.bufferCanvas;at=it.getContext(),at.clear(),at.save(),at._applyLineJoin(this);var ot=this.getAbsoluteTransform(B).getMatrix();at.transform(ot[0],ot[1],ot[2],ot[3],ot[4],ot[5]),W.call(this,at,this),at.restore();var ft=it.pixelRatio;Q&&N._applyShadow(this),N._applyOpacity(this),N._applyGlobalCompositeOperation(this),N.drawImage(it._canvas,0,0,it.width/ft,it.height/ft)}else{if(N._applyLineJoin(this),!q){var ot=this.getAbsoluteTransform(B).getMatrix();N.transform(ot[0],ot[1],ot[2],ot[3],ot[4],ot[5]),N._applyOpacity(this),N._applyGlobalCompositeOperation(this)}Q&&N._applyShadow(this),W.call(this,N,this)}return N.restore(),this}drawHit(A,B,Z=!1){if(!this.shouldDrawHit(B,Z))return this;var S=this.getLayer(),I=A||S.hitCanvas,N=I&&I.getContext(),z=this.hitFunc()||this.sceneFunc(),W=this._getCanvasCache(),Q=W&&W.hit;if(this.colorKey||n.Util.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),Q){N.save();var tt=this.getAbsoluteTransform(B).getMatrix();return N.transform(tt[0],tt[1],tt[2],tt[3],tt[4],tt[5]),this._drawCachedHitCanvas(N),N.restore(),this}if(!z)return this;if(N.save(),N._applyLineJoin(this),this!==B){var at=this.getAbsoluteTransform(B).getMatrix();N.transform(at[0],at[1],at[2],at[3],at[4],at[5])}return z.call(this,N,this),N.restore(),this}drawHitFromCache(A=0){var B=this._getCanvasCache(),Z=this._getCachedSceneCanvas(),S=B.hit,I=S.getContext(),N=S.getWidth(),z=S.getHeight(),W,Q,tt,at,X,q;I.clear(),I.drawImage(Z._canvas,0,0,N,z);try{for(W=I.getImageData(0,0,N,z),Q=W.data,tt=Q.length,at=n.Util._hexToRgb(this.colorKey),X=0;XA?(Q[X]=at.r,Q[X+1]=at.g,Q[X+2]=at.b,Q[X+3]=255):Q[X+3]=0;I.putImageData(W,0,0)}catch(rt){n.Util.error("Unable to draw hit graph from cached scene canvas. "+rt.message)}return this}hasPointerCapture(A){return d.hasPointerCapture(A,this)}setPointerCapture(A){d.setPointerCapture(A,this)}releaseCapture(A){d.releaseCapture(A,this)}}t.Shape=T,T.prototype._fillFunc=w,T.prototype._strokeFunc=E,T.prototype._fillFuncHit=M,T.prototype._strokeFuncHit=b,T.prototype._centroid=!1,T.prototype.nodeType="Shape",(0,c._registerNode)(T),T.prototype.eventListeners={},T.prototype.on.call(T.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",m),T.prototype.on.call(T.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",_),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",k),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",R),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",G),r.Factory.addGetterSetter(T,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(T,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(T,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(T,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"lineJoin"),r.Factory.addGetterSetter(T,"lineCap"),r.Factory.addGetterSetter(T,"sceneFunc"),r.Factory.addGetterSetter(T,"hitFunc"),r.Factory.addGetterSetter(T,"dash"),r.Factory.addGetterSetter(T,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(T,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(T,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternImage"),r.Factory.addGetterSetter(T,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(T,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(T,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(T,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(T,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(T,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(T,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(T,"fillEnabled",!0),r.Factory.addGetterSetter(T,"strokeEnabled",!0),r.Factory.addGetterSetter(T,"shadowEnabled",!0),r.Factory.addGetterSetter(T,"dashEnabled",!0),r.Factory.addGetterSetter(T,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(T,"fillPriority","color"),r.Factory.addComponentsGetterSetter(T,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(T,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(T,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(T,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(T,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(T,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(T,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(T,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(T,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(T,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(T,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(T,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(T,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(T,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(T,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(T,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(T,"fillPatternRotation",0),r.Factory.addGetterSetter(T,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(T,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(a6)),a6}var o6;function sb(){if(o6)return g0;o6=1,Object.defineProperty(g0,"__esModule",{value:!0}),g0.Layer=void 0;const t=rr(),e=Fp(),n=dr(),r=ze(),s=Rp(),o=Ze(),c=Gr(),d=$e();var f="#",g="beforeDraw",v="draw",x=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],C=x.length;let y=class extends e.Container{constructor(h){super(h),this.canvas=new s.SceneCanvas,this.hitCanvas=new s.HitCanvas({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(h){return this.getContext().clear(h),this.getHitCanvas().getContext().clear(h),this}setZIndex(h){super.setZIndex(h);var w=this.getStage();return w&&w.content&&(w.content.removeChild(this.getNativeCanvasElement()),h{this.draw(),this._waitingForDraw=!1})),this}getIntersection(h){if(!this.isListening()||!this.isVisible())return null;for(var w=1,E=!1;;){for(let M=0;M0)return{antialiased:!0};return{}}drawScene(h,w){var E=this.getLayer(),M=h||E&&E.getCanvas();return this._fire(g,{node:this}),this.clearBeforeDraw()&&M.getContext().clear(),e.Container.prototype.drawScene.call(this,M,w),this._fire(v,{node:this}),this}drawHit(h,w){var E=this.getLayer(),M=h||E&&E.hitCanvas;return E&&E.clearBeforeDraw()&&E.getHitCanvas().getContext().clear(),e.Container.prototype.drawHit.call(this,M,w),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(h){t.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(h)}getHitGraphEnabled(h){return t.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!(!this.parent||!this.parent.content)){var h=this.parent,w=!!this.hitCanvas._canvas.parentNode;w?h.content.removeChild(this.hitCanvas._canvas):h.content.appendChild(this.hitCanvas._canvas)}}destroy(){return t.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}};return g0.Layer=y,y.prototype.nodeType="Layer",(0,d._registerNode)(y),r.Factory.addGetterSetter(y,"imageSmoothingEnabled",!0),r.Factory.addGetterSetter(y,"clearBeforeDraw",!0),r.Factory.addGetterSetter(y,"hitGraphEnabled",!0,(0,o.getBooleanValidator)()),g0}var m0={},s6;function NE(){if(s6)return m0;s6=1,Object.defineProperty(m0,"__esModule",{value:!0}),m0.FastLayer=void 0;const t=rr(),e=sb(),n=$e();let r=class extends e.Layer{constructor(s){super(s),this.listening(!1),t.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}};return m0.FastLayer=r,r.prototype.nodeType="FastLayer",(0,n._registerNode)(r),m0}var v0={},l6;function bm(){if(l6)return v0;l6=1,Object.defineProperty(v0,"__esModule",{value:!0}),v0.Group=void 0;const t=rr(),e=Fp(),n=$e();let r=class extends e.Container{_validateAdd(s){var o=s.getType();o!=="Group"&&o!=="Shape"&&t.Util.throw("You may only add groups and shapes to groups.")}};return v0.Group=r,r.prototype.nodeType="Group",(0,n._registerNode)(r),v0}var y0={},c6;function wm(){if(c6)return y0;c6=1,Object.defineProperty(y0,"__esModule",{value:!0}),y0.Animation=void 0;const t=$e(),e=rr(),n=(function(){return t.glob.performance&&t.glob.performance.now?function(){return t.glob.performance.now()}:function(){return new Date().getTime()}})();let r=class rd{constructor(o,c){this.id=rd.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:n(),frameRate:0},this.func=o,this.setLayers(c)}setLayers(o){let c=[];return o&&(c=Array.isArray(o)?o:[o]),this.layers=c,this}getLayers(){return this.layers}addLayer(o){const c=this.layers,d=c.length;for(let f=0;fthis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():h<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=h,this.update())}getTime(){return this._time}setPosition(h){this.prevPos=this._pos,this.propFunc(h),this._pos=h}getPosition(h){return h===void 0&&(h=this._time),this.func(h,this.begin,this._change,this.duration)}play(){this.state=d,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=f,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(h){this.pause(),this._time=h,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){var h=this.getTimer()-this._startTime;this.state===d?this.setTime(h):this.state===f&&this.setTime(this.duration-h)}pause(){this.state=c,this.fire("onPause")}getTimer(){return new Date().getTime()}}class C{constructor(h){var w=this,E=h.node,M=E._id,b,m=h.easing||t.Easings.Linear,_=!!h.yoyo,k;typeof h.duration>"u"?b=.3:h.duration===0?b=.001:b=h.duration,this.node=E,this._id=g++;var R=E.getLayer()||(E instanceof s.Konva.Stage?E.getLayers():null);R||e.Util.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new n.Animation(function(){w.tween.onEnterFrame()},R),this.tween=new x(k,function(G){w._tweenFunc(G)},m,0,1,b*1e3,_),this._addListeners(),C.attrs[M]||(C.attrs[M]={}),C.attrs[M][this._id]||(C.attrs[M][this._id]={}),C.tweens[M]||(C.tweens[M]={});for(k in h)o[k]===void 0&&this._addAttr(k,h[k]);this.reset(),this.onFinish=h.onFinish,this.onReset=h.onReset,this.onUpdate=h.onUpdate}_addAttr(h,w){var E=this.node,M=E._id,b,m,_,k,R,G,T,D;if(_=C.tweens[M][h],_&&delete C.attrs[M][_][h],b=E.getAttr(h),e.Util._isArray(w))if(m=[],R=Math.max(w.length,b.length),h==="points"&&w.length!==b.length&&(w.length>b.length?(T=b,b=e.Util._prepareArrayForTween(b,w,E.closed())):(G=w,w=e.Util._prepareArrayForTween(w,b,E.closed()))),h.indexOf("fill")===0)for(k=0;k{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var h=this.node,w=C.attrs[h._id][this._id];w.points&&w.points.trueEnd&&h.setAttr("points",w.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var h=this.node,w=C.attrs[h._id][this._id];w.points&&w.points.trueStart&&h.points(w.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(h){return this.tween.seek(h*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var h=this.node._id,w=this._id,E=C.tweens[h],M;this.pause();for(M in E)delete C.tweens[h][M];delete C.attrs[h][w]}}t.Tween=C,C.attrs={},C.tweens={},r.Node.prototype.to=function(y){var h=y.onFinish;y.node=this,y.onFinish=function(){this.destroy(),h&&h()};var w=new C(y);w.play()},t.Easings={BackEaseIn(y,h,w,E){var M=1.70158;return w*(y/=E)*y*((M+1)*y-M)+h},BackEaseOut(y,h,w,E){var M=1.70158;return w*((y=y/E-1)*y*((M+1)*y+M)+1)+h},BackEaseInOut(y,h,w,E){var M=1.70158;return(y/=E/2)<1?w/2*(y*y*(((M*=1.525)+1)*y-M))+h:w/2*((y-=2)*y*(((M*=1.525)+1)*y+M)+2)+h},ElasticEaseIn(y,h,w,E,M,b){var m=0;return y===0?h:(y/=E)===1?h+w:(b||(b=E*.3),!M||M0?c:d),w=x*d,E=C*(C>0?c:d),M=y*(y>0?d:c);return{x:h,y:f?-1*M:E,width:w-h,height:M-E}}};return b0.Arc=o,o.prototype._centroid=!0,o.prototype.className="Arc",o.prototype._attrsAffectingSize=["innerRadius","outerRadius"],(0,s._registerNode)(o),t.Factory.addGetterSetter(o,"innerRadius",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"outerRadius",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"angle",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"clockwise",!1,(0,r.getBooleanValidator)()),b0}var w0={},x0={},p6;function lb(){if(p6)return x0;p6=1,Object.defineProperty(x0,"__esModule",{value:!0}),x0.Line=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();function s(d,f,g,v,x,C,y){var h=Math.sqrt(Math.pow(g-d,2)+Math.pow(v-f,2)),w=Math.sqrt(Math.pow(x-g,2)+Math.pow(C-v,2)),E=y*h/(h+w),M=y*w/(h+w),b=g-E*(x-d),m=v-E*(C-f),_=g+M*(x-d),k=v+M*(C-f);return[b,m,_,k]}function o(d,f){var g=d.length,v=[],x,C;for(x=2;x4){for(h=this.getTensionPoints(),w=h.length,E=C?0:4,C||f.quadraticCurveTo(h[0],h[1],h[2],h[3]);E{let g,v,x;g=f/2,v=0;for(let C=0;C<20;C++)x=g*t.tValues[20][C]+g,v+=t.cValues[20][C]*r(c,d,x);return g*v};t.getCubicArcLength=e;const n=(c,d,f)=>{f===void 0&&(f=1);const g=c[0]-2*c[1]+c[2],v=d[0]-2*d[1]+d[2],x=2*c[1]-2*c[0],C=2*d[1]-2*d[0],y=4*(g*g+v*v),h=4*(g*x+v*C),w=x*x+C*C;if(y===0)return f*Math.sqrt(Math.pow(c[2]-c[0],2)+Math.pow(d[2]-d[0],2));const E=h/(2*y),M=w/y,b=f+E,m=M-E*E,_=b*b+m>0?Math.sqrt(b*b+m):0,k=E*E+m>0?Math.sqrt(E*E+m):0,R=E+Math.sqrt(E*E+m)!==0?m*Math.log(Math.abs((b+_)/(E+k))):0;return Math.sqrt(y)/2*(b*_-E*k+R)};t.getQuadraticArcLength=n;function r(c,d,f){const g=s(1,f,c),v=s(1,f,d),x=g*g+v*v;return Math.sqrt(x)}const s=(c,d,f)=>{const g=f.length-1;let v,x;if(g===0)return 0;if(c===0){x=0;for(let C=0;C<=g;C++)x+=t.binomialCoefficients[g][C]*Math.pow(1-d,g-C)*Math.pow(d,C)*f[C];return x}else{v=new Array(g);for(let C=0;C{let g=1,v=c/d,x=(c-f(v))/d,C=0;for(;g>.001;){const y=f(v+x),h=Math.abs(c-y)/d;if(h500)break}return v};t.t2length=o})(g6)),g6}var v6;function xm(){if(v6)return C0;v6=1,Object.defineProperty(C0,"__esModule",{value:!0}),C0.Path=void 0;const t=ze(),e=Gr(),n=$e(),r=jE();let s=class Va extends e.Shape{constructor(c){super(c),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=Va.parsePathData(this.data()),this.pathLength=Va.getPathLength(this.dataArray)}_sceneFunc(c){var d=this.dataArray;c.beginPath();for(var f=!1,g=0;gw?h:w,k=h>w?1:h/w,R=h>w?w/h:1;c.translate(C,y),c.rotate(b),c.scale(k,R),c.arc(0,0,_,E,E+M,1-m),c.scale(1/k,1/R),c.rotate(-b),c.translate(-C,-y);break;case"z":f=!0,c.closePath();break}}!f&&!this.hasFill()?c.strokeShape(this):c.fillStrokeShape(this)}getSelfRect(){var c=[];this.dataArray.forEach(function(h){if(h.command==="A"){var w=h.points[4],E=h.points[5],M=h.points[4]+E,b=Math.PI/180;if(Math.abs(w-M)M;m-=b){const _=Va.getPointOnEllipticalArc(h.points[0],h.points[1],h.points[2],h.points[3],m,0);c.push(_.x,_.y)}else for(let m=w+b;md[g].pathLength;)c-=d[g].pathLength,++g;if(g===v)return f=d[g-1].points.slice(-2),{x:f[0],y:f[1]};if(c<.01)return f=d[g].points.slice(0,2),{x:f[0],y:f[1]};var x=d[g],C=x.points;switch(x.command){case"L":return Va.getPointOnLine(c,x.start.x,x.start.y,C[0],C[1]);case"C":return Va.getPointOnCubicBezier((0,r.t2length)(c,Va.getPathLength(d),_=>(0,r.getCubicArcLength)([x.start.x,C[0],C[2],C[4]],[x.start.y,C[1],C[3],C[5]],_)),x.start.x,x.start.y,C[0],C[1],C[2],C[3],C[4],C[5]);case"Q":return Va.getPointOnQuadraticBezier((0,r.t2length)(c,Va.getPathLength(d),_=>(0,r.getQuadraticArcLength)([x.start.x,C[0],C[2]],[x.start.y,C[1],C[3]],_)),x.start.x,x.start.y,C[0],C[1],C[2],C[3]);case"A":var y=C[0],h=C[1],w=C[2],E=C[3],M=C[4],b=C[5],m=C[6];return M+=b*c/x.pathLength,Va.getPointOnEllipticalArc(y,h,w,E,M,m)}return null}static getPointOnLine(c,d,f,g,v,x,C){x===void 0&&(x=d),C===void 0&&(C=f);var y=(v-f)/(g-d+1e-8),h=Math.sqrt(c*c/(1+y*y));g0&&!isNaN(m[0]);){var G="",T=[],D=y,A=h,B,Z,S,I,N,z,W,Q,tt,at;switch(b){case"l":y+=m.shift(),h+=m.shift(),G="L",T.push(y,h);break;case"L":y=m.shift(),h=m.shift(),T.push(y,h);break;case"m":var X=m.shift(),q=m.shift();if(y+=X,h+=q,G="M",x.length>2&&x[x.length-1].command==="z"){for(var rt=x.length-2;rt>=0;rt--)if(x[rt].command==="M"){y=x[rt].points[0]+X,h=x[rt].points[1]+q;break}}T.push(y,h),b="l";break;case"M":y=m.shift(),h=m.shift(),G="M",T.push(y,h),b="L";break;case"h":y+=m.shift(),G="L",T.push(y,h);break;case"H":y=m.shift(),G="L",T.push(y,h);break;case"v":h+=m.shift(),G="L",T.push(y,h);break;case"V":h=m.shift(),G="L",T.push(y,h);break;case"C":T.push(m.shift(),m.shift(),m.shift(),m.shift()),y=m.shift(),h=m.shift(),T.push(y,h);break;case"c":T.push(y+m.shift(),h+m.shift(),y+m.shift(),h+m.shift()),y+=m.shift(),h+=m.shift(),G="C",T.push(y,h);break;case"S":Z=y,S=h,B=x[x.length-1],B.command==="C"&&(Z=y+(y-B.points[2]),S=h+(h-B.points[3])),T.push(Z,S,m.shift(),m.shift()),y=m.shift(),h=m.shift(),G="C",T.push(y,h);break;case"s":Z=y,S=h,B=x[x.length-1],B.command==="C"&&(Z=y+(y-B.points[2]),S=h+(h-B.points[3])),T.push(Z,S,y+m.shift(),h+m.shift()),y+=m.shift(),h+=m.shift(),G="C",T.push(y,h);break;case"Q":T.push(m.shift(),m.shift()),y=m.shift(),h=m.shift(),T.push(y,h);break;case"q":T.push(y+m.shift(),h+m.shift()),y+=m.shift(),h+=m.shift(),G="Q",T.push(y,h);break;case"T":Z=y,S=h,B=x[x.length-1],B.command==="Q"&&(Z=y+(y-B.points[0]),S=h+(h-B.points[1])),y=m.shift(),h=m.shift(),G="Q",T.push(Z,S,y,h);break;case"t":Z=y,S=h,B=x[x.length-1],B.command==="Q"&&(Z=y+(y-B.points[0]),S=h+(h-B.points[1])),y+=m.shift(),h+=m.shift(),G="Q",T.push(Z,S,y,h);break;case"A":I=m.shift(),N=m.shift(),z=m.shift(),W=m.shift(),Q=m.shift(),tt=y,at=h,y=m.shift(),h=m.shift(),G="A",T=this.convertEndpointToCenterParameterization(tt,at,y,h,W,Q,I,N,z);break;case"a":I=m.shift(),N=m.shift(),z=m.shift(),W=m.shift(),Q=m.shift(),tt=y,at=h,y+=m.shift(),h+=m.shift(),G="A",T=this.convertEndpointToCenterParameterization(tt,at,y,h,W,Q,I,N,z);break}x.push({command:G||b,points:T,start:{x:D,y:A},pathLength:this.calcLength(D,A,G||b,T)})}(b==="z"||b==="Z")&&x.push({command:"z",points:[],start:void 0,pathLength:0})}return x}static calcLength(c,d,f,g){var v,x,C,y,h=Va;switch(f){case"L":return h.getLineLength(c,d,g[0],g[1]);case"C":return(0,r.getCubicArcLength)([c,g[0],g[2],g[4]],[d,g[1],g[3],g[5]],1);case"Q":return(0,r.getQuadraticArcLength)([c,g[0],g[2]],[d,g[1],g[3]],1);case"A":v=0;var w=g[4],E=g[5],M=g[4]+E,b=Math.PI/180;if(Math.abs(w-M)M;y-=b)C=h.getPointOnEllipticalArc(g[0],g[1],g[2],g[3],y,0),v+=h.getLineLength(x.x,x.y,C.x,C.y),x=C;else for(y=w+b;y1&&(C*=Math.sqrt(b),y*=Math.sqrt(b));var m=Math.sqrt((C*C*(y*y)-C*C*(M*M)-y*y*(E*E))/(C*C*(M*M)+y*y*(E*E)));v===x&&(m*=-1),isNaN(m)&&(m=0);var _=m*C*M/y,k=m*-y*E/C,R=(c+f)/2+Math.cos(w)*_-Math.sin(w)*k,G=(d+g)/2+Math.sin(w)*_+Math.cos(w)*k,T=function(N){return Math.sqrt(N[0]*N[0]+N[1]*N[1])},D=function(N,z){return(N[0]*z[0]+N[1]*z[1])/(T(N)*T(z))},A=function(N,z){return(N[0]*z[1]=1&&(I=0),x===0&&I>0&&(I=I-2*Math.PI),x===1&&I<0&&(I=I+2*Math.PI),[R,G,C,y,B,I,w,x]}};return C0.Path=s,s.prototype.className="Path",s.prototype._attrsAffectingSize=["data"],(0,n._registerNode)(s),t.Factory.addGetterSetter(s,"data"),C0}var y6;function BE(){if(y6)return w0;y6=1,Object.defineProperty(w0,"__esModule",{value:!0}),w0.Arrow=void 0;const t=ze(),e=lb(),n=Ze(),r=$e(),s=xm();class o extends e.Line{_sceneFunc(d){super._sceneFunc(d);var f=Math.PI*2,g=this.points(),v=g,x=this.tension()!==0&&g.length>4;x&&(v=this.getTensionPoints());var C=this.pointerLength(),y=g.length,h,w;if(x){const b=[v[v.length-4],v[v.length-3],v[v.length-2],v[v.length-1],g[y-2],g[y-1]],m=s.Path.calcLength(v[v.length-4],v[v.length-3],"C",b),_=s.Path.getPointOnQuadraticBezier(Math.min(1,1-C/m),b[0],b[1],b[2],b[3],b[4],b[5]);h=g[y-2]-_.x,w=g[y-1]-_.y}else h=g[y-2]-g[y-4],w=g[y-1]-g[y-3];var E=(Math.atan2(w,h)+f)%f,M=this.pointerWidth();this.pointerAtEnding()&&(d.save(),d.beginPath(),d.translate(g[y-2],g[y-1]),d.rotate(E),d.moveTo(0,0),d.lineTo(-C,M/2),d.lineTo(-C,-M/2),d.closePath(),d.restore(),this.__fillStroke(d)),this.pointerAtBeginning()&&(d.save(),d.beginPath(),d.translate(g[0],g[1]),x?(h=(v[0]+v[2])/2-g[0],w=(v[1]+v[3])/2-g[1]):(h=g[2]-g[0],w=g[3]-g[1]),d.rotate((Math.atan2(-w,-h)+f)%f),d.moveTo(0,0),d.lineTo(-C,M/2),d.lineTo(-C,-M/2),d.closePath(),d.restore(),this.__fillStroke(d))}__fillStroke(d){var f=this.dashEnabled();f&&(this.attrs.dashEnabled=!1,d.setLineDash([])),d.fillStrokeShape(this),f&&(this.attrs.dashEnabled=!0)}getSelfRect(){const d=super.getSelfRect(),f=this.pointerWidth()/2;return{x:d.x-f,y:d.y-f,width:d.width+f*2,height:d.height+f*2}}}return w0.Arrow=o,o.prototype.className="Arrow",(0,r._registerNode)(o),t.Factory.addGetterSetter(o,"pointerLength",10,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(o,"pointerWidth",10,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(o,"pointerAtBeginning",!1),t.Factory.addGetterSetter(o,"pointerAtEnding",!0),w0}var S0={},b6;function HE(){if(b6)return S0;b6=1,Object.defineProperty(S0,"__esModule",{value:!0}),S0.Circle=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();let s=class extends e.Shape{_sceneFunc(o){o.beginPath(),o.arc(0,0,this.attrs.radius||0,0,Math.PI*2,!1),o.closePath(),o.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(o){this.radius()!==o/2&&this.radius(o/2)}setHeight(o){this.radius()!==o/2&&this.radius(o/2)}};return S0.Circle=s,s.prototype._centroid=!0,s.prototype.className="Circle",s.prototype._attrsAffectingSize=["radius"],(0,r._registerNode)(s),t.Factory.addGetterSetter(s,"radius",0,(0,n.getNumberValidator)()),S0}var _0={},w6;function zE(){if(w6)return _0;w6=1,Object.defineProperty(_0,"__esModule",{value:!0}),_0.Ellipse=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();class s extends e.Shape{_sceneFunc(c){var d=this.radiusX(),f=this.radiusY();c.beginPath(),c.save(),d!==f&&c.scale(1,f/d),c.arc(0,0,d,0,Math.PI*2,!1),c.restore(),c.closePath(),c.fillStrokeShape(this)}getWidth(){return this.radiusX()*2}getHeight(){return this.radiusY()*2}setWidth(c){this.radiusX(c/2)}setHeight(c){this.radiusY(c/2)}}return _0.Ellipse=s,s.prototype.className="Ellipse",s.prototype._centroid=!0,s.prototype._attrsAffectingSize=["radiusX","radiusY"],(0,r._registerNode)(s),t.Factory.addComponentsGetterSetter(s,"radius",["x","y"]),t.Factory.addGetterSetter(s,"radiusX",0,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(s,"radiusY",0,(0,n.getNumberValidator)()),_0}var E0={},x6;function GE(){if(x6)return E0;x6=1,Object.defineProperty(E0,"__esModule",{value:!0}),E0.Image=void 0;const t=rr(),e=ze(),n=Gr(),r=$e(),s=Ze();class o extends n.Shape{constructor(d){super(d),this.on("imageChange.konva",()=>{this._setImageLoad()}),this._setImageLoad()}_setImageLoad(){const d=this.image();d&&d.complete||d&&d.readyState===4||d&&d.addEventListener&&d.addEventListener("load",()=>{this._requestDraw()})}_useBufferCanvas(){return super._useBufferCanvas(!0)}_sceneFunc(d){const f=this.getWidth(),g=this.getHeight(),v=this.cornerRadius(),x=this.attrs.image;let C;if(x){const y=this.attrs.cropWidth,h=this.attrs.cropHeight;y&&h?C=[x,this.cropX(),this.cropY(),y,h,0,0,f,g]:C=[x,0,0,f,g]}(this.hasFill()||this.hasStroke()||v)&&(d.beginPath(),v?t.Util.drawRoundedRectPath(d,f,g,v):d.rect(0,0,f,g),d.closePath(),d.fillStrokeShape(this)),x&&(v&&d.clip(),d.drawImage.apply(d,C))}_hitFunc(d){var f=this.width(),g=this.height(),v=this.cornerRadius();d.beginPath(),v?t.Util.drawRoundedRectPath(d,f,g,v):d.rect(0,0,f,g),d.closePath(),d.fillStrokeShape(this)}getWidth(){var d,f;return(d=this.attrs.width)!==null&&d!==void 0?d:(f=this.image())===null||f===void 0?void 0:f.width}getHeight(){var d,f;return(d=this.attrs.height)!==null&&d!==void 0?d:(f=this.image())===null||f===void 0?void 0:f.height}static fromURL(d,f,g=null){var v=t.Util.createImageElement();v.onload=function(){var x=new o({image:v});f(x)},v.onerror=g,v.crossOrigin="Anonymous",v.src=d}}return E0.Image=o,o.prototype.className="Image",(0,r._registerNode)(o),e.Factory.addGetterSetter(o,"cornerRadius",0,(0,s.getNumberOrArrayOfNumbersValidator)(4)),e.Factory.addGetterSetter(o,"image"),e.Factory.addComponentsGetterSetter(o,"crop",["x","y","width","height"]),e.Factory.addGetterSetter(o,"cropX",0,(0,s.getNumberValidator)()),e.Factory.addGetterSetter(o,"cropY",0,(0,s.getNumberValidator)()),e.Factory.addGetterSetter(o,"cropWidth",0,(0,s.getNumberValidator)()),e.Factory.addGetterSetter(o,"cropHeight",0,(0,s.getNumberValidator)()),E0}var Pc={},C6;function UE(){if(C6)return Pc;C6=1,Object.defineProperty(Pc,"__esModule",{value:!0}),Pc.Tag=Pc.Label=void 0;const t=ze(),e=Gr(),n=bm(),r=Ze(),s=$e();var o=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],c="Change.konva",d="none",f="up",g="right",v="down",x="left",C=o.length;class y extends n.Group{constructor(E){super(E),this.on("add.konva",function(M){this._addListeners(M.child),this._sync()})}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(E){var M=this,b,m=function(){M._sync()};for(b=0;b{c=Math.min(c,v.x),d=Math.max(d,v.x),f=Math.min(f,v.y),g=Math.max(g,v.y)}),{x:c,y:f,width:d-c,height:g-f}}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(o){this.radius(o/2)}setHeight(o){this.radius(o/2)}};return k0.RegularPolygon=s,s.prototype.className="RegularPolygon",s.prototype._centroid=!0,s.prototype._attrsAffectingSize=["radius"],(0,r._registerNode)(s),t.Factory.addGetterSetter(s,"radius",0,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(s,"sides",0,(0,n.getNumberValidator)()),k0}var P0={},E6;function VE(){if(E6)return P0;E6=1,Object.defineProperty(P0,"__esModule",{value:!0}),P0.Ring=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();var s=Math.PI*2;let o=class extends e.Shape{_sceneFunc(c){c.beginPath(),c.arc(0,0,this.innerRadius(),0,s,!1),c.moveTo(this.outerRadius(),0),c.arc(0,0,this.outerRadius(),s,0,!0),c.closePath(),c.fillStrokeShape(this)}getWidth(){return this.outerRadius()*2}getHeight(){return this.outerRadius()*2}setWidth(c){this.outerRadius(c/2)}setHeight(c){this.outerRadius(c/2)}};return P0.Ring=o,o.prototype.className="Ring",o.prototype._centroid=!0,o.prototype._attrsAffectingSize=["innerRadius","outerRadius"],(0,r._registerNode)(o),t.Factory.addGetterSetter(o,"innerRadius",0,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(o,"outerRadius",0,(0,n.getNumberValidator)()),P0}var M0={},O6;function YE(){if(O6)return M0;O6=1,Object.defineProperty(M0,"__esModule",{value:!0}),M0.Sprite=void 0;const t=ze(),e=Gr(),n=wm(),r=Ze(),s=$e();let o=class extends e.Shape{constructor(c){super(c),this._updated=!0,this.anim=new n.Animation(()=>{var d=this._updated;return this._updated=!1,d}),this.on("animationChange.konva",function(){this.frameIndex(0)}),this.on("frameIndexChange.konva",function(){this._updated=!0}),this.on("frameRateChange.konva",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())})}_sceneFunc(c){var d=this.animation(),f=this.frameIndex(),g=f*4,v=this.animations()[d],x=this.frameOffsets(),C=v[g+0],y=v[g+1],h=v[g+2],w=v[g+3],E=this.image();if((this.hasFill()||this.hasStroke())&&(c.beginPath(),c.rect(0,0,h,w),c.closePath(),c.fillStrokeShape(this)),E)if(x){var M=x[d],b=f*2;c.drawImage(E,C,y,h,w,M[b+0],M[b+1],h,w)}else c.drawImage(E,C,y,h,w,0,0,h,w)}_hitFunc(c){var d=this.animation(),f=this.frameIndex(),g=f*4,v=this.animations()[d],x=this.frameOffsets(),C=v[g+2],y=v[g+3];if(c.beginPath(),x){var h=x[d],w=f*2;c.rect(h[w+0],h[w+1],C,y)}else c.rect(0,0,C,y);c.closePath(),c.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){var c=this;this.interval=setInterval(function(){c._updateIndex()},1e3/this.frameRate())}start(){if(!this.isRunning()){var c=this.getLayer();this.anim.setLayers(c),this._setInterval(),this.anim.start()}}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){var c=this.frameIndex(),d=this.animation(),f=this.animations(),g=f[d],v=g.length/4;c{q=q.trim();const rt=q.indexOf(" ")>=0,ot=q.indexOf('"')>=0||q.indexOf("'")>=0;return rt&&!ot&&(q=`"${q}"`),q}).join(", ")}var N;function z(){return N||(N=t.Util.createCanvasElement().getContext(x),N)}function W(X){X.fillText(this._partialText,this._partialTextX,this._partialTextY)}function Q(X){X.setAttr("miterLimit",2),X.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function tt(X){return X=X||{},!X.fillLinearGradientColorStops&&!X.fillRadialGradientColorStops&&!X.fillPatternImage&&(X.fill=X.fill||"black"),X}class at extends n.Shape{constructor(q){super(tt(q)),this._partialTextX=0,this._partialTextY=0;for(var rt=0;rt1&&(Kt+=Y)}}}_hitFunc(q){var rt=this.getWidth(),ot=this.getHeight();q.beginPath(),q.rect(0,0,rt,ot),q.closePath(),q.fillStrokeShape(this)}setText(q){var rt=t.Util._isString(q)?q:q==null?"":q+"";return this._setAttr(h,rt),this}getWidth(){var q=this.attrs.width===c||this.attrs.width===void 0;return q?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var q=this.attrs.height===c||this.attrs.height===void 0;return q?this.fontSize()*this.textArr.length*this.lineHeight()+this.padding()*2:this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return t.Util.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(q){var rt=z(),ot=this.fontSize(),ft;return rt.save(),rt.font=this._getContextFont(),ft=rt.measureText(q),rt.restore(),{width:ft.width,height:ot}}_getContextFont(){return this.fontStyle()+k+this.fontVariant()+k+(this.fontSize()+_)+I(this.fontFamily())}_addTextLine(q){this.align()===g&&(q=q.trim());var rt=this._getTextWidth(q);return this.textArr.push({text:q,width:rt,lastInParagraph:!1})}_getTextWidth(q){var rt=this.letterSpacing(),ot=q.length;return z().measureText(q).width+(ot?rt*(ot-1):0)}_setTextData(){var q=this.text().split(` +`,O_={};function Ap(t,e,n=O_){if(!Ov&&"zIndex"in e&&(console.warn(E_),Ov=!0),!kv&&e.draggable){var r=e.x!==void 0||e.y!==void 0,s=e.onDragEnd||e.onDragMove;r&&!s&&(console.warn(__),kv=!0)}for(var o in n)if(!Ev[o]){var c=o.slice(0,2)==="on",d=n[o]!==e[o];if(c&&d){var f=o.substr(2).toLowerCase();f.substr(0,7)==="content"&&(f="content"+f.substr(7,1).toUpperCase()+f.substr(8)),t.off(f,n[o])}var g=!e.hasOwnProperty(o);g&&t.setAttr(o,void 0)}var v=H9||e._useStrictMode,x={},C=!1;const y={};for(var o in e)if(!Ev[o]){var c=o.slice(0,2)==="on",h=n[o]!==e[o];if(c&&h){var f=o.substr(2).toLowerCase();f.substr(0,7)==="content"&&(f="content"+f.substr(7,1).toUpperCase()+f.substr(8)),e[o]&&(y[f]=e[o])}!c&&(e[o]!==n[o]||v&&e[o]!==t.getAttr(o))&&(C=!0,x[o]=e[o])}C&&(t.setAttrs(x),kl(t));for(var f in y)t.on(f+fm,y[f])}function kl(t){if(!C_.Konva.autoDrawEnabled){var e=t.getLayer()||t.getStage();e&&e.batchDraw()}}var H2=em();const z9={},k_={};b1.Node.prototype._applyProps=Ap;function P_(t,e){if(typeof e=="string"){console.error(`Do not use plain text as child of Konva.Node. You are using text: ${e}`);return}t.add(e),kl(t)}function M_(t,e,n){let r=b1[t];r||(console.error(`Konva has no node with the type ${t}. Group will be used instead. If you use minimal version of react-konva, just import required nodes into Konva: "import "konva/lib/shapes/${t}" If you want to render DOM elements as part of canvas tree take a look into this demo: https://konvajs.github.io/docs/react/DOM_Portal.html`),r=b1.Group);const s={},o={};for(var c in e){var d=c.slice(0,2)==="on";d?o[c]=e[c]:s[c]=e[c]}const f=new r(s);return Ap(f,o),f}function L_(t,e,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${t}"`)}function T_(t,e,n){return!1}function A_(t){return t}function I_(){return null}function N_(){return null}function R_(t,e,n,r){return k_}function F_(){}function D_(t){}function j_(t,e){return!1}function B_(){return z9}function H_(){return z9}const z_=setTimeout,G_=clearTimeout,U_=-1;function W_(t,e){return!1}const V_=!1,Y_=!0,Z_=!0;function K_(t,e){e.parent===t?e.moveToTop():t.add(e),kl(t)}function $_(t,e){e.parent===t?e.moveToTop():t.add(e),kl(t)}function G9(t,e,n){e._remove(),t.add(e),e.setZIndex(n.getZIndex()),kl(t)}function X_(t,e,n){G9(t,e,n)}function q_(t,e){e.destroy(),e.off(fm),kl(t)}function Q_(t,e){e.destroy(),e.off(fm),kl(t)}function J_(t,e,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function tE(t,e,n){}function eE(t,e,n,r,s){Ap(t,s,r)}function nE(t){t.hide(),kl(t)}function rE(t){}function aE(t,e){(e.visible==null||e.visible)&&t.show()}function iE(t,e){}function oE(t){}function sE(){}const lE=()=>B9.DefaultEventPriority,cE=Object.freeze(Object.defineProperty({__proto__:null,appendChild:K_,appendChildToContainer:$_,appendInitialChild:P_,cancelTimeout:G_,clearContainer:oE,commitMount:tE,commitTextUpdate:J_,commitUpdate:eE,createInstance:M_,createTextInstance:L_,detachDeletedInstance:sE,finalizeInitialChildren:T_,getChildHostContext:H_,getCurrentEventPriority:lE,getPublicInstance:A_,getRootHostContext:B_,hideInstance:nE,hideTextInstance:rE,idlePriority:H2.unstable_IdlePriority,insertBefore:G9,insertInContainerBefore:X_,isPrimaryRenderer:V_,noTimeout:U_,now:H2.unstable_now,prepareForCommit:I_,preparePortalMount:N_,prepareUpdate:R_,removeChild:q_,removeChildFromContainer:Q_,resetAfterCommit:F_,resetTextContent:D_,run:H2.unstable_runWithPriority,scheduleTimeout:z_,shouldDeprioritizeSubtree:j_,shouldSetTextContent:W_,supportsMutation:Z_,unhideInstance:aE,unhideTextInstance:iE,warnsIfNotActing:Y_},Symbol.toStringTag,{value:"Module"}));var uE=Object.defineProperty,dE=Object.defineProperties,hE=Object.getOwnPropertyDescriptors,Pv=Object.getOwnPropertySymbols,fE=Object.prototype.hasOwnProperty,pE=Object.prototype.propertyIsEnumerable,Mv=(t,e,n)=>e in t?uE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Lv=(t,e)=>{for(var n in e||(e={}))fE.call(e,n)&&Mv(t,n,e[n]);if(Pv)for(var n of Pv(e))pE.call(e,n)&&Mv(t,n,e[n]);return t},gE=(t,e)=>dE(t,hE(e)),Tv,Av;typeof window<"u"&&((Tv=window.document)!=null&&Tv.createElement||((Av=window.navigator)==null?void 0:Av.product)==="ReactNative")?ct.useLayoutEffect:ct.useEffect;function U9(t,e,n){if(!t)return;if(n(t)===!0)return t;let r=t.child;for(;r;){const s=U9(r,e,n);if(s)return s;r=r.sibling}}function W9(t){try{return Object.defineProperties(t,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return t}}const Iv=console.error;console.error=function(){const t=[...arguments].join("");if(t?.startsWith("Warning:")&&t.includes("useContext")){console.error=Iv;return}return Iv.apply(this,arguments)};const pm=W9(ct.createContext(null));class V9 extends ct.Component{render(){return ct.createElement(pm.Provider,{value:this._reactInternals},this.props.children)}}function mE(){const t=ct.useContext(pm);if(t===null)throw new Error("its-fine: useFiber must be called within a !");const e=ct.useId();return ct.useMemo(()=>{for(const n of[t,t?.alternate]){if(!n)continue;const r=U9(n,!1,s=>{let o=s.memoizedState;for(;o;){if(o.memoizedState===e)return!0;o=o.next}});if(r)return r}},[t,e])}function vE(){const t=mE(),[e]=ct.useState(()=>new Map);e.clear();let n=t;for(;n;){if(n.type&&typeof n.type=="object"){const r=n.type._context===void 0&&n.type.Provider===n.type?n.type:n.type._context;r&&r!==pm&&!e.has(r)&&e.set(r,ct.useContext(W9(r)))}n=n.return}return e}function yE(){const t=vE();return ct.useMemo(()=>Array.from(t.keys()).reduce((e,n)=>r=>ct.createElement(e,null,ct.createElement(n.Provider,gE(Lv({},r),{value:t.get(n)}))),e=>ct.createElement(V9,Lv({},e))),[t])}function bE(t){const e=L.useRef({});return L.useLayoutEffect(()=>{e.current=t}),L.useLayoutEffect(()=>()=>{e.current={}},[]),e.current}const wE=t=>{const e=L.useRef(null),n=L.useRef(null),r=L.useRef(null),s=bE(t),o=yE(),c=d=>{const{forwardedRef:f}=t;f&&(typeof f=="function"?f(d):f.current=d)};return L.useLayoutEffect(()=>(n.current=new b1.Stage({width:t.width,height:t.height,container:e.current}),c(n.current),r.current=l1.createContainer(n.current,B9.LegacyRoot,!1,null),l1.updateContainer(L.createElement(o,{},t.children),r.current),()=>{b1.isBrowser&&(c(null),l1.updateContainer(null,r.current,null),n.current.destroy())}),[]),L.useLayoutEffect(()=>{c(n.current),Ap(n.current,t,s),l1.updateContainer(L.createElement(o,{},t.children),r.current,null)}),L.createElement("div",{ref:e,id:t.id,accessKey:t.accessKey,className:t.className,role:t.role,style:t.style,tabIndex:t.tabIndex,title:t.title})},gm="Layer",xE="Group",Y9="Rect",Z9="Ellipse",CE="Line",Ip="Image",SE="Text",_E="RegularPolygon",EE="Arrow",K9="Transformer",l1=b_(cE);l1.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:L.version,rendererPackageName:"react-konva"});const $9=L.forwardRef((t,e)=>L.createElement(V9,{},L.createElement(wE,{...t,forwardedRef:e}))),OE=S_;var _g=function(t,e,n,r){return Math.min(t/n,e/r)||1},pp="FIE_root",kE="FIE_design-layer",X9="FIE_transformers-layer",q9="FIE_original-image",Q9="FIE_nodes-transformer",El="watermark",Eg="353297d2-40b4-4684-a875-45a2178a8157",J9=.92,Mn={FINETUNE:"Finetune",FILTERS:"Filters",ADJUST:"Adjust",WATERMARK:"Watermark",ANNOTATE:"Annotate",RESIZE:"Resize"},_t={CROP:"Crop",ROTATE:"Rotate",FLIP_X:"Flip_X",FLIP_Y:"Flip_Y",BRIGHTNESS:"Brightness",CONTRAST:"Contrast",HSV:"HueSaturationValue",WARMTH:"Warmth",BLUR:"Blur",THRESHOLD:"Threshold",POSTERIZE:"Posterize",PIXELATE:"Pixelate",NOISE:"Noise",FILTERS:"Filters",RECT:"Rect",ELLIPSE:"Ellipse",POLYGON:"Polygon",TEXT:"Text",LINE:"Line",IMAGE:"Image",ARROW:"Arrow",WATERMARK:"Watermark",PEN:"Pen",RESIZE:"Resize"},mm={X:"X",Y:"Y"},oo=1,gd=["png","jpeg","jpg","webp"],PE=[].concat(gd,["svg","gif","avif","apng"]),Nv=gd[0],Os={DEFAULT:"default",DRAW:"crosshair",SELECT:"pointer",MOVE:"move",DRAG:"GRAB"},vm="Crop",tb="custom",Yc="ellipse",Cr={TOP_LEFT:"top-left",TOP_CENTER:"top-center",TOP_RIGHT:"top-right",MIDDLE_LEFT:"middle-left",MIDDLE_CENTER:"middle-center",MIDDLE_RIGHT:"middle-right",BOTTOM_LEFT:"bottom-left",BOTTOM_CENTER:"bottom-center",BOTTOM_RIGHT:"bottom-right"},Rv={WIDTH:14,HEIGHT:14},eb={AFTER_SAVE:"after-saving",CLOSE_BUTTON:"close-button-clicked"},md={WARNING:"warning",ERROR:"error"},Fv={top:"north",bottom:"south",left:"west",center:"center",right:"east"},ME={northwest:"top-left",northcenter:"top-center",northeast:"top-right",centerwest:"center-left",centercenter:"center-center",centereast:"center-right",southwest:"bottom-left",southcenter:"bottom-center",southeast:"bottom-right"},LE=function(t,e){var n=2{t.Konva[s.prototype.getClassName()]=s};t._registerNode=r,t.Konva._injectGlobal(t.Konva)})(Gv)),Gv}var Wv={},Vv;function rr(){return Vv||(Vv=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.Transform=void 0;const e=$e();class n{constructor(_=[1,0,0,1,0,0]){this.dirty=!1,this.m=_&&_.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new n(this.m)}copyInto(_){_.m[0]=this.m[0],_.m[1]=this.m[1],_.m[2]=this.m[2],_.m[3]=this.m[3],_.m[4]=this.m[4],_.m[5]=this.m[5]}point(_){var k=this.m;return{x:k[0]*_.x+k[2]*_.y+k[4],y:k[1]*_.x+k[3]*_.y+k[5]}}translate(_,k){return this.m[4]+=this.m[0]*_+this.m[2]*k,this.m[5]+=this.m[1]*_+this.m[3]*k,this}scale(_,k){return this.m[0]*=_,this.m[1]*=_,this.m[2]*=k,this.m[3]*=k,this}rotate(_){var k=Math.cos(_),R=Math.sin(_),G=this.m[0]*k+this.m[2]*R,T=this.m[1]*k+this.m[3]*R,D=this.m[0]*-R+this.m[2]*k,A=this.m[1]*-R+this.m[3]*k;return this.m[0]=G,this.m[1]=T,this.m[2]=D,this.m[3]=A,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(_,k){var R=this.m[0]+this.m[2]*k,G=this.m[1]+this.m[3]*k,T=this.m[2]+this.m[0]*_,D=this.m[3]+this.m[1]*_;return this.m[0]=R,this.m[1]=G,this.m[2]=T,this.m[3]=D,this}multiply(_){var k=this.m[0]*_.m[0]+this.m[2]*_.m[1],R=this.m[1]*_.m[0]+this.m[3]*_.m[1],G=this.m[0]*_.m[2]+this.m[2]*_.m[3],T=this.m[1]*_.m[2]+this.m[3]*_.m[3],D=this.m[0]*_.m[4]+this.m[2]*_.m[5]+this.m[4],A=this.m[1]*_.m[4]+this.m[3]*_.m[5]+this.m[5];return this.m[0]=k,this.m[1]=R,this.m[2]=G,this.m[3]=T,this.m[4]=D,this.m[5]=A,this}invert(){var _=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),k=this.m[3]*_,R=-this.m[1]*_,G=-this.m[2]*_,T=this.m[0]*_,D=_*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),A=_*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=k,this.m[1]=R,this.m[2]=G,this.m[3]=T,this.m[4]=D,this.m[5]=A,this}getMatrix(){return this.m}decompose(){var _=this.m[0],k=this.m[1],R=this.m[2],G=this.m[3],T=this.m[4],D=this.m[5],A=_*G-k*R;let B={x:T,y:D,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(_!=0||k!=0){var Z=Math.sqrt(_*_+k*k);B.rotation=k>0?Math.acos(_/Z):-Math.acos(_/Z),B.scaleX=Z,B.scaleY=A/Z,B.skewX=(_*R+k*G)/A,B.skewY=0}else if(R!=0||G!=0){var S=Math.sqrt(R*R+G*G);B.rotation=Math.PI/2-(G>0?Math.acos(-R/S):-Math.acos(R/S)),B.scaleX=A/S,B.scaleY=S,B.skewX=0,B.skewY=(_*R+k*G)/A}return B.rotation=t.Util._getRotation(B.rotation),B}}t.Transform=n;var r="[object Array]",s="[object Number]",o="[object String]",c="[object Boolean]",d=Math.PI/180,f=180/Math.PI,g="#",v="",x="0",C="Konva warning: ",y="Konva error: ",h="rgb(",w={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},E=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,M=[];const b=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(m){setTimeout(m,60)};t.Util={_isElement(m){return!!(m&&m.nodeType==1)},_isFunction(m){return!!(m&&m.constructor&&m.call&&m.apply)},_isPlainObject(m){return!!m&&m.constructor===Object},_isArray(m){return Object.prototype.toString.call(m)===r},_isNumber(m){return Object.prototype.toString.call(m)===s&&!isNaN(m)&&isFinite(m)},_isString(m){return Object.prototype.toString.call(m)===o},_isBoolean(m){return Object.prototype.toString.call(m)===c},isObject(m){return m instanceof Object},isValidSelector(m){if(typeof m!="string")return!1;var _=m[0];return _==="#"||_==="."||_===_.toUpperCase()},_sign(m){return m===0||m>0?1:-1},requestAnimFrame(m){M.push(m),M.length===1&&b(function(){const _=M;M=[],_.forEach(function(k){k()})})},createCanvasElement(){var m=document.createElement("canvas");try{m.style=m.style||{}}catch{}return m},createImageElement(){return document.createElement("img")},_isInDocument(m){for(;m=m.parentNode;)if(m==document)return!0;return!1},_urlToImage(m,_){var k=t.Util.createImageElement();k.onload=function(){_(k)},k.src=m},_rgbToHex(m,_,k){return((1<<24)+(m<<16)+(_<<8)+k).toString(16).slice(1)},_hexToRgb(m){m=m.replace(g,v);var _=parseInt(m,16);return{r:_>>16&255,g:_>>8&255,b:_&255}},getRandomColor(){for(var m=(Math.random()*16777215<<0).toString(16);m.length<6;)m=x+m;return g+m},getRGB(m){var _;return m in w?(_=w[m],{r:_[0],g:_[1],b:_[2]}):m[0]===g?this._hexToRgb(m.substring(1)):m.substr(0,4)===h?(_=E.exec(m.replace(/ /g,"")),{r:parseInt(_[1],10),g:parseInt(_[2],10),b:parseInt(_[3],10)}):{r:0,g:0,b:0}},colorToRGBA(m){return m=m||"black",t.Util._namedColorToRBA(m)||t.Util._hex3ColorToRGBA(m)||t.Util._hex4ColorToRGBA(m)||t.Util._hex6ColorToRGBA(m)||t.Util._hex8ColorToRGBA(m)||t.Util._rgbColorToRGBA(m)||t.Util._rgbaColorToRGBA(m)||t.Util._hslColorToRGBA(m)},_namedColorToRBA(m){var _=w[m.toLowerCase()];return _?{r:_[0],g:_[1],b:_[2],a:1}:null},_rgbColorToRGBA(m){if(m.indexOf("rgb(")===0){m=m.match(/rgb\(([^)]+)\)/)[1];var _=m.split(/ *, */).map(Number);return{r:_[0],g:_[1],b:_[2],a:1}}},_rgbaColorToRGBA(m){if(m.indexOf("rgba(")===0){m=m.match(/rgba\(([^)]+)\)/)[1];var _=m.split(/ *, */).map((k,R)=>k.slice(-1)==="%"?R===3?parseInt(k)/100:parseInt(k)/100*255:Number(k));return{r:_[0],g:_[1],b:_[2],a:_[3]}}},_hex8ColorToRGBA(m){if(m[0]==="#"&&m.length===9)return{r:parseInt(m.slice(1,3),16),g:parseInt(m.slice(3,5),16),b:parseInt(m.slice(5,7),16),a:parseInt(m.slice(7,9),16)/255}},_hex6ColorToRGBA(m){if(m[0]==="#"&&m.length===7)return{r:parseInt(m.slice(1,3),16),g:parseInt(m.slice(3,5),16),b:parseInt(m.slice(5,7),16),a:1}},_hex4ColorToRGBA(m){if(m[0]==="#"&&m.length===5)return{r:parseInt(m[1]+m[1],16),g:parseInt(m[2]+m[2],16),b:parseInt(m[3]+m[3],16),a:parseInt(m[4]+m[4],16)/255}},_hex3ColorToRGBA(m){if(m[0]==="#"&&m.length===4)return{r:parseInt(m[1]+m[1],16),g:parseInt(m[2]+m[2],16),b:parseInt(m[3]+m[3],16),a:1}},_hslColorToRGBA(m){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(m)){const[_,...k]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(m),R=Number(k[0])/360,G=Number(k[1])/100,T=Number(k[2])/100;let D,A,B;if(G===0)return B=T*255,{r:Math.round(B),g:Math.round(B),b:Math.round(B),a:1};T<.5?D=T*(1+G):D=T+G-T*G;const Z=2*T-D,S=[0,0,0];for(let I=0;I<3;I++)A=R+1/3*-(I-1),A<0&&A++,A>1&&A--,6*A<1?B=Z+(D-Z)*6*A:2*A<1?B=D:3*A<2?B=Z+(D-Z)*(2/3-A)*6:B=Z,S[I]=B*255;return{r:Math.round(S[0]),g:Math.round(S[1]),b:Math.round(S[2]),a:1}}},haveIntersection(m,_){return!(_.x>m.x+m.width||_.x+_.widthm.y+m.height||_.y+_.height1?(D=k,A=R,B=(k-G)*(k-G)+(R-T)*(R-T)):(D=m+S*(k-m),A=_+S*(R-_),B=(D-G)*(D-G)+(A-T)*(A-T))}return[D,A,B]},_getProjectionToLine(m,_,k){var R=t.Util.cloneObject(m),G=Number.MAX_VALUE;return _.forEach(function(T,D){if(!(!k&&D===_.length-1)){var A=_[(D+1)%_.length],B=t.Util._getProjectionToSegment(T.x,T.y,A.x,A.y,m.x,m.y),Z=B[0],S=B[1],I=B[2];I_.length){var D=_;_=m,m=D}for(R=0;R{_.width=0,_.height=0})},drawRoundedRectPath(m,_,k,R){let G=0,T=0,D=0,A=0;typeof R=="number"?G=T=D=A=Math.min(R,_/2,k/2):(G=Math.min(R[0]||0,_/2,k/2),T=Math.min(R[1]||0,_/2,k/2),A=Math.min(R[2]||0,_/2,k/2),D=Math.min(R[3]||0,_/2,k/2)),m.moveTo(G,0),m.lineTo(_-T,0),m.arc(_-T,T,T,Math.PI*3/2,0,!1),m.lineTo(_,k-A),m.arc(_-A,k-A,A,0,Math.PI/2,!1),m.lineTo(D,k),m.arc(D,k-D,D,Math.PI/2,Math.PI,!1),m.lineTo(0,G),m.arc(G,G,G,Math.PI,Math.PI*3/2,!1)}}})(Wv)),Wv}var f0={},Yv={},Bn={},Zv;function Ze(){if(Zv)return Bn;Zv=1,Object.defineProperty(Bn,"__esModule",{value:!0}),Bn.getComponentValidator=Bn.getBooleanValidator=Bn.getNumberArrayValidator=Bn.getFunctionValidator=Bn.getStringOrGradientValidator=Bn.getStringValidator=Bn.getNumberOrAutoValidator=Bn.getNumberOrArrayOfNumbersValidator=Bn.getNumberValidator=Bn.alphaComponent=Bn.RGBComponent=void 0;const t=$e(),e=rr();function n(h){return e.Util._isString(h)?'"'+h+'"':Object.prototype.toString.call(h)==="[object Number]"||e.Util._isBoolean(h)?h:Object.prototype.toString.call(h)}function r(h){return h>255?255:h<0?0:Math.round(h)}Bn.RGBComponent=r;function s(h){return h>1?1:h<1e-4?1e-4:h}Bn.alphaComponent=s;function o(){if(t.Konva.isUnminified)return function(h,w){return e.Util._isNumber(h)||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a number.'),h}}Bn.getNumberValidator=o;function c(h){if(t.Konva.isUnminified)return function(w,E){let M=e.Util._isNumber(w),b=e.Util._isArray(w)&&w.length==h;return!M&&!b&&e.Util.warn(n(w)+' is a not valid value for "'+E+'" attribute. The value should be a number or Array('+h+")"),w}}Bn.getNumberOrArrayOfNumbersValidator=c;function d(){if(t.Konva.isUnminified)return function(h,w){var E=e.Util._isNumber(h),M=h==="auto";return E||M||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a number or "auto".'),h}}Bn.getNumberOrAutoValidator=d;function f(){if(t.Konva.isUnminified)return function(h,w){return e.Util._isString(h)||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a string.'),h}}Bn.getStringValidator=f;function g(){if(t.Konva.isUnminified)return function(h,w){const E=e.Util._isString(h),M=Object.prototype.toString.call(h)==="[object CanvasGradient]"||h&&h.addColorStop;return E||M||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a string or a native gradient.'),h}}Bn.getStringOrGradientValidator=g;function v(){if(t.Konva.isUnminified)return function(h,w){return e.Util._isFunction(h)||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a function.'),h}}Bn.getFunctionValidator=v;function x(){if(t.Konva.isUnminified)return function(h,w){const E=Int8Array?Object.getPrototypeOf(Int8Array):null;return E&&h instanceof E||(e.Util._isArray(h)?h.forEach(function(M){e.Util._isNumber(M)||e.Util.warn('"'+w+'" attribute has non numeric element '+M+". Make sure that all elements are numbers.")}):e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a array of numbers.')),h}}Bn.getNumberArrayValidator=x;function C(){if(t.Konva.isUnminified)return function(h,w){var E=h===!0||h===!1;return E||e.Util.warn(n(h)+' is a not valid value for "'+w+'" attribute. The value should be a boolean.'),h}}Bn.getBooleanValidator=C;function y(h){if(t.Konva.isUnminified)return function(w,E){return w==null||e.Util.isObject(w)||e.Util.warn(n(w)+' is a not valid value for "'+E+'" attribute. The value should be an object with properties '+h),w}}return Bn.getComponentValidator=y,Bn}var Kv;function ze(){return Kv||(Kv=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Factory=void 0;const e=rr(),n=Ze();var r="get",s="set";t.Factory={addGetterSetter(o,c,d,f,g){t.Factory.addGetter(o,c,d),t.Factory.addSetter(o,c,f,g),t.Factory.addOverloadedGetterSetter(o,c)},addGetter(o,c,d){var f=r+e.Util._capitalize(c);o.prototype[f]=o.prototype[f]||function(){var g=this.attrs[c];return g===void 0?d:g}},addSetter(o,c,d,f){var g=s+e.Util._capitalize(c);o.prototype[g]||t.Factory.overWriteSetter(o,c,d,f)},overWriteSetter(o,c,d,f){var g=s+e.Util._capitalize(c);o.prototype[g]=function(v){return d&&v!==void 0&&v!==null&&(v=d.call(this,v,c)),this._setAttr(c,v),f&&f.call(this),this}},addComponentsGetterSetter(o,c,d,f,g){var v=d.length,x=e.Util._capitalize,C=r+x(c),y=s+x(c),h,w;o.prototype[C]=function(){var M={};for(h=0;h{this._setAttr(c+x(_),void 0)}),this._fireChangeEvent(c,b,M),g&&g.call(this),this},t.Factory.addOverloadedGetterSetter(o,c)},addOverloadedGetterSetter(o,c){var d=e.Util._capitalize(c),f=s+d,g=r+d;o.prototype[c]=function(){return arguments.length?(this[f](arguments[0]),this):this[g]()}},addDeprecatedGetterSetter(o,c,d,f){e.Util.error("Adding deprecated "+c);var g=r+e.Util._capitalize(c),v=c+" property is deprecated and will be removed soon. Look at Konva change log for more information.";o.prototype[g]=function(){e.Util.error(v);var x=this.attrs[c];return x===void 0?d:x},t.Factory.addSetter(o,c,f,function(){e.Util.error(v)}),t.Factory.addOverloadedGetterSetter(o,c)},backCompat(o,c){e.Util.each(c,function(d,f){var g=o.prototype[f],v=r+e.Util._capitalize(d),x=s+e.Util._capitalize(d);function C(){g.apply(this,arguments),e.Util.error('"'+d+'" method is deprecated and will be removed soon. Use ""'+f+'" instead.')}o.prototype[d]=C,o.prototype[v]=C,o.prototype[x]=C})},afterSetFilter(){this._filterUpToDate=!1}}})(Yv)),Yv}var bs={},ws={},$v;function ib(){if($v)return ws;$v=1,Object.defineProperty(ws,"__esModule",{value:!0}),ws.HitContext=ws.SceneContext=ws.Context=void 0;const t=rr(),e=$e();function n(M){var b=[],m=M.length,_=t.Util,k,R;for(k=0;ktypeof A=="number"?Math.floor(A):A)),k+=s+D.join(r)+o)):(k+=G.property,M||(k+=v+G.val)),k+=f;return k}clearTrace(){this.traceArr=[]}_trace(M){var b=this.traceArr,m;b.push(M),m=b.length,m>=y&&b.shift()}reset(){var M=this.getCanvas().getPixelRatio();this.setTransform(1*M,0,0,1*M,0,0)}getCanvas(){return this.canvas}clear(M){var b=this.getCanvas();M?this.clearRect(M.x||0,M.y||0,M.width||0,M.height||0):this.clearRect(0,0,b.getWidth()/b.pixelRatio,b.getHeight()/b.pixelRatio)}_applyLineCap(M){const b=M.attrs.lineCap;b&&this.setAttr("lineCap",b)}_applyOpacity(M){var b=M.getAbsoluteOpacity();b!==1&&this.setAttr("globalAlpha",b)}_applyLineJoin(M){const b=M.attrs.lineJoin;b&&this.setAttr("lineJoin",b)}setAttr(M,b){this._context[M]=b}arc(M,b,m,_,k,R){this._context.arc(M,b,m,_,k,R)}arcTo(M,b,m,_,k){this._context.arcTo(M,b,m,_,k)}beginPath(){this._context.beginPath()}bezierCurveTo(M,b,m,_,k,R){this._context.bezierCurveTo(M,b,m,_,k,R)}clearRect(M,b,m,_){this._context.clearRect(M,b,m,_)}clip(...M){this._context.clip.apply(this._context,M)}closePath(){this._context.closePath()}createImageData(M,b){var m=arguments;if(m.length===2)return this._context.createImageData(M,b);if(m.length===1)return this._context.createImageData(M)}createLinearGradient(M,b,m,_){return this._context.createLinearGradient(M,b,m,_)}createPattern(M,b){return this._context.createPattern(M,b)}createRadialGradient(M,b,m,_,k,R){return this._context.createRadialGradient(M,b,m,_,k,R)}drawImage(M,b,m,_,k,R,G,T,D){var A=arguments,B=this._context;A.length===3?B.drawImage(M,b,m):A.length===5?B.drawImage(M,b,m,_,k):A.length===9&&B.drawImage(M,b,m,_,k,R,G,T,D)}ellipse(M,b,m,_,k,R,G,T){this._context.ellipse(M,b,m,_,k,R,G,T)}isPointInPath(M,b,m,_){return m?this._context.isPointInPath(m,M,b,_):this._context.isPointInPath(M,b,_)}fill(...M){this._context.fill.apply(this._context,M)}fillRect(M,b,m,_){this._context.fillRect(M,b,m,_)}strokeRect(M,b,m,_){this._context.strokeRect(M,b,m,_)}fillText(M,b,m,_){_?this._context.fillText(M,b,m,_):this._context.fillText(M,b,m)}measureText(M){return this._context.measureText(M)}getImageData(M,b,m,_){return this._context.getImageData(M,b,m,_)}lineTo(M,b){this._context.lineTo(M,b)}moveTo(M,b){this._context.moveTo(M,b)}rect(M,b,m,_){this._context.rect(M,b,m,_)}roundRect(M,b,m,_,k){this._context.roundRect(M,b,m,_,k)}putImageData(M,b,m){this._context.putImageData(M,b,m)}quadraticCurveTo(M,b,m,_){this._context.quadraticCurveTo(M,b,m,_)}restore(){this._context.restore()}rotate(M){this._context.rotate(M)}save(){this._context.save()}scale(M,b){this._context.scale(M,b)}setLineDash(M){this._context.setLineDash?this._context.setLineDash(M):"mozDash"in this._context?this._context.mozDash=M:"webkitLineDash"in this._context&&(this._context.webkitLineDash=M)}getLineDash(){return this._context.getLineDash()}setTransform(M,b,m,_,k,R){this._context.setTransform(M,b,m,_,k,R)}stroke(M){M?this._context.stroke(M):this._context.stroke()}strokeText(M,b,m,_){this._context.strokeText(M,b,m,_)}transform(M,b,m,_,k,R){this._context.transform(M,b,m,_,k,R)}translate(M,b){this._context.translate(M,b)}_enableTrace(){var M=this,b=x.length,m=this.setAttr,_,k,R=function(G){var T=M[G],D;M[G]=function(){return k=n(Array.prototype.slice.call(arguments,0)),D=T.apply(M,arguments),M._trace({method:G,args:k}),D}};for(_=0;_{s.dragStatus==="dragging"&&(r=!0)}),r},justDragged:!1,get node(){var r;return t.DD._dragElements.forEach(s=>{r=s.node}),r},_dragElements:new Map,_drag(r){const s=[];t.DD._dragElements.forEach((o,c)=>{const{node:d}=o,f=d.getStage();f.setPointersPositions(r),o.pointerId===void 0&&(o.pointerId=n.Util._getFirstPointerId(r));const g=f._changedPointerPositions.find(C=>C.id===o.pointerId);if(g){if(o.dragStatus!=="dragging"){var v=d.dragDistance(),x=Math.max(Math.abs(g.x-o.startPointerPos.x),Math.abs(g.y-o.startPointerPos.y));if(x{o.fire("dragmove",{type:"dragmove",target:o,evt:r},!0)})},_endDragBefore(r){const s=[];t.DD._dragElements.forEach(o=>{const{node:c}=o,d=c.getStage();if(r&&d.setPointersPositions(r),!d._changedPointerPositions.find(g=>g.id===o.pointerId))return;(o.dragStatus==="dragging"||o.dragStatus==="stopped")&&(t.DD.justDragged=!0,e.Konva._mouseListenClick=!1,e.Konva._touchListenClick=!1,e.Konva._pointerListenClick=!1,o.dragStatus="stopped");const f=o.node.getLayer()||o.node instanceof e.Konva.Stage&&o.node;f&&s.indexOf(f)===-1&&s.push(f)}),s.forEach(o=>{o.draw()})},_endDragAfter(r){t.DD._dragElements.forEach((s,o)=>{s.dragStatus==="stopped"&&s.node.fire("dragend",{type:"dragend",target:s.node,evt:r},!0),s.dragStatus!=="dragging"&&t.DD._dragElements.delete(o)})}},e.Konva.isBrowser&&(window.addEventListener("mouseup",t.DD._endDragBefore,!0),window.addEventListener("touchend",t.DD._endDragBefore,!0),window.addEventListener("mousemove",t.DD._drag),window.addEventListener("touchmove",t.DD._drag),window.addEventListener("mouseup",t.DD._endDragAfter,!1),window.addEventListener("touchend",t.DD._endDragAfter,!1))})(qv)),qv}var Jv;function dr(){if(Jv)return f0;Jv=1,Object.defineProperty(f0,"__esModule",{value:!0}),f0.Node=void 0;const t=rr(),e=ze(),n=Rp(),r=$e(),s=ym(),o=Ze();var c="absoluteOpacity",d="allEventListeners",f="absoluteTransform",g="absoluteScale",v="canvas",x="Change",C="children",y="konva",h="listening",w="mouseenter",E="mouseleave",M="set",b="Shape",m=" ",_="stage",k="transform",R="Stage",G="visible",T=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(m);let D=1,A=class Og{constructor(S){this._id=D++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(S),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(S){(S===k||S===f)&&this._cache.get(S)?this._cache.get(S).dirty=!0:S?this._cache.delete(S):this._cache.clear()}_getCache(S,I){var N=this._cache.get(S),z=S===k||S===f,W=N===void 0||z&&N.dirty===!0;return W&&(N=I.call(this),this._cache.set(S,N)),N}_calculate(S,I,N){if(!this._attachedDepsListeners.get(S)){const z=I.map(W=>W+"Change.konva").join(m);this.on(z,()=>{this._clearCache(S)}),this._attachedDepsListeners.set(S,!0)}return this._getCache(S,N)}_getCanvasCache(){return this._cache.get(v)}_clearSelfAndDescendantCache(S){this._clearCache(S),S===f&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(v)){const{scene:S,filter:I,hit:N}=this._cache.get(v);t.Util.releaseCanvas(S,I,N),this._cache.delete(v)}return this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(S){var I=S||{},N={};(I.x===void 0||I.y===void 0||I.width===void 0||I.height===void 0)&&(N=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()||void 0}));var z=Math.ceil(I.width||N.width),W=Math.ceil(I.height||N.height),Q=I.pixelRatio,tt=I.x===void 0?Math.floor(N.x):I.x,at=I.y===void 0?Math.floor(N.y):I.y,X=I.offset||0,q=I.drawBorder||!1,rt=I.hitCanvasPixelRatio||1;if(!z||!W){t.Util.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");return}const ot=Math.abs(Math.round(N.x)-tt)>.5?1:0,ft=Math.abs(Math.round(N.y)-at)>.5?1:0;z+=X*2+ot,W+=X*2+ft,tt-=X,at-=X;var it=new n.SceneCanvas({pixelRatio:Q,width:z,height:W}),Y=new n.SceneCanvas({pixelRatio:Q,width:0,height:0,willReadFrequently:!0}),J=new n.HitCanvas({pixelRatio:rt,width:z,height:W}),lt=it.getContext(),dt=J.getContext();return J.isCache=!0,it.isCache=!0,this._cache.delete(v),this._filterUpToDate=!1,I.imageSmoothingEnabled===!1&&(it.getContext()._context.imageSmoothingEnabled=!1,Y.getContext()._context.imageSmoothingEnabled=!1),lt.save(),dt.save(),lt.translate(-tt,-at),dt.translate(-tt,-at),this._isUnderCache=!0,this._clearSelfAndDescendantCache(c),this._clearSelfAndDescendantCache(g),this.drawScene(it,this),this.drawHit(J,this),this._isUnderCache=!1,lt.restore(),dt.restore(),q&&(lt.save(),lt.beginPath(),lt.rect(0,0,z,W),lt.closePath(),lt.setAttr("strokeStyle","red"),lt.setAttr("lineWidth",5),lt.stroke(),lt.restore()),this._cache.set(v,{scene:it,filter:Y,hit:J,x:tt,y:at}),this._requestDraw(),this}isCached(){return this._cache.has(v)}getClientRect(S){throw new Error('abstract "getClientRect" method call')}_transformedRect(S,I){var N=[{x:S.x,y:S.y},{x:S.x+S.width,y:S.y},{x:S.x+S.width,y:S.y+S.height},{x:S.x,y:S.y+S.height}],z=1/0,W=1/0,Q=-1/0,tt=-1/0,at=this.getAbsoluteTransform(I);return N.forEach(function(X){var q=at.point(X);z===void 0&&(z=Q=q.x,W=tt=q.y),z=Math.min(z,q.x),W=Math.min(W,q.y),Q=Math.max(Q,q.x),tt=Math.max(tt,q.y)}),{x:z,y:W,width:Q-z,height:tt-W}}_drawCachedSceneCanvas(S){S.save(),S._applyOpacity(this),S._applyGlobalCompositeOperation(this);const I=this._getCanvasCache();S.translate(I.x,I.y);var N=this._getCachedSceneCanvas(),z=N.pixelRatio;S.drawImage(N._canvas,0,0,N.width/z,N.height/z),S.restore()}_drawCachedHitCanvas(S){var I=this._getCanvasCache(),N=I.hit;S.save(),S.translate(I.x,I.y),S.drawImage(N._canvas,0,0,N.width/N.pixelRatio,N.height/N.pixelRatio),S.restore()}_getCachedSceneCanvas(){var S=this.filters(),I=this._getCanvasCache(),N=I.scene,z=I.filter,W=z.getContext(),Q,tt,at,X;if(S){if(!this._filterUpToDate){var q=N.pixelRatio;z.setSize(N.width/N.pixelRatio,N.height/N.pixelRatio);try{for(Q=S.length,W.clear(),W.drawImage(N._canvas,0,0,N.getWidth()/q,N.getHeight()/q),tt=W.getImageData(0,0,z.getWidth(),z.getHeight()),at=0;at{var I,N;if(!S)return this;for(I in S)I!==C&&(N=M+t.Util._capitalize(I),t.Util._isFunction(this[N])?this[N](S[I]):this._setAttr(I,S[I]))}),this}isListening(){return this._getCache(h,this._isListening)}_isListening(S){if(!this.listening())return!1;const I=this.getParent();return I&&I!==S&&this!==S?I._isListening(S):!0}isVisible(){return this._getCache(G,this._isVisible)}_isVisible(S){if(!this.visible())return!1;const I=this.getParent();return I&&I!==S&&this!==S?I._isVisible(S):!0}shouldDrawHit(S,I=!1){if(S)return this._isVisible(S)&&this._isListening(S);var N=this.getLayer(),z=!1;s.DD._dragElements.forEach(Q=>{Q.dragStatus==="dragging"&&(Q.node.nodeType==="Stage"||Q.node.getLayer()===N)&&(z=!0)});var W=!I&&!r.Konva.hitOnDragEnabled&&(z||r.Konva.isTransforming());return this.isListening()&&this.isVisible()&&!W}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){var S=this.getDepth(),I=this,N=0,z,W,Q,tt;function at(q){for(z=[],W=q.length,Q=0;Q0&&z[0].getDepth()<=S&&at(z)}const X=this.getStage();return I.nodeType!==R&&X&&at(X.getChildren()),N}getDepth(){for(var S=0,I=this.parent;I;)S++,I=I.parent;return S}_batchTransformChanges(S){this._batchingTransformChange=!0,S(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(k),this._clearSelfAndDescendantCache(f)),this._needClearTransformCache=!1}setPosition(S){return this._batchTransformChanges(()=>{this.x(S.x),this.y(S.y)}),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){const S=this.getStage();if(!S)return null;var I=S.getPointerPosition();if(!I)return null;var N=this.getAbsoluteTransform().copy();return N.invert(),N.point(I)}getAbsolutePosition(S){let I=!1,N=this.parent;for(;N;){if(N.isCached()){I=!0;break}N=N.parent}I&&!S&&(S=!0);var z=this.getAbsoluteTransform(S).getMatrix(),W=new t.Transform,Q=this.offset();return W.m=z.slice(),W.translate(Q.x,Q.y),W.getTranslation()}setAbsolutePosition(S){const{x:I,y:N,...z}=this._clearTransform();this.attrs.x=I,this.attrs.y=N,this._clearCache(k);var W=this._getAbsoluteTransform().copy();return W.invert(),W.translate(S.x,S.y),S={x:this.attrs.x+W.getTranslation().x,y:this.attrs.y+W.getTranslation().y},this._setTransform(z),this.setPosition({x:S.x,y:S.y}),this._clearCache(k),this._clearSelfAndDescendantCache(f),this}_setTransform(S){var I;for(I in S)this.attrs[I]=S[I]}_clearTransform(){var S={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,S}move(S){var I=S.x,N=S.y,z=this.x(),W=this.y();return I!==void 0&&(z+=I),N!==void 0&&(W+=N),this.setPosition({x:z,y:W}),this}_eachAncestorReverse(S,I){var N=[],z=this.getParent(),W,Q;if(!(I&&I._id===this._id)){for(N.unshift(this);z&&(!I||z._id!==I._id);)N.unshift(z),z=z.parent;for(W=N.length,Q=0;Q0?(this.parent.children.splice(S,1),this.parent.children.splice(S-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return t.Util.warn("Node has no parent. moveToBottom function is ignored."),!1;var S=this.index;return S>0?(this.parent.children.splice(S,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1}setZIndex(S){if(!this.parent)return t.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(S<0||S>=this.parent.children.length)&&t.Util.warn("Unexpected value "+S+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");var I=this.index;return this.parent.children.splice(I,1),this.parent.children.splice(S,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(c,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){var S=this.opacity(),I=this.getParent();return I&&!I._isUnderCache&&(S*=I.getAbsoluteOpacity()),S}moveTo(S){return this.getParent()!==S&&(this._remove(),S.add(this)),this}toObject(){var S=this.getAttrs(),I,N,z,W,Q;const tt={attrs:{},className:this.getClassName()};for(I in S)N=S[I],Q=t.Util.isObject(N)&&!t.Util._isPlainObject(N)&&!t.Util._isArray(N),!Q&&(z=typeof this[I]=="function"&&this[I],delete S[I],W=z?z.call(this):null,S[I]=N,W!==N&&(tt.attrs[I]=N));return t.Util._prepareToStringify(tt)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(S,I,N){var z=[];I&&this._isMatch(S)&&z.push(this);for(var W=this.parent;W;){if(W===N)return z;W._isMatch(S)&&z.push(W),W=W.parent}return z}isAncestorOf(S){return!1}findAncestor(S,I,N){return this.findAncestors(S,I,N)[0]}_isMatch(S){if(!S)return!1;if(typeof S=="function")return S(this);var I=S.replace(/ /g,"").split(","),N=I.length,z,W;for(z=0;z{try{const z=S?.callback;z&&delete S.callback,t.Util._urlToImage(this.toDataURL(S),function(W){I(W),z?.(W)})}catch(z){N(z)}})}toBlob(S){return new Promise((I,N)=>{try{const z=S?.callback;z&&delete S.callback,this.toCanvas(S).toBlob(W=>{I(W),z?.(W)},S?.mimeType,S?.quality)}catch(z){N(z)}})}setSize(S){return this.width(S.width),this.height(S.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return this.attrs.dragDistance!==void 0?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():r.Konva.dragDistance}_off(S,I,N){var z=this.eventListeners[S],W,Q,tt;for(W=0;W=0;if(N&&!this.isDragging()){var z=!1;s.DD._dragElements.forEach(W=>{this.isAncestorOf(W.node)&&(z=!0)}),z||this._createDragElement(S)}})}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var S=this.getStage();if(!S)return;const I=s.DD._dragElements.get(this._id),N=I&&I.dragStatus==="dragging",z=I&&I.dragStatus==="ready";N?this.stopDrag():z&&s.DD._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(S={x:0,y:0}){const I=this.getStage();if(!I)return!1;const N={x:-S.x,y:-S.y,width:I.width()+2*S.x,height:I.height()+2*S.y};return t.Util.haveIntersection(N,this.getClientRect())}static create(S,I){return t.Util._isString(S)&&(S=JSON.parse(S)),this._createNode(S,I)}static _createNode(S,I){var N=Og.prototype.getClassName.call(S),z=S.children,W,Q,tt;I&&(S.attrs.container=I),r.Konva[N]||(t.Util.warn('Can not find a node with class name "'+N+'". Fallback to "Shape".'),N="Shape");const at=r.Konva[N];if(W=new at(S.attrs),z)for(Q=z.length,tt=0;tt0}removeChildren(){return this.getChildren().forEach(o=>{o.parent=null,o.index=0,o.remove()}),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach(o=>{o.parent=null,o.index=0,o.destroy()}),this.children=[],this._requestDraw(),this}add(...o){if(o.length===0)return this;if(o.length>1){for(var c=0;c0?c[0]:void 0}_generalFind(o,c){var d=[];return this._descendants(f=>{const g=f._isMatch(o);return g&&d.push(f),!!(g&&c)}),d}_descendants(o){let c=!1;const d=this.getChildren();for(const f of d)if(c=o(f),c||f.hasChildren()&&(c=f._descendants(o),c))return!0;return!1}toObject(){var o=e.Node.prototype.toObject.call(this);return o.children=[],this.getChildren().forEach(c=>{o.children.push(c.toObject())}),o}isAncestorOf(o){for(var c=o.getParent();c;){if(c._id===this._id)return!0;c=c.getParent()}return!1}clone(o){var c=e.Node.prototype.clone.call(this,o);return this.getChildren().forEach(function(d){c.add(d.clone())}),c}getAllIntersections(o){var c=[];return this.find("Shape").forEach(d=>{d.isVisible()&&d.intersects(o)&&c.push(d)}),c}_clearSelfAndDescendantCache(o){var c;super._clearSelfAndDescendantCache(o),!this.isCached()&&((c=this.children)===null||c===void 0||c.forEach(function(d){d._clearSelfAndDescendantCache(o)}))}_setChildrenIndices(){var o;(o=this.children)===null||o===void 0||o.forEach(function(c,d){c.index=d}),this._requestDraw()}drawScene(o,c,d){var f=this.getLayer(),g=o||f&&f.getCanvas(),v=g&&g.getContext(),x=this._getCanvasCache(),C=x&&x.scene,y=g&&g.isCache;if(!this.isVisible()&&!y)return this;if(C){v.save();var h=this.getAbsoluteTransform(c).getMatrix();v.transform(h[0],h[1],h[2],h[3],h[4],h[5]),this._drawCachedSceneCanvas(v),v.restore()}else this._drawChildren("drawScene",g,c,d);return this}drawHit(o,c){if(!this.shouldDrawHit(c))return this;var d=this.getLayer(),f=o||d&&d.hitCanvas,g=f&&f.getContext(),v=this._getCanvasCache(),x=v&&v.hit;if(x){g.save();var C=this.getAbsoluteTransform(c).getMatrix();g.transform(C[0],C[1],C[2],C[3],C[4],C[5]),this._drawCachedHitCanvas(g),g.restore()}else this._drawChildren("drawHit",f,c);return this}_drawChildren(o,c,d,f){var g,v=c&&c.getContext(),x=this.clipWidth(),C=this.clipHeight(),y=this.clipFunc(),h=typeof x=="number"&&typeof C=="number"||y;const w=d===this;if(h){v.save();var E=this.getAbsoluteTransform(d),M=E.getMatrix();v.transform(M[0],M[1],M[2],M[3],M[4],M[5]),v.beginPath();let k;if(y)k=y.call(this,v,this);else{var b=this.clipX(),m=this.clipY();v.rect(b||0,m||0,x,C)}v.clip.apply(v,k),M=E.copy().invert().getMatrix(),v.transform(M[0],M[1],M[2],M[3],M[4],M[5])}var _=!w&&this.globalCompositeOperation()!=="source-over"&&o==="drawScene";_&&(v.save(),v._applyGlobalCompositeOperation(this)),(g=this.children)===null||g===void 0||g.forEach(function(k){k[o](c,d,f)}),_&&v.restore(),h&&v.restore()}getClientRect(o={}){var c,d=o.skipTransform,f=o.relativeTo,g,v,x,C,y={x:1/0,y:1/0,width:0,height:0},h=this;(c=this.children)===null||c===void 0||c.forEach(function(m){if(m.visible()){var _=m.getClientRect({relativeTo:h,skipShadow:o.skipShadow,skipStroke:o.skipStroke});_.width===0&&_.height===0||(g===void 0?(g=_.x,v=_.y,x=_.x+_.width,C=_.y+_.height):(g=Math.min(g,_.x),v=Math.min(v,_.y),x=Math.max(x,_.x+_.width),C=Math.max(C,_.y+_.height)))}});for(var w=this.find("Shape"),E=!1,M=0;Mit.indexOf("pointer")>=0?"pointer":it.indexOf("touch")>=0?"touch":"mouse",q=it=>{const Y=X(it);if(Y==="pointer")return s.Konva.pointerEventsEnabled&&at.pointer;if(Y==="touch")return at.touch;if(Y==="mouse")return at.mouse};function rt(it={}){return(it.clipFunc||it.clipWidth||it.clipHeight)&&e.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),it}const ot="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);";t.stages=[];class ft extends r.Container{constructor(Y){super(rt(Y)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),t.stages.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{rt(this.attrs)}),this._checkVisibility()}_validateAdd(Y){const J=Y.getType()==="Layer",lt=Y.getType()==="FastLayer";J||lt||e.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const Y=this.visible()?"":"none";this.content.style.display=Y}setContainer(Y){if(typeof Y===v){if(Y.charAt(0)==="."){var J=Y.slice(1);Y=document.getElementsByClassName(J)[0]}else{var lt;Y.charAt(0)!=="#"?lt=Y:lt=Y.slice(1),Y=document.getElementById(lt)}if(!Y)throw"Can not find container in document with id "+lt}return this._setAttr("container",Y),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),Y.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var Y=this.children,J=Y.length,lt;for(lt=0;lt-1&&t.stages.splice(J,1),e.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const Y=this._pointerPositions[0]||this._changedPointerPositions[0];return Y?{x:Y.x,y:Y.y}:(e.Util.warn(ot),null)}_getPointerById(Y){return this._pointerPositions.find(J=>J.id===Y)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(Y){Y=Y||{},Y.x=Y.x||0,Y.y=Y.y||0,Y.width=Y.width||this.width(),Y.height=Y.height||this.height();var J=new o.SceneCanvas({width:Y.width,height:Y.height,pixelRatio:Y.pixelRatio||1}),lt=J.getContext()._context,dt=this.children;return(Y.x||Y.y)&<.translate(-1*Y.x,-1*Y.y),dt.forEach(function(yt){if(yt.isVisible()){var gt=yt._toKonvaCanvas(Y);lt.drawImage(gt._canvas,Y.x,Y.y,gt.getWidth()/gt.getPixelRatio(),gt.getHeight()/gt.getPixelRatio())}}),J}getIntersection(Y){if(!Y)return null;var J=this.children,lt=J.length,dt=lt-1,yt;for(yt=dt;yt>=0;yt--){const gt=J[yt].getIntersection(Y);if(gt)return gt}return null}_resizeDOM(){var Y=this.width(),J=this.height();this.content&&(this.content.style.width=Y+x,this.content.style.height=J+x),this.bufferCanvas.setSize(Y,J),this.bufferHitCanvas.setSize(Y,J),this.children.forEach(lt=>{lt.setSize({width:Y,height:J}),lt.draw()})}add(Y,...J){if(arguments.length>1){for(var lt=0;ltQ&&e.Util.warn("The stage has "+dt+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),Y.setSize({width:this.width(),height:this.height()}),Y.draw(),s.Konva.isBrowser&&this.content.appendChild(Y.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(Y){return f.hasPointerCapture(Y,this)}setPointerCapture(Y){f.setPointerCapture(Y,this)}releaseCapture(Y){f.releaseCapture(Y,this)}getLayers(){return this.children}_bindContentEvents(){s.Konva.isBrowser&&tt.forEach(([Y,J])=>{this.content.addEventListener(Y,lt=>{this[J](lt)},{passive:!1})})}_pointerenter(Y){this.setPointersPositions(Y);const J=q(Y.type);J&&this._fire(J.pointerenter,{evt:Y,target:this,currentTarget:this})}_pointerover(Y){this.setPointersPositions(Y);const J=q(Y.type);J&&this._fire(J.pointerover,{evt:Y,target:this,currentTarget:this})}_getTargetShape(Y){let J=this[Y+"targetShape"];return J&&!J.getStage()&&(J=null),J}_pointerleave(Y){const J=q(Y.type),lt=X(Y.type);if(J){this.setPointersPositions(Y);var dt=this._getTargetShape(lt),yt=!(s.Konva.isDragging()||s.Konva.isTransforming())||s.Konva.hitOnDragEnabled;dt&&yt?(dt._fireAndBubble(J.pointerout,{evt:Y}),dt._fireAndBubble(J.pointerleave,{evt:Y}),this._fire(J.pointerleave,{evt:Y,target:this,currentTarget:this}),this[lt+"targetShape"]=null):yt&&(this._fire(J.pointerleave,{evt:Y,target:this,currentTarget:this}),this._fire(J.pointerout,{evt:Y,target:this,currentTarget:this})),this.pointerPos=null,this._pointerPositions=[]}}_pointerdown(Y){const J=q(Y.type),lt=X(Y.type);if(J){this.setPointersPositions(Y);var dt=!1;this._changedPointerPositions.forEach(yt=>{var gt=this.getIntersection(yt);if(c.DD.justDragged=!1,s.Konva["_"+lt+"ListenClick"]=!0,!gt||!gt.isListening())return;s.Konva.capturePointerEventsEnabled&>.setPointerCapture(yt.id),this[lt+"ClickStartShape"]=gt,gt._fireAndBubble(J.pointerdown,{evt:Y,pointerId:yt.id}),dt=!0;const Dt=Y.type.indexOf("touch")>=0;gt.preventDefault()&&Y.cancelable&&Dt&&Y.preventDefault()}),dt||this._fire(J.pointerdown,{evt:Y,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(Y){const J=q(Y.type),lt=X(Y.type);if(!J)return;s.Konva.isDragging()&&c.DD.node.preventDefault()&&Y.cancelable&&Y.preventDefault(),this.setPointersPositions(Y);var dt=!(s.Konva.isDragging()||s.Konva.isTransforming())||s.Konva.hitOnDragEnabled;if(!dt)return;var yt={};let gt=!1;var Dt=this._getTargetShape(lt);this._changedPointerPositions.forEach(Ht=>{const It=f.getCapturedShape(Ht.id)||this.getIntersection(Ht),qt=Ht.id,Bt={evt:Y,pointerId:qt};var ee=Dt!==It;if(ee&&Dt&&(Dt._fireAndBubble(J.pointerout,{...Bt},It),Dt._fireAndBubble(J.pointerleave,{...Bt},It)),It){if(yt[It._id])return;yt[It._id]=!0}It&&It.isListening()?(gt=!0,ee&&(It._fireAndBubble(J.pointerover,{...Bt},Dt),It._fireAndBubble(J.pointerenter,{...Bt},Dt),this[lt+"targetShape"]=It),It._fireAndBubble(J.pointermove,{...Bt})):Dt&&(this._fire(J.pointerover,{evt:Y,target:this,currentTarget:this,pointerId:qt}),this[lt+"targetShape"]=null)}),gt||this._fire(J.pointermove,{evt:Y,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(Y){const J=q(Y.type),lt=X(Y.type);if(!J)return;this.setPointersPositions(Y);const dt=this[lt+"ClickStartShape"],yt=this[lt+"ClickEndShape"];var gt={};let Dt=!1;this._changedPointerPositions.forEach(Ht=>{const It=f.getCapturedShape(Ht.id)||this.getIntersection(Ht);if(It){if(It.releaseCapture(Ht.id),gt[It._id])return;gt[It._id]=!0}const qt=Ht.id,Bt={evt:Y,pointerId:qt};let ee=!1;s.Konva["_"+lt+"InDblClickWindow"]?(ee=!0,clearTimeout(this[lt+"DblTimeout"])):c.DD.justDragged||(s.Konva["_"+lt+"InDblClickWindow"]=!0,clearTimeout(this[lt+"DblTimeout"])),this[lt+"DblTimeout"]=setTimeout(function(){s.Konva["_"+lt+"InDblClickWindow"]=!1},s.Konva.dblClickWindow),It&&It.isListening()?(Dt=!0,this[lt+"ClickEndShape"]=It,It._fireAndBubble(J.pointerup,{...Bt}),s.Konva["_"+lt+"ListenClick"]&&dt&&dt===It&&(It._fireAndBubble(J.pointerclick,{...Bt}),ee&&yt&&yt===It&&It._fireAndBubble(J.pointerdblclick,{...Bt}))):(this[lt+"ClickEndShape"]=null,s.Konva["_"+lt+"ListenClick"]&&this._fire(J.pointerclick,{evt:Y,target:this,currentTarget:this,pointerId:qt}),ee&&this._fire(J.pointerdblclick,{evt:Y,target:this,currentTarget:this,pointerId:qt}))}),Dt||this._fire(J.pointerup,{evt:Y,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),s.Konva["_"+lt+"ListenClick"]=!1,Y.cancelable&<!=="touch"&&Y.preventDefault()}_contextmenu(Y){this.setPointersPositions(Y);var J=this.getIntersection(this.getPointerPosition());J&&J.isListening()?J._fireAndBubble(Z,{evt:Y}):this._fire(Z,{evt:Y,target:this,currentTarget:this})}_wheel(Y){this.setPointersPositions(Y);var J=this.getIntersection(this.getPointerPosition());J&&J.isListening()?J._fireAndBubble(W,{evt:Y}):this._fire(W,{evt:Y,target:this,currentTarget:this})}_pointercancel(Y){this.setPointersPositions(Y);const J=f.getCapturedShape(Y.pointerId)||this.getIntersection(this.getPointerPosition());J&&J._fireAndBubble(k,f.createEvent(Y)),f.releaseCapture(Y.pointerId)}_lostpointercapture(Y){f.releaseCapture(Y.pointerId)}setPointersPositions(Y){var J=this._getContentPosition(),lt=null,dt=null;Y=Y||window.event,Y.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(Y.touches,yt=>{this._pointerPositions.push({id:yt.identifier,x:(yt.clientX-J.left)/J.scaleX,y:(yt.clientY-J.top)/J.scaleY})}),Array.prototype.forEach.call(Y.changedTouches||Y.touches,yt=>{this._changedPointerPositions.push({id:yt.identifier,x:(yt.clientX-J.left)/J.scaleX,y:(yt.clientY-J.top)/J.scaleY})})):(lt=(Y.clientX-J.left)/J.scaleX,dt=(Y.clientY-J.top)/J.scaleY,this.pointerPos={x:lt,y:dt},this._pointerPositions=[{x:lt,y:dt,id:e.Util._getFirstPointerId(Y)}],this._changedPointerPositions=[{x:lt,y:dt,id:e.Util._getFirstPointerId(Y)}])}_setPointerPosition(Y){e.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(Y)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var Y=this.content.getBoundingClientRect();return{top:Y.top,left:Y.left,scaleX:Y.width/this.content.clientWidth||1,scaleY:Y.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o.SceneCanvas({width:this.width(),height:this.height()}),this.bufferHitCanvas=new o.HitCanvas({pixelRatio:1,width:this.width(),height:this.height()}),!!s.Konva.isBrowser){var Y=this.container();if(!Y)throw"Stage has no container. A container is required.";Y.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),Y.appendChild(this.content),this._resizeDOM()}}cache(){return e.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(Y){Y.batchDraw()}),this}}t.Stage=ft,ft.prototype.nodeType=g,(0,d._registerNode)(ft),n.Factory.addGetterSetter(ft,"container")})(e6)),e6}var g0={},a6={},i6;function Gr(){return i6||(i6=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Shape=t.shapes=void 0;const e=$e(),n=rr(),r=ze(),s=dr(),o=Ze(),c=$e(),d=ob();var f="hasShadow",g="shadowRGBA",v="patternImage",x="linearGradient",C="radialGradient";let y;function h(){return y||(y=n.Util.createCanvasElement().getContext("2d"),y)}t.shapes={};function w(D){const A=this.attrs.fillRule;A?D.fill(A):D.fill()}function E(D){D.stroke()}function M(D){D.fill()}function b(D){D.stroke()}function m(){this._clearCache(f)}function _(){this._clearCache(g)}function k(){this._clearCache(v)}function R(){this._clearCache(x)}function G(){this._clearCache(C)}class T extends s.Node{constructor(A){super(A);let B;for(;B=n.Util.getRandomColor(),!(B&&!(B in t.shapes)););this.colorKey=B,t.shapes[B]=this}getContext(){return n.Util.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return n.Util.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(f,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(v,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var A=h();const B=A.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(B&&B.setTransform){const Z=new n.Transform;Z.translate(this.fillPatternX(),this.fillPatternY()),Z.rotate(e.Konva.getAngle(this.fillPatternRotation())),Z.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),Z.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const S=Z.getMatrix(),I=typeof DOMMatrix>"u"?{a:S[0],b:S[1],c:S[2],d:S[3],e:S[4],f:S[5]}:new DOMMatrix(S);B.setTransform(I)}return B}}_getLinearGradient(){return this._getCache(x,this.__getLinearGradient)}__getLinearGradient(){var A=this.fillLinearGradientColorStops();if(A){for(var B=h(),Z=this.fillLinearGradientStartPoint(),S=this.fillLinearGradientEndPoint(),I=B.createLinearGradient(Z.x,Z.y,S.x,S.y),N=0;Nthis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const A=this.hitStrokeWidth();return A==="auto"?this.hasStroke():this.strokeEnabled()&&!!A}intersects(A){var B=this.getStage();if(!B)return!1;const Z=B.bufferHitCanvas;return Z.getContext().clear(),this.drawHit(Z,void 0,!0),Z.context.getImageData(Math.round(A.x),Math.round(A.y),1,1).data[3]>0}destroy(){return s.Node.prototype.destroy.call(this),delete t.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(A){var B;if(!(!((B=this.attrs.perfectDrawEnabled)!==null&&B!==void 0)||B))return!1;const Z=A||this.hasFill(),S=this.hasStroke(),I=this.getAbsoluteOpacity()!==1;if(Z&&S&&I)return!0;const N=this.hasShadow(),z=this.shadowForStrokeEnabled();return!!(Z&&S&&N&&z)}setStrokeHitEnabled(A){n.Util.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),A?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var A=this.size();return{x:this._centroid?-A.width/2:0,y:this._centroid?-A.height/2:0,width:A.width,height:A.height}}getClientRect(A={}){const B=A.skipTransform,Z=A.relativeTo,S=this.getSelfRect(),I=!A.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,N=S.width+I,z=S.height+I,W=!A.skipShadow&&this.hasShadow(),Q=W?this.shadowOffsetX():0,tt=W?this.shadowOffsetY():0,at=N+Math.abs(Q),X=z+Math.abs(tt),q=W&&this.shadowBlur()||0,rt=at+q*2,ot=X+q*2,ft={width:rt,height:ot,x:-(I/2+q)+Math.min(Q,0)+S.x,y:-(I/2+q)+Math.min(tt,0)+S.y};return B?ft:this._transformedRect(ft,Z)}drawScene(A,B,Z){var S=this.getLayer(),I=A||S.getCanvas(),N=I.getContext(),z=this._getCanvasCache(),W=this.getSceneFunc(),Q=this.hasShadow(),tt,at,X=I.isCache,q=B===this;if(!this.isVisible()&&!q)return this;if(z){N.save();var rt=this.getAbsoluteTransform(B).getMatrix();return N.transform(rt[0],rt[1],rt[2],rt[3],rt[4],rt[5]),this._drawCachedSceneCanvas(N),N.restore(),this}if(!W)return this;if(N.save(),this._useBufferCanvas()&&!X){tt=this.getStage();const it=Z||tt.bufferCanvas;at=it.getContext(),at.clear(),at.save(),at._applyLineJoin(this);var ot=this.getAbsoluteTransform(B).getMatrix();at.transform(ot[0],ot[1],ot[2],ot[3],ot[4],ot[5]),W.call(this,at,this),at.restore();var ft=it.pixelRatio;Q&&N._applyShadow(this),N._applyOpacity(this),N._applyGlobalCompositeOperation(this),N.drawImage(it._canvas,0,0,it.width/ft,it.height/ft)}else{if(N._applyLineJoin(this),!q){var ot=this.getAbsoluteTransform(B).getMatrix();N.transform(ot[0],ot[1],ot[2],ot[3],ot[4],ot[5]),N._applyOpacity(this),N._applyGlobalCompositeOperation(this)}Q&&N._applyShadow(this),W.call(this,N,this)}return N.restore(),this}drawHit(A,B,Z=!1){if(!this.shouldDrawHit(B,Z))return this;var S=this.getLayer(),I=A||S.hitCanvas,N=I&&I.getContext(),z=this.hitFunc()||this.sceneFunc(),W=this._getCanvasCache(),Q=W&&W.hit;if(this.colorKey||n.Util.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),Q){N.save();var tt=this.getAbsoluteTransform(B).getMatrix();return N.transform(tt[0],tt[1],tt[2],tt[3],tt[4],tt[5]),this._drawCachedHitCanvas(N),N.restore(),this}if(!z)return this;if(N.save(),N._applyLineJoin(this),this!==B){var at=this.getAbsoluteTransform(B).getMatrix();N.transform(at[0],at[1],at[2],at[3],at[4],at[5])}return z.call(this,N,this),N.restore(),this}drawHitFromCache(A=0){var B=this._getCanvasCache(),Z=this._getCachedSceneCanvas(),S=B.hit,I=S.getContext(),N=S.getWidth(),z=S.getHeight(),W,Q,tt,at,X,q;I.clear(),I.drawImage(Z._canvas,0,0,N,z);try{for(W=I.getImageData(0,0,N,z),Q=W.data,tt=Q.length,at=n.Util._hexToRgb(this.colorKey),X=0;XA?(Q[X]=at.r,Q[X+1]=at.g,Q[X+2]=at.b,Q[X+3]=255):Q[X+3]=0;I.putImageData(W,0,0)}catch(rt){n.Util.error("Unable to draw hit graph from cached scene canvas. "+rt.message)}return this}hasPointerCapture(A){return d.hasPointerCapture(A,this)}setPointerCapture(A){d.setPointerCapture(A,this)}releaseCapture(A){d.releaseCapture(A,this)}}t.Shape=T,T.prototype._fillFunc=w,T.prototype._strokeFunc=E,T.prototype._fillFuncHit=M,T.prototype._strokeFuncHit=b,T.prototype._centroid=!1,T.prototype.nodeType="Shape",(0,c._registerNode)(T),T.prototype.eventListeners={},T.prototype.on.call(T.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",m),T.prototype.on.call(T.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",_),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",k),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",R),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",G),r.Factory.addGetterSetter(T,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(T,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(T,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(T,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"lineJoin"),r.Factory.addGetterSetter(T,"lineCap"),r.Factory.addGetterSetter(T,"sceneFunc"),r.Factory.addGetterSetter(T,"hitFunc"),r.Factory.addGetterSetter(T,"dash"),r.Factory.addGetterSetter(T,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(T,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(T,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternImage"),r.Factory.addGetterSetter(T,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(T,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(T,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(T,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(T,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(T,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(T,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(T,"fillEnabled",!0),r.Factory.addGetterSetter(T,"strokeEnabled",!0),r.Factory.addGetterSetter(T,"shadowEnabled",!0),r.Factory.addGetterSetter(T,"dashEnabled",!0),r.Factory.addGetterSetter(T,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(T,"fillPriority","color"),r.Factory.addComponentsGetterSetter(T,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(T,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(T,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(T,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(T,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(T,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(T,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(T,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(T,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(T,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(T,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(T,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(T,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(T,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(T,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(T,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(T,"fillPatternRotation",0),r.Factory.addGetterSetter(T,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(T,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(a6)),a6}var o6;function sb(){if(o6)return g0;o6=1,Object.defineProperty(g0,"__esModule",{value:!0}),g0.Layer=void 0;const t=rr(),e=Fp(),n=dr(),r=ze(),s=Rp(),o=Ze(),c=Gr(),d=$e();var f="#",g="beforeDraw",v="draw",x=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],C=x.length;let y=class extends e.Container{constructor(h){super(h),this.canvas=new s.SceneCanvas,this.hitCanvas=new s.HitCanvas({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(h){return this.getContext().clear(h),this.getHitCanvas().getContext().clear(h),this}setZIndex(h){super.setZIndex(h);var w=this.getStage();return w&&w.content&&(w.content.removeChild(this.getNativeCanvasElement()),h{this.draw(),this._waitingForDraw=!1})),this}getIntersection(h){if(!this.isListening()||!this.isVisible())return null;for(var w=1,E=!1;;){for(let M=0;M0)return{antialiased:!0};return{}}drawScene(h,w){var E=this.getLayer(),M=h||E&&E.getCanvas();return this._fire(g,{node:this}),this.clearBeforeDraw()&&M.getContext().clear(),e.Container.prototype.drawScene.call(this,M,w),this._fire(v,{node:this}),this}drawHit(h,w){var E=this.getLayer(),M=h||E&&E.hitCanvas;return E&&E.clearBeforeDraw()&&E.getHitCanvas().getContext().clear(),e.Container.prototype.drawHit.call(this,M,w),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(h){t.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(h)}getHitGraphEnabled(h){return t.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!(!this.parent||!this.parent.content)){var h=this.parent,w=!!this.hitCanvas._canvas.parentNode;w?h.content.removeChild(this.hitCanvas._canvas):h.content.appendChild(this.hitCanvas._canvas)}}destroy(){return t.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}};return g0.Layer=y,y.prototype.nodeType="Layer",(0,d._registerNode)(y),r.Factory.addGetterSetter(y,"imageSmoothingEnabled",!0),r.Factory.addGetterSetter(y,"clearBeforeDraw",!0),r.Factory.addGetterSetter(y,"hitGraphEnabled",!0,(0,o.getBooleanValidator)()),g0}var m0={},s6;function NE(){if(s6)return m0;s6=1,Object.defineProperty(m0,"__esModule",{value:!0}),m0.FastLayer=void 0;const t=rr(),e=sb(),n=$e();let r=class extends e.Layer{constructor(s){super(s),this.listening(!1),t.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}};return m0.FastLayer=r,r.prototype.nodeType="FastLayer",(0,n._registerNode)(r),m0}var v0={},l6;function bm(){if(l6)return v0;l6=1,Object.defineProperty(v0,"__esModule",{value:!0}),v0.Group=void 0;const t=rr(),e=Fp(),n=$e();let r=class extends e.Container{_validateAdd(s){var o=s.getType();o!=="Group"&&o!=="Shape"&&t.Util.throw("You may only add groups and shapes to groups.")}};return v0.Group=r,r.prototype.nodeType="Group",(0,n._registerNode)(r),v0}var y0={},c6;function wm(){if(c6)return y0;c6=1,Object.defineProperty(y0,"__esModule",{value:!0}),y0.Animation=void 0;const t=$e(),e=rr(),n=(function(){return t.glob.performance&&t.glob.performance.now?function(){return t.glob.performance.now()}:function(){return new Date().getTime()}})();let r=class rd{constructor(o,c){this.id=rd.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:n(),frameRate:0},this.func=o,this.setLayers(c)}setLayers(o){let c=[];return o&&(c=Array.isArray(o)?o:[o]),this.layers=c,this}getLayers(){return this.layers}addLayer(o){const c=this.layers,d=c.length;for(let f=0;fthis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():h<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=h,this.update())}getTime(){return this._time}setPosition(h){this.prevPos=this._pos,this.propFunc(h),this._pos=h}getPosition(h){return h===void 0&&(h=this._time),this.func(h,this.begin,this._change,this.duration)}play(){this.state=d,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=f,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(h){this.pause(),this._time=h,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){var h=this.getTimer()-this._startTime;this.state===d?this.setTime(h):this.state===f&&this.setTime(this.duration-h)}pause(){this.state=c,this.fire("onPause")}getTimer(){return new Date().getTime()}}class C{constructor(h){var w=this,E=h.node,M=E._id,b,m=h.easing||t.Easings.Linear,_=!!h.yoyo,k;typeof h.duration>"u"?b=.3:h.duration===0?b=.001:b=h.duration,this.node=E,this._id=g++;var R=E.getLayer()||(E instanceof s.Konva.Stage?E.getLayers():null);R||e.Util.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new n.Animation(function(){w.tween.onEnterFrame()},R),this.tween=new x(k,function(G){w._tweenFunc(G)},m,0,1,b*1e3,_),this._addListeners(),C.attrs[M]||(C.attrs[M]={}),C.attrs[M][this._id]||(C.attrs[M][this._id]={}),C.tweens[M]||(C.tweens[M]={});for(k in h)o[k]===void 0&&this._addAttr(k,h[k]);this.reset(),this.onFinish=h.onFinish,this.onReset=h.onReset,this.onUpdate=h.onUpdate}_addAttr(h,w){var E=this.node,M=E._id,b,m,_,k,R,G,T,D;if(_=C.tweens[M][h],_&&delete C.attrs[M][_][h],b=E.getAttr(h),e.Util._isArray(w))if(m=[],R=Math.max(w.length,b.length),h==="points"&&w.length!==b.length&&(w.length>b.length?(T=b,b=e.Util._prepareArrayForTween(b,w,E.closed())):(G=w,w=e.Util._prepareArrayForTween(w,b,E.closed()))),h.indexOf("fill")===0)for(k=0;k{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var h=this.node,w=C.attrs[h._id][this._id];w.points&&w.points.trueEnd&&h.setAttr("points",w.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var h=this.node,w=C.attrs[h._id][this._id];w.points&&w.points.trueStart&&h.points(w.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(h){return this.tween.seek(h*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var h=this.node._id,w=this._id,E=C.tweens[h],M;this.pause();for(M in E)delete C.tweens[h][M];delete C.attrs[h][w]}}t.Tween=C,C.attrs={},C.tweens={},r.Node.prototype.to=function(y){var h=y.onFinish;y.node=this,y.onFinish=function(){this.destroy(),h&&h()};var w=new C(y);w.play()},t.Easings={BackEaseIn(y,h,w,E){var M=1.70158;return w*(y/=E)*y*((M+1)*y-M)+h},BackEaseOut(y,h,w,E){var M=1.70158;return w*((y=y/E-1)*y*((M+1)*y+M)+1)+h},BackEaseInOut(y,h,w,E){var M=1.70158;return(y/=E/2)<1?w/2*(y*y*(((M*=1.525)+1)*y-M))+h:w/2*((y-=2)*y*(((M*=1.525)+1)*y+M)+2)+h},ElasticEaseIn(y,h,w,E,M,b){var m=0;return y===0?h:(y/=E)===1?h+w:(b||(b=E*.3),!M||M0?c:d),w=x*d,E=C*(C>0?c:d),M=y*(y>0?d:c);return{x:h,y:f?-1*M:E,width:w-h,height:M-E}}};return b0.Arc=o,o.prototype._centroid=!0,o.prototype.className="Arc",o.prototype._attrsAffectingSize=["innerRadius","outerRadius"],(0,s._registerNode)(o),t.Factory.addGetterSetter(o,"innerRadius",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"outerRadius",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"angle",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"clockwise",!1,(0,r.getBooleanValidator)()),b0}var w0={},x0={},p6;function lb(){if(p6)return x0;p6=1,Object.defineProperty(x0,"__esModule",{value:!0}),x0.Line=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();function s(d,f,g,v,x,C,y){var h=Math.sqrt(Math.pow(g-d,2)+Math.pow(v-f,2)),w=Math.sqrt(Math.pow(x-g,2)+Math.pow(C-v,2)),E=y*h/(h+w),M=y*w/(h+w),b=g-E*(x-d),m=v-E*(C-f),_=g+M*(x-d),k=v+M*(C-f);return[b,m,_,k]}function o(d,f){var g=d.length,v=[],x,C;for(x=2;x4){for(h=this.getTensionPoints(),w=h.length,E=C?0:4,C||f.quadraticCurveTo(h[0],h[1],h[2],h[3]);E{let g,v,x;g=f/2,v=0;for(let C=0;C<20;C++)x=g*t.tValues[20][C]+g,v+=t.cValues[20][C]*r(c,d,x);return g*v};t.getCubicArcLength=e;const n=(c,d,f)=>{f===void 0&&(f=1);const g=c[0]-2*c[1]+c[2],v=d[0]-2*d[1]+d[2],x=2*c[1]-2*c[0],C=2*d[1]-2*d[0],y=4*(g*g+v*v),h=4*(g*x+v*C),w=x*x+C*C;if(y===0)return f*Math.sqrt(Math.pow(c[2]-c[0],2)+Math.pow(d[2]-d[0],2));const E=h/(2*y),M=w/y,b=f+E,m=M-E*E,_=b*b+m>0?Math.sqrt(b*b+m):0,k=E*E+m>0?Math.sqrt(E*E+m):0,R=E+Math.sqrt(E*E+m)!==0?m*Math.log(Math.abs((b+_)/(E+k))):0;return Math.sqrt(y)/2*(b*_-E*k+R)};t.getQuadraticArcLength=n;function r(c,d,f){const g=s(1,f,c),v=s(1,f,d),x=g*g+v*v;return Math.sqrt(x)}const s=(c,d,f)=>{const g=f.length-1;let v,x;if(g===0)return 0;if(c===0){x=0;for(let C=0;C<=g;C++)x+=t.binomialCoefficients[g][C]*Math.pow(1-d,g-C)*Math.pow(d,C)*f[C];return x}else{v=new Array(g);for(let C=0;C{let g=1,v=c/d,x=(c-f(v))/d,C=0;for(;g>.001;){const y=f(v+x),h=Math.abs(c-y)/d;if(h500)break}return v};t.t2length=o})(g6)),g6}var v6;function xm(){if(v6)return C0;v6=1,Object.defineProperty(C0,"__esModule",{value:!0}),C0.Path=void 0;const t=ze(),e=Gr(),n=$e(),r=jE();let s=class Va extends e.Shape{constructor(c){super(c),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=Va.parsePathData(this.data()),this.pathLength=Va.getPathLength(this.dataArray)}_sceneFunc(c){var d=this.dataArray;c.beginPath();for(var f=!1,g=0;gw?h:w,k=h>w?1:h/w,R=h>w?w/h:1;c.translate(C,y),c.rotate(b),c.scale(k,R),c.arc(0,0,_,E,E+M,1-m),c.scale(1/k,1/R),c.rotate(-b),c.translate(-C,-y);break;case"z":f=!0,c.closePath();break}}!f&&!this.hasFill()?c.strokeShape(this):c.fillStrokeShape(this)}getSelfRect(){var c=[];this.dataArray.forEach(function(h){if(h.command==="A"){var w=h.points[4],E=h.points[5],M=h.points[4]+E,b=Math.PI/180;if(Math.abs(w-M)M;m-=b){const _=Va.getPointOnEllipticalArc(h.points[0],h.points[1],h.points[2],h.points[3],m,0);c.push(_.x,_.y)}else for(let m=w+b;md[g].pathLength;)c-=d[g].pathLength,++g;if(g===v)return f=d[g-1].points.slice(-2),{x:f[0],y:f[1]};if(c<.01)return f=d[g].points.slice(0,2),{x:f[0],y:f[1]};var x=d[g],C=x.points;switch(x.command){case"L":return Va.getPointOnLine(c,x.start.x,x.start.y,C[0],C[1]);case"C":return Va.getPointOnCubicBezier((0,r.t2length)(c,Va.getPathLength(d),_=>(0,r.getCubicArcLength)([x.start.x,C[0],C[2],C[4]],[x.start.y,C[1],C[3],C[5]],_)),x.start.x,x.start.y,C[0],C[1],C[2],C[3],C[4],C[5]);case"Q":return Va.getPointOnQuadraticBezier((0,r.t2length)(c,Va.getPathLength(d),_=>(0,r.getQuadraticArcLength)([x.start.x,C[0],C[2]],[x.start.y,C[1],C[3]],_)),x.start.x,x.start.y,C[0],C[1],C[2],C[3]);case"A":var y=C[0],h=C[1],w=C[2],E=C[3],M=C[4],b=C[5],m=C[6];return M+=b*c/x.pathLength,Va.getPointOnEllipticalArc(y,h,w,E,M,m)}return null}static getPointOnLine(c,d,f,g,v,x,C){x===void 0&&(x=d),C===void 0&&(C=f);var y=(v-f)/(g-d+1e-8),h=Math.sqrt(c*c/(1+y*y));g0&&!isNaN(m[0]);){var G="",T=[],D=y,A=h,B,Z,S,I,N,z,W,Q,tt,at;switch(b){case"l":y+=m.shift(),h+=m.shift(),G="L",T.push(y,h);break;case"L":y=m.shift(),h=m.shift(),T.push(y,h);break;case"m":var X=m.shift(),q=m.shift();if(y+=X,h+=q,G="M",x.length>2&&x[x.length-1].command==="z"){for(var rt=x.length-2;rt>=0;rt--)if(x[rt].command==="M"){y=x[rt].points[0]+X,h=x[rt].points[1]+q;break}}T.push(y,h),b="l";break;case"M":y=m.shift(),h=m.shift(),G="M",T.push(y,h),b="L";break;case"h":y+=m.shift(),G="L",T.push(y,h);break;case"H":y=m.shift(),G="L",T.push(y,h);break;case"v":h+=m.shift(),G="L",T.push(y,h);break;case"V":h=m.shift(),G="L",T.push(y,h);break;case"C":T.push(m.shift(),m.shift(),m.shift(),m.shift()),y=m.shift(),h=m.shift(),T.push(y,h);break;case"c":T.push(y+m.shift(),h+m.shift(),y+m.shift(),h+m.shift()),y+=m.shift(),h+=m.shift(),G="C",T.push(y,h);break;case"S":Z=y,S=h,B=x[x.length-1],B.command==="C"&&(Z=y+(y-B.points[2]),S=h+(h-B.points[3])),T.push(Z,S,m.shift(),m.shift()),y=m.shift(),h=m.shift(),G="C",T.push(y,h);break;case"s":Z=y,S=h,B=x[x.length-1],B.command==="C"&&(Z=y+(y-B.points[2]),S=h+(h-B.points[3])),T.push(Z,S,y+m.shift(),h+m.shift()),y+=m.shift(),h+=m.shift(),G="C",T.push(y,h);break;case"Q":T.push(m.shift(),m.shift()),y=m.shift(),h=m.shift(),T.push(y,h);break;case"q":T.push(y+m.shift(),h+m.shift()),y+=m.shift(),h+=m.shift(),G="Q",T.push(y,h);break;case"T":Z=y,S=h,B=x[x.length-1],B.command==="Q"&&(Z=y+(y-B.points[0]),S=h+(h-B.points[1])),y=m.shift(),h=m.shift(),G="Q",T.push(Z,S,y,h);break;case"t":Z=y,S=h,B=x[x.length-1],B.command==="Q"&&(Z=y+(y-B.points[0]),S=h+(h-B.points[1])),y+=m.shift(),h+=m.shift(),G="Q",T.push(Z,S,y,h);break;case"A":I=m.shift(),N=m.shift(),z=m.shift(),W=m.shift(),Q=m.shift(),tt=y,at=h,y=m.shift(),h=m.shift(),G="A",T=this.convertEndpointToCenterParameterization(tt,at,y,h,W,Q,I,N,z);break;case"a":I=m.shift(),N=m.shift(),z=m.shift(),W=m.shift(),Q=m.shift(),tt=y,at=h,y+=m.shift(),h+=m.shift(),G="A",T=this.convertEndpointToCenterParameterization(tt,at,y,h,W,Q,I,N,z);break}x.push({command:G||b,points:T,start:{x:D,y:A},pathLength:this.calcLength(D,A,G||b,T)})}(b==="z"||b==="Z")&&x.push({command:"z",points:[],start:void 0,pathLength:0})}return x}static calcLength(c,d,f,g){var v,x,C,y,h=Va;switch(f){case"L":return h.getLineLength(c,d,g[0],g[1]);case"C":return(0,r.getCubicArcLength)([c,g[0],g[2],g[4]],[d,g[1],g[3],g[5]],1);case"Q":return(0,r.getQuadraticArcLength)([c,g[0],g[2]],[d,g[1],g[3]],1);case"A":v=0;var w=g[4],E=g[5],M=g[4]+E,b=Math.PI/180;if(Math.abs(w-M)M;y-=b)C=h.getPointOnEllipticalArc(g[0],g[1],g[2],g[3],y,0),v+=h.getLineLength(x.x,x.y,C.x,C.y),x=C;else for(y=w+b;y1&&(C*=Math.sqrt(b),y*=Math.sqrt(b));var m=Math.sqrt((C*C*(y*y)-C*C*(M*M)-y*y*(E*E))/(C*C*(M*M)+y*y*(E*E)));v===x&&(m*=-1),isNaN(m)&&(m=0);var _=m*C*M/y,k=m*-y*E/C,R=(c+f)/2+Math.cos(w)*_-Math.sin(w)*k,G=(d+g)/2+Math.sin(w)*_+Math.cos(w)*k,T=function(N){return Math.sqrt(N[0]*N[0]+N[1]*N[1])},D=function(N,z){return(N[0]*z[0]+N[1]*z[1])/(T(N)*T(z))},A=function(N,z){return(N[0]*z[1]=1&&(I=0),x===0&&I>0&&(I=I-2*Math.PI),x===1&&I<0&&(I=I+2*Math.PI),[R,G,C,y,B,I,w,x]}};return C0.Path=s,s.prototype.className="Path",s.prototype._attrsAffectingSize=["data"],(0,n._registerNode)(s),t.Factory.addGetterSetter(s,"data"),C0}var y6;function BE(){if(y6)return w0;y6=1,Object.defineProperty(w0,"__esModule",{value:!0}),w0.Arrow=void 0;const t=ze(),e=lb(),n=Ze(),r=$e(),s=xm();class o extends e.Line{_sceneFunc(d){super._sceneFunc(d);var f=Math.PI*2,g=this.points(),v=g,x=this.tension()!==0&&g.length>4;x&&(v=this.getTensionPoints());var C=this.pointerLength(),y=g.length,h,w;if(x){const b=[v[v.length-4],v[v.length-3],v[v.length-2],v[v.length-1],g[y-2],g[y-1]],m=s.Path.calcLength(v[v.length-4],v[v.length-3],"C",b),_=s.Path.getPointOnQuadraticBezier(Math.min(1,1-C/m),b[0],b[1],b[2],b[3],b[4],b[5]);h=g[y-2]-_.x,w=g[y-1]-_.y}else h=g[y-2]-g[y-4],w=g[y-1]-g[y-3];var E=(Math.atan2(w,h)+f)%f,M=this.pointerWidth();this.pointerAtEnding()&&(d.save(),d.beginPath(),d.translate(g[y-2],g[y-1]),d.rotate(E),d.moveTo(0,0),d.lineTo(-C,M/2),d.lineTo(-C,-M/2),d.closePath(),d.restore(),this.__fillStroke(d)),this.pointerAtBeginning()&&(d.save(),d.beginPath(),d.translate(g[0],g[1]),x?(h=(v[0]+v[2])/2-g[0],w=(v[1]+v[3])/2-g[1]):(h=g[2]-g[0],w=g[3]-g[1]),d.rotate((Math.atan2(-w,-h)+f)%f),d.moveTo(0,0),d.lineTo(-C,M/2),d.lineTo(-C,-M/2),d.closePath(),d.restore(),this.__fillStroke(d))}__fillStroke(d){var f=this.dashEnabled();f&&(this.attrs.dashEnabled=!1,d.setLineDash([])),d.fillStrokeShape(this),f&&(this.attrs.dashEnabled=!0)}getSelfRect(){const d=super.getSelfRect(),f=this.pointerWidth()/2;return{x:d.x-f,y:d.y-f,width:d.width+f*2,height:d.height+f*2}}}return w0.Arrow=o,o.prototype.className="Arrow",(0,r._registerNode)(o),t.Factory.addGetterSetter(o,"pointerLength",10,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(o,"pointerWidth",10,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(o,"pointerAtBeginning",!1),t.Factory.addGetterSetter(o,"pointerAtEnding",!0),w0}var S0={},b6;function HE(){if(b6)return S0;b6=1,Object.defineProperty(S0,"__esModule",{value:!0}),S0.Circle=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();let s=class extends e.Shape{_sceneFunc(o){o.beginPath(),o.arc(0,0,this.attrs.radius||0,0,Math.PI*2,!1),o.closePath(),o.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(o){this.radius()!==o/2&&this.radius(o/2)}setHeight(o){this.radius()!==o/2&&this.radius(o/2)}};return S0.Circle=s,s.prototype._centroid=!0,s.prototype.className="Circle",s.prototype._attrsAffectingSize=["radius"],(0,r._registerNode)(s),t.Factory.addGetterSetter(s,"radius",0,(0,n.getNumberValidator)()),S0}var _0={},w6;function zE(){if(w6)return _0;w6=1,Object.defineProperty(_0,"__esModule",{value:!0}),_0.Ellipse=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();class s extends e.Shape{_sceneFunc(c){var d=this.radiusX(),f=this.radiusY();c.beginPath(),c.save(),d!==f&&c.scale(1,f/d),c.arc(0,0,d,0,Math.PI*2,!1),c.restore(),c.closePath(),c.fillStrokeShape(this)}getWidth(){return this.radiusX()*2}getHeight(){return this.radiusY()*2}setWidth(c){this.radiusX(c/2)}setHeight(c){this.radiusY(c/2)}}return _0.Ellipse=s,s.prototype.className="Ellipse",s.prototype._centroid=!0,s.prototype._attrsAffectingSize=["radiusX","radiusY"],(0,r._registerNode)(s),t.Factory.addComponentsGetterSetter(s,"radius",["x","y"]),t.Factory.addGetterSetter(s,"radiusX",0,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(s,"radiusY",0,(0,n.getNumberValidator)()),_0}var E0={},x6;function GE(){if(x6)return E0;x6=1,Object.defineProperty(E0,"__esModule",{value:!0}),E0.Image=void 0;const t=rr(),e=ze(),n=Gr(),r=$e(),s=Ze();class o extends n.Shape{constructor(d){super(d),this.on("imageChange.konva",()=>{this._setImageLoad()}),this._setImageLoad()}_setImageLoad(){const d=this.image();d&&d.complete||d&&d.readyState===4||d&&d.addEventListener&&d.addEventListener("load",()=>{this._requestDraw()})}_useBufferCanvas(){return super._useBufferCanvas(!0)}_sceneFunc(d){const f=this.getWidth(),g=this.getHeight(),v=this.cornerRadius(),x=this.attrs.image;let C;if(x){const y=this.attrs.cropWidth,h=this.attrs.cropHeight;y&&h?C=[x,this.cropX(),this.cropY(),y,h,0,0,f,g]:C=[x,0,0,f,g]}(this.hasFill()||this.hasStroke()||v)&&(d.beginPath(),v?t.Util.drawRoundedRectPath(d,f,g,v):d.rect(0,0,f,g),d.closePath(),d.fillStrokeShape(this)),x&&(v&&d.clip(),d.drawImage.apply(d,C))}_hitFunc(d){var f=this.width(),g=this.height(),v=this.cornerRadius();d.beginPath(),v?t.Util.drawRoundedRectPath(d,f,g,v):d.rect(0,0,f,g),d.closePath(),d.fillStrokeShape(this)}getWidth(){var d,f;return(d=this.attrs.width)!==null&&d!==void 0?d:(f=this.image())===null||f===void 0?void 0:f.width}getHeight(){var d,f;return(d=this.attrs.height)!==null&&d!==void 0?d:(f=this.image())===null||f===void 0?void 0:f.height}static fromURL(d,f,g=null){var v=t.Util.createImageElement();v.onload=function(){var x=new o({image:v});f(x)},v.onerror=g,v.crossOrigin="Anonymous",v.src=d}}return E0.Image=o,o.prototype.className="Image",(0,r._registerNode)(o),e.Factory.addGetterSetter(o,"cornerRadius",0,(0,s.getNumberOrArrayOfNumbersValidator)(4)),e.Factory.addGetterSetter(o,"image"),e.Factory.addComponentsGetterSetter(o,"crop",["x","y","width","height"]),e.Factory.addGetterSetter(o,"cropX",0,(0,s.getNumberValidator)()),e.Factory.addGetterSetter(o,"cropY",0,(0,s.getNumberValidator)()),e.Factory.addGetterSetter(o,"cropWidth",0,(0,s.getNumberValidator)()),e.Factory.addGetterSetter(o,"cropHeight",0,(0,s.getNumberValidator)()),E0}var Pc={},C6;function UE(){if(C6)return Pc;C6=1,Object.defineProperty(Pc,"__esModule",{value:!0}),Pc.Tag=Pc.Label=void 0;const t=ze(),e=Gr(),n=bm(),r=Ze(),s=$e();var o=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],c="Change.konva",d="none",f="up",g="right",v="down",x="left",C=o.length;class y extends n.Group{constructor(E){super(E),this.on("add.konva",function(M){this._addListeners(M.child),this._sync()})}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(E){var M=this,b,m=function(){M._sync()};for(b=0;b{c=Math.min(c,v.x),d=Math.max(d,v.x),f=Math.min(f,v.y),g=Math.max(g,v.y)}),{x:c,y:f,width:d-c,height:g-f}}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(o){this.radius(o/2)}setHeight(o){this.radius(o/2)}};return k0.RegularPolygon=s,s.prototype.className="RegularPolygon",s.prototype._centroid=!0,s.prototype._attrsAffectingSize=["radius"],(0,r._registerNode)(s),t.Factory.addGetterSetter(s,"radius",0,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(s,"sides",0,(0,n.getNumberValidator)()),k0}var P0={},E6;function VE(){if(E6)return P0;E6=1,Object.defineProperty(P0,"__esModule",{value:!0}),P0.Ring=void 0;const t=ze(),e=Gr(),n=Ze(),r=$e();var s=Math.PI*2;let o=class extends e.Shape{_sceneFunc(c){c.beginPath(),c.arc(0,0,this.innerRadius(),0,s,!1),c.moveTo(this.outerRadius(),0),c.arc(0,0,this.outerRadius(),s,0,!0),c.closePath(),c.fillStrokeShape(this)}getWidth(){return this.outerRadius()*2}getHeight(){return this.outerRadius()*2}setWidth(c){this.outerRadius(c/2)}setHeight(c){this.outerRadius(c/2)}};return P0.Ring=o,o.prototype.className="Ring",o.prototype._centroid=!0,o.prototype._attrsAffectingSize=["innerRadius","outerRadius"],(0,r._registerNode)(o),t.Factory.addGetterSetter(o,"innerRadius",0,(0,n.getNumberValidator)()),t.Factory.addGetterSetter(o,"outerRadius",0,(0,n.getNumberValidator)()),P0}var M0={},O6;function YE(){if(O6)return M0;O6=1,Object.defineProperty(M0,"__esModule",{value:!0}),M0.Sprite=void 0;const t=ze(),e=Gr(),n=wm(),r=Ze(),s=$e();let o=class extends e.Shape{constructor(c){super(c),this._updated=!0,this.anim=new n.Animation(()=>{var d=this._updated;return this._updated=!1,d}),this.on("animationChange.konva",function(){this.frameIndex(0)}),this.on("frameIndexChange.konva",function(){this._updated=!0}),this.on("frameRateChange.konva",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())})}_sceneFunc(c){var d=this.animation(),f=this.frameIndex(),g=f*4,v=this.animations()[d],x=this.frameOffsets(),C=v[g+0],y=v[g+1],h=v[g+2],w=v[g+3],E=this.image();if((this.hasFill()||this.hasStroke())&&(c.beginPath(),c.rect(0,0,h,w),c.closePath(),c.fillStrokeShape(this)),E)if(x){var M=x[d],b=f*2;c.drawImage(E,C,y,h,w,M[b+0],M[b+1],h,w)}else c.drawImage(E,C,y,h,w,0,0,h,w)}_hitFunc(c){var d=this.animation(),f=this.frameIndex(),g=f*4,v=this.animations()[d],x=this.frameOffsets(),C=v[g+2],y=v[g+3];if(c.beginPath(),x){var h=x[d],w=f*2;c.rect(h[w+0],h[w+1],C,y)}else c.rect(0,0,C,y);c.closePath(),c.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){var c=this;this.interval=setInterval(function(){c._updateIndex()},1e3/this.frameRate())}start(){if(!this.isRunning()){var c=this.getLayer();this.anim.setLayers(c),this._setInterval(),this.anim.start()}}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){var c=this.frameIndex(),d=this.animation(),f=this.animations(),g=f[d],v=g.length/4;c{q=q.trim();const rt=q.indexOf(" ")>=0,ot=q.indexOf('"')>=0||q.indexOf("'")>=0;return rt&&!ot&&(q=`"${q}"`),q}).join(", ")}var N;function z(){return N||(N=t.Util.createCanvasElement().getContext(x),N)}function W(X){X.fillText(this._partialText,this._partialTextX,this._partialTextY)}function Q(X){X.setAttr("miterLimit",2),X.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function tt(X){return X=X||{},!X.fillLinearGradientColorStops&&!X.fillRadialGradientColorStops&&!X.fillPatternImage&&(X.fill=X.fill||"black"),X}class at extends n.Shape{constructor(q){super(tt(q)),this._partialTextX=0,this._partialTextY=0;for(var rt=0;rt1&&(Kt+=Y)}}}_hitFunc(q){var rt=this.getWidth(),ot=this.getHeight();q.beginPath(),q.rect(0,0,rt,ot),q.closePath(),q.fillStrokeShape(this)}setText(q){var rt=t.Util._isString(q)?q:q==null?"":q+"";return this._setAttr(h,rt),this}getWidth(){var q=this.attrs.width===c||this.attrs.width===void 0;return q?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var q=this.attrs.height===c||this.attrs.height===void 0;return q?this.fontSize()*this.textArr.length*this.lineHeight()+this.padding()*2:this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return t.Util.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(q){var rt=z(),ot=this.fontSize(),ft;return rt.save(),rt.font=this._getContextFont(),ft=rt.measureText(q),rt.restore(),{width:ft.width,height:ot}}_getContextFont(){return this.fontStyle()+k+this.fontVariant()+k+(this.fontSize()+_)+I(this.fontFamily())}_addTextLine(q){this.align()===g&&(q=q.trim());var rt=this._getTextWidth(q);return this.textArr.push({text:q,width:rt,lastInParagraph:!1})}_getTextWidth(q){var rt=this.letterSpacing(),ot=q.length;return z().measureText(q).width+(ot?rt*(ot-1):0)}_setTextData(){var q=this.text().split(` `),rt=+this.fontSize(),ot=0,ft=this.lineHeight()*rt,it=this.attrs.width,Y=this.attrs.height,J=it!==c&&it!==void 0,lt=Y!==c&&Y!==void 0,dt=this.padding(),yt=it-dt*2,gt=Y-dt*2,Dt=0,Ht=this.wrap(),It=Ht!==A,qt=Ht!==D&&It,Bt=this.ellipsis();this.textArr=[],z().font=this._getContextFont();for(var ee=Bt?this._getTextWidth(B):0,Kt=0,Yt=q.length;Ktyt)for(;oe.length>0;){for(var ue=0,Qt=oe.length,$t="",we=0;ue>>1,_e=oe.slice(0,Fe+1),pn=this._getTextWidth(_e)+ee;pn<=yt?(ue=Fe+1,$t=_e,we=pn):Qt=Fe}if($t){if(qt){var jt,se=oe[$t.length],Se=se===k||se===C;Se&&we<=yt?jt=$t.length:jt=Math.max($t.lastIndexOf(k),$t.lastIndexOf(C))+1,jt>0&&(ue=jt,$t=$t.slice(0,ue),we=this._getTextWidth($t))}$t=$t.trimRight(),this._addTextLine($t),ot=Math.max(ot,we),Dt+=ft;var xe=this._shouldHandleEllipsis(Dt);if(xe){this._tryToAddEllipsisToLastLine();break}if(oe=oe.slice(ue),oe=oe.trimLeft(),oe.length>0&&(ne=this._getTextWidth(oe),ne<=yt)){this._addTextLine(oe),Dt+=ft,ot=Math.max(ot,ne);break}}else break}else this._addTextLine(oe),Dt+=ft,ot=Math.max(ot,ne),this._shouldHandleEllipsis(Dt)&&Ktgt)break}this.textHeight=rt,this.textWidth=ot}_shouldHandleEllipsis(q){var rt=+this.fontSize(),ot=this.lineHeight()*rt,ft=this.attrs.height,it=ft!==c&&ft!==void 0,Y=this.padding(),J=ft-Y*2,lt=this.wrap(),dt=lt!==A;return!dt||it&&q+ot>J}_tryToAddEllipsisToLastLine(){var q=this.attrs.width,rt=q!==c&&q!==void 0,ot=this.padding(),ft=q-ot*2,it=this.ellipsis(),Y=this.textArr[this.textArr.length-1];if(!(!Y||!it)){if(rt){var J=this._getTextWidth(Y.text+B)y?null:r.Path.getPointAtLengthOfDataArray(C,this.dataArray)}_readDataAttribute(){this.dataArray=r.Path.parsePathData(this.attrs.data),this.pathLength=this._getTextPathLength()}_sceneFunc(C){C.setAttr("font",this._getContextFont()),C.setAttr("textBaseline",this.textBaseline()),C.setAttr("textAlign","left"),C.save();var y=this.textDecoration(),h=this.fill(),w=this.fontSize(),E=this.glyphInfo;y==="underline"&&C.beginPath();for(var M=0;M=1){var h=y[0].p0;C.moveTo(h.x,h.y)}for(var w=0;wT+`.${g}`).join(" "),x="nodesRect",C=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],y={"top-left":-45,"top-center":0,"top-right":45,"middle-right":-90,"middle-left":90,"bottom-left":-135,"bottom-center":180,"bottom-right":135};const h="ontouchstart"in c.Konva._global;function w(T,D,A){if(T==="rotater")return A;D+=t.Util.degToRad(y[T]||0);var B=(t.Util.radToDeg(D)%360+360)%360;return t.Util._inRange(B,315+22.5,360)||t.Util._inRange(B,0,22.5)?"ns-resize":t.Util._inRange(B,45-22.5,45+22.5)?"nesw-resize":t.Util._inRange(B,90-22.5,90+22.5)?"ew-resize":t.Util._inRange(B,135-22.5,135+22.5)?"nwse-resize":t.Util._inRange(B,180-22.5,180+22.5)?"ns-resize":t.Util._inRange(B,225-22.5,225+22.5)?"nesw-resize":t.Util._inRange(B,270-22.5,270+22.5)?"ew-resize":t.Util._inRange(B,315-22.5,315+22.5)?"nwse-resize":(t.Util.error("Transformer has unknown angle for cursor detection: "+B),"pointer")}var E=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"];function M(T){return{x:T.x+T.width/2*Math.cos(T.rotation)+T.height/2*Math.sin(-T.rotation),y:T.y+T.height/2*Math.cos(T.rotation)+T.width/2*Math.sin(T.rotation)}}function b(T,D,A){const B=A.x+(T.x-A.x)*Math.cos(D)-(T.y-A.y)*Math.sin(D),Z=A.y+(T.x-A.x)*Math.sin(D)+(T.y-A.y)*Math.cos(D);return{...T,rotation:T.rotation+D,x:B,y:Z}}function m(T,D){const A=M(T);return b(T,D,A)}function _(T,D,A){let B=D;for(let Z=0;ZB.isAncestorOf(this)?(t.Util.error("Konva.Transformer cannot be an a child of the node you are trying to attach"),!1):!0);this._nodes=T=D,T.length===1&&this.useSingleNodeRotation()?this.rotation(T[0].getAbsoluteRotation()):this.rotation(0),this._nodes.forEach(B=>{const Z=()=>{this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),!this._transforming&&!this.isDragging()&&this.update()},S=B._attrsAffectingSize.map(I=>I+"Change."+this._getEventNamespace()).join(" ");B.on(S,Z),B.on(C.map(I=>I+`.${this._getEventNamespace()}`).join(" "),Z),B.on(`absoluteTransformChange.${this._getEventNamespace()}`,Z),this._proxyDrag(B)}),this._resetTransformCache();var A=!!this.findOne(".top-left");return A&&this.update(),this}_proxyDrag(T){let D;T.on(`dragstart.${this._getEventNamespace()}`,A=>{D=T.getAbsolutePosition(),!this.isDragging()&&T!==this.findOne(".back")&&this.startDrag(A,!1)}),T.on(`dragmove.${this._getEventNamespace()}`,A=>{if(!D)return;const B=T.getAbsolutePosition(),Z=B.x-D.x,S=B.y-D.y;this.nodes().forEach(I=>{if(I===T||I.isDragging())return;const N=I.getAbsolutePosition();I.setAbsolutePosition({x:N.x+Z,y:N.y+S}),I.startDrag(A)}),D=null})}getNodes(){return this._nodes||[]}getActiveAnchor(){return this._movingAnchorName}detach(){this._nodes&&this._nodes.forEach(T=>{T.off("."+this._getEventNamespace())}),this._nodes=[],this._resetTransformCache()}_resetTransformCache(){this._clearCache(x),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(x,this.__getNodeRect)}__getNodeShape(T,D=this.rotation(),A){var B=T.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),Z=T.getAbsoluteScale(A),S=T.getAbsolutePosition(A),I=B.x*Z.x-T.offsetX()*Z.x,N=B.y*Z.y-T.offsetY()*Z.y;const z=(c.Konva.getAngle(T.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),W={x:S.x+I*Math.cos(z)+N*Math.sin(-z),y:S.y+N*Math.cos(z)+I*Math.sin(z),width:B.width*Z.x,height:B.height*Z.y,rotation:z};return b(W,-c.Konva.getAngle(D),{x:0,y:0})}__getNodeRect(){var T=this.getNode();if(!T)return{x:-1e8,y:-1e8,width:0,height:0,rotation:0};const D=[];this.nodes().map(z=>{const W=z.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()});var Q=[{x:W.x,y:W.y},{x:W.x+W.width,y:W.y},{x:W.x+W.width,y:W.y+W.height},{x:W.x,y:W.y+W.height}],tt=z.getAbsoluteTransform();Q.forEach(function(at){var X=tt.point(at);D.push(X)})});const A=new t.Transform;A.rotate(-c.Konva.getAngle(this.rotation()));var B=1/0,Z=1/0,S=-1/0,I=-1/0;D.forEach(function(z){var W=A.point(z);B===void 0&&(B=S=W.x,Z=I=W.y),B=Math.min(B,W.x),Z=Math.min(Z,W.y),S=Math.max(S,W.x),I=Math.max(I,W.y)}),A.invert();const N=A.point({x:B,y:Z});return{x:N.x,y:N.y,width:S-B,height:I-Z,rotation:c.Konva.getAngle(this.rotation())}}getX(){return this._getNodeRect().x}getY(){return this._getNodeRect().y}getWidth(){return this._getNodeRect().width}getHeight(){return this._getNodeRect().height}_createElements(){this._createBack(),E.forEach(T=>{this._createAnchor(T)}),this._createAnchor("rotater")}_createAnchor(T){var D=new s.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:T+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:h?10:"auto"}),A=this;D.on("mousedown touchstart",function(B){A._handleMouseDown(B)}),D.on("dragstart",B=>{D.stopDrag(),B.cancelBubble=!0}),D.on("dragend",B=>{B.cancelBubble=!0}),D.on("mouseenter",()=>{var B=c.Konva.getAngle(this.rotation()),Z=this.rotateAnchorCursor(),S=w(T,B,Z);D.getStage().content&&(D.getStage().content.style.cursor=S),this._cursorChange=!0}),D.on("mouseout",()=>{D.getStage().content&&(D.getStage().content.style.cursor=""),this._cursorChange=!1}),this.add(D)}_createBack(){var T=new r.Shape({name:"back",width:0,height:0,draggable:!0,sceneFunc(D,A){var B=A.getParent(),Z=B.padding();D.beginPath(),D.rect(-Z,-Z,A.width()+Z*2,A.height()+Z*2),D.moveTo(A.width()/2,-Z),B.rotateEnabled()&&B.rotateLineVisible()&&D.lineTo(A.width()/2,-B.rotateAnchorOffset()*t.Util._sign(A.height())-Z),D.fillStrokeShape(A)},hitFunc:(D,A)=>{if(this.shouldOverdrawWholeArea()){var B=this.padding();D.beginPath(),D.rect(-B,-B,A.width()+B*2,A.height()+B*2),D.fillStrokeShape(A)}}});this.add(T),this._proxyDrag(T),T.on("dragstart",D=>{D.cancelBubble=!0}),T.on("dragmove",D=>{D.cancelBubble=!0}),T.on("dragend",D=>{D.cancelBubble=!0}),this.on("dragmove",D=>{this.update()})}_handleMouseDown(T){this._movingAnchorName=T.target.name().split(" ")[0];var D=this._getNodeRect(),A=D.width,B=D.height,Z=Math.sqrt(Math.pow(A,2)+Math.pow(B,2));this.sin=Math.abs(B/Z),this.cos=Math.abs(A/Z),typeof window<"u"&&(window.addEventListener("mousemove",this._handleMouseMove),window.addEventListener("touchmove",this._handleMouseMove),window.addEventListener("mouseup",this._handleMouseUp,!0),window.addEventListener("touchend",this._handleMouseUp,!0)),this._transforming=!0;var S=T.target.getAbsolutePosition(),I=T.target.getStage().getPointerPosition();this._anchorDragOffset={x:I.x-S.x,y:I.y-S.y},k++,this._fire("transformstart",{evt:T.evt,target:this.getNode()}),this._nodes.forEach(N=>{N._fire("transformstart",{evt:T.evt,target:N})})}_handleMouseMove(T){var D,A,B,Z=this.findOne("."+this._movingAnchorName),S=Z.getStage();S.setPointersPositions(T);const I=S.getPointerPosition();let N={x:I.x-this._anchorDragOffset.x,y:I.y-this._anchorDragOffset.y};const z=Z.getAbsolutePosition();this.anchorDragBoundFunc()&&(N=this.anchorDragBoundFunc()(z,N,T)),Z.setAbsolutePosition(N);const W=Z.getAbsolutePosition();if(!(z.x===W.x&&z.y===W.y)){if(this._movingAnchorName==="rotater"){var Q=this._getNodeRect();D=Z.x()-Q.width/2,A=-Z.y()+Q.height/2;let qt=Math.atan2(-A,D)+Math.PI/2;Q.height<0&&(qt-=Math.PI);var tt=c.Konva.getAngle(this.rotation());const Bt=tt+qt,ee=c.Konva.getAngle(this.rotationSnapTolerance()),Kt=_(this.rotationSnaps(),Bt,ee)-Q.rotation,Yt=m(Q,Kt);this._fitNodesInto(Yt,T);return}var at=this.shiftBehavior(),X;at==="inverted"?X=this.keepRatio()&&!T.shiftKey:at==="none"?X=this.keepRatio():X=this.keepRatio()||T.shiftKey;var it=this.centeredScaling()||T.altKey;if(this._movingAnchorName==="top-left"){if(X){var q=it?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-right").x(),y:this.findOne(".bottom-right").y()};B=Math.sqrt(Math.pow(q.x-Z.x(),2)+Math.pow(q.y-Z.y(),2));var rt=this.findOne(".top-left").x()>q.x?-1:1,ot=this.findOne(".top-left").y()>q.y?-1:1;D=B*this.cos*rt,A=B*this.sin*ot,this.findOne(".top-left").x(q.x-D),this.findOne(".top-left").y(q.y-A)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(Z.y());else if(this._movingAnchorName==="top-right"){if(X){var q=it?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};B=Math.sqrt(Math.pow(Z.x()-q.x,2)+Math.pow(q.y-Z.y(),2));var rt=this.findOne(".top-right").x()q.y?-1:1;D=B*this.cos*rt,A=B*this.sin*ot,this.findOne(".top-right").x(q.x+D),this.findOne(".top-right").y(q.y-A)}var ft=Z.position();this.findOne(".top-left").y(ft.y),this.findOne(".bottom-right").x(ft.x)}else if(this._movingAnchorName==="middle-left")this.findOne(".top-left").x(Z.x());else if(this._movingAnchorName==="middle-right")this.findOne(".bottom-right").x(Z.x());else if(this._movingAnchorName==="bottom-left"){if(X){var q=it?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};B=Math.sqrt(Math.pow(q.x-Z.x(),2)+Math.pow(Z.y()-q.y,2));var rt=q.x{var Z;B._fire("transformend",{evt:T,target:B}),(Z=B.getLayer())===null||Z===void 0||Z.batchDraw()}),this._movingAnchorName=null}}_fitNodesInto(T,D){var A=this._getNodeRect();const B=1;if(t.Util._inRange(T.width,-this.padding()*2-B,B)){this.update();return}if(t.Util._inRange(T.height,-this.padding()*2-B,B)){this.update();return}var Z=new t.Transform;if(Z.rotate(c.Konva.getAngle(this.rotation())),this._movingAnchorName&&T.width<0&&this._movingAnchorName.indexOf("left")>=0){const tt=Z.point({x:-this.padding()*2,y:0});T.x+=tt.x,T.y+=tt.y,T.width+=this.padding()*2,this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=tt.x,this._anchorDragOffset.y-=tt.y}else if(this._movingAnchorName&&T.width<0&&this._movingAnchorName.indexOf("right")>=0){const tt=Z.point({x:this.padding()*2,y:0});this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=tt.x,this._anchorDragOffset.y-=tt.y,T.width+=this.padding()*2}if(this._movingAnchorName&&T.height<0&&this._movingAnchorName.indexOf("top")>=0){const tt=Z.point({x:0,y:-this.padding()*2});T.x+=tt.x,T.y+=tt.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=tt.x,this._anchorDragOffset.y-=tt.y,T.height+=this.padding()*2}else if(this._movingAnchorName&&T.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const tt=Z.point({x:0,y:this.padding()*2});this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=tt.x,this._anchorDragOffset.y-=tt.y,T.height+=this.padding()*2}if(this.boundBoxFunc()){const tt=this.boundBoxFunc()(A,T);tt?T=tt:t.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const S=1e7,I=new t.Transform;I.translate(A.x,A.y),I.rotate(A.rotation),I.scale(A.width/S,A.height/S);const N=new t.Transform,z=T.width/S,W=T.height/S;this.flipEnabled()===!1?(N.translate(T.x,T.y),N.rotate(T.rotation),N.translate(T.width<0?T.width:0,T.height<0?T.height:0),N.scale(Math.abs(z),Math.abs(W))):(N.translate(T.x,T.y),N.rotate(T.rotation),N.scale(z,W));const Q=N.multiply(I.invert());this._nodes.forEach(tt=>{var at;const X=tt.getParent().getAbsoluteTransform(),q=tt.getTransform().copy();q.translate(tt.offsetX(),tt.offsetY());const rt=new t.Transform;rt.multiply(X.copy().invert()).multiply(Q).multiply(X).multiply(q);const ot=rt.decompose();tt.setAttrs(ot),(at=tt.getLayer())===null||at===void 0||at.batchDraw()}),this.rotation(t.Util._getRotation(T.rotation)),this._nodes.forEach(tt=>{this._fire("transform",{evt:D,target:tt}),tt._fire("transform",{evt:D,target:tt})}),this._resetTransformCache(),this.update(),this.getLayer().batchDraw()}forceUpdate(){this._resetTransformCache(),this.update()}_batchChangeChild(T,D){this.findOne(T).setAttrs(D)}update(){var T,D=this._getNodeRect();this.rotation(t.Util._getRotation(D.rotation));var A=D.width,B=D.height,Z=this.enabledAnchors(),S=this.resizeEnabled(),I=this.padding(),N=this.anchorSize();const z=this.find("._anchor");z.forEach(Q=>{Q.setAttrs({width:N,height:N,offsetX:N/2,offsetY:N/2,stroke:this.anchorStroke(),strokeWidth:this.anchorStrokeWidth(),fill:this.anchorFill(),cornerRadius:this.anchorCornerRadius()})}),this._batchChangeChild(".top-left",{x:0,y:0,offsetX:N/2+I,offsetY:N/2+I,visible:S&&Z.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:A/2,y:0,offsetY:N/2+I,visible:S&&Z.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:A,y:0,offsetX:N/2-I,offsetY:N/2+I,visible:S&&Z.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:B/2,offsetX:N/2+I,visible:S&&Z.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:A,y:B/2,offsetX:N/2-I,visible:S&&Z.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:B,offsetX:N/2+I,offsetY:N/2-I,visible:S&&Z.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:A/2,y:B,offsetY:N/2-I,visible:S&&Z.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:A,y:B,offsetX:N/2-I,offsetY:N/2-I,visible:S&&Z.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:A/2,y:-this.rotateAnchorOffset()*t.Util._sign(B)-I,visible:this.rotateEnabled()}),this._batchChangeChild(".back",{width:A,height:B,visible:this.borderEnabled(),stroke:this.borderStroke(),strokeWidth:this.borderStrokeWidth(),dash:this.borderDash(),x:0,y:0});const W=this.anchorStyleFunc();W&&z.forEach(Q=>{W(Q)}),(T=this.getLayer())===null||T===void 0||T.batchDraw()}isTransforming(){return this._transforming}stopTransform(){if(this._transforming){this._removeEvents();var T=this.findOne("."+this._movingAnchorName);T&&T.stopDrag()}}destroy(){return this.getStage()&&this._cursorChange&&this.getStage().content&&(this.getStage().content.style.cursor=""),o.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return n.Node.prototype.toObject.call(this)}clone(T){var D=n.Node.prototype.clone.call(this,T);return D}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}};A0.Transformer=R,R.isTransforming=()=>k>0;function G(T){return T instanceof Array||t.Util.warn("enabledAnchors value should be an array"),T instanceof Array&&T.forEach(function(D){E.indexOf(D)===-1&&t.Util.warn("Unknown anchor name: "+D+". Available names are: "+E.join(", "))}),T||[]}return R.prototype.className="Transformer",(0,f._registerNode)(R),e.Factory.addGetterSetter(R,"enabledAnchors",E,G),e.Factory.addGetterSetter(R,"flipEnabled",!0,(0,d.getBooleanValidator)()),e.Factory.addGetterSetter(R,"resizeEnabled",!0),e.Factory.addGetterSetter(R,"anchorSize",10,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"rotateEnabled",!0),e.Factory.addGetterSetter(R,"rotateLineVisible",!0),e.Factory.addGetterSetter(R,"rotationSnaps",[]),e.Factory.addGetterSetter(R,"rotateAnchorOffset",50,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"rotateAnchorCursor","crosshair"),e.Factory.addGetterSetter(R,"rotationSnapTolerance",5,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"borderEnabled",!0),e.Factory.addGetterSetter(R,"anchorStroke","rgb(0, 161, 255)"),e.Factory.addGetterSetter(R,"anchorStrokeWidth",1,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"anchorFill","white"),e.Factory.addGetterSetter(R,"anchorCornerRadius",0,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"borderStroke","rgb(0, 161, 255)"),e.Factory.addGetterSetter(R,"borderStrokeWidth",1,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"borderDash"),e.Factory.addGetterSetter(R,"keepRatio",!0),e.Factory.addGetterSetter(R,"shiftBehavior","default"),e.Factory.addGetterSetter(R,"centeredScaling",!1),e.Factory.addGetterSetter(R,"ignoreStroke",!1),e.Factory.addGetterSetter(R,"padding",0,(0,d.getNumberValidator)()),e.Factory.addGetterSetter(R,"node"),e.Factory.addGetterSetter(R,"nodes"),e.Factory.addGetterSetter(R,"boundBoxFunc"),e.Factory.addGetterSetter(R,"anchorDragBoundFunc"),e.Factory.addGetterSetter(R,"anchorStyleFunc"),e.Factory.addGetterSetter(R,"shouldOverdrawWholeArea",!1),e.Factory.addGetterSetter(R,"useSingleNodeRotation",!0),e.Factory.backCompat(R,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"}),A0}var I0={},T6;function XE(){if(T6)return I0;T6=1,Object.defineProperty(I0,"__esModule",{value:!0}),I0.Wedge=void 0;const t=ze(),e=Gr(),n=$e(),r=Ze(),s=$e();let o=class extends e.Shape{_sceneFunc(c){c.beginPath(),c.arc(0,0,this.radius(),0,n.Konva.getAngle(this.angle()),this.clockwise()),c.lineTo(0,0),c.closePath(),c.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(c){this.radius(c/2)}setHeight(c){this.radius(c/2)}};return I0.Wedge=o,o.prototype.className="Wedge",o.prototype._centroid=!0,o.prototype._attrsAffectingSize=["radius"],(0,s._registerNode)(o),t.Factory.addGetterSetter(o,"radius",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"angle",0,(0,r.getNumberValidator)()),t.Factory.addGetterSetter(o,"clockwise",!1),t.Factory.backCompat(o,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"}),I0}var N0={},A6;function qE(){if(A6)return N0;A6=1,Object.defineProperty(N0,"__esModule",{value:!0}),N0.Blur=void 0;const t=ze(),e=dr(),n=Ze();function r(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var s=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],o=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function c(f,g){var v=f.data,x=f.width,C=f.height,y,h,w,E,M,b,m,_,k,R,G,T,D,A,B,Z,S,I,N,z,W,Q,tt,at,X=g+g+1,q=x-1,rt=C-1,ot=g+1,ft=ot*(ot+1)/2,it=new r,Y=null,J=it,lt=null,dt=null,yt=s[g],gt=o[g];for(w=1;w>gt,tt!==0?(tt=255/tt,v[b]=(_*yt>>gt)*tt,v[b+1]=(k*yt>>gt)*tt,v[b+2]=(R*yt>>gt)*tt):v[b]=v[b+1]=v[b+2]=0,_-=T,k-=D,R-=A,G-=B,T-=lt.r,D-=lt.g,A-=lt.b,B-=lt.a,E=m+((E=y+g+1)>gt,tt>0?(tt=255/tt,v[E]=(_*yt>>gt)*tt,v[E+1]=(k*yt>>gt)*tt,v[E+2]=(R*yt>>gt)*tt):v[E]=v[E+1]=v[E+2]=0,_-=T,k-=D,R-=A,G-=B,T-=lt.r,D-=lt.g,A-=lt.b,B-=lt.a,E=y+((E=h+ot)0&&c(f,g)};return N0.Blur=d,t.Factory.addGetterSetter(e.Node,"blurRadius",0,(0,n.getNumberValidator)(),t.Factory.afterSetFilter),N0}var R0={},I6;function QE(){if(I6)return R0;I6=1,Object.defineProperty(R0,"__esModule",{value:!0}),R0.Brighten=void 0;const t=ze(),e=dr(),n=Ze(),r=function(s){var o=this.brightness()*255,c=s.data,d=c.length,f;for(f=0;f255?255:f,g=g<0?0:g>255?255:g,v=v<0?0:v>255?255:v,c[x]=f,c[x+1]=g,c[x+2]=v};return F0.Contrast=r,t.Factory.addGetterSetter(e.Node,"contrast",0,(0,n.getNumberValidator)(),t.Factory.afterSetFilter),F0}var D0={},R6;function tO(){if(R6)return D0;R6=1,Object.defineProperty(D0,"__esModule",{value:!0}),D0.Emboss=void 0;const t=ze(),e=dr(),n=rr(),r=Ze(),s=function(o){var c=this.embossStrength()*10,d=this.embossWhiteLevel()*255,f=this.embossDirection(),g=this.embossBlend(),v=0,x=0,C=o.data,y=o.width,h=o.height,w=y*4,E=h;switch(f){case"top-left":v=-1,x=-1;break;case"top":v=-1,x=0;break;case"top-right":v=-1,x=1;break;case"right":v=0,x=1;break;case"bottom-right":v=1,x=1;break;case"bottom":v=1,x=0;break;case"bottom-left":v=1,x=-1;break;case"left":v=0,x=-1;break;default:n.Util.error("Unknown emboss direction: "+f)}do{var M=(E-1)*w,b=v;E+b<1&&(b=0),E+b>h&&(b=0);var m=(E-1+b)*y*4,_=y;do{var k=M+(_-1)*4,R=x;_+R<1&&(R=0),_+R>y&&(R=0);var G=m+(_-1+R)*4,T=C[k]-C[G],D=C[k+1]-C[G+1],A=C[k+2]-C[G+2],B=T,Z=B>0?B:-B,S=D>0?D:-D,I=A>0?A:-A;if(S>Z&&(B=D),I>Z&&(B=A),B*=c,g){var N=C[k]+B,z=C[k+1]+B,W=C[k+2]+B;C[k]=N>255?255:N<0?0:N,C[k+1]=z>255?255:z<0?0:z,C[k+2]=W>255?255:W<0?0:W}else{var Q=d-B;Q<0?Q=0:Q>255&&(Q=255),C[k]=C[k+1]=C[k+2]=Q}}while(--_)}while(--E)};return D0.Emboss=s,t.Factory.addGetterSetter(e.Node,"embossStrength",.5,(0,r.getNumberValidator)(),t.Factory.afterSetFilter),t.Factory.addGetterSetter(e.Node,"embossWhiteLevel",.5,(0,r.getNumberValidator)(),t.Factory.afterSetFilter),t.Factory.addGetterSetter(e.Node,"embossDirection","top-left",null,t.Factory.afterSetFilter),t.Factory.addGetterSetter(e.Node,"embossBlend",!1,null,t.Factory.afterSetFilter),D0}var j0={},F6;function eO(){if(F6)return j0;F6=1,Object.defineProperty(j0,"__esModule",{value:!0}),j0.Enhance=void 0;const t=ze(),e=dr(),n=Ze();function r(o,c,d,f,g){var v=d-c,x=g-f,C;return v===0?f+x/2:x===0?f:(C=(o-c)/v,C=x*C+f,C)}const s=function(o){var c=o.data,d=c.length,f=c[0],g=f,v,x=c[1],C=x,y,h=c[2],w=h,E,M,b=this.enhance();if(b!==0){for(M=0;Mg&&(g=v),y=c[M+1],yC&&(C=y),E=c[M+2],Ew&&(w=E);g===f&&(g=255,f=0),C===x&&(C=255,x=0),w===h&&(w=255,h=0);var m,_,k,R,G,T,D,A,B;for(b>0?(_=g+b*(255-g),k=f-b*(f-0),G=C+b*(255-C),T=x-b*(x-0),A=w+b*(255-w),B=h-b*(h-0)):(m=(g+f)*.5,_=g+b*(g-m),k=f+b*(f-m),R=(C+x)*.5,G=C+b*(C-R),T=x+b*(x-R),D=(w+h)*.5,A=w+b*(w-D),B=h+b*(h-D)),M=0;MT?G:T;var D=y,A=C,B,Z,S=360/A*Math.PI/180,I,N;for(Z=0;ZA?D:A;var B=y,Z=C,S,I,N=0,z,W;for(M=0;Mf&&(B=A,Z=0,S=-1),x=0;x=0&&D=0&&A=0&&D=0&&A=1020?255:0}return b}function v(C,y,h){for(var w=[.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111],E=Math.round(Math.sqrt(w.length)),M=Math.floor(E/2),b=[],m=0;m=0&&D=0&&A=d))for(v=_;v=f||(x=(d*v+g)*4,C+=D[x+0],y+=D[x+1],h+=D[x+2],w+=D[x+3],T+=1);for(C=C/T,y=y/T,h=h/T,w=w/T,g=b;g=d))for(v=_;v=f||(x=(d*v+g)*4,D[x+0]=C,D[x+1]=y,D[x+2]=h,D[x+3]=w)}};return Y0.Pixelate=s,t.Factory.addGetterSetter(n.Node,"pixelSize",8,(0,r.getNumberValidator)(),t.Factory.afterSetFilter),Y0}var Z0={},V6;function uO(){if(V6)return Z0;V6=1,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.Posterize=void 0;const t=ze(),e=dr(),n=Ze(),r=function(s){var o=Math.round(this.levels()*254)+1,c=s.data,d=c.length,f=255/o,g;for(g=0;g255?255:s<0?0:Math.round(s)}),t.Factory.addGetterSetter(e.Node,"green",0,function(s){return this._filterUpToDate=!1,s>255?255:s<0?0:Math.round(s)}),t.Factory.addGetterSetter(e.Node,"blue",0,n.RGBComponent,t.Factory.afterSetFilter),K0}var $0={},Z6;function hO(){if(Z6)return $0;Z6=1,Object.defineProperty($0,"__esModule",{value:!0}),$0.RGBA=void 0;const t=ze(),e=dr(),n=Ze(),r=function(s){var o=s.data,c=o.length,d=this.red(),f=this.green(),g=this.blue(),v=this.alpha(),x,C;for(x=0;x255?255:s<0?0:Math.round(s)}),t.Factory.addGetterSetter(e.Node,"green",0,function(s){return this._filterUpToDate=!1,s>255?255:s<0?0:Math.round(s)}),t.Factory.addGetterSetter(e.Node,"blue",0,n.RGBComponent,t.Factory.afterSetFilter),t.Factory.addGetterSetter(e.Node,"alpha",1,function(s){return this._filterUpToDate=!1,s>1?1:s<0?0:s}),$0}var X0={},K6;function fO(){if(K6)return X0;K6=1,Object.defineProperty(X0,"__esModule",{value:!0}),X0.Sepia=void 0;const t=function(e){var n=e.data,r=n.length,s,o,c,d;for(s=0;s127&&(v=255-v),x>127&&(x=255-x),C>127&&(C=255-C),n[g]=v,n[g+1]=x,n[g+2]=C}while(--f)}while(--c)};return q0.Solarize=t,q0}var Q0={},X6;function gO(){if(X6)return Q0;X6=1,Object.defineProperty(Q0,"__esModule",{value:!0}),Q0.Threshold=void 0;const t=ze(),e=dr(),n=Ze(),r=function(s){var o=this.threshold()*255,c=s.data,d=c.length,f;for(f=0;f=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(d){throw d},f:s}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var d=n.next();return o=d.done,d},e:function(d){c=!0},f:function d(){try{o||n.return==null||n.return()}finally{if(c)throw d}}}}function xO(t,e){if(t){if(typeof t=="string")return J6(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?J6(t,e):void 0}}function J6(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);nn?-1:n,n=~~(255*n),[e[0]+n,e[1]+n,e[2]+n]}},contrast:function(t){return function(e){var n=t;n*=255;var r=259*(n+255)/(255*(259-n));return[r*(e[0]-128)+128,r*(e[1]-128)+128,r*(e[2]-128)+128]}},saturation:function(t){return function(e){var n=t;n=-1>n?-1:n;var r=e[0],s=e[1],o=e[2],c=.2989*r+.587*s+.114*o;return[-c*n+r*(1+n),-c*n+s*(1+n),-c*n+o*(1+n)]}},grayscale:function(){return function(t){var e=t[0],n=t[1],r=t[2];return[,,,].fill(.2126*e+.7152*n+.0722*r)}},sepia:function(t){return function(e){var n=e[0],r=e[1],s=e[2];return[n*(1-.607*t)+.769*r*t+.189*s*t,.349*n*t+r*(1-.314*t)+.168*s*t,.272*n*t+.534*r*t+s*(1-.869*t)]}},adjustRGB:function(t){return function(e){return[e[0]*t[0],e[1]*t[1],e[2]*t[2]]}},colorFilter:function(t){return function(e){var n=e[0],r=e[1],s=e[2],o=t[3];return[n-(n-t[0])*o,r-(r-t[1])*o,s-(s-t[2])*o]}}};function Cm(t){Nt.apply(t,function(e){var n=(e[0]+e[1]+e[2])/3>100,r=n?255:0;return[r,r,r]})}Cm.filterName="BlackAndWhite";var CO=.1,SO=.1,_O=.15;function Sm(t){Nt.apply(t,Nt.brightness(CO),Nt.contrast(SO),Nt.saturation(_O))}Sm.filterName="Clarendon";var EO=.04,OO=-.15;function _m(t){Nt.apply(t,Nt.sepia(EO),Nt.contrast(OO))}_m.filterName="Gingham";var kO=.1;function Em(t){Nt.apply(t,Nt.grayscale(),Nt.brightness(kO));var e=t.data;e.length}Em.filterName="Moon";var PO=.08,MO=[1,1.03,1.05],LO=.12;function Om(t){Nt.apply(t,Nt.brightness(PO),Nt.adjustRGB(MO),Nt.saturation(LO))}Om.filterName="Lark";var TO=.4,AO=.13,IO=-.05;function km(t){Nt.apply(t,Nt.sepia(TO),Nt.brightness(AO),Nt.contrast(IO))}km.filterName="Reyes";var NO=[1.01,1.04,1],RO=.3;function Pm(t){Nt.apply(t,Nt.adjustRGB(NO),Nt.saturation(RO))}Pm.filterName="Juno";var FO=.1,DO=-.5;function Mm(t){Nt.apply(t,Nt.brightness(FO),Nt.saturation(DO))}Mm.filterName="Slumber";var jO=[1.04,1,1.02],BO=-.05;function Lm(t){Nt.apply(t,Nt.adjustRGB(jO),Nt.saturation(BO))}Lm.filterName="Crema";var HO=.05,zO=-.03;function Tm(t){Nt.apply(t,Nt.brightness(HO),Nt.saturation(zO))}Tm.filterName="Ludwig";var GO=[228,130,225,.13],UO=-.2;function Am(t){Nt.apply(t,Nt.colorFilter(GO),Nt.saturation(UO))}Am.filterName="Aden";var WO=[1.05,1.1,1];function Im(t){Nt.apply(t,Nt.adjustRGB(WO))}Im.filterName="Perpetua";var VO=.3,YO=.15;function Nm(t){Nt.apply(t,Nt.saturation(VO),Nt.brightness(YO))}Nm.filterName="Amaro";var ZO=[230,115,108,.05],KO=.15;function Rm(t){Nt.apply(t,Nt.colorFilter(ZO),Nt.saturation(KO))}Rm.filterName="Mayfair";var $O=[255,170,0,.1],XO=.09,qO=.1;function Fm(t){Nt.apply(t,Nt.colorFilter($O),Nt.brightness(XO),Nt.saturation(qO))}Fm.filterName="Rise";var QO=[1,1,1.25],JO=.1,tk=.15;function Dm(t){Nt.apply(t,Nt.adjustRGB(QO),Nt.contrast(JO),Nt.brightness(tk))}Dm.filterName="Hudson";var ek=[255,225,80,.08],nk=.1,rk=.05;function jm(t){Nt.apply(t,Nt.colorFilter(ek),Nt.saturation(nk),Nt.contrast(rk))}jm.filterName="Valencia";var ak=[255,255,0,.07],ik=.2,ok=.15;function Bm(t){Nt.apply(t,Nt.colorFilter(ak),Nt.saturation(ik),Nt.contrast(ok))}Bm.filterName="XPro2";var sk=-.15,lk=.1;function Hm(t){Nt.apply(t,Nt.contrast(sk),Nt.saturation(lk))}Hm.filterName="Sierra";var ck=[100,28,210,.03],uk=.1;function zm(t){Nt.apply(t,Nt.grayscale(),Nt.colorFilter(ck),Nt.brightness(uk))}zm.filterName="Willow";var dk=.15,hk=.2;function Gm(t){Nt.apply(t,Nt.contrast(dk),Nt.saturation(hk))}Gm.filterName="LoFi";var fk=.1,pk=.15;function Um(t){Nt.apply(t,Nt.contrast(fk),Nt.saturation(pk))}Um.filterName="Hefe";var gk=[220,115,188,.12],mk=-.05;function Wm(t){Nt.apply(t,Nt.colorFilter(gk),Nt.contrast(mk))}Wm.filterName="Nashville";var vk=.1,yk=.3;function Vm(t){Nt.apply(t,Nt.brightness(vk),Nt.sepia(yk))}Vm.filterName="Stinson";var bk=[255,225,0,.05],wk=.06,xk=.06;function Ym(t){Nt.apply(t,Nt.colorFilter(bk),Nt.brightness(wk),Nt.contrast(xk))}Ym.filterName="Vesper";var Ck=[255,165,40,.2];function Zm(t){Nt.apply(t,Nt.colorFilter(Ck))}Zm.filterName="Earlybird";var Sk=.2,_k=[140,10,185,.1];function Km(t){Nt.apply(t,Nt.contrast(Sk),Nt.colorFilter(_k))}Km.filterName="Brannan";var Ek=-.1,Ok=-.1;function $m(t){Nt.apply(t,Nt.brightness(Ek),Nt.saturation(Ok))}$m.filterName="Sutro";var kk=.1,Pk=[255,145,0,.2];function Xm(t){Nt.apply(t,Nt.sepia(kk),Nt.colorFilter(Pk))}Xm.filterName="Toaster";var Mk=.1,Lk=[255,255,0,.2];function qm(t){Nt.apply(t,Nt.brightness(Mk),Nt.colorFilter(Lk))}qm.filterName="Walden";var Tk=[255,25,0,.15],Ak=.1;function Qm(t){Nt.apply(t,Nt.colorFilter(Tk),Nt.brightness(Ak))}Qm.filterName="NinteenSeventySeven";var Ik=[255,140,0,.1],Nk=[1.15,1.05,1],Rk=.35;function Jm(t){Nt.apply(t,Nt.colorFilter(Ik),Nt.adjustRGB(Nk),Nt.saturation(Rk))}Jm.filterName="Kelvin";var Fk=[225,240,0,.1],Dk=.25,jk=.05;function t3(t){Nt.apply(t,Nt.colorFilter(Fk),Nt.saturation(Dk),Nt.contrast(jk))}t3.filterName="Maven";var Bk=.06,Hk=.1;function e3(t){Nt.apply(t,Nt.sepia(Bk),Nt.brightness(Hk))}e3.filterName="Ginza";var zk=.35,Gk=.1;function n3(t){Nt.apply(t,Nt.saturation(zk),Nt.brightness(Gk))}n3.filterName="Skyline";var Uk=.15,Wk=.1;function r3(t){Nt.apply(t,Nt.contrast(Uk),Nt.brightness(Wk))}r3.filterName="Dogpatch";var Vk=[25,240,252,.05],Yk=.3;function a3(t){Nt.apply(t,Nt.colorFilter(Vk),Nt.sepia(Yk))}a3.filterName="Brooklyn";var Zk=[208,208,86,.2],Kk=.15;function i3(t){Nt.apply(t,Nt.colorFilter(Zk),Nt.contrast(Kk))}i3.filterName="Helena";var $k=[255,160,25,.1],Xk=.1;function o3(t){Nt.apply(t,Nt.colorFilter($k),Nt.brightness(Xk))}o3.filterName="Ashby";var qk=[255,50,80,.12],Qk=.05;function s3(t){Nt.apply(t,Nt.colorFilter(qk),Nt.contrast(Qk))}s3.filterName="Charmes";const Jk=Object.freeze(Object.defineProperty({__proto__:null,Aden:Am,Amaro:Nm,Ashby:o3,BlackAndWhite:Cm,Brannan:Km,Brooklyn:a3,Charmes:s3,Clarendon:Sm,Crema:Lm,Dogpatch:r3,Earlybird:Zm,Gingham:_m,Ginza:e3,Hefe:Um,Helena:i3,Hudson:Dm,Juno:Pm,Kelvin:Jm,Lark:Om,LoFi:Gm,Ludwig:Tm,Maven:t3,Mayfair:Rm,Moon:Em,Nashville:Wm,NinteenSeventySeven:Qm,Perpetua:Im,Reyes:km,Rise:Fm,Sierra:Hm,Skyline:n3,Slumber:Mm,Stinson:Vm,Sutro:$m,Toaster:Xm,Valencia:jm,Vesper:Ym,Walden:qm,Willow:zm,XPro2:Bm},Symbol.toStringTag,{value:"Module"}));var db=function(t){return t?Jk[t]||$n.Filters[t]:null},gp=ze(),hb=Ze();function l3(t){for(var e=this.warmth(),n=t.data,r=n.length,s=0;s=e?255:0,n[s+1]=n[s+1]>=e?255:0,n[s+2]=n[s+2]>=e?255:0)}fb.finetuneName="CustomThreshold",gp.Factory.addGetterSetter($n.Image,"threshold",0,hb.getNumberValidator,gp.Factory.afterSetFilter);const tP=Object.freeze(Object.defineProperty({__proto__:null,CustomThreshold:fb,Warmth:l3},Symbol.toStringTag,{value:"Module"}));var pb=function(t){return Array.isArray(t)&&0r.status)e(r.response);else{var s;console.warn("Error in sending translation key to backend ".concat((s=r.response)===null||s===void 0?void 0:s.hint,", ").concat(r.status)),n()}},r.onerror=function(){var s;console.warn("Error in sending translation key to backend ".concat((s=r.response)===null||s===void 0?void 0:s.hint,", ").concat(r.status)),n()},r.open("POST","https://neo.wordplex.io/api/import/request-translations?grid_uuid=".concat(Eg)),r.send(JSON.stringify({grid_uuid:Eg,translations_requests:t}))})},uP=function(){var t=0o.status){(o.response||[]).forEach(function(v){rp[s]=Pg(Pg({},rp[s]),{},V({},v.translation_key,v.translations[s]))});var c=[];Object.keys(kg).forEach(function(v){var x;v&&!((x=rp[s])!==null&&x!==void 0&&x[v])&&c.push({key:v,lang:s,default:kg[v]})}),0r,x=0>s;switch(e){case _t.RECT:n?(d.width=Math.sqrt(f*f+g*g),d.height=d.width,d.x-=v?d.width-f:0,d.y-=x?d.height-g:0):(d.width=f,d.height=g);break;case _t.ELLIPSE:n?(d.radiusX=Math.sqrt(f*f+g*g)/2,d.radiusY=d.radiusX,d.x-=v?2*d.radiusX-f:0,d.y-=x?2*d.radiusY-g:0):(d.radiusX=f/2,d.radiusY=g/2),d.offsetX=-d.radiusX,d.offsetY=-d.radiusY;break;case _t.POLYGON:d.radius=(f+g)/2,d.x-=v?2*d.radius-f:0,d.y-=x?2*d.radius-g:0,d.offsetX=-d.radius,d.offsetY=-d.radius;break;case _t.LINE:case _t.ARROW:d.x=o,d.y=c,d.points=[0,0],n?d.points.push(f>=g?r:0,g>f?s:0):d.points=[0,0,r,s];break;default:d.width=f,d.height=g}return d},bP=["id","x","y","points"],wP=["startedX","startedY","offsetX","offsetY","width","height"];function vy(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function Zu(t){for(var e,n=1;n=t1&&Oa.height>=t1||Oa.radiusX>=t1&&Oa.radiusY>=t1||(h=Oa.points)!==null&&h!==void 0&&h[2]||(w=Oa.points)!==null&&w!==void 0&&w[3]||Oa.radius>=t1)){var E=Oa;E.startedX,E.startedY,E.offsetX,E.offsetY;var M=E.width,b=E.height,m=Tt(E,wP);vP.includes(e.name)||(m.width=M,m.height=b),r(m,!0)}Ku=null,e1=null,Oa=null,t.setAttrs({isDrawing:!1}),t.off("mousemove touchmove",v),t.off("mouseleave touchcancel",x),document.removeEventListener("mouseup",C,Wa),document.removeEventListener("touchend",C,Wa),document.removeEventListener("mouseleave",C,Wa),document.removeEventListener("touchcancel",C,Wa),document.removeEventListener("mousemove",f,Wa),document.removeEventListener("touchmove",f,Wa),jo.isOutOfCanvas=!1},y=function(h){var w;if(h.evt.preventDefault(),!(h.target.attrs.draggable||1<((w=h.evt.touches)===null||w===void 0?void 0:w.length))){g();var E=ap(n,s());jo.startedX=E.offsetX,jo.startedY=E.offsetY,jo.isOutOfCanvas=!1,t.on("mousemove touchmove",v),t.on("mouseleave touchcancel",x),document.addEventListener("mouseup",C,Wa),document.addEventListener("touchend",C,Wa),document.addEventListener("mouseleave",C,Wa),document.addEventListener("touchcancel",C,Wa)}};return t.on("mousedown touchstart",y),function(){g(),t.off("mousedown touchstart",y)}},xb=function(t,e){var n=2=s?0:(function(){return 0>s&&-90=s&&-90<=s?0:(function(){return 90>>32-e},n1=function(t){var e,n,r="";for(e=7;0<=e;e--)n=15&t>>>4*e,r+=n.toString(16);return r},MP=function(t){for(var e,n=t.replace(/\r\n/g,` `),r="",s=0;se?r+=String.fromCharCode(e):127e?(r+=String.fromCharCode(192|e>>6),r+=String.fromCharCode(128|63&e)):(r+=String.fromCharCode(224|e>>12),r+=String.fromCharCode(128|63&e>>6),r+=String.fromCharCode(128|63&e));return r},LP=function(t){var e,n,r,s,o,c,d,f,g,v=t,x=Array(80),C=1732584193,y=4023233417,h=2562383102,w=271733878,E=3285377520;v=MP(v);var M=v.length,b=[];for(n=0;n>>29),b.push(4294967295&M<<3),e=0;en;n++)x[n]=b[e+n];for(n=16;79>=n;n++)x[n]=xs(x[n-3]^x[n-8]^x[n-14]^x[n-16],1);for(s=C,o=y,c=h,d=w,f=E,n=0;19>=n;n++)g=4294967295&xs(s,5)+(o&c|~o&d)+f+x[n]+1518500249,f=d,d=c,c=xs(o,30),o=s,s=g;for(n=20;39>=n;n++)g=4294967295&xs(s,5)+(o^c^d)+f+x[n]+1859775393,f=d,d=c,c=xs(o,30),o=s,s=g;for(n=40;59>=n;n++)g=4294967295&xs(s,5)+(o&c|o&d|c&d)+f+x[n]+2400959708,f=d,d=c,c=xs(o,30),o=s,s=g;for(n=60;79>=n;n++)g=4294967295&xs(s,5)+(o^c^d)+f+x[n]+3395469782,f=d,d=c,c=xs(o,30),o=s,s=g;C=4294967295&C+s,y=4294967295&y+o,h=4294967295&h+c,w=4294967295&w+d,E=4294967295&E+f}return g=n1(C)+n1(y)+n1(h)+n1(w)+n1(E),g.toLowerCase()},TP=function(t){return btoa(t).replace(/=*$/g,"")},AP=function(t,e){return LP(t).slice(0,e)},IP=function(t,e,n,r){var s=TP(t),o=AP(e+s+n,r);return[o?"ci_seal=".concat(o):"",s?"ci_eqs=".concat(s):""].filter(function(c){return c}).join("&")},NP=function(t,e,n){var r=e||{},s=r.salt,o=r.charCount,c=r.includeParams,d=c===void 0?[]:c,f=!d||d?.length===0,g="",v="",x=[],C=[];return t.split("&").forEach(function(y){var h=y.split("="),w=Xt(h,1),E=w[0];-1 svg:not([color]){color:",'}:disabled,[aria-disabled="true"]{cursor:not-allowed;}&::-webkit-scrollbar{width:4px;height:4px;}&::-webkit-scrollbar-track{background:rgba(203,211,218,0.35);}&::-webkit-scrollbar-thumb{background:rgba(203,211,218,1);border-radius:10px;}}'],pp,pp,function(t){var e=t.theme;return e.palette["icons-primary"]}),Px=function(t){var e=t.source,n=t.useCloudimage,r=t.cloudimage;if(!e||typeof e!="string"&&!(e instanceof HTMLImageElement))throw new Error("`source` property is required either a string of image url or a HTMLImageElement for the image that will be edited.");if(n){var s,o;if(r!=null&&(s=r.imageSealing)!==null&&s!==void 0&&s.enable&&!(r!=null&&(o=r.imageSealing)!==null&&o!==void 0&&o.salt))throw new Error("`salt` property of imageSealing object is required in cloudimage mode as long as `imageSealing` is enabled.")}ct.useEffect(function(){JH()},[]);var c=T1(ab,t);return L.createElement(L.StrictMode,null,L.createElement(L9,{theme:c.theme},L.createElement(tz,null),L.createElement(ez,null),L.createElement(yb,{config:c},L.createElement(QH,null))))};Px.defaultProps={useCloudimage:!1,cloudimage:{}};const nz=ct.memo(Px);function a9(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(t,s).enumerable})),n.push.apply(n,r)}return n}function i9(t){for(var e,n=1;narguments.length?e:n;throw new TypeError("Private element is not present on this object")}var nd=new WeakMap,Kf=new WeakMap,$f=new WeakMap,Xf=(function(){function t(e){var n=1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import{typeOf as e,isElement as t,isValidElementType as n}from\"react-is\";import r,{useState as o,useContext as s,useMemo as i,useEffect as a,useRef as c,createElement as u,useLayoutEffect as l}from\"react\";import d from\"shallowequal\";import h from\"@emotion/stylis\";import p from\"@emotion/unitless\";import f from\"@emotion/is-prop-valid\";import m from\"hoist-non-react-statics\";function y(){return(y=Object.assign||function(e){for(var t=1;t ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document ``\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"}:{};function R(){for(var e=arguments.length<=0?void 0:arguments[0],t=[],n=1,r=arguments.length;n1?t-1:0),r=1;r0?\" Args: \"+n.join(\", \"):\"\")):new Error(R.apply(void 0,[O[e]].concat(n)).trim())}var j=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&D(16,\"\"+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var s=r;s=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,s=r;s1<<30)&&D(16,\"\"+t),T.set(e,t),x.set(t,e),t},B=function(e){return x.get(e)},z=function(e,t){t>=k&&(k=t+1),T.set(e,t),x.set(t,e)},M=\"style[\"+N+'][data-styled-version=\"5.3.11\"]',G=new RegExp(\"^\"+N+'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),L=function(e,t,n){for(var r,o=n.split(\",\"),s=0,i=o.length;s=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(N))return r}}(n),s=void 0!==o?o.nextSibling:null;r.setAttribute(N,\"active\"),r.setAttribute(\"data-styled-version\",\"5.3.11\");var i=Y();return i&&r.setAttribute(\"nonce\",i),n.insertBefore(r,s),r},H=function(){function e(e){var t=this.element=q(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e0&&(u+=e+\",\")})),r+=\"\"+a+c+'{content:\"'+u+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),Z=/(a)(d)/gi,K=function(e){return String.fromCharCode(e+(e>25?39:97))};function Q(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=K(t%52)+n;return(K(t%52)+n).replace(Z,\"$1-$2\")}var ee=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},te=function(e){return ee(5381,e)};function ne(e){for(var t=0;t>>0);if(!t.hasNameForId(r,i)){var a=n(s,\".\"+i,void 0,r);t.insertRules(r,i,a)}o.push(i),this.staticRulesId=i}else{for(var c=this.rules.length,u=ee(this.baseHash,n.hash),l=\"\",d=0;d>>0);if(!t.hasNameForId(r,m)){var y=n(l,\".\"+m,void 0,r);t.insertRules(r,m,y)}o.push(m)}}return o.join(\" \")},e}(),se=/^\\s*\\/\\/.*$/gm,ie=[\":\",\"[\",\".\",\"#\"];function ae(e){var t,n,r,o,s=void 0===e?w:e,i=s.options,a=void 0===i?w:i,c=s.plugins,u=void 0===c?S:c,l=new h(a),d=[],p=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,o,s,i,a,c,u,l,d){switch(n){case 1:if(0===l&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===u)return r+\"/*|*/\";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),\"\";default:return r+(0===d?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){d.push(e)})),f=function(e,r,s){return 0===r&&-1!==ie.indexOf(s[n.length])||s.match(o)?e:\".\"+t};function m(e,s,i,a){void 0===a&&(a=\"&\");var c=e.replace(se,\"\"),u=s&&i?i+\" \"+s+\" { \"+c+\" }\":c;return t=a,n=s,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),o=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),l(i||!s?\"\":s,u)}return l.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,f))},p,function(e){if(-2===e){var t=d;return d=[],t}}])),m.hash=u.length?u.reduce((function(e,t){return t.name||D(15),ee(e,t.name)}),5381).toString():\"\",m}var ce=r.createContext(),ue=ce.Consumer,le=r.createContext(),de=(le.Consumer,new X),he=ae();function pe(){return s(ce)||de}function fe(){return s(le)||he}function me(e){var t=o(e.stylisPlugins),n=t[0],s=t[1],c=pe(),u=i((function(){var t=c;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),l=i((function(){return ae({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return a((function(){d(n,e.stylisPlugins)||s(e.stylisPlugins)}),[e.stylisPlugins]),r.createElement(ce.Provider,{value:u},r.createElement(le.Provider,{value:l},\"production\"!==process.env.NODE_ENV?r.Children.only(e.children):e.children))}var ye=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=he);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return D(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=he),this.name+e.hash},e}(),ve=/([A-Z])/,ge=/([A-Z])/g,Se=/^ms-/,we=function(e){return\"-\"+e.toLowerCase()};function Ee(e){return ve.test(e)?e.replace(ge,we).replace(Se,\"-ms-\"):e}var be=function(e){return null==e||!1===e||\"\"===e};function _e(e,n,r,o){if(Array.isArray(e)){for(var s,i=[],a=0,c=e.length;a1?t-1:0),r=1;r1?t-1:0),i=1;i?@[\\\\\\]^`{|}~-]+/g,De=/(^-|-$)/g;function je(e){return e.replace(Re,\"-\").replace(De,\"\")}var Te=function(e){return Q(te(e)>>>0)};function xe(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var ke=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Ve=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function Be(e,t,n){var r=e[n];ke(t)&&ke(r)?ze(r,t):e[n]=t}function ze(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(t,[\"componentId\"]),s=r&&r+\"-\"+(xe(e)?e:je(b(e)));return Ye(e,y({},o,{attrs:g,componentId:s}),n)},Object.defineProperty(A,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=o?ze({},e.defaultProps,t):t}}),\"production\"!==process.env.NODE_ENV&&(Pe(p,v),A.warnTooManyClasses=function(e,t){var n={},r=!1;return function(o){if(!r&&(n[o]=!0,Object.keys(n).length>=200)){var s=t?' with the id of \"'+t+'\"':\"\";console.warn(\"Over 200 classes were generated for component \"+e+s+\".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n \"),r=!0,n={}}}}(p,v)),Object.defineProperty(A,\"toString\",{value:function(){return\".\"+A.styledComponentId}}),i&&m(A,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),A}var qe=function(e){return function e(t,r,o){if(void 0===o&&(o=w),!n(r))return D(1,String(r));var s=function(){return t(r,o,Ae.apply(void 0,arguments))};return s.withConfig=function(n){return e(t,r,y({},o,{},n))},s.attrs=function(n){return e(t,r,y({},o,{attrs:Array.prototype.concat(o.attrs,n).filter(Boolean)}))},s}(Ye,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"textPath\",\"tspan\"].forEach((function(e){qe[e]=qe(e)}));var He=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=ne(e),X.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var o=r(_e(this.rules,t,n,r).join(\"\"),\"\"),s=this.componentId+e;n.insertRules(s,s,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&X.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function $e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"),t.server&&h(d,e,t,o,n),l((function(){if(!t.server)return h(d,e,t,o,n),function(){return u.removeStyles(d,t)}}),[d,e,t,o,n]),null}function h(e,t,n,r,o){if(u.isStatic)u.renderStyles(e,P,n,o);else{var s=y({},t,{theme:Oe(t,r,d.defaultProps)});u.renderStyles(e,s,n,o)}}return\"production\"!==process.env.NODE_ENV&&Pe(a),r.memo(d)}function We(e){\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\"+t+\"\"},this.getStyleTags=function(){return e.sealed?D(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return D(2);var n=((t={})[N]=\"\",t[\"data-styled-version\"]=\"5.3.11\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),o=Y();return o&&(n.nonce=o),[r.createElement(\"style\",y({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new X({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?D(2):r.createElement(me,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return D(3)},e}(),Je=function(e){var t=r.forwardRef((function(t,n){var o=s(Me),i=e.defaultProps,a=Oe(t,o,i);return\"production\"!==process.env.NODE_ENV&&void 0===a&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"'+b(e)+'\"'),r.createElement(e,y({},t,{theme:a,ref:n}))}));return m(t,e),t.displayName=\"WithTheme(\"+b(e)+\")\",t},Xe=function(){return s(Me)},Ze={StyleSheet:X,masterSheet:de};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"),\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[\"__styled-components-init__\"]=window[\"__styled-components-init__\"]||0,1===window[\"__styled-components-init__\"]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"),window[\"__styled-components-init__\"]+=1);export default qe;export{Ue as ServerStyleSheet,ue as StyleSheetConsumer,ce as StyleSheetContext,me as StyleSheetManager,Ge as ThemeConsumer,Me as ThemeContext,Le as ThemeProvider,Ze as __PRIVATE__,$e as createGlobalStyle,Ae as css,_ as isStyledComponent,We as keyframes,Xe as useTheme,A as version,Je as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var record = function record(keys, valueType) {\n return keys.reduce(function (toObject, key) {\n return Object.assign(toObject, _defineProperty({}, key, valueType));\n }, {});\n};","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nexport function generateClassNames(componentName, subClassNames) {\n var generateClassName = function generateClassName(subClassName) {\n return \"Sfx\".concat(componentName).concat(subClassName ? \"-\".concat(subClassName) : '');\n };\n var classNameArray = [];\n if (subClassNames) {\n if (Array.isArray(subClassNames)) {\n classNameArray.push.apply(classNameArray, _toConsumableArray(subClassNames.filter(function (subClassName) {\n return typeof subClassName === 'string';\n }).map(function (subClassName) {\n return generateClassName(subClassName);\n })));\n } else if (typeof subClassNames === 'string') {\n classNameArray.push(generateClassName(subClassNames));\n }\n }\n if (classNameArray.length === 0) {\n classNameArray.push(generateClassName());\n }\n return classNameArray.join(' ');\n}","import { forwardRef } from 'react';\n/**\r\n * Wrapper around React's `forwardRef` function, which adds a `displayName` to each component\r\n * created using it\r\n */\nexport function intrinsicComponent(render, displayName) {\n var component = /*#__PURE__*/forwardRef(render);\n // eslint-disable-next-line immutable/no-mutation\n component.displayName = displayName || render.name;\n return component;\n}","/**\r\n * Type-safe Object.keys\r\n */\nexport function objectKeys(object) {\n return Object.keys(object);\n}","/**\r\n * Type-safe Object.values\r\n */\nexport function objectValues(object) {\n return Object.values(object);\n}","/**\r\n * If your prop can be either a function or a plain value, this function handles\r\n * its usage for you – just provide the reference for a 'maybe function' and the arguments\r\n * to call it with\r\n */\nexport function applyPolymorphicFunctionProp(prop) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return typeof prop === 'function' ? prop.apply(void 0, args) : prop;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n/**\r\n * If you are using a namespace for your styled components, this can come in handy giving each\r\n * styled component in this namespace a displayName which gives better debugging experience\r\n */\nexport function applyDisplayNames(styledObject) {\n return Object.keys(styledObject).reduce(function (newStyledObject, styledComponentName) {\n var styledComponent = styledObject[styledComponentName];\n styledComponent.displayName = \"\".concat(styledComponentName);\n return Object.assign(newStyledObject, _defineProperty({}, styledComponentName, styledComponent));\n }, {});\n}","/**\r\n * passes {value} to {ref}\r\n * Useful if you want to expose the ref of an inner component to the public API\r\n * while still using it inside the component.\r\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\r\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import * as React from 'react';\nimport setRef from './set-ref';\nexport function useForkRef(refA, refB) {\n /**\r\n * This will create a new function if the ref props change and are defined.\r\n * This means react will call the old forkRef with `null` and the new forkRef\r\n * with the ref. Cleanup naturally emerges from this behavior.\r\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","export function restrictNumber(number) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 ? arguments[2] : undefined;\n // we are not assigning default value for it as if max was null it will override the default value.\n var currentMax = max || 1000000;\n var convertedNumber = +number;\n return Math.min(Math.max(min, convertedNumber), currentMax);\n}","export function mapNumber(number, oldMin, oldMax, newMin, newMax) {\n return (number - oldMin) * (newMax - newMin) / (oldMax - oldMin) + newMin;\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nexport var rgbStringToArray = function rgbStringToArray(rgbColorString) {\n return rgbColorString.replaceAll(/[^\\d,]/gi, '').split(',').map(function (n) {\n return +n;\n });\n};\nexport var hexToRgb = function hexToRgb(hexColor) {\n // if (!hexColor) return { r: 0, g: 0, b: 0 };\n if (!hexColor) return [0, 0, 0];\n return [Number.parseInt(hexColor.slice(1, 3), 16), Number.parseInt(hexColor.slice(3, 5), 16), Number.parseInt(hexColor.slice(5, 7), 16)];\n};\nvar rgbChannelToHex = function rgbChannelToHex(channel) {\n return channel.toString(16).padStart(2, '0');\n};\nexport var rgbToHex = function rgbToHex() {\n for (var _len = arguments.length, rgbColor = new Array(_len), _key = 0; _key < _len; _key++) {\n rgbColor[_key] = arguments[_key];\n }\n return \"#\".concat(rgbColor.map(rgbChannelToHex).join(''));\n};\nexport var hslToHex = function hslToHex(h, s, l) {\n var dividedL = l / 100;\n var a = s * Math.min(dividedL, 1 - dividedL) / 100;\n var f = function f(n) {\n var k = (n + h / 30) % 12;\n var color = dividedL - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return rgbChannelToHex(Math.round(255 * color));\n };\n return \"#\".concat(f(0)).concat(f(8)).concat(f(4));\n};\nexport var rgbToHsl = function rgbToHsl() {\n for (var _len2 = arguments.length, rgbColor = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rgbColor[_key2] = arguments[_key2];\n }\n var r = rgbColor[0],\n g = rgbColor[1],\n b = rgbColor[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = 0;\n s = 0;\n } else {\n var diff = max - min;\n s = l > 0.5 ? diff / (2 - max - min) : diff / (max + min);\n switch (max) {\n case r:\n h = (g - b) / diff + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / diff + 2;\n break;\n case b:\n h = (r - g) / diff + 4;\n break;\n default:\n h = 0;\n }\n h /= 6;\n }\n\n // * 360 for having the hue in degrees\n return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)];\n};\nexport var colorToHsl = function colorToHsl(color) {\n if (color.startsWith('#')) {\n var hex = color;\n if (color.length === 4) {\n hex = \"#\".concat(color[1]).concat(color[1]).concat(color[2]).concat(color[2]).concat(color[3]).concat(color[3]);\n }\n return rgbToHsl.apply(void 0, _toConsumableArray(hexToRgb(hex)));\n }\n if (color.startsWith('rgb')) {\n var colorInRgb = rgbStringToArray(color);\n return rgbToHsl.apply(void 0, _toConsumableArray(colorInRgb));\n }\n\n // if the color is in text and no one from previous then return the default color which is black\n if (typeof color === 'string') {\n return [0, 0, 0];\n }\n return color;\n};\nexport var colorToRgb = function colorToRgb(color) {\n // we are not handling (hsl/color name) here cause we are accepting only HEX and RGB colors as default colors from user.\n if (color.startsWith('#')) {\n return hexToRgb(color);\n }\n if (color.startsWith('rgb')) {\n return rgbStringToArray(color);\n }\n if (typeof color === 'string') {\n return [0, 0, 0];\n }\n return color;\n};\nexport var colorToHex = function colorToHex(color) {\n if (color.startsWith('#')) {\n if (color.length === 7) {\n return color;\n }\n return \"#\".concat(color[0]).concat(color[0]).concat(color[1]).concat(color[1]).concat(color[2]).concat(color[2]);\n }\n if (color.startsWith('rgb')) {\n return rgbToHex.apply(void 0, _toConsumableArray(rgbStringToArray(color)));\n }\n if (typeof color === 'string') {\n return '#000000';\n }\n return color;\n};\nvar checkIsBlack = function checkIsBlack(s, l) {\n return l === 0 && (s === 0 || s === 1);\n};\nvar checkIsWhite = function checkIsWhite(s, l) {\n return s === 0 && l === 1;\n};\n\n// both hsv and hsl values are in [0, 1] except h is in [0, 360]\nexport var hsvToHsl = function hsvToHsl(h, s, v) {\n var newS = s;\n var l = (2 - s) * v / 2;\n if (l !== 0) {\n if (l === 1) {\n newS = 0;\n } else if (l < 0.5) {\n newS = newS * v / (l * 2);\n } else {\n newS = newS * v / (2 - l * 2);\n }\n }\n var isBlack = checkIsBlack(newS, l);\n return [isBlack || checkIsWhite(newS, l) ? 0 : h, isBlack ? 0 : Math.round(newS * 100), Math.round(l * 100)];\n};\n\n// both hsv and hsl values are in [0, 1] except h is in [0, 360]\nexport var hslToHsv = function hslToHsv(h, s, l) {\n var newS = s;\n var newL = l * 2;\n newS *= newL <= 1 ? newL : 2 - newL;\n var v = (newL + newS) / 2;\n newS = 2 * newS / (newL + newS);\n\n // return [h, newS, v];\n var isBlack = checkIsBlack(newS, l);\n return [isBlack || checkIsWhite(newS, l) ? 0 : h, isBlack ? 0 : Math.round(newS * 100), Math.round(v * 100)];\n};\n\n// TODO: validating 3 color code for Hex\n// /^#([\\da-f]{3}){1,2}$/i.test(color)colorToHex\nexport var validateHex = function validateHex(color) {\n return /^#[\\da-f]{6}$/i.test(color);\n};","export function getElemDocumentCoords(elem) {\n if (!elem) {\n return null;\n }\n var box = elem.getBoundingClientRect();\n var _document = document,\n body = _document.body;\n var docEl = document.documentElement;\n var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return {\n top: Math.round(top),\n left: Math.round(left),\n width: box.width,\n height: box.height\n };\n}","export function asc(a, b) {\n return a - b;\n}\nexport function valueToPercent(value, min, max) {\n return (value - min) * 100 / (max - min);\n}\nexport function percentToValue(percent, min, max) {\n return (max - min) * percent + min;\n}\nfunction getDecimalPrecision(num) {\n // This handles the case when num is very small (0.00000001), js will turn this into 1e-8.\n // When num is bigger than 1 or less than -1 it won't get converted to this notation so it's fine.\n if (Math.abs(num) < 1) {\n var parts = num.toExponential().split('e-');\n var matissaDecimalPart = parts[0].split('.')[1];\n return (matissaDecimalPart ? matissaDecimalPart.length : 0) + Number.parseInt(parts[1], 10);\n }\n var decimalPart = num.toString().split('.')[1];\n return decimalPart ? decimalPart.length : 0;\n}\nexport function roundValueToStep(value, step, min) {\n var nearest = Math.round((value - min) / step) * step + min;\n return Number(nearest.toFixed(getDecimalPrecision(step)));\n}\nexport function setValueIndex(_ref) {\n var values = _ref.values,\n newValue = _ref.newValue,\n index = _ref.index;\n var output = values.slice();\n output[index] = newValue;\n return output.sort(asc);\n}\nexport function findClosest(values, currentValue) {\n var _values$reduce = values.reduce(function (acc, value, index) {\n var distance = Math.abs(currentValue - value);\n if (acc === null || distance < acc.distance || distance === acc.distance) {\n return {\n distance: distance,\n index: index\n };\n }\n return acc;\n }, null),\n closestIndex = _values$reduce.index;\n return closestIndex;\n}\nexport function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\nexport function clamp(value, min, max) {\n if (value == null) {\n return min;\n }\n return Math.min(Math.max(min, value), max);\n}\nexport function trackFinger(event, touchId) {\n if (touchId.current !== undefined && event.changedTouches) {\n for (var i = 0; i < event.changedTouches.length; i += 1) {\n var touch = event.changedTouches[i];\n if (touch.identifier === touchId.current) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n return false;\n }\n return {\n x: event.clientX,\n y: event.clientY\n };\n}\nexport var axisProps = {\n horizontal: {\n offset: function offset(percent) {\n return {\n left: \"\".concat(percent, \"%\")\n };\n },\n leap: function leap(percent) {\n return {\n width: \"\".concat(percent, \"%\")\n };\n }\n },\n 'horizontal-reverse': {\n offset: function offset(percent) {\n return {\n right: \"\".concat(percent, \"%\")\n };\n },\n leap: function leap(percent) {\n return {\n width: \"\".concat(percent, \"%\")\n };\n }\n },\n vertical: {\n offset: function offset(percent) {\n return {\n bottom: \"\".concat(percent, \"%\")\n };\n },\n leap: function leap(percent) {\n return {\n height: \"\".concat(percent, \"%\")\n };\n }\n }\n};\nexport function focusThumb(_ref2) {\n var sliderRef = _ref2.sliderRef,\n activeIndex = _ref2.activeIndex,\n setActive = _ref2.setActive;\n var doc = ownerDocument(sliderRef.current);\n if (!sliderRef.current.contains(doc.activeElement) || Number(doc.activeElement.getAttribute('data-index')) !== activeIndex) {\n var _sliderRef$current$qu;\n (_sliderRef$current$qu = sliderRef.current.querySelector(\"[type=\\\"range\\\"][data-index=\\\"\".concat(activeIndex, \"\\\"]\"))) === null || _sliderRef$current$qu === void 0 || _sliderRef$current$qu.focus();\n }\n if (setActive) {\n setActive(activeIndex);\n }\n}","export var Color = {\n TextPrimary: 'txt-primary',\n TextSecondary: 'txt-secondary',\n TextSecondaryInvert: 'txt-secondary-invert',\n TextPlaceholder: 'txt-placeholder',\n TextWarning: 'txt-warning',\n TextError: 'txt-error',\n TextInfo: 'txt-info',\n AccentPrimary: 'accent-primary',\n AccentPrimaryHover: 'accent-primary-hover',\n AccentPrimaryActive: 'accent-primary-active',\n AccentPrimaryDisabled: 'accent-primary-disabled',\n AccentSecondaryDisabled: 'accent-secondary-disabled',\n AccentStateless: 'accent-stateless',\n AccentStateless_0_4_Opacity: 'accent-stateless_0_4_opacity',\n Accent_0_5_Opacity: 'accent_0_5_opacity',\n Accent_1_2_Opacity: 'accent_1_2_opacity',\n Accent_1_8_Opacity: 'accent_1_8_opacity',\n Accent_2_8_Opacity: 'accent_2_8_opacity',\n Accent_4_0_Opacity: 'accent_4_0_opacity',\n BackgroundGrey: 'bg-grey',\n BackgroundStateless: 'bg-stateless',\n BackgroundActive: 'bg-active',\n BackgroundBaseLight: 'bg-base-light',\n BackgroundBaseMedium: 'bg-base-medium',\n BackgroundPrimary: 'bg-primary',\n BackgroundPrimaryLight: 'bg-primary-light',\n BackgroundPrimaryHover: 'bg-primary-hover',\n BackgroundPrimaryActive: 'bg-primary-active',\n BackgroundPrimaryStateless: 'bg-primary-stateless',\n BackgroundPrimary_0_5_Opacity: 'bg-primary-0-5-opacity',\n BackgroundSecondary: 'bg-secondary',\n BackgroundHover: 'bg-hover',\n BackgroundGreen: 'bg-green',\n BackgroundGreenMedium: 'bg-green-medium',\n BackgroundBlue: 'bg-blue',\n BackgroundRed: 'bg-red',\n BackgroundRedLight: 'bg-red-light',\n BackgroundRedMedium: 'background-red-medium',\n BackgroundOrange: 'bg-orange',\n BackgroundTooltip: 'bg-tooltip',\n IconsPrimary: 'icon-primary',\n IconsPrimaryOpacity_0_6: 'icons-primary-opacity-0-6',\n IconsSecondary: 'icons-secondary',\n IconsPlaceholder: 'icons-placeholder',\n IconsInvert: 'icons-invert',\n IconsMuted: 'icons-muted',\n IconsPrimaryHover: 'icons-primary-hover',\n IconsSecondaryHover: 'icons-secondary-hover',\n ButtonPrimaryText: 'btn-primary-text',\n ButtonPrimaryText_0_6: 'btn-primary-text-0-6',\n ButtonPrimaryText_0_4: 'btn-primary-text-0-4',\n ButtonDisabledText: 'btn-disabled-text',\n ButtonSecondaryText: 'btn-secondary-text',\n LinkPrimary: 'link-primary',\n LinkStateless: 'link-stateless',\n LinkHover: 'link-hover',\n LinkActive: 'link-active',\n LinkMuted: 'link-muted',\n LinkPressed: 'link-pressed',\n BordersPrimary: 'borders-primary',\n BordersPrimaryHover: 'borders-primary-hover',\n BordersSecondary: 'borders-secondary',\n BordersStrong: 'borders-strong',\n BordersInvert: 'borders-invert',\n BorderHoverBottom: 'border-hover-bottom',\n BorderActiveBottom: 'border-active-bottom',\n BorderPrimaryStateless: 'border-primary-stateless',\n BordersDisabled: 'borders-disabled',\n BordersButton: 'borders-button',\n BordersItem: 'borders-item',\n BordersBaseLight: 'borders-base-light',\n BordersBaseMedium: 'borders-base-medium',\n BordersGreen: 'borders-green',\n BordersGreenMedium: 'borders-green-medium',\n BordersRed: 'borders-red',\n ActiveSecondary: 'active-secondary',\n ActiveSecondaryHover: 'active-secondary-hover',\n Tag: 'tag',\n StatesErrorDisabledText: 'states-error-disabled-text',\n Error: 'error',\n Error_0_28_Opacity: 'error-0-28-opacity',\n Error_0_12_Opacity: 'error-0-12-opacity',\n ErrorHover: 'error-hover',\n ErrorActive: 'error-active',\n Success: 'success',\n SuccessHover: 'success-hover',\n SuccessActive: 'success-Active',\n Warning: 'warning',\n WarningHover: 'warning-hover',\n WarningActive: 'warning-active',\n Info: 'info',\n Modified: 'modified',\n Red: 'red',\n Orange: 'orange',\n Salad: 'salad',\n Green: 'green',\n Blue: 'blue',\n Indigo: 'indigo',\n Violet: 'violet',\n Pink: 'pink',\n GradientRight: 'gradient-right',\n Extra_0_3_Overlay: 'extra-0-3-overlay',\n GradientRightActive: 'gradient-right-active',\n GradientRightHover: 'gradient-right-hover',\n Extra_0_5_Overlay: 'extra-0-5-overlay',\n Extra_0_7_Overlay: 'extra-0-7-overlay',\n Extra_0_9_Overlay: 'extra-0-9-overlay',\n Red_0_1_Overlay: 'red-0-1-overlay',\n Orange_0_1_Overlay: 'orange-0-1-overlay',\n Accent_0_8_Overlay: 'accent-0-8-overlay',\n Link: 'link',\n Camera: 'camera',\n GoogleDrive: 'google-drive',\n Dropbox: 'dropbox',\n OneDrive: 'one-drive',\n Device: 'device',\n Instagram: 'instagram',\n FreeImages: 'free-images',\n FreeIcons: 'free-icons',\n Canvas: 'canvas',\n Box: 'box',\n ScreenCast: 'screen-cast',\n Unsplash: 'unsplash',\n LightShadow: 'light-shadow',\n MediumShadow: 'medium-shadow',\n LargeShadow: 'large-shadow',\n XLargeShadow: 'x-large-shadow'\n};","import { css } from 'styled-components';\nimport { Color as PaletteColor } from '../types/palette';\nexport var scrollBar = function scrollBar(_ref) {\n var palette = _ref.theme.palette;\n return css([\"scrollbar-color:\", \" \", \";scrollbar-width:thin;::-webkit-scrollbar{width:12px;}::-webkit-scrollbar-track{margin-block:6px;}::-webkit-scrollbar-thumb{background:\", \";border:4px solid \", \";border-radius:99px;padding:4px 6px;background-clip:padding-box;}\"], palette[PaletteColor.IconsMuted], palette[PaletteColor.ActiveSecondary], palette[PaletteColor.Extra_0_3_Overlay], palette[PaletteColor.ActiveSecondary]);\n};","export var Breakpoint = {\n Xs: 'xs',\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg',\n Xl: 'xl',\n Xxl: 'xxl',\n Xxxl: 'xxxl'\n};\nexport var BreakpointClass = {\n Xs: '.sfx-breakpoint-xs',\n Sm: '.sfx-breakpoint-sm',\n Md: '.sfx-breakpoint-md',\n Lg: '.sfx-breakpoint-lg',\n Xl: '.sfx-breakpoint-xl',\n Xxl: '.sfx-breakpoint-xxl',\n Xxxl: '.sfx-breakpoint-xxxl'\n};","export var Shadows = {\n ShadowSm: 'shadow-sm',\n ShadowMd: 'shadow-md',\n ShadowLg: 'shadow-lg',\n ShadowXl: 'shadow-xl',\n Label: 'label',\n Header: 'header',\n HeaderPopup: 'header-popup',\n FooterPopup: 'footer-popup',\n LeftPanelMd: 'left-panel-md',\n RightPanelMd: 'right-panel-md',\n LeftPanelSm: 'left-panel-sm',\n RightPanelSm: 'right-panel-sm'\n};","export var FontWeight = {\n Thin: 100,\n ExtraLight: 200,\n Light: 300,\n Regular: 400,\n Medium: 500,\n SemiBold: 600,\n Bold: 700,\n ExtraBold: 800,\n Black: 900\n};","export var FontVariant = {\n TextExtraSmall: 'text-extra-small',\n TextSmall: 'text-small',\n TextSmallUp: 'text-small-up',\n TextMedium: 'text-medium',\n TextLarge: 'text-large',\n TextExtraLarge: 'text-extra-large',\n TextXExtraLarge: 'text-x-extra-large',\n TitleH6: 'title-h6',\n TitleH5: 'title-h5',\n TitleH4: 'title-h4',\n TitleH3: 'title-h3',\n TitleH2: 'title-h2',\n TitleH1: 'title-h1',\n LabelExtraSmall: 'label-extra-small',\n LabelExtraSmallEmphasis: 'label-extra-small-emphasis',\n LabelExtraSmallUp: 'label-extra-small-up',\n LabelSmall: 'label-small',\n LabelSmallEmphasis: 'label-small-emphasis',\n LabelSmallUp: 'label-small-up',\n LabelSmallUpEmphasis: 'label-small-up-emphasis',\n LabelMedium: 'label-medium',\n LabelMediumEmphasis: 'label-medium-emphasis',\n LabelLarge: 'label-large',\n LabelLargeEmphasis: 'label-large-emphasis',\n LabelLargeUp: 'label-large-up',\n LabelExtraLargeEmphasis: 'label-extra-large-emphasis',\n LabelExtraLarge: 'label-extra-large',\n LabelXExtraLargeEmphasis: 'label-x-extra-large-emphasis',\n LabelXExtraLarge: 'label-x-extra-large',\n LabelXXExtraLargeEmphasis: 'label-x-x-extra-large-emphasis',\n LabelXXExtraLarge: 'label-x-x-extra-large',\n LabelXXXExtraLarge: 'label-x-x-x-extra-large',\n ButtonSmEmphasis: 'btn-sm-emphasis',\n ButtonSm: 'btn-sm',\n ButtonSmUpEmphasis: 'btn-sm-up-emphasis',\n ButtonSmUp: 'btn-sm-up',\n ButtonMdEmphasis: 'btn-md-emphasis',\n ButtonMd: 'btn-md',\n ButtonLgEmphasis: 'btn-lg-emphasis',\n ButtonLg: 'btn-lg',\n ButtonLgUpEmphasis: 'btn-lg-up-emphasis',\n ButtonLgUp: 'btn-lg-up',\n LinkSmall: 'link-small',\n LinkSmallEmphasis: 'link-small-emphasis',\n LinkSmallUp: 'link-small-up',\n LinkSmallUpEmphasis: 'link-small-up-emphasis',\n LinkMedium: 'link-medium',\n LinkMediumEmphasis: 'link-medium-emphasis',\n LinkLarge: 'link-large',\n LinkLargeEmphasis: 'link-large-emphasis',\n LinkLargeUp: 'link-large-up',\n LinkLargeUpEmphasis: 'link-large-up-emphasis',\n InputSm: 'input-sm',\n InputSmUp: 'input-sm-up',\n InputMd: 'input-md',\n InputLg: 'input-lg'\n};","export var BorderRadiusSize = {\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg'\n};","import { createGlobalStyle, css } from 'styled-components';\nvar Typography = /*#__PURE__*/createGlobalStyle([\"\", \";\"], function (_ref) {\n var theme = _ref.theme;\n var baseLineHeight = theme.typography.baseLineHeight;\n return css([\"h1,h2,h3,h4,h5,h6,p,small{line-height:\", \";}\"], baseLineHeight);\n});\nexport default Typography;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/* eslint-disable sonarjs/no-duplicate-string */\nimport { FontVariant, FontWeight } from '../../../../utils/types/typography';\nvar defaultFontValue = {\n fontFamily: '\"Roboto\"',\n fontStyle: 'normal',\n fontWeight: FontWeight.Regular\n};\nvar getLabelFontVariants = function getLabelFontVariants() {\n var _ref;\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _ref = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref, FontVariant.LabelExtraSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '10px',\n lineHeight: '12px'\n }, fontOverride)), FontVariant.LabelExtraSmallEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: 'Bold',\n fontSize: '10px',\n lineHeight: '12px'\n }, fontOverride)), FontVariant.LabelExtraSmallUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '11px',\n lineHeight: '12px'\n }, fontOverride)), FontVariant.LabelSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LabelSmallEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LabelSmallUp, _objectSpread(_objectSpread({\n fontSize: '13px',\n lineHeight: '16px'\n }, defaultFontValue), fontOverride)), FontVariant.LabelSmallUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LabelMedium, _objectSpread(_objectSpread({\n fontSize: '14px',\n lineHeight: '16px'\n }, defaultFontValue), fontOverride)), FontVariant.LabelMediumEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LabelLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref, FontVariant.LabelLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.LabelLargeUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Regular,\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.LabelExtraLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '24px',\n lineHeight: '28px'\n }, fontOverride)), FontVariant.LabelExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Regular,\n fontSize: '24px',\n lineHeight: '28px'\n }, fontOverride)), FontVariant.LabelXExtraLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '32px',\n lineHeight: '36px'\n }, fontOverride)), FontVariant.LabelXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '32px',\n lineHeight: '36px'\n }, fontOverride)), FontVariant.LabelXXExtraLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '48px',\n lineHeight: '54px'\n }, fontOverride)), FontVariant.LabelXXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '48px',\n lineHeight: '54px'\n }, fontOverride)), FontVariant.LabelXXXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '60px',\n lineHeight: '68px'\n }, fontOverride));\n};\nvar getTextFontVariants = function getTextFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.TextExtraSmall, _objectSpread(_objectSpread({}, getLabelFontVariants()[FontVariant.LabelExtraSmallUp]), {}, {\n lineHeight: '14px'\n }, fontOverride)), FontVariant.TextSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.TextSmallUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.TextMedium, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.TextLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '22px'\n }, fontOverride)), FontVariant.TextExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '18px',\n lineHeight: '26px'\n }, fontOverride)), FontVariant.TextXExtraLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '28px',\n lineHeight: '40px'\n }, fontOverride));\n};\nvar getButtonFontVariants = function getButtonFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.ButtonSmEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.ButtonSm, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.ButtonSmUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonSmUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonMdEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonMd, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.ButtonLgEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.ButtonLg, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.ButtonLgUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.ButtonLgUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride));\n};\nvar getLinkFontVariants = function getLinkFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.LinkSmall, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LinkSmallEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.LinkSmallUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkSmallUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkMedium, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkMediumEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.LinkLarge, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.LinkLargeEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.LinkLargeUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride)), FontVariant.LinkLargeUpEmphasis, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '18px',\n lineHeight: '20px'\n }, fontOverride));\n};\nvar getInputFontVariants = function getInputFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.InputSm, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '12px',\n lineHeight: '14px'\n }, fontOverride)), FontVariant.InputSmUp, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '13px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.InputMd, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '14px',\n lineHeight: '16px'\n }, fontOverride)), FontVariant.InputLg, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontSize: '16px',\n lineHeight: '18px'\n }, fontOverride));\n};\nvar getTitleFontVariants = function getTitleFontVariants() {\n var fontOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FontVariant.TitleH6, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '12px',\n lineHeight: '18px'\n }, fontOverride)), FontVariant.TitleH5, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '14px',\n lineHeight: '21px'\n }, fontOverride)), FontVariant.TitleH4, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '16px',\n lineHeight: '24px'\n }, fontOverride)), FontVariant.TitleH3, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '18px',\n lineHeight: '27px'\n }, fontOverride)), FontVariant.TitleH2, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '20px',\n lineHeight: '30px'\n }, fontOverride)), FontVariant.TitleH1, _objectSpread(_objectSpread({}, defaultFontValue), {}, {\n fontWeight: FontWeight.Medium,\n fontSize: '28px',\n lineHeight: '42px'\n }, fontOverride));\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport var getDefaultTypography = function getDefaultTypography() {\n var typographyOverride = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _objectSpread(_objectSpread({\n fontFamily: defaultFontValue.fontFamily,\n baseLineHeight: 1.375\n }, typographyOverride), {}, {\n font: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, getLabelFontVariants(typographyOverride)), getTextFontVariants(typographyOverride)), getButtonFontVariants(typographyOverride)), getLinkFontVariants(typographyOverride)), getInputFontVariants(typographyOverride)), getTitleFontVariants(typographyOverride))\n });\n};","import { createGlobalStyle /* , css */ } from 'styled-components';\n\n// Example with theme: ${({ theme }) => css``;\n\nvar CommonStyles = /*#__PURE__*/createGlobalStyle([\"@keyframes spinner{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}.Menu-open{overflow:hidden;}.Modal-open{overflow:hidden;}\"]);\nexport default CommonStyles;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _lightPalette;\n/* eslint-disable sonarjs/no-duplicate-string */\nimport { Color } from '../../../../utils/types/palette';\nexport var lightPalette = (_lightPalette = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.TextPrimary, 'rgba(55, 65, 75, 1)'), Color.TextSecondary, 'rgba(118, 138, 159, 1)'), Color.TextSecondaryInvert, 'rgba(213, 216, 220, 1)'), Color.TextPlaceholder, 'rgba(169, 182, 194, 1)'), Color.TextWarning, 'rgba(196, 110, 0, 1)'), Color.TextError, 'rgba(185, 33, 46, 1)'), Color.TextInfo, 'rgba(35, 117, 171, 1)'), Color.AccentPrimary, 'rgba(104, 121, 235, 1)'), Color.AccentPrimaryHover, 'rgba(96, 111, 209, 1)'), Color.AccentPrimaryActive, 'rgba(73, 88, 188, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.AccentPrimaryDisabled, 'rgba(233, 238, 242, 1)'), Color.AccentSecondaryDisabled, '#F9FBFC'), Color.AccentStateless, 'rgba(104, 121, 235, 1)'), Color.AccentStateless_0_4_Opacity, 'rgba(104, 121, 235, 0.4)'), Color.Accent_0_5_Opacity, 'rgba(104, 121, 235, 0.05)'), Color.Accent_1_2_Opacity, 'rgba(104, 121, 235, 0.12)'), Color.Accent_1_8_Opacity, 'rgba(104, 121, 235, 0.18)'), Color.Accent_2_8_Opacity, 'rgba(104, 121, 235, 0.28)'), Color.Accent_4_0_Opacity, 'rgba(104, 121, 235, 0.4)'), Color.BackgroundGrey, 'rgba(216, 224, 232, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BackgroundStateless, 'rgba(255, 255, 255, 1)'), Color.BackgroundActive, 'rgba(243, 247, 250, 1)'), Color.BackgroundBaseLight, 'rgba(235, 239, 252, 1)'), Color.BackgroundBaseMedium, 'rgba(227, 231, 251, 1)'), Color.BackgroundPrimary, 'rgba(248, 250, 251, 1)'), Color.BackgroundPrimaryLight, 'rgba(243, 245, 247, 1)'), Color.BackgroundPrimaryHover, 'rgba(239, 243, 246, 1)'), Color.BackgroundPrimaryActive, 'rgba(93, 109, 126, 1)'), Color.BackgroundPrimary_0_5_Opacity, 'rgba(255, 255, 255, 0.500)'), Color.BackgroundPrimaryStateless, '#CCD6DE'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BackgroundSecondary, 'rgba(255, 255, 255, 1)'), Color.BackgroundHover, 'rgba(249, 251, 252, 1)'), Color.BackgroundGreen, 'rgba(237, 250, 244, 1)'), Color.BackgroundGreenMedium, 'rgba(227, 250, 239, 1)'), Color.BackgroundBlue, 'rgba(244, 249, 255, 1)'), Color.BackgroundRed, 'rgba(253, 244, 242, 1)'), Color.BackgroundRedLight, 'rgba(255, 245, 245, 1)'), Color.BackgroundRedMedium, 'rgba(247, 228, 230, 1)'), Color.BackgroundOrange, 'rgba(255, 249, 242, 1)'), Color.BackgroundTooltip, 'rgba(79, 98, 118, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.IconsPrimary, 'rgba(118, 138, 159, 1)'), Color.IconsPrimaryOpacity_0_6, 'rgba(93, 109, 126, 0.600)'), Color.IconsSecondary, 'rgba(151, 166, 182, 1)'), Color.IconsPlaceholder, 'rgba(223, 231, 237, 1)'), Color.IconsInvert, 'rgba(255, 255, 255, 1)'), Color.IconsMuted, 'rgba(169, 182, 194, 1)'), Color.IconsPrimaryHover, 'rgba(79, 98, 118, 1)'), Color.IconsSecondaryHover, 'rgba(118, 138, 159, 1)'), Color.ButtonPrimaryText, 'rgba(255, 255, 255, 1)'), Color.ButtonPrimaryText_0_6, 'rgba(255, 255, 255, 0.6)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.ButtonPrimaryText_0_4, 'rgba(255, 255, 255, 0.4)'), Color.ButtonDisabledText, 'rgba(169, 182, 194, 1)'), Color.ButtonSecondaryText, 'rgba(0, 0, 0, 1)'), Color.LinkPrimary, 'rgba(118, 138, 159, 1)'), Color.LinkStateless, 'rgba(118, 138, 159, 1)'), Color.LinkHover, 'rgba(79, 98, 118, 1)'), Color.LinkActive, 'rgba(55, 65, 75, 1)'), Color.LinkPressed, 'rgba(104, 121, 235, 1)'), Color.LinkMuted, 'rgba(169, 182, 194, 1)'), Color.BordersPrimary, 'rgba(204, 214, 222, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BordersPrimaryHover, 'rgba(104, 118, 134, 1)'), Color.BordersSecondary, 'rgba(236, 240, 243, 1)'), Color.BordersStrong, 'rgba(204, 214, 222, 1)'), Color.BordersInvert, 'rgba(85, 99, 115, 1)'), Color.BorderHoverBottom, 'rgba(104, 121, 235, 0.18)'), Color.BorderActiveBottom, '#4958BC'), Color.BorderPrimaryStateless, 'rgba(204, 214, 222, 1)'), Color.BordersDisabled, 'rgba(73, 88, 188, 0.4)'), Color.BordersButton, 'rgba(151, 166, 182, 1)'), Color.BordersItem, 'rgba(226, 232, 236, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.BordersBaseLight, 'rgba(211, 219, 250, 1)'), Color.BordersBaseMedium, 'rgba(164, 175, 227, 1)'), Color.BordersGreen, 'rgba(27, 161, 99, 0.22)'), Color.BordersGreenMedium, 'rgba(27, 161, 99, 0.4)'), Color.BordersRed, 'rgba(185, 33, 46, 0.4)'), Color.ActiveSecondary, '#FFFFFF'), Color.ActiveSecondaryHover, 'rgba(104, 121, 235, 0.05)'), Color.Error, 'rgba(246, 61, 61, 1)'), Color.Error_0_28_Opacity, 'rgba(185, 33, 46, 0.28)'), Color.Error_0_12_Opacity, 'rgba(255, 86, 78, 0.1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.ErrorHover, 'rgba(216, 46, 46, 1)'), Color.ErrorActive, 'rgba(185, 33, 46, 1)'), Color.Success, 'rgba(38, 193, 122, 1)'), Color.SuccessHover, 'rgba(30, 154, 98, 1)'), Color.SuccessActive, 'rgba(23, 116, 73, 1)'), Color.Warning, 'rgba(255, 172, 74, 1)'), Color.WarningHover, 'rgba(237, 145, 7, 1)'), Color.WarningActive, 'rgba(224, 135, 0, 1)'), Color.Info, 'rgba(41, 127, 184, 1)'), Color.Modified, 'rgba(165, 166, 246, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.Red, 'rgba(219, 46, 50, 1)'), Color.Orange, 'rgba(255, 168, 0, 1)'), Color.Salad, 'rgba(143, 176, 33, 1)'), Color.Green, 'rgba(22, 160, 134, 1)'), Color.Blue, 'rgba(41, 127, 184, 1)'), Color.Indigo, 'rgba(91, 72, 162, 1)'), Color.Violet, 'rgba(141, 68, 173, 1)'), Color.Pink, 'rgba(211, 92, 158, 1)'), Color.GradientRight, 'linear-gradient(270deg, #FFFFFF 1.56%, rgba(255, 255, 255, 0.89) 52.4%, rgba(255, 255, 255, 0.532165) 76.04%, rgba(255, 255, 255, 0) 100%)'), Color.Extra_0_3_Overlay, 'rgba(79, 98, 118, 0.3)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.GradientRightActive, 'linear-gradient(270deg, #F3F7FA 1.56%, #F3F7FA 52.4%, rgba(243, 247, 250, 0.53) 76.04%, rgba(243, 247, 250, 0) 100%)'), Color.GradientRightHover, 'linear-gradient(270deg, #F9FBFC 1.56%, #F9FBFC 52.4%, rgba(249, 251, 252, 0.53) 76.04%, rgba(249, 251, 252, 0) 100%)'), Color.Extra_0_5_Overlay, 'rgba(79, 98, 118, 0.5)'), Color.Extra_0_7_Overlay, 'rgba(79, 98, 118, 0.7)'), Color.Extra_0_9_Overlay, 'rgba(79, 98, 118, 0.9)'), Color.Red_0_1_Overlay, 'rgba(232, 91, 70, 0.1)'), Color.Orange_0_1_Overlay, 'rgba(250, 157, 47, 0.1)'), Color.Accent_0_8_Overlay, 'rgba(104, 121, 235, 0.08)'), Color.Link, 'rgba(250, 166, 68, 1)'), Color.Camera, 'rgba(73, 186, 224, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.GoogleDrive, 'rgba(81, 136, 238, 1)'), Color.Dropbox, 'rgba(17, 40, 124, 1)'), Color.OneDrive, 'rgba(40, 100, 186, 1)'), Color.Device, 'rgba(102, 73, 209, 1)'), Color.Instagram, 'rgba(244, 70, 154, 1)'), Color.Unsplash, 'rgba(173, 38, 220, 1)'), Color.FreeImages, 'rgba(16, 163, 135, 1)'), Color.FreeIcons, 'rgba(62, 207, 139, 1)'), Color.Canvas, 'rgba(36, 190, 202, 1)'), Color.Box, 'rgba(0, 97, 213, 1)'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_lightPalette, Color.ScreenCast, 'rgba(48, 61, 78, 1)'), Color.Tag, '#889AAC'), Color.StatesErrorDisabledText, 'rgba(185, 33, 46, 0.3)'), Color.LightShadow, 'rgba(146, 166, 188, 0.2)'), Color.MediumShadow, 'rgba(146, 166, 188, 0.24)'), Color.LargeShadow, 'rgba(146, 166, 188, 0.32)'), Color.XLargeShadow, 'rgba(146, 166, 188, 0.5)'));\nexport var defaultPalette = lightPalette;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _shadows;\nimport { Shadows } from '../../../../utils/types/shadows';\nexport var shadows = (_shadows = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_shadows, Shadows.ShadowSm, '0px 1px 2px 0px rgba(146, 166, 188, 0.2)'), Shadows.ShadowMd, ' 0px 1px 4px 0px rgba(146, 166, 188, 0.24)'), Shadows.ShadowLg, ' 0px 2px 6px 0px rgba(146, 166, 188, 0.32)'), Shadows.ShadowXl, ' 0px 2px 6px 0px rgba(146, 166, 188, 0.5)'), Shadows.Label, ' 0px 1px 3px 0px rgba(77, 78, 78, 0.15)'), Shadows.Header, ' 0px 6px 10px 0px rgba(146, 166, 188, 0.2)'), Shadows.HeaderPopup, ' 0px 3px 7px 0px rgba(146, 166, 188, 0.16)'), Shadows.FooterPopup, ' 0px -4px 8px 0px rgba(208, 215, 220, 0.22)'), Shadows.LeftPanelMd, ' 6px 8px 12px 0px rgba(146, 166, 188, 0.14)'), Shadows.RightPanelMd, '-6px 8px 12px 0px rgba(146, 166, 188, 0.14)'), _defineProperty(_defineProperty(_shadows, Shadows.LeftPanelSm, '6px -4px 12px 0px rgba(146, 166, 188, 0.14)'), Shadows.RightPanelSm, '-6px -4px 12px 0px rgba(146, 166, 188, 0.14)'));\nexport var defaultShadows = shadows;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { Breakpoint } from '../../../../utils/types/css';\nexport var defaultBreakpoints = {\n keys: [Breakpoint.Xs, Breakpoint.Sm, Breakpoint.Md, Breakpoint.Lg, Breakpoint.Xl],\n values: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Breakpoint.Xs, 0), Breakpoint.Sm, 576), Breakpoint.Md, 768), Breakpoint.Lg, 1084), Breakpoint.Xl, 1342), Breakpoint.Xxl, 1600), Breakpoint.Xxxl, 1920),\n classes: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Breakpoint.Xs, '.sfx-breakpoint-xs'), Breakpoint.Sm, '.sfx-breakpoint-sm'), Breakpoint.Md, '.sfx-breakpoint-md'), Breakpoint.Lg, '.sfx-breakpoint-lg'), Breakpoint.Xl, '.sfx-breakpoint-xl'), Breakpoint.Xxl, '.sfx-breakpoint-xxl'), Breakpoint.Xxxl, '.sfx-breakpoint-xxxl'),\n getBreakpointClass: function getBreakpointClass() {\n return '';\n },\n up: function up() {\n return '';\n },\n down: function down() {\n return '';\n },\n between: function between() {\n return '';\n },\n only: function only() {\n return '';\n }\n};","import { defaultBreakpoints } from './default-breakpoints';\nvar createBreakpoints = function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? defaultBreakpoints.values : _breakpoints$values,\n _breakpoints$classes = breakpoints.classes,\n classes = _breakpoints$classes === void 0 ? defaultBreakpoints.classes : _breakpoints$classes;\n var unit = 'px';\n var keys = Object.keys(values);\n var up = function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n };\n var down = function down(key) {\n var value = values[key];\n return \"@media (max-width:\".concat(value).concat(unit, \")\");\n };\n var between = function between(start, end) {\n var endIndex = keys.indexOf(end);\n return \"@media (min-width:\".concat(values[start]).concat(unit, \") and (max-width:\").concat(values[keys[endIndex]]).concat(unit, \")\");\n };\n var only = function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n };\n var getBreakpointClass = function getBreakpointClass(width, hideSelector) {\n var removeSelector = function removeSelector(str) {\n return str.slice(1);\n };\n if (width >= values.xs && width < values.sm) {\n return hideSelector ? removeSelector(classes.xs) : classes.xs;\n }\n if (width >= values.sm && width < values.md) {\n return hideSelector ? removeSelector(classes.sm) : classes.sm;\n }\n if (width >= values.md && width < values.lg) {\n return hideSelector ? removeSelector(classes.md) : classes.md;\n }\n if (width >= values.lg && width < values.xl) {\n return hideSelector ? removeSelector(classes.lg) : classes.lg;\n }\n if (width >= values.xl && width < values.xxl) {\n return hideSelector ? removeSelector(classes.xl) : classes.xl;\n }\n if (width >= values.xxl && width < values.xxxl) {\n return hideSelector ? removeSelector(classes.xxl) : classes.xxl;\n }\n if (width >= values.xxxl) {\n return hideSelector ? removeSelector(classes.xxxl) : classes.xxxl;\n }\n return hideSelector ? removeSelector(classes.md) : classes.md;\n };\n return {\n keys: keys,\n values: values,\n classes: classes,\n getBreakpointClass: getBreakpointClass,\n up: up,\n down: down,\n between: between,\n only: only\n };\n};\nexport default createBreakpoints;","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useMemo } from 'react';\nimport PT from 'prop-types';\nimport { ThemeProvider as SCThemeProvider } from 'styled-components';\nimport merge from 'lodash.merge';\nimport { record } from '../../utils/types/prop-types';\nimport { applyPolymorphicFunctionProp, objectKeys, objectValues } from '../../utils/functions';\nimport { Breakpoint } from '../../utils/types/css';\nimport { Color } from '../../utils/types/palette';\nimport { Shadows } from '../../utils/types/shadows';\nimport { FontVariant } from '../../utils/types/typography';\nimport { BorderRadiusSize } from '../../utils/types/shape';\nimport { Typography, CommonStyles } from '../roots';\nimport { defaultPalette } from '../roots/palette';\nimport { defaultShadows } from '../roots/shadows';\nimport { getDefaultTypography } from '../roots/typography';\nimport createBreakpoints from '../roots/breakpoints/entity/create-breakpoints';\nvar defaultShape = {\n borderRadius: _defineProperty(_defineProperty(_defineProperty({}, BorderRadiusSize.Sm, '2px'), BorderRadiusSize.Md, '4px'), BorderRadiusSize.Lg, '8px')\n};\nvar ThemeProvider = function ThemeProvider(_ref) {\n var children = _ref.children,\n _ref$theme = _ref.theme,\n theme = _ref$theme === void 0 ? {} : _ref$theme;\n var _theme$palette = theme.palette,\n paletteOverride = _theme$palette === void 0 ? {} : _theme$palette,\n _theme$breakpoints = theme.breakpoints,\n breakpointsOverride = _theme$breakpoints === void 0 ? {} : _theme$breakpoints,\n _theme$typography = theme.typography,\n typographyOverride = _theme$typography === void 0 ? {} : _theme$typography,\n _theme$shape = theme.shape,\n shapeOverride = _theme$shape === void 0 ? {} : _theme$shape,\n _theme$shadows = theme.shadows,\n shadowsOverride = _theme$shadows === void 0 ? {} : _theme$shadows;\n var finalTheme = useMemo(function () {\n var palette = _objectSpread(_objectSpread({}, defaultPalette), paletteOverride);\n var breakpoints = createBreakpoints(breakpointsOverride);\n var shadows = _objectSpread(_objectSpread({}, defaultShadows), shadowsOverride);\n return {\n palette: palette,\n breakpoints: breakpoints,\n typography: getDefaultTypography(typographyOverride),\n shape: _objectSpread({}, merge(_objectSpread({}, defaultShape), _objectSpread({}, shapeOverride))),\n shadows: shadows\n };\n return {};\n }, [JSON.stringify(theme)]);\n return /*#__PURE__*/React.createElement(SCThemeProvider, {\n theme: finalTheme\n }, /*#__PURE__*/React.createElement(React.Fragment, null, applyPolymorphicFunctionProp(children, finalTheme), /*#__PURE__*/React.createElement(CommonStyles, null), /*#__PURE__*/React.createElement(Typography, null)));\n};\nvar _getDefaultTypography = getDefaultTypography(),\n baseLineHeight = _getDefaultTypography.baseLineHeight,\n font = _getDefaultTypography.font,\n typography = _objectWithoutProperties(_getDefaultTypography, [\"baseLineHeight\", \"font\"]);\nThemeProvider.propTypes = {\n children: PT.oneOfType([PT.node, PT.func, PT.arrayOf(PT.node)]).isRequired,\n theme: PT.exact({\n breakpoints: PT.exact({\n keys: PT.arrayOf(PT.string),\n values: PT.exact(record(objectValues(Breakpoint), PT.number)),\n classes: PT.exact(record(objectValues(Breakpoint), PT.string)),\n getBreakpointClass: PT.func,\n up: PT.func,\n down: PT.func,\n between: PT.func,\n only: PT.func\n }),\n palette: PT.exact(record(objectValues(Color), PT.string)),\n shadows: PT.exact(record(objectValues(Shadows), PT.string)),\n shape: PT.exact({\n borderRadius: PT.exact(record(objectValues(BorderRadiusSize), PT.string))\n }),\n typography: PT.exact(_objectSpread({\n baseLineHeight: PT.oneOfType([PT.string, PT.number]),\n font: PT.exact(record(objectValues(FontVariant), PT.object))\n }, record(objectKeys(typography), PT.string)))\n })\n};\nexport default ThemeProvider;","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._registerNode = exports.Konva = exports.glob = void 0;\nconst PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexports.glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexports.Konva = {\n _global: exports.glob,\n version: '9.3.20',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return exports.Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n _fixTextRendering: false,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return exports.Konva['DD'].isDragging;\n },\n isTransforming() {\n var _a;\n return (_a = exports.Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming();\n },\n isDragReady() {\n return !!exports.Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: exports.glob.document,\n _injectGlobal(Konva) {\n exports.glob.Konva = Konva;\n },\n};\nconst _registerNode = (NodeClass) => {\n exports.Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nexports._registerNode = _registerNode;\nexports.Konva._injectGlobal(exports.Konva);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = void 0;\nconst Global_1 = require(\"./Global\");\nclass Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n const m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n const c = Math.cos(rad);\n const s = Math.sin(rad);\n const m11 = this.m[0] * c + this.m[2] * s;\n const m12 = this.m[1] * c + this.m[3] * s;\n const m21 = this.m[0] * -s + this.m[2] * c;\n const m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n const m11 = this.m[0] + this.m[2] * sy;\n const m12 = this.m[1] + this.m[3] * sy;\n const m21 = this.m[2] + this.m[0] * sx;\n const m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n const m0 = this.m[3] * d;\n const m1 = -this.m[1] * d;\n const m2 = -this.m[2] * d;\n const m3 = this.m[0] * d;\n const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n const a = this.m[0];\n const b = this.m[1];\n const c = this.m[2];\n const d = this.m[3];\n const e = this.m[4];\n const f = this.m[5];\n const delta = a * d - b * c;\n const result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n const r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n const s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = exports.Util._getRotation(result.rotation);\n return result;\n }\n}\nexports.Transform = Transform;\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;\nlet animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexports.Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n const firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n const canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n const imageObj = exports.Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n const bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n let rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (exports.Util._namedColorToRBA(str) ||\n exports.Util._hex3ColorToRGBA(str) ||\n exports.Util._hex4ColorToRGBA(str) ||\n exports.Util._hex6ColorToRGBA(str) ||\n exports.Util._hex8ColorToRGBA(str) ||\n exports.Util._rgbColorToRGBA(str) ||\n exports.Util._rgbaColorToRGBA(str) ||\n exports.Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n const c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n const retObj = {};\n for (const key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n exports.Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return exports.Util.degToRad(deg);\n },\n _radToDeg(rad) {\n exports.Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return exports.Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Global_1.Konva.angleDeg ? exports.Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Global_1.Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (const key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n let x, y, dist;\n const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n const pc = exports.Util.cloneObject(pt);\n let dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n const p2 = line[(i + 1) % line.length];\n const proj = exports.Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n const px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n const start = [], end = [];\n if (startArray.length > endArray.length) {\n const temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (let n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (let n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n const newStart = [];\n end.forEach(function (point) {\n const pr = exports.Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n let desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (const key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n exports.Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (exports.Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Global_1.Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBComponent = RGBComponent;\nexports.alphaComponent = alphaComponent;\nexports.getNumberValidator = getNumberValidator;\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nexports.getStringValidator = getStringValidator;\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nexports.getFunctionValidator = getFunctionValidator;\nexports.getNumberArrayValidator = getNumberArrayValidator;\nexports.getBooleanValidator = getBooleanValidator;\nexports.getComponentValidator = getComponentValidator;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n if (Util_1.Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util_1.Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nfunction RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nfunction alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nfunction getNumberValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isNumber(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util_1.Util._isNumber(val);\n let isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nfunction getNumberOrAutoValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nfunction getStringValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isString(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nfunction getStringOrGradientValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util_1.Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val['addColorStop']);\n if (!(isString || isGradient)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nfunction getFunctionValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isFunction(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nfunction getNumberArrayValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util_1.Util._isArray(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util_1.Util._isNumber(item)) {\n Util_1.Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nfunction getBooleanValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isBool = val === true || val === false;\n if (!isBool) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nfunction getComponentValidator(components) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util_1.Util.isObject(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nconst Util_1 = require(\"./Util\");\nconst Validators_1 = require(\"./Validators\");\nconst GET = 'get';\nconst SET = 'set';\nexports.Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n exports.Factory.addGetter(constructor, attr, def);\n exports.Factory.addSetter(constructor, attr, validator, after);\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n var method = GET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n exports.Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n const len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n constructor.prototype[getter] = function () {\n const ret = {};\n for (let n = 0; n < len; n++) {\n const component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n const basicValidator = (0, Validators_1.getComponentValidator)(components);\n constructor.prototype[setter] = function (val) {\n const oldVal = this.attrs[attr];\n if (validator) {\n val = validator.call(this, val, attr);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (const key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n var capitalizedAttr = Util_1.Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util_1.Util.error('Adding deprecated ' + attr);\n const method = GET + Util_1.Util._capitalize(attr);\n const message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util_1.Util.error(message);\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n exports.Factory.addSetter(constructor, attr, validator, function () {\n Util_1.Util.error(message);\n });\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n const method = constructor.prototype[newMethodName];\n const oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n const oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util_1.Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitContext = exports.SceneContext = exports.Context = void 0;\nconst Util_1 = require(\"./Util\");\nconst Global_1 = require(\"./Global\");\nfunction simplifyArray(arr) {\n const retArr = [], len = arr.length, util = Util_1.Util;\n for (let n = 0; n < len; n++) {\n let val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nconst CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n];\nconst traceArrMax = 100;\nclass Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Global_1.Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util_1.Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n let traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n const canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n const absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n const a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n const a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n const func = function (methodName) {\n let origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n const prop = arguments[0];\n let val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n const def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nexports.Context = Context;\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nclass SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n const fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n const grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexports.SceneContext = SceneContext;\nclass HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n const hitStrokeWidth = shape.hitStrokeWidth();\n const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\nexports.HitContext = HitContext;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitCanvas = exports.SceneCanvas = exports.Canvas = void 0;\nconst Util_1 = require(\"./Util\");\nconst Context_1 = require(\"./Context\");\nconst Global_1 = require(\"./Global\");\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n const canvas = Util_1.Util.createCanvasElement();\n const context = canvas.getContext('2d');\n _pixelRatio = (function () {\n const devicePixelRatio = Global_1.Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util_1.Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nclass Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n const conf = config || {};\n const pixelRatio = conf.pixelRatio || Global_1.Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util_1.Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n const previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util_1.Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexports.Canvas = Canvas;\nclass SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new Context_1.SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexports.SceneCanvas = SceneCanvas;\nclass HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new Context_1.HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\nexports.HitCanvas = HitCanvas;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DD = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nexports.DD = {\n get isDragging() {\n let flag = false;\n exports.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n let node;\n exports.DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n exports.DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util_1.Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n const dragDistance = node.dragDistance();\n const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n exports.DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n exports.DD.justDragged = true;\n Global_1.Konva._mouseListenClick = false;\n Global_1.Konva._touchListenClick = false;\n Global_1.Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Global_1.Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n exports.DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n exports.DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Global_1.Konva.isBrowser) {\n window.addEventListener('mouseup', exports.DD._endDragBefore, true);\n window.addEventListener('touchend', exports.DD._endDragBefore, true);\n window.addEventListener('touchcancel', exports.DD._endDragBefore, true);\n window.addEventListener('mousemove', exports.DD._drag);\n window.addEventListener('touchmove', exports.DD._drag);\n window.addEventListener('mouseup', exports.DD._endDragAfter, false);\n window.addEventListener('touchend', exports.DD._endDragAfter, false);\n window.addEventListener('touchcancel', exports.DD._endDragAfter, false);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Global_1 = require(\"./Global\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Validators_1 = require(\"./Validators\");\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nclass Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n let cache = this._cache.get(attr);\n const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n const invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util_1.Util.releaseCanvas(scene, filter, hit);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n const conf = config || {};\n let rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util_1.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n const cachedSceneCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n const points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n const transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n const cacheCanvas = this._getCachedSceneCanvas();\n const ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n const ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter !== 'function') {\n Util_1.Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util_1.Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n }\n return filterCanvas;\n }\n return sceneCanvas;\n }\n on(evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n let events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n }\n off(evtStr, callback) {\n let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n const e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n const stopNode = this;\n this.on(event, function (evt) {\n const targets = evt.target.findAncestors(selector, true, stopNode);\n for (let i = 0; i < targets.length; i++) {\n evt = Util_1.Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DragAndDrop_1.DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n const parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n const method = 'get' + Util_1.Util._capitalize(attr);\n if (Util_1.Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n let parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n let key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util_1.Util._capitalize(key);\n if (Util_1.Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n const layer = this.getLayer();\n let layerUnderDrag = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n const dragSkip = !skipDragCheck &&\n !Global_1.Konva.hitOnDragEnabled &&\n (layerUnderDrag || Global_1.Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n let depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n const pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n const transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Util_1.Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n const it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n let key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n const trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n let family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util_1.Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n const index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n let absOpacity = this.opacity();\n const parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util_1.Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n const res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n let ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util_1.Util.isValidSelector(sel)) {\n Util_1.Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util_1.Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n const parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n const parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n let at;\n if (top) {\n at = new Util_1.Transform();\n this._eachAncestorReverse(function (node) {\n const transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Util_1.Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n const transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n let parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n const m = this._cache.get(TRANSFORM) || new Util_1.Transform();\n m.reset();\n const x = this.x(), y = this.y(), rotation = Global_1.Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n let attrs = Util_1.Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n const node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n const box = this.getClientRect();\n const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new Canvas_1.SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new Canvas_1.SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n const mimeType = config.mimeType || null, quality = config.quality || null;\n const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util_1.Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Global_1.Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n let evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n const oldName = this.name();\n const newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n const names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n const names = (this.name() || '').split(/\\s/g);\n const index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n const func = this[SET + Util_1.Util._capitalize(attr)];\n if (Util_1.Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Global_1.Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n const oldVal = this.attrs[key];\n if (oldVal === val && !Util_1.Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n let oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n const shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n const stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (var i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (var i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n const pointerId = evt ? evt.pointerId : undefined;\n const stage = this.getStage();\n const ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n const pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DragAndDrop_1.DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n let newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n const dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util_1.Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DragAndDrop_1.DD._endDragBefore(evt);\n DragAndDrop_1.DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n const shouldCheckButton = evt.evt['button'] !== undefined;\n const canDrag = !shouldCheckButton || Global_1.Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n let hasDraggingChild = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n const stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DragAndDrop_1.DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DragAndDrop_1.DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util_1.Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util_1.Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Global_1.Konva[className]) {\n Util_1.Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Global_1.Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'y', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'opacity', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'name', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'id', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'rotation', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'scaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'skewY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'offsetY', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'dragDistance', undefined, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'width', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'height', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'listening', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'preventDefault', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'transformsEnabled', 'all', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n if (!filterFunc) {\n return this.children || [];\n }\n const children = this.children || [];\n const results = [];\n children.forEach(function (child) {\n if (filterFunc(child)) {\n results.push(child);\n }\n });\n return results;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n const result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n const retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n const obj = Node_1.Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n let parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n const node = Node_1.Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n const arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n const caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n const transform = this.getAbsoluteTransform(top);\n let m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n const clipX = this.clipX();\n const clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n const hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n let minX, minY, maxX, maxY;\n let selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n const that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n const rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n const shapes = this.find('Shape');\n let hasVisible = false;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCapturedShape = getCapturedShape;\nexports.createEvent = createEvent;\nexports.hasPointerCapture = hasPointerCapture;\nexports.setPointerCapture = setPointerCapture;\nexports.releaseCapture = releaseCapture;\nconst Global_1 = require(\"./Global\");\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nfunction createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nfunction hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nfunction setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nfunction releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Global_1.Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util_1.Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n exports.stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util_1.Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n if (container.charAt(0) === '.') {\n const className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n const layers = this.children, len = layers.length;\n for (let n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container_1.Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n const content = this.content;\n if (content && Util_1.Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n const index = exports.stages.indexOf(this);\n if (index > -1) {\n exports.stages.splice(index, 1);\n }\n Util_1.Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util_1.Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n const canvas = new Canvas_1.SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n const _context = canvas.getContext()._context;\n const layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n const layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n const layers = this.children, len = layers.length, end = len - 1;\n for (let n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n const width = this.width();\n const height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n const length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util_1.Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Global_1.Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const targetShape = this._getTargetShape(eventType);\n const eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = this.getIntersection(pos);\n DragAndDrop_1.DD.justDragged = false;\n Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n this[eventType + 'ClickStartShape'] = undefined;\n return;\n }\n if (Global_1.Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n if (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n const eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n const processedShapesIds = {};\n let triggeredOnShape = false;\n const targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n const differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n const processedShapesIds = {};\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Global_1.Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n const contentPosition = this._getContentPosition();\n let x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util_1.Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util_1.Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n const rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new Canvas_1.SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n const container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util_1.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\nif (Global_1.Konva.isBrowser) {\n document.addEventListener('visibilitychange', () => {\n exports.stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexports.shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nclass Shape extends Node_1.Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util_1.Util.getRandomColor();\n if (key && !(key in exports.shapes)) {\n break;\n }\n }\n this.colorKey = key;\n exports.shapes[key] = this;\n }\n getContext() {\n Util_1.Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util_1.Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n const ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Util_1.Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Global_1.Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n const colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillLinearGradientStartPoint();\n const end = this.fillLinearGradientEndPoint();\n const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n const colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillRadialGradientStartPoint();\n const end = this.fillRadialGradientEndPoint();\n const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n const rgba = Util_1.Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node_1.Node.prototype.destroy.call(this);\n delete exports.shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util_1.Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n const size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n let hasCachedParent = false;\n let parent = this.getParent();\n while (parent) {\n if (parent.isCached()) {\n hasCachedParent = true;\n break;\n }\n parent = parent.getParent();\n }\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer();\n let canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferContext;\n const skipBuffer = canvas.isCache;\n const cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n const ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, 0, 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n const selfCache = this === top;\n if (!selfCache) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n const cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n const hitData = hitImageData.data;\n const len = hitData.length;\n const rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n for (let i = 0; i < len; i += 4) {\n const alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util_1.Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nexports.Shape = Shape;\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n(0, Global_2._registerNode)(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRule', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n constructor(config) {\n super(config);\n this.canvas = new Canvas_1.SceneCanvas();\n this.hitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node_1.Node.prototype.moveToTop.call(this);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n const moved = Node_1.Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n const stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node_1.Node.prototype.moveDown.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node_1.Node.prototype.moveToBottom.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n const _canvas = this.getNativeCanvasElement();\n Node_1.Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node_1.Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util_1.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util_1.Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n let spiralSearchDistance = 1;\n let continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n const shape = Shape_1.shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container_1.Container.prototype.drawScene.call(this, canvas, top);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container_1.Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n const parent = this.parent;\n const added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n if (Global_1.glob.performance && Global_1.glob.performance.now) {\n return function () {\n return Global_1.glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nclass Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (const key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util_1.Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util_1.Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nconst blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n const handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n const t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nclass Tween {\n constructor(config) {\n const that = this, node = config.node, nodeId = node._id, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo;\n let duration, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n const layers = node.getLayer() ||\n (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation_1.Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n const node = this.node, nodeId = node._id;\n let diff, len, trueEnd, trueStart, endRGBA;\n const tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n let start = node.getAttr(key);\n if (Util_1.Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util_1.Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (let n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n const startRGBA = Util_1.Util.colorToRGBA(start[n]);\n endRGBA = Util_1.Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (let n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util_1.Util.colorToRGBA(start);\n endRGBA = Util_1.Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n const node = this.node, attrs = Tween.attrs[node._id][this._id];\n let key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util_1.Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n this.pause();\n for (const key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.prototype.to = function (params) {\n const onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n const tween = new Tween(params);\n tween.play();\n};\nexports.Easings = {\n BackEaseIn(t, b, c, d) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return exports.Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n Util: Util_1.Util,\n Transform: Util_1.Transform,\n Node: Node_1.Node,\n Container: Container_1.Container,\n Stage: Stage_1.Stage,\n stages: Stage_1.stages,\n Layer: Layer_1.Layer,\n FastLayer: FastLayer_1.FastLayer,\n Group: Group_1.Group,\n DD: DragAndDrop_1.DD,\n Shape: Shape_1.Shape,\n shapes: Shape_1.shapes,\n Animation: Animation_1.Animation,\n Tween: Tween_1.Tween,\n Easings: Tween_1.Easings,\n Context: Context_1.Context,\n Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n _sceneFunc(context) {\n const angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Global_1.Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n 'innerRadius',\n 'outerRadius',\n 'angle',\n 'clockwise',\n];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Global_1 = require(\"../Global\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n const len = p.length, allPoints = [];\n for (let n = 2; n < len - 2; n += 2) {\n const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nclass Line extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n let points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n let points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexports.cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst getCubicArcLength = (xs, ys, t) => {\n let sum;\n let correctedT;\n const n = 20;\n const z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * exports.tValues[n][i] + z;\n sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nexports.getQuadraticArcLength = getQuadraticArcLength;\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n exports.binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nconst t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\nexports.t2length = t2length;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n const ca = this.dataArray;\n context.beginPath();\n let isClosed = false;\n for (let n = 0; n < ca.length; n++) {\n const c = ca[n].command;\n const p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n let points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n const start = data.points[4];\n const dTheta = data.points[5];\n const end = data.points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (let i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n let points, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n points = dataArray[i - 1].points.slice(-2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n if (length < 0.01) {\n points = dataArray[i].points.slice(0, 2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n const cp = dataArray[i];\n const p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getCubicArcLength)([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getQuadraticArcLength)([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n const len = this.getLineLength(P1x, P1y, P2x, P2y);\n if (len < 1e-10) {\n return { x: P1x, y: P1y };\n }\n if (P2x === P1x) {\n return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n }\n const m = (P2y - P1y) / (P2x - P1x);\n const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const rise = m * run;\n if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n return { x: fromX + run, y: fromY + rise };\n }\n const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n const ix = P1x + u * (P2x - P1x);\n const iy = P1y + u * (P2y - P1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const adjustedRise = m * adjustedRun;\n return { x: ix + adjustedRun, y: iy + adjustedRise };\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n const x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n const y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n const x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n const y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n const pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n let cs = data;\n const cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n const arr = cs.split('|');\n const ca = [];\n const coords = [];\n let cpx = 0;\n let cpy = 0;\n const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n let match;\n for (n = 1; n < arr.length; n++) {\n let str = arr[n];\n let c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n const p = [];\n for (let j = 0, jlen = coords.length; j < jlen; j++) {\n if (coords[j] === '00') {\n p.push(0, 0);\n continue;\n }\n const parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n let cmd = '';\n let points = [];\n const startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n var dx = p.shift();\n var dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (let idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n let len, p1, p2, t;\n const path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n const psi = psiDeg * (Math.PI / 180.0);\n const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n const cxp = (f * rx * yp) / ry;\n const cyp = (f * -ry * xp) / rx;\n const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n const vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n const vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n const vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n let dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n const PI2 = Math.PI * 2;\n const points = this.points();\n let tp = points;\n const fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n const length = this.pointerLength();\n const n = points.length;\n let dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path_1.Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n const width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n const isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x,\n y: lineRect.y - offset,\n width: lineRect.width,\n height: lineRect.height + offset * 2,\n };\n }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.Shape {\n _sceneFunc(context) {\n const rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n constructor(attrs) {\n super(attrs);\n this._loadListener = () => {\n this._requestDraw();\n };\n this.on('imageChange.konva', (props) => {\n this._removeImageLoad(props.oldVal);\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', this._loadListener);\n }\n }\n _removeImageLoad(image) {\n if (image && image['removeEventListener']) {\n image['removeEventListener']('load', this._loadListener);\n }\n }\n destroy() {\n this._removeImageLoad(this.image());\n super.destroy();\n return this;\n }\n _useBufferCanvas() {\n const hasCornerRadius = !!this.cornerRadius();\n const hasShadow = this.hasShadow();\n if (hasCornerRadius && hasShadow) {\n return true;\n }\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n const img = Util_1.Util.createImageElement();\n img.onload = function () {\n const image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nclass Label extends Group_1.Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n let that = this, n;\n const func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.Shape {\n _sceneFunc(context) {\n const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nclass Rect extends Shape_1.Shape {\n _sceneFunc(context) {\n const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\n(0, Global_1._registerNode)(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n _sceneFunc(context) {\n const points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (let n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (let n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n let minX = points[0].x;\n let maxX = points[0].y;\n let minY = points[0].x;\n let maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst PIx2 = Math.PI * 2;\nclass Ring extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation_1.Animation(() => {\n const updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n const offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n const offset = offsets[anim];\n const ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n const that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n const layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.Shape {\n _sceneFunc(context) {\n const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (let n = 1; n < numPoints * 2; n++) {\n const radius = n % 2 === 0 ? outerRadius : innerRadius;\n const x = radius * Math.sin((n * Math.PI) / numPoints);\n const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = void 0;\nexports.stringToArray = stringToArray;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nfunction stringToArray(string) {\n return [...string].reduce((acc, char, index, array) => {\n if (/\\p{Emoji}/u.test(char)) {\n const nextChar = array[index + 1];\n if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n acc.push(char + nextChar);\n array[index + 1] = '';\n }\n else {\n acc.push(char);\n }\n }\n else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n acc.push(char + array[index + 1]);\n }\n else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n acc[acc.length - 1] += char;\n }\n else if (char) {\n acc.push(char);\n }\n return acc;\n }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nclass Text extends Shape_1.Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (let n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n const textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n let translateY = lineHeightPx / 2;\n let baseline = MIDDLE;\n if (Global_1.Konva._fixTextRendering) {\n const metrics = this.measureSize('M');\n baseline = 'alphabetic';\n translateY =\n (metrics.fontBoundingBoxAscent - metrics.fontBoundingBoxDescent) / 2 +\n lineHeightPx / 2;\n }\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', baseline);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n const yOffset = Global_1.Konva._fixTextRendering\n ? Math.round(fontSize / 4)\n : Math.round(fontSize / 2);\n const x = lineTranslateX;\n const y = translateY + lineTranslateY + yOffset;\n context.moveTo(x, y);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), y);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n const yOffset = Global_1.Konva._fixTextRendering ? -Math.round(fontSize / 4) : 0;\n context.moveTo(lineTranslateX, translateY + lineTranslateY + yOffset);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n spacesNumber = text.split(' ').length - 1;\n const array = stringToArray(text);\n for (let li = 0; li < array.length; li++) {\n const letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n const width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n const str = Util_1.Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n const scaleFactor = fontSize / 100;\n return {\n actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n const width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n const letterSpacing = this.letterSpacing();\n const length = text.length;\n return getDummyContext().measureText(text).width + letterSpacing * length;\n }\n _setTextData() {\n let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n const additionalWidth = shouldAddEllipsis\n ? this._getTextWidth(ELLIPSIS)\n : 0;\n for (let i = 0, max = lines.length; i < max; ++i) {\n let line = lines[i];\n let lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n let low = 0, high = stringToArray(line).length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, lineArray = stringToArray(line), substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n const shouldConsiderEllipsis = shouldAddEllipsis &&\n fixedHeight &&\n currentHeightPx + lineHeightPx > maxHeightPx;\n const effectiveWidth = shouldConsiderEllipsis\n ? substrWidth + additionalWidth\n : substrWidth;\n if (effectiveWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n const lineArray = stringToArray(line);\n const matchArray = stringToArray(match);\n const nextChar = lineArray[matchArray.length];\n const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n let wrapIndex;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = matchArray.length;\n }\n else {\n const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n const lastDashIndex = matchArray.lastIndexOf(DASH);\n wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = lineArray.slice(0, low).join('');\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n const lineArray = stringToArray(line);\n line = lineArray.slice(low).join('').trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n const lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nexports.Text = Text;\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n(0, Global_2._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nclass TextPath extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util_1.Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path_1.Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length - 1 > totalLength) {\n return null;\n }\n return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n const textDecoration = this.textDecoration();\n const fill = this.fill();\n const fontSize = this.fontSize();\n const glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n const glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n const p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n const p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text_1.Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text_1.Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n const dummyCanvas = this.dummyCanvas;\n const _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n const metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const { width, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n const charArr = (0, Text_1.stringToArray)(this.text());\n let offsetToGlyph = offset;\n for (let i = 0; i < charArr.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n if (charArr[i] === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint)\n return;\n const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n const points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n let minX = points[0] || 0;\n let maxX = points[0] || 0;\n let minY = points[1] || 0;\n let maxY = points[1] || 0;\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n const fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nexports.TextPath = TextPath;\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', undefined);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n];\nconst ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n const angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nconst ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Global_1.Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nclass Transformer extends Group_1.Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util_1.Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n if (node._attrsAffectingSize.length) {\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n }\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n const elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n const rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const absScale = node.getAbsoluteScale(relative);\n const absPos = node.getAbsolutePosition(relative);\n const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Global_1.Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Global_1.Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n const node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n const trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n const transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Util_1.Transform();\n tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n const transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n const anchor = new Rect_1.Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n const self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n const rad = Global_1.Konva.getAngle(this.rotation());\n const rotateCursor = this.rotateAnchorCursor();\n const cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n const back = new Shape_1.Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc(ctx, shape) {\n const tr = shape.getParent();\n const padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n const padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n if (this._transforming) {\n return;\n }\n this._movingAnchorName = e.target.name().split(' ')[0];\n const attrs = this._getNodeRect();\n const width = attrs.width;\n const height = attrs.height;\n const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n const ap = e.target.getAbsolutePosition();\n const pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n let x, y, newHypotenuse;\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n const stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n const attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n const oldRotation = Global_1.Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Global_1.Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n const shiftBehavior = this.shiftBehavior();\n let keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n const topLeft = this.findOne('.top-left');\n const bottomRight = this.findOne('.bottom-right');\n const topOffsetX = topLeft.x();\n const topOffsetY = topLeft.y();\n const bottomOffsetX = this.getWidth() - bottomRight.x();\n const bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n const absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n const node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n const oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n const t = new Util_1.Transform();\n t.rotate(Global_1.Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Util_1.Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Util_1.Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Util_1.Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n const attrs = this._getNodeRect();\n this.rotation(Util_1.Util._getRotation(attrs.rotation));\n const width = attrs.width;\n const height = attrs.height;\n const enabledAnchors = this.enabledAnchors();\n const resizeEnabled = this.resizeEnabled();\n const padding = this.padding();\n const anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group_1.Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node_1.Node.prototype.toObject.call(this);\n }\n clone(obj) {\n const node = Node_1.Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nexports.Transformer = Transformer;\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util_1.Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util_1.Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Global_1.Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n const pixels = imageData.data, width = imageData.width, height = imageData.height;\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n yp = width;\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nconst Blur = function Blur(imageData) {\n const radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n const data = imageData.data, nPixels = data.length;\n let red = 150, green = 150, blue = 150;\n for (let i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n const strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4;\n let dirY = 0, dirX = 0, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util_1.Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n const offsetY = (y - 1) * w4;\n let otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n const offsetYOther = (y - 1 + otherY) * w * 4;\n let x = w;\n do {\n const offset = offsetY + (x - 1) * 4;\n let otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n const offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n const dR = data[offset] - data[offsetOther];\n const dG = data[offset + 1] - data[offsetOther + 1];\n const dB = data[offset + 2] - data[offsetOther + 2];\n let dif = dR;\n const absDif = dif > 0 ? dif : -dif;\n const absG = dG > 0 ? dG : -dG;\n const absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n const r = data[offset] + dif;\n const g = data[offset + 1] + dif;\n const b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n let grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', undefined, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, undefined, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n let toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nconst Enhance = function (imageData) {\n const data = imageData.data, nSubPixels = data.length;\n let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n const enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n let rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\nexports.Grayscale = Grayscale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\nexports.HSL = HSL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst HSV = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\nexports.Invert = Invert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst ToPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize;\n const conversion = ((360 / tSize) * Math.PI) / 180;\n for (let theta = 0; theta < tSize; theta += 1) {\n const sin = Math.sin(theta * conversion);\n const cos = Math.cos(theta * conversion);\n for (let radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n let i = (y * xSize + x) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst FromPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n let x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n const dx = x - xMid;\n const dy = y - yMid;\n const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n let i = (y1 * xSize + x1) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst Kaleidoscope = function (imageData) {\n const xSize = imageData.width, ySize = imageData.height;\n let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n let power = Math.round(this.kaleidoscopePower());\n const angle = Math.round(this.kaleidoscopeAngle());\n const offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n const tempCanvas = Util_1.Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n const scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util_1.Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n let minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n let sectionSize = minSectionSize;\n let xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n let idx = (y * idata.width + x) * 4;\n const d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n const m = [0, 0, 0];\n for (let i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n const rgbv_no = pixelAt(idata, 0, 0);\n const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n const thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n const mask = [];\n for (let i = 0; i < idata.width * idata.height; i++) {\n const d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (let i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n const weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nconst Mask = function (imageData) {\n const threshold = this.threshold();\n let mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Noise = function (imageData) {\n const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n for (let i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util_1.Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n for (let i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n for (let i = 0; i < nPixels; i += 4) {\n const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGBA = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n for (let i = 0; i < nPixels; i += 4) {\n const ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n const data = imageData.data, nPixels = data.length;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\nexports.Sepia = Sepia;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n const data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4;\n let y = h;\n do {\n const offsetY = (y - 1) * w4;\n let x = w;\n do {\n const offset = offsetY + (x - 1) * 4;\n let r = data[offset];\n let g = data[offset + 1];\n let b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\nexports.Solarize = Solarize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Threshold = function (imageData) {\n const level = this.threshold() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n Arc: Arc_1.Arc,\n Arrow: Arrow_1.Arrow,\n Circle: Circle_1.Circle,\n Ellipse: Ellipse_1.Ellipse,\n Image: Image_1.Image,\n Label: Label_1.Label,\n Tag: Label_1.Tag,\n Line: Line_1.Line,\n Path: Path_1.Path,\n Rect: Rect_1.Rect,\n RegularPolygon: RegularPolygon_1.RegularPolygon,\n Ring: Ring_1.Ring,\n Sprite: Sprite_1.Sprite,\n Star: Star_1.Star,\n Text: Text_1.Text,\n TextPath: TextPath_1.TextPath,\n Transformer: Transformer_1.Transformer,\n Wedge: Wedge_1.Wedge,\n Filters: {\n Blur: Blur_1.Blur,\n Brighten: Brighten_1.Brighten,\n Contrast: Contrast_1.Contrast,\n Emboss: Emboss_1.Emboss,\n Enhance: Enhance_1.Enhance,\n Grayscale: Grayscale_1.Grayscale,\n HSL: HSL_1.HSL,\n HSV: HSV_1.HSV,\n Invert: Invert_1.Invert,\n Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n Mask: Mask_1.Mask,\n Noise: Noise_1.Noise,\n Pixelate: Pixelate_1.Pixelate,\n Posterize: Posterize_1.Posterize,\n RGB: RGB_1.RGB,\n RGBA: RGBA_1.RGBA,\n Sepia: Sepia_1.Sepia,\n Solarize: Solarize_1.Solarize,\n Threshold: Threshold_1.Threshold,\n },\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nvar _CoreInternals_1 = require(\"./_CoreInternals\");\nObject.defineProperty(exports, \"Konva\", { enumerable: true, get: function () { return _CoreInternals_1.Konva; } });\nconst _CoreInternals_2 = require(\"./_CoreInternals\");\nmodule.exports = _CoreInternals_2.Konva;\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;ch||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{dc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?cc(a):\"\"}var fc=Object.prototype.hasOwnProperty,gc=[],hc=-1;function ic(a){return{current:a}}\nfunction q(a){0>hc||(a.current=gc[hc],gc[hc]=null,hc--)}function v(a,b){hc++;gc[hc]=a.current;a.current=b}var jc={},x=ic(jc),z=ic(!1),kc=jc;function mc(a,b){var c=a.type.contextTypes;if(!c)return jc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction A(a){a=a.childContextTypes;return null!==a&&void 0!==a}function nc(){q(z);q(x)}function oc(a,b,c){if(x.current!==jc)throw Error(n(168));v(x,b);v(z,c)}function pc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,va(a)||\"Unknown\",e));return ca({},c,d)}\nfunction qc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||jc;kc=x.current;v(x,a);v(z,z.current);return!0}function rc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=pc(a,b,kc),d.__reactInternalMemoizedMergedChildContext=a,q(z),q(x),v(x,a)):q(z);v(z,c)}var tc=Math.clz32?Math.clz32:sc,uc=Math.log,vc=Math.LN2;function sc(a){a>>>=0;return 0===a?32:31-(uc(a)/vc|0)|0}var wc=64,xc=4194304;\nfunction yc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function zc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=yc(h):(f&=g,0!==f&&(d=yc(f)))}else g=c&~e,0!==g?d=yc(g):0!==f&&(d=yc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Fc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-tc(b);a[b]=c}function Gc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0>=g;e-=g;id=1<<32-tc(b)+e|c<t?(E=u,u=null):E=u.sibling;var y=p(e,u,h[t],k);if(null===y){null===u&&(u=E);break}a&&u&&null===y.alternate&&b(e,u);g=f(y,g,t);null===m?l=y:m.sibling=y;m=y;u=E}if(t===h.length)return c(e,u),F&&kd(e,t),l;if(null===u){for(;tt?(E=m,m=null):E=m.sibling;var w=p(e,m,y.value,k);if(null===w){null===m&&(m=E);break}a&&m&&null===w.alternate&&b(e,m);g=f(w,g,t);null===u?l=w:u.sibling=w;u=w;m=E}if(y.done)return c(e,\nm),F&&kd(e,t),l;if(null===m){for(;!y.done;t++,y=h.next())y=r(e,y.value,k),null!==y&&(g=f(y,g,t),null===u?l=y:u.sibling=y,u=y);F&&kd(e,t);return l}for(m=d(e,m);!y.done;t++,y=h.next())y=B(m,e,t,y.value,k),null!==y&&(a&&null!==y.alternate&&m.delete(null===y.key?t:y.key),g=f(y,g,t),null===u?l=y:u.sibling=y,u=y);a&&m.forEach(function(a){return b(e,a)});F&&kd(e,t);return l}function ya(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ha&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case ea:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ha){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===qa&&Hd(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Fd(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ha?(d=Nd(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ld(f.type,f.key,f.props,null,a.mode,h),h.ref=Fd(a,d,f),h.return=\na,a=h)}return g(a);case fa:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Md(f,a.mode,h);d.return=a;a=d}return g(a);case qa:return l=f._init,ya(a,d,l(f._payload),h)}if(Da(f))return w(a,d,f,h);if(ta(f))return Y(a,d,f,h);Gd(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Kd(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return ya}var Od=Id(!0),Pd=Id(!1),Qd=ic(null),Rd=null,Sd=null,Td=null;function Ud(){Td=Sd=Rd=null}function Vd(a,b,c){Sa?(v(Qd,b._currentValue),b._currentValue=c):(v(Qd,b._currentValue2),b._currentValue2=c)}function Wd(a){var b=Qd.current;q(Qd);Sa?a._currentValue=b:a._currentValue2=b}\nfunction Xd(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Yd(a,b){Rd=a;Td=Sd=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(G=!0),a.firstContext=null)}\nfunction Zd(a){var b=Sa?a._currentValue:a._currentValue2;if(Td!==a)if(a={context:a,memoizedValue:b,next:null},null===Sd){if(null===Rd)throw Error(n(308));Sd=a;Rd.dependencies={lanes:0,firstContext:a}}else Sd=Sd.next=a;return b}var $d=null;function ae(a){null===$d?$d=[a]:$d.push(a)}function be(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,ae(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ce(a,d)}\nfunction ce(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var de=!1;function ee(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction fe(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ge(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction he(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(H&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ce(a,c)}e=d.interleaved;null===e?(b.next=b,ae(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ce(a,c)}function ie(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Hc(a,c)}}\nfunction je(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction ke(a,b,c,d){var e=a.updateQueue;de=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var r=e.baseState;g=0;m=l=k=null;h=f;do{var p=h.lane,B=h.eventTime;if((d&p)===p){null!==m&&(m=m.next={eventTime:B,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var w=a,Y=h;p=b;B=c;switch(Y.tag){case 1:w=Y.payload;if(\"function\"===typeof w){r=w.call(B,r,p);break a}r=w;break a;case 3:w.flags=w.flags&-65537|128;case 0:w=Y.payload;p=\"function\"===typeof w?w.call(B,r,p):w;if(null===p||void 0===p)break a;r=ca({},r,p);break a;case 2:de=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,p=e.effects,null===p?e.effects=[h]:p.push(h))}else B={eventTime:B,lane:p,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=B,k=r):m=m.next=B,g|=\np;h=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else p=h,h=p.next,p.next=null,e.lastBaseUpdate=p,e.shared.pending=null}while(1);null===m&&(k=r);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);le|=g;a.lanes=g;a.memoizedState=r}}\nfunction me(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Ae.transition;Ae.transition={};try{a(!1),b()}finally{C=c,Ae.transition=d}}function rf(){return Oe().memoizedState}\nfunction sf(a,b,c){var d=tf(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(uf(a))vf(b,c);else if(c=be(a,b,c,d),null!==c){var e=O();af(c,a,d,e);wf(c,b,d)}}\nfunction cf(a,b,c){var d=tf(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(uf(a))vf(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Vc(h,g)){var k=b.interleaved;null===k?(e.next=e,ae(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=be(a,b,e,d);null!==c&&(e=O(),af(c,a,d,e),wf(c,b,d))}}\nfunction uf(a){var b=a.alternate;return a===J||null!==b&&b===J}function vf(a,b){De=Ce=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Hc(a,c)}}\nvar Le={readContext:Zd,useCallback:M,useContext:M,useEffect:M,useImperativeHandle:M,useInsertionEffect:M,useLayoutEffect:M,useMemo:M,useReducer:M,useRef:M,useState:M,useDebugValue:M,useDeferredValue:M,useTransition:M,useMutableSource:M,useSyncExternalStore:M,useId:M,unstable_isNewReconciler:!1},Ie={readContext:Zd,useCallback:function(a,b){Ne().memoizedState=[a,void 0===b?null:b];return a},useContext:Zd,useEffect:gf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ef(4194308,\n4,kf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ef(4194308,4,a,b)},useInsertionEffect:function(a,b){return ef(4,2,a,b)},useMemo:function(a,b){var c=Ne();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Ne();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,J,a);return[d.memoizedState,a]},useRef:function(a){var b=\nNe();a={current:a};return b.memoizedState=a},useState:bf,useDebugValue:mf,useDeferredValue:function(a){return Ne().memoizedState=a},useTransition:function(){var a=bf(!1),b=a[0];a=qf.bind(null,a[1]);Ne().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=J,e=Ne();if(F){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===N)throw Error(n(349));0!==(Be&30)||Ye(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;gf(Ve.bind(null,d,\nf,a),[a]);d.flags|=2048;We(9,Xe.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Ne(),b=N.identifierPrefix;if(F){var c=jd;var d=id;c=(d&~(1<<32-tc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Ee++;0Dg&&(b.flags|=128,d=!0,Ag(e,!1),b.lanes=4194304)}else{if(!d)if(a=we(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Ag(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!F)return Q(b),null}else 2*D()-e.renderingStartTime>Dg&&1073741824!==c&&(b.flags|=128,d=!0,Ag(e,!1),b.lanes=\n4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==e.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=D(),b.sibling=null,a=I.current,v(I,d?a&1|2:a&1),b;Q(b);return null;case 22:case 23:return Eg(),c=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==c&&(b.flags|=8192),c&&0!==(b.mode&1)?0!==($f&1073741824)&&(Q(b),Ta&&b.subtreeFlags&6&&(b.flags|=8192)):Q(b),null;case 24:return null;case 25:return null}throw Error(n(156,\nb.tag));}\nfunction Fg(a,b){nd(b);switch(b.tag){case 1:return A(b.type)&&nc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return te(),q(z),q(x),ye(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ve(b),null;case 13:q(I);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));Ad()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return q(I),null;case 4:return te(),null;case 10:return Wd(b.type._context),null;case 22:case 23:return Eg(),\nnull;case 24:return null;default:return null}}var Gg=!1,S=!1,Hg=\"function\"===typeof WeakSet?WeakSet:Set,T=null;function Ig(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){U(a,b,d)}else c.current=null}function Jg(a,b,c){try{c()}catch(d){U(a,b,d)}}var Kg=!1;\nfunction Lg(a,b){Ha(a.containerInfo);for(T=b;null!==T;)if(a=T,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,T=b;else for(;null!==T;){a=T;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:xf(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ta&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){U(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;T=b;break}T=a.return}c=Kg;Kg=!1;return c}function Mg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Jg(b,c,f)}e=e.next}while(e!==d)}}function Ng(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Og(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Ea(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}function Pg(a){var b=a.alternate;null!==b&&(a.alternate=null,Pg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}\nfunction Qg(a){return 5===a.tag||3===a.tag||4===a.tag}function Rg(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Qg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Sg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Sg(a,b,c),a=a.sibling;null!==a;)Sg(a,b,c),a=a.sibling}function Tg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Tg(a,b,c),a=a.sibling;null!==a;)Tg(a,b,c),a=a.sibling}var V=null,Ug=!1;function Vg(a,b,c){for(c=c.child;null!==c;)Wg(a,b,c),c=c.sibling}\nfunction Wg(a,b,c){if(Sc&&\"function\"===typeof Sc.onCommitFiberUnmount)try{Sc.onCommitFiberUnmount(Rc,c)}catch(h){}switch(c.tag){case 5:S||Ig(c,b);case 6:if(Ta){var d=V,e=Ug;V=null;Vg(a,b,c);V=d;Ug=e;null!==V&&(Ug?rb(V,c.stateNode):qb(V,c.stateNode))}else Vg(a,b,c);break;case 18:Ta&&null!==V&&(Ug?Yb(V,c.stateNode):Xb(V,c.stateNode));break;case 4:Ta?(d=V,e=Ug,V=c.stateNode.containerInfo,Ug=!0,Vg(a,b,c),V=d,Ug=e):(Ua&&(d=c.stateNode.containerInfo,e=zb(d),Cb(d,e)),Vg(a,b,c));break;case 0:case 11:case 14:case 15:if(!S&&\n(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Jg(c,b,g):0!==(f&4)&&Jg(c,b,g));e=e.next}while(e!==d)}Vg(a,b,c);break;case 1:if(!S&&(Ig(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){U(c,b,h)}Vg(a,b,c);break;case 21:Vg(a,b,c);break;case 22:c.mode&1?(S=(d=S)||null!==c.memoizedState,Vg(a,b,c),S=d):Vg(a,b,c);break;default:Vg(a,b,\nc)}}function Xg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Hg);b.forEach(function(b){var d=Yg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Zg(a,b){var c=b.deletions;if(null!==c)for(var d=0;d\";case ih:return\":has(\"+(ph(a)||\"\")+\")\";case jh:return'[role=\"'+a.value+'\"]';case lh:return'\"'+a.value+'\"';case kh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction qh(a,b){var c=[];a=[a,0];for(var d=0;de&&(e=g);d&=~f}d=e;d=D()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*sh(d/1960))-d;if(10a?16:a;if(null===Dh)var d=!1;else{a=Dh;Dh=null;Eh=0;if(0!==(H&6))throw Error(n(331));var e=H;H|=4;for(T=a.current;null!==T;){var f=T,g=f.child;if(0!==(T.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kD()-bh?Rh(a,0):xh|=c);Kh(a,b)}function di(a,b){0===b&&(0===(a.mode&1)?b=1:(b=xc,xc<<=1,0===(xc&130023424)&&(xc=4194304)));var c=O();a=ce(a,b);null!==a&&(Fc(a,b,c),Kh(a,c))}function og(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);di(a,c)}\nfunction Yg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);di(a,c)}var ai;\nai=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||z.current)G=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return G=!1,sg(a,b,c);G=0!==(a.flags&131072)?!0:!1}else G=!1,F&&0!==(b.flags&1048576)&&ld(b,ed,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;cg(a,b);a=b.pendingProps;var e=mc(b,x.current);Yd(b,c);e=He(null,b,d,a,e,c);var f=Me();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=null,\nA(d)?(f=!0,qc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ee(b),e.updater=zf,b.stateNode=e,e._reactInternals=b,Df(b,d,a,c),b=dg(null,b,d,!0,f,c)):(b.tag=0,F&&f&&md(b),P(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{cg(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=ei(d);a=xf(d,a);switch(e){case 0:b=Xf(null,b,d,a,c);break a;case 1:b=bg(null,b,d,a,c);break a;case 11:b=Sf(null,b,d,a,c);break a;case 14:b=Uf(null,b,d,xf(d.type,a),c);break a}throw Error(n(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),Xf(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),bg(a,b,d,e,c);case 3:a:{eg(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;fe(a,b);ke(b,d,null,c);var g=b.memoizedState;d=g.element;if(Va&&f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ef(Error(n(423)),b);b=fg(a,b,d,c,e);break a}else if(d!==e){e=Ef(Error(n(424)),b);b=fg(a,b,d,c,e);break a}else for(Va&&(pd=Pb(b.stateNode.containerInfo),od=b,F=!0,rd=null,qd=!1),c=Pd(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ad();if(d===e){b=Tf(a,b,c);break a}P(a,b,d,c)}b=b.child}return b;case 5:return ue(b),null===a&&wd(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Na(d,e)?g=null:null!==f&&Na(d,f)&&(b.flags|=32),\nag(a,b),P(a,b,g,c),b.child;case 6:return null===a&&wd(b),null;case 13:return ig(a,b,c);case 4:return se(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Od(b,null,d,c):P(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),Sf(a,b,d,e,c);case 7:return P(a,b,b.pendingProps,c),b.child;case 8:return P(a,b,b.pendingProps.children,c),b.child;case 12:return P(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;Vd(b,d,g);if(null!==f)if(Vc(f.value,g)){if(f.children===e.children&&!z.current){b=Tf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ge(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Xd(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===\nf.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Xd(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}P(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Yd(b,c),e=Zd(e),d=d(e),b.flags|=1,P(a,b,d,c),b.child;case 14:return d=b.type,e=xf(d,b.pendingProps),\ne=xf(d.type,e),Uf(a,b,d,e,c);case 15:return Wf(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:xf(d,e),cg(a,b),b.tag=1,A(d)?(a=!0,qc(b)):a=!1,Yd(b,c),Bf(b,d,e),Df(b,d,e,c),dg(null,b,d,!0,a,c);case 19:return rg(a,b,c);case 22:return Yf(a,b,c)}throw Error(n(156,b.tag));};function Mh(a,b){return Jc(a,b)}\nfunction fi(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function td(a,b,c,d){return new fi(a,b,c,d)}function Vf(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction ei(a){if(\"function\"===typeof a)return Vf(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===ma)return 11;if(a===pa)return 14}return 2}\nfunction Jd(a,b){var c=a.alternate;null===c?(c=td(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ld(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Vf(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ha:return Nd(c.children,e,f,b);case ia:g=8;e|=8;break;case ja:return a=td(12,c,b,e|2),a.elementType=ja,a.lanes=f,a;case na:return a=td(13,c,b,e),a.elementType=na,a.lanes=f,a;case oa:return a=td(19,c,b,e),a.elementType=oa,a.lanes=f,a;case ra:return jg(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case ka:g=10;break a;case la:g=9;break a;case ma:g=11;\nbreak a;case pa:g=14;break a;case qa:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=td(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Nd(a,b,c,d){a=td(7,a,d,b);a.lanes=c;return a}function jg(a,b,c,d){a=td(22,a,d,b);a.elementType=ra;a.lanes=c;a.stateNode={isHidden:!1};return a}function Kd(a,b,c){a=td(6,a,null,b);a.lanes=c;return a}\nfunction Md(a,b,c){b=td(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction gi(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Ra;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ec(0);this.expirationTimes=Ec(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ec(0);this.identifierPrefix=d;this.onRecoverableError=e;Va&&(this.mutableSourceEagerHydrationData=\nnull)}function hi(a,b,c,d,e,f,g,h,k){a=new gi(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=td(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ee(f);return a}\nfunction ii(a){if(!a)return jc;a=a._reactInternals;a:{if(wa(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(A(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(A(c))return pc(a,c,b)}return b}\nfunction ji(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Aa(b);return null===a?null:a.stateNode}function ki(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c=l&&f>=r&&e<=m&&g<=p){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||pg)){r>f&&(k.height+=r-f,k.y=f);pe)){l>d&&(k.width+=\nl-d,k.x=d);mc&&(c=g)),g \")+\"\\n\\nNo matching component was found for:\\n \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Ea(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:da.ReactCurrentDispatcher,findHostInstanceByFiber:mi,findFiberByHostInstance:a.findFiberByHostInstance||\nni,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Rc=b.inject(a),Sc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=rh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=O(),g=tf(e);c=ii(c);null===b.context?b.context=c:b.pendingContext=c;b=ge(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=he(e,b,g);null!==a&&(af(a,e,g,f),ie(a,e,g));return g};\n\n return exports;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}\n","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","import { Konva } from 'konva/lib/Global.js';\nconst propsToSkip = {\n children: true,\n ref: true,\n key: true,\n style: true,\n forwardedRef: true,\n unstable_applyCache: true,\n unstable_applyDrawHitFromCache: true,\n};\nlet zIndexWarningShowed = false;\nlet dragWarningShowed = false;\nexport const EVENTS_NAMESPACE = '.react-konva-event';\nlet useStrictMode = false;\nexport function toggleStrictMode(value) {\n useStrictMode = value;\n}\nconst DRAGGABLE_WARNING = `ReactKonva: You have a Konva node with draggable = true and position defined but no onDragMove or onDragEnd events are handled.\nPosition of a node will be changed during drag&drop, so you should update state of the react app as well.\nConsider to add onDragMove or onDragEnd events.\nFor more info see: https://github.com/konvajs/react-konva/issues/256\n`;\nconst Z_INDEX_WARNING = `ReactKonva: You are using \"zIndex\" attribute for a Konva node.\nreact-konva may get confused with ordering. Just define correct order of elements in your render function of a component.\nFor more info see: https://github.com/konvajs/react-konva/issues/194\n`;\nconst EMPTY_PROPS = {};\nexport function applyNodeProps(instance, props, oldProps = EMPTY_PROPS) {\n // don't use zIndex in react-konva\n if (!zIndexWarningShowed && 'zIndex' in props) {\n console.warn(Z_INDEX_WARNING);\n zIndexWarningShowed = true;\n }\n // check correct draggable usage\n if (!dragWarningShowed && props.draggable) {\n var hasPosition = props.x !== undefined || props.y !== undefined;\n var hasEvents = props.onDragEnd || props.onDragMove;\n if (hasPosition && !hasEvents) {\n console.warn(DRAGGABLE_WARNING);\n dragWarningShowed = true;\n }\n }\n // check old props\n // we need to unset properties that are not in new props\n // and remove all events\n for (var key in oldProps) {\n if (propsToSkip[key]) {\n continue;\n }\n var isEvent = key.slice(0, 2) === 'on';\n var propChanged = oldProps[key] !== props[key];\n // if that is a changed event, we need to remove it\n if (isEvent && propChanged) {\n var eventName = key.substr(2).toLowerCase();\n if (eventName.substr(0, 7) === 'content') {\n eventName =\n 'content' +\n eventName.substr(7, 1).toUpperCase() +\n eventName.substr(8);\n }\n instance.off(eventName, oldProps[key]);\n }\n var toRemove = !props.hasOwnProperty(key);\n if (toRemove) {\n instance.setAttr(key, undefined);\n }\n }\n var strictUpdate = useStrictMode || props._useStrictMode;\n var updatedProps = {};\n var hasUpdates = false;\n const newEvents = {};\n for (var key in props) {\n if (propsToSkip[key]) {\n continue;\n }\n var isEvent = key.slice(0, 2) === 'on';\n var toAdd = oldProps[key] !== props[key];\n if (isEvent && toAdd) {\n var eventName = key.substr(2).toLowerCase();\n if (eventName.substr(0, 7) === 'content') {\n eventName =\n 'content' +\n eventName.substr(7, 1).toUpperCase() +\n eventName.substr(8);\n }\n // check that event is not undefined\n if (props[key]) {\n newEvents[eventName] = props[key];\n }\n }\n if (!isEvent &&\n (props[key] !== oldProps[key] ||\n (strictUpdate && props[key] !== instance.getAttr(key)))) {\n hasUpdates = true;\n updatedProps[key] = props[key];\n }\n }\n if (hasUpdates) {\n instance.setAttrs(updatedProps);\n updatePicture(instance);\n }\n // subscribe to events AFTER we set attrs\n // we need it to fix https://github.com/konvajs/react-konva/issues/471\n // settings attrs may add events. Like \"draggable: true\" will add \"mousedown\" listener\n for (var eventName in newEvents) {\n instance.on(eventName + EVENTS_NAMESPACE, newEvents[eventName]);\n }\n}\nexport function updatePicture(node) {\n if (!Konva.autoDrawEnabled) {\n var drawingNode = node.getLayer() || node.getStage();\n drawingNode && drawingNode.batchDraw();\n }\n}\n","import Konva from 'konva/lib/Core.js';\nimport { applyNodeProps, updatePicture, EVENTS_NAMESPACE } from './makeUpdates.js';\nexport { unstable_now as now, unstable_IdlePriority as idlePriority, unstable_runWithPriority as run, } from 'scheduler';\nimport { DefaultEventPriority } from 'react-reconciler/constants.js';\nconst NO_CONTEXT = {};\nconst UPDATE_SIGNAL = {};\n// for react-spring capability\nKonva.Node.prototype._applyProps = applyNodeProps;\nexport function appendInitialChild(parentInstance, child) {\n if (typeof child === 'string') {\n // Noop for string children of Text (eg foo)\n console.error(`Do not use plain text as child of Konva.Node. You are using text: ${child}`);\n return;\n }\n parentInstance.add(child);\n updatePicture(parentInstance);\n}\nexport function createInstance(type, props, internalInstanceHandle) {\n let NodeClass = Konva[type];\n if (!NodeClass) {\n console.error(`Konva has no node with the type ${type}. Group will be used instead. If you use minimal version of react-konva, just import required nodes into Konva: \"import \"konva/lib/shapes/${type}\" If you want to render DOM elements as part of canvas tree take a look into this demo: https://konvajs.github.io/docs/react/DOM_Portal.html`);\n NodeClass = Konva.Group;\n }\n // we need to split props into events and non events\n // we we can pass non events into constructor directly\n // that way the performance should be better\n // we we apply change \"applyNodeProps\"\n // then it will trigger change events on first run\n // but we don't need them!\n const propsWithoutEvents = {};\n const propsWithOnlyEvents = {};\n for (var key in props) {\n var isEvent = key.slice(0, 2) === 'on';\n if (isEvent) {\n propsWithOnlyEvents[key] = props[key];\n }\n else {\n propsWithoutEvents[key] = props[key];\n }\n }\n const instance = new NodeClass(propsWithoutEvents);\n applyNodeProps(instance, propsWithOnlyEvents);\n return instance;\n}\nexport function createTextInstance(text, rootContainerInstance, internalInstanceHandle) {\n console.error(`Text components are not supported for now in ReactKonva. Your text is: \"${text}\"`);\n}\nexport function finalizeInitialChildren(domElement, type, props) {\n return false;\n}\nexport function getPublicInstance(instance) {\n return instance;\n}\nexport function prepareForCommit() {\n return null;\n}\nexport function preparePortalMount() {\n return null;\n}\nexport function prepareUpdate(domElement, type, oldProps, newProps) {\n return UPDATE_SIGNAL;\n}\nexport function resetAfterCommit() {\n // Noop\n}\nexport function resetTextContent(domElement) {\n // Noop\n}\nexport function shouldDeprioritizeSubtree(type, props) {\n return false;\n}\nexport function getRootHostContext() {\n return NO_CONTEXT;\n}\nexport function getChildHostContext() {\n return NO_CONTEXT;\n}\nexport const scheduleTimeout = setTimeout;\nexport const cancelTimeout = clearTimeout;\nexport const noTimeout = -1;\n// export const schedulePassiveEffects = scheduleDeferredCallback;\n// export const cancelPassiveEffects = cancelDeferredCallback;\nexport function shouldSetTextContent(type, props) {\n return false;\n}\n// The Konva renderer is secondary to the React DOM renderer.\nexport const isPrimaryRenderer = false;\nexport const warnsIfNotActing = true;\nexport const supportsMutation = true;\nexport function appendChild(parentInstance, child) {\n if (child.parent === parentInstance) {\n child.moveToTop();\n }\n else {\n parentInstance.add(child);\n }\n updatePicture(parentInstance);\n}\nexport function appendChildToContainer(parentInstance, child) {\n if (child.parent === parentInstance) {\n child.moveToTop();\n }\n else {\n parentInstance.add(child);\n }\n updatePicture(parentInstance);\n}\nexport function insertBefore(parentInstance, child, beforeChild) {\n // child._remove() will not stop dragging\n // but child.remove() will stop it, but we don't need it\n // removing will reset zIndexes\n child._remove();\n parentInstance.add(child);\n child.setZIndex(beforeChild.getZIndex());\n updatePicture(parentInstance);\n}\nexport function insertInContainerBefore(parentInstance, child, beforeChild) {\n insertBefore(parentInstance, child, beforeChild);\n}\nexport function removeChild(parentInstance, child) {\n child.destroy();\n child.off(EVENTS_NAMESPACE);\n updatePicture(parentInstance);\n}\nexport function removeChildFromContainer(parentInstance, child) {\n child.destroy();\n child.off(EVENTS_NAMESPACE);\n updatePicture(parentInstance);\n}\nexport function commitTextUpdate(textInstance, oldText, newText) {\n console.error(`Text components are not yet supported in ReactKonva. You text is: \"${newText}\"`);\n}\nexport function commitMount(instance, type, newProps) {\n // Noop\n}\nexport function commitUpdate(instance, updatePayload, type, oldProps, newProps) {\n applyNodeProps(instance, newProps, oldProps);\n}\nexport function hideInstance(instance) {\n instance.hide();\n updatePicture(instance);\n}\nexport function hideTextInstance(textInstance) {\n // Noop\n}\nexport function unhideInstance(instance, props) {\n if (props.visible == null || props.visible) {\n instance.show();\n }\n}\nexport function unhideTextInstance(textInstance, text) {\n // Noop\n}\nexport function clearContainer(container) {\n // Noop\n}\nexport function detachDeletedInstance() { }\nexport const getCurrentEventPriority = () => DefaultEventPriority;\n","import * as React from \"react\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar _a, _b;\nconst useIsomorphicLayoutEffect = typeof window !== \"undefined\" && (((_a = window.document) == null ? void 0 : _a.createElement) || ((_b = window.navigator) == null ? void 0 : _b.product) === \"ReactNative\") ? React.useLayoutEffect : React.useEffect;\nfunction traverseFiber(fiber, ascending, selector) {\n if (!fiber)\n return;\n if (selector(fiber) === true)\n return fiber;\n let child = ascending ? fiber.return : fiber.child;\n while (child) {\n const match = traverseFiber(child, ascending, selector);\n if (match)\n return match;\n child = ascending ? null : child.sibling;\n }\n}\nfunction wrapContext(context) {\n try {\n return Object.defineProperties(context, {\n _currentRenderer: {\n get() {\n return null;\n },\n set() {\n }\n },\n _currentRenderer2: {\n get() {\n return null;\n },\n set() {\n }\n }\n });\n } catch (_) {\n return context;\n }\n}\nconst error = console.error;\nconsole.error = function() {\n const message = [...arguments].join(\"\");\n if ((message == null ? void 0 : message.startsWith(\"Warning:\")) && message.includes(\"useContext\")) {\n console.error = error;\n return;\n }\n return error.apply(this, arguments);\n};\nconst FiberContext = wrapContext(React.createContext(null));\nclass FiberProvider extends React.Component {\n render() {\n return /* @__PURE__ */ React.createElement(FiberContext.Provider, {\n value: this._reactInternals\n }, this.props.children);\n }\n}\nfunction useFiber() {\n const root = React.useContext(FiberContext);\n if (root === null)\n throw new Error(\"its-fine: useFiber must be called within a !\");\n const id = React.useId();\n const fiber = React.useMemo(() => {\n for (const maybeFiber of [root, root == null ? void 0 : root.alternate]) {\n if (!maybeFiber)\n continue;\n const fiber2 = traverseFiber(maybeFiber, false, (node) => {\n let state = node.memoizedState;\n while (state) {\n if (state.memoizedState === id)\n return true;\n state = state.next;\n }\n });\n if (fiber2)\n return fiber2;\n }\n }, [root, id]);\n return fiber;\n}\nfunction useContainer() {\n const fiber = useFiber();\n const root = React.useMemo(\n () => traverseFiber(fiber, true, (node) => {\n var _a2;\n return ((_a2 = node.stateNode) == null ? void 0 : _a2.containerInfo) != null;\n }),\n [fiber]\n );\n return root == null ? void 0 : root.stateNode.containerInfo;\n}\nfunction useNearestChild(type) {\n const fiber = useFiber();\n const childRef = React.useRef();\n useIsomorphicLayoutEffect(() => {\n var _a2;\n childRef.current = (_a2 = traverseFiber(\n fiber,\n false,\n (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n )) == null ? void 0 : _a2.stateNode;\n }, [fiber]);\n return childRef;\n}\nfunction useNearestParent(type) {\n const fiber = useFiber();\n const parentRef = React.useRef();\n useIsomorphicLayoutEffect(() => {\n var _a2;\n parentRef.current = (_a2 = traverseFiber(\n fiber,\n true,\n (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n )) == null ? void 0 : _a2.stateNode;\n }, [fiber]);\n return parentRef;\n}\nfunction useContextMap() {\n const fiber = useFiber();\n const [contextMap] = React.useState(() => /* @__PURE__ */ new Map());\n contextMap.clear();\n let node = fiber;\n while (node) {\n if (node.type && typeof node.type === \"object\") {\n const enableRenderableContext = node.type._context === void 0 && node.type.Provider === node.type;\n const context = enableRenderableContext ? node.type : node.type._context;\n if (context && context !== FiberContext && !contextMap.has(context)) {\n contextMap.set(context, React.useContext(wrapContext(context)));\n }\n }\n node = node.return;\n }\n return contextMap;\n}\nfunction useContextBridge() {\n const contextMap = useContextMap();\n return React.useMemo(\n () => Array.from(contextMap.keys()).reduce(\n (Prev, context) => (props) => /* @__PURE__ */ React.createElement(Prev, null, /* @__PURE__ */ React.createElement(context.Provider, __spreadProps(__spreadValues({}, props), {\n value: contextMap.get(context)\n }))),\n (props) => /* @__PURE__ */ React.createElement(FiberProvider, __spreadValues({}, props))\n ),\n [contextMap]\n );\n}\nexport {\n FiberProvider,\n traverseFiber,\n useContainer,\n useContextBridge,\n useContextMap,\n useFiber,\n useNearestChild,\n useNearestParent\n};\n//# sourceMappingURL=index.js.map\n","/**\n * Based on ReactArt.js\n * Copyright (c) 2017-present Lavrenov Anton.\n * All rights reserved.\n *\n * MIT\n */\n'use strict';\nimport React from 'react';\nimport Konva from 'konva/lib/Core.js';\nimport ReactFiberReconciler from 'react-reconciler';\nimport { LegacyRoot } from 'react-reconciler/constants.js';\nimport * as HostConfig from './ReactKonvaHostConfig.js';\nimport { applyNodeProps, toggleStrictMode } from './makeUpdates.js';\nimport { useContextBridge, FiberProvider } from 'its-fine';\nfunction usePrevious(value) {\n const ref = React.useRef({});\n React.useLayoutEffect(() => {\n ref.current = value;\n });\n React.useLayoutEffect(() => {\n return () => {\n // when using suspense it is possible that stage is unmounted\n // but React still keep component ref\n // in that case we need to manually flush props\n // we have a special test for that\n ref.current = {};\n };\n }, []);\n return ref.current;\n}\nconst StageWrap = (props) => {\n const container = React.useRef(null);\n const stage = React.useRef(null);\n const fiberRef = React.useRef(null);\n const oldProps = usePrevious(props);\n const Bridge = useContextBridge();\n const _setRef = (stage) => {\n const { forwardedRef } = props;\n if (!forwardedRef) {\n return;\n }\n if (typeof forwardedRef === 'function') {\n forwardedRef(stage);\n }\n else {\n forwardedRef.current = stage;\n }\n };\n React.useLayoutEffect(() => {\n stage.current = new Konva.Stage({\n width: props.width,\n height: props.height,\n container: container.current,\n });\n _setRef(stage.current);\n // @ts-ignore\n fiberRef.current = KonvaRenderer.createContainer(stage.current, LegacyRoot, false, null);\n KonvaRenderer.updateContainer(React.createElement(Bridge, {}, props.children), fiberRef.current);\n return () => {\n if (!Konva.isBrowser) {\n return;\n }\n _setRef(null);\n KonvaRenderer.updateContainer(null, fiberRef.current, null);\n stage.current.destroy();\n };\n }, []);\n React.useLayoutEffect(() => {\n _setRef(stage.current);\n applyNodeProps(stage.current, props, oldProps);\n KonvaRenderer.updateContainer(React.createElement(Bridge, {}, props.children), fiberRef.current, null);\n });\n return React.createElement('div', {\n ref: container,\n id: props.id,\n accessKey: props.accessKey,\n className: props.className,\n role: props.role,\n style: props.style,\n tabIndex: props.tabIndex,\n title: props.title,\n });\n};\nexport const Layer = 'Layer';\nexport const FastLayer = 'FastLayer';\nexport const Group = 'Group';\nexport const Label = 'Label';\nexport const Rect = 'Rect';\nexport const Circle = 'Circle';\nexport const Ellipse = 'Ellipse';\nexport const Wedge = 'Wedge';\nexport const Line = 'Line';\nexport const Sprite = 'Sprite';\nexport const Image = 'Image';\nexport const Text = 'Text';\nexport const TextPath = 'TextPath';\nexport const Star = 'Star';\nexport const Ring = 'Ring';\nexport const Arc = 'Arc';\nexport const Tag = 'Tag';\nexport const Path = 'Path';\nexport const RegularPolygon = 'RegularPolygon';\nexport const Arrow = 'Arrow';\nexport const Shape = 'Shape';\nexport const Transformer = 'Transformer';\nexport const version = '18.2.13';\n// @ts-ignore\nexport const KonvaRenderer = ReactFiberReconciler(HostConfig);\nKonvaRenderer.injectIntoDevTools({\n // @ts-ignore\n findHostInstanceByFiber: () => null,\n bundleType: process.env.NODE_ENV !== 'production' ? 1 : 0,\n version: React.version,\n rendererPackageName: 'react-konva',\n});\nexport const Stage = React.forwardRef((props, ref) => {\n return React.createElement(FiberProvider, {}, React.createElement(StageWrap, { ...props, forwardedRef: ref }));\n});\nexport const useStrictMode = toggleStrictMode;\n// export useContextBridge from its-fine for reuse in react-konva-utils\n// so react-konva-utils don't use its own version of its-fine (it is possible on pnpm)\nexport { useContextBridge };\n","var getDimensionsMinimalRatio=function(a,b,c,d){return Math.min(a/c,b/d)||1};export default getDimensionsMinimalRatio;","export var ROOT_CONTAINER_CLASS_NAME=\"FIE_root\";export var DESIGN_LAYER_ID=\"FIE_design-layer\";export var TRANSFORMERS_LAYER_ID=\"FIE_transformers-layer\";export var IMAGE_NODE_ID=\"FIE_original-image\";export var NODES_TRANSFORMER_ID=\"FIE_nodes-transformer\";export var WATERMARK_ANNOTATION_ID=\"watermark\";export var TRANSLATIONS_GRID_UUID=\"353297d2-40b4-4684-a875-45a2178a8157\";export var DEFAULT_SAVE_QUALITY=.92;export var TABS_IDS={FINETUNE:\"Finetune\",FILTERS:\"Filters\",ADJUST:\"Adjust\",WATERMARK:\"Watermark\",ANNOTATE:\"Annotate\",RESIZE:\"Resize\"};export var TOOLS_IDS={CROP:\"Crop\",ROTATE:\"Rotate\",FLIP_X:\"Flip_X\",FLIP_Y:\"Flip_Y\",BRIGHTNESS:\"Brightness\",CONTRAST:\"Contrast\",HSV:\"HueSaturationValue\",WARMTH:\"Warmth\",BLUR:\"Blur\",THRESHOLD:\"Threshold\",POSTERIZE:\"Posterize\",PIXELATE:\"Pixelate\",NOISE:\"Noise\",FILTERS:\"Filters\",RECT:\"Rect\",ELLIPSE:\"Ellipse\",POLYGON:\"Polygon\",TEXT:\"Text\",LINE:\"Line\",IMAGE:\"Image\",ARROW:\"Arrow\",WATERMARK:\"Watermark\",PEN:\"Pen\",RESIZE:\"Resize\"};export var FLIP_DIRECTIONS={X:\"X\",Y:\"Y\"};export var DEFAULT_ZOOM_FACTOR=1;export var SUPPORTED_IMAGE_TYPES=[\"png\",\"jpeg\",\"jpg\",\"webp\"];export var POSSIBLE_IMAGE_TYPES=[].concat(SUPPORTED_IMAGE_TYPES,[\"svg\",\"gif\",\"avif\",\"apng\"]);export var DEFAULT_IMAGE_TYPE=SUPPORTED_IMAGE_TYPES[0];export var POINTER_ICONS={DEFAULT:\"default\",DRAW:\"crosshair\",SELECT:\"pointer\",MOVE:\"move\",DRAG:\"GRAB\"};export var DEFAULT_ENABLED_ANCHORS=[\"top-left\",\"top-center\",\"top-right\",\"middle-right\",\"middle-left\",\"bottom-left\",\"bottom-center\",\"bottom-right\"];export var ORIGINAL_CROP=\"Crop\";export var CUSTOM_CROP=\"custom\";export var ELLIPSE_CROP=\"ellipse\";export var POSITIONS={TOP_LEFT:\"top-left\",TOP_CENTER:\"top-center\",TOP_RIGHT:\"top-right\",MIDDLE_LEFT:\"middle-left\",MIDDLE_CENTER:\"middle-center\",MIDDLE_RIGHT:\"middle-right\",BOTTOM_LEFT:\"bottom-left\",BOTTOM_CENTER:\"bottom-center\",BOTTOM_RIGHT:\"bottom-right\"};export var MIN_CROP={WIDTH:14,HEIGHT:14};export var CLOSING_REASONS={AFTER_SAVE:\"after-saving\",CLOSE_BUTTON:\"close-button-clicked\",BACK_BUTTON:\"back-button-clicked\"};export var FEEDBACK_STATUSES={WARNING:\"warning\",ERROR:\"error\"};export var EDITOR_TO_CLOUDIMG_POSITIONS={top:\"north\",bottom:\"south\",left:\"west\",center:\"center\",right:\"east\"};export var CLOUDIMG_TO_EDITOR_POSITIONS={northwest:\"top-left\",northcenter:\"top-center\",northeast:\"top-right\",centerwest:\"center-left\",centercenter:\"center-center\",centereast:\"center-right\",southwest:\"bottom-left\",southcenter:\"bottom-center\",southeast:\"bottom-right\"};","import{ELLIPSE_CROP}from\"./constants\";var cropImage=function(a,b){var c=!!(2 {\n exports.Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nexports._registerNode = _registerNode;\nexports.Konva._injectGlobal(exports.Konva);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = void 0;\nconst Global_1 = require(\"./Global\");\nclass Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n var m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n var m11 = this.m[0] + this.m[2] * sy;\n var m12 = this.m[1] + this.m[3] * sy;\n var m21 = this.m[2] + this.m[0] * sx;\n var m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n var a = this.m[0];\n var b = this.m[1];\n var c = this.m[2];\n var d = this.m[3];\n var e = this.m[4];\n var f = this.m[5];\n var delta = a * d - b * c;\n let result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n var r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n var s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = exports.Util._getRotation(result.rotation);\n return result;\n }\n}\nexports.Transform = Transform;\nvar OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/, animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexports.Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n var firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n var canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n var imageObj = exports.Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n var bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n var randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n var rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (exports.Util._namedColorToRBA(str) ||\n exports.Util._hex3ColorToRGBA(str) ||\n exports.Util._hex4ColorToRGBA(str) ||\n exports.Util._hex6ColorToRGBA(str) ||\n exports.Util._hex8ColorToRGBA(str) ||\n exports.Util._rgbColorToRGBA(str) ||\n exports.Util._rgbaColorToRGBA(str) ||\n exports.Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n var c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n var retObj = {};\n for (var key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n exports.Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return exports.Util.degToRad(deg);\n },\n _radToDeg(rad) {\n exports.Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return exports.Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Global_1.Konva.angleDeg ? exports.Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Global_1.Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (var key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n var x, y, dist;\n var pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n var u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n var pc = exports.Util.cloneObject(pt);\n var dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n var p2 = line[(i + 1) % line.length];\n var proj = exports.Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n var px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n var n, start = [], end = [];\n if (startArray.length > endArray.length) {\n var temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n var newStart = [];\n end.forEach(function (point) {\n var pr = exports.Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n var desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (var key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n exports.Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (exports.Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (var key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Global_1.Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getComponentValidator = exports.getBooleanValidator = exports.getNumberArrayValidator = exports.getFunctionValidator = exports.getStringOrGradientValidator = exports.getStringValidator = exports.getNumberOrAutoValidator = exports.getNumberOrArrayOfNumbersValidator = exports.getNumberValidator = exports.alphaComponent = exports.RGBComponent = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n if (Util_1.Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util_1.Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nfunction RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexports.RGBComponent = RGBComponent;\nfunction alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexports.alphaComponent = alphaComponent;\nfunction getNumberValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isNumber(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexports.getNumberValidator = getNumberValidator;\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util_1.Util._isNumber(val);\n let isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nfunction getNumberOrAutoValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nfunction getStringValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isString(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexports.getStringValidator = getStringValidator;\nfunction getStringOrGradientValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util_1.Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val.addColorStop);\n if (!(isString || isGradient)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nfunction getFunctionValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isFunction(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexports.getFunctionValidator = getFunctionValidator;\nfunction getNumberArrayValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util_1.Util._isArray(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util_1.Util._isNumber(item)) {\n Util_1.Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexports.getNumberArrayValidator = getNumberArrayValidator;\nfunction getBooleanValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isBool = val === true || val === false;\n if (!isBool) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexports.getBooleanValidator = getBooleanValidator;\nfunction getComponentValidator(components) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util_1.Util.isObject(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\nexports.getComponentValidator = getComponentValidator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nconst Util_1 = require(\"./Util\");\nconst Validators_1 = require(\"./Validators\");\nvar GET = 'get', SET = 'set';\nexports.Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n exports.Factory.addGetter(constructor, attr, def);\n exports.Factory.addSetter(constructor, attr, validator, after);\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n var method = GET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n exports.Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n var len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\n constructor.prototype[getter] = function () {\n var ret = {};\n for (n = 0; n < len; n++) {\n component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n var basicValidator = (0, Validators_1.getComponentValidator)(components);\n constructor.prototype[setter] = function (val) {\n var oldVal = this.attrs[attr], key;\n if (validator) {\n val = validator.call(this, val);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n var capitalizedAttr = Util_1.Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util_1.Util.error('Adding deprecated ' + attr);\n var method = GET + Util_1.Util._capitalize(attr);\n var message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util_1.Util.error(message);\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n exports.Factory.addSetter(constructor, attr, validator, function () {\n Util_1.Util.error(message);\n });\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n var method = constructor.prototype[newMethodName];\n var oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n var oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util_1.Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitContext = exports.SceneContext = exports.Context = void 0;\nconst Util_1 = require(\"./Util\");\nconst Global_1 = require(\"./Global\");\nfunction simplifyArray(arr) {\n var retArr = [], len = arr.length, util = Util_1.Util, n, val;\n for (n = 0; n < len; n++) {\n val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nvar COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nvar CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n];\nconst traceArrMax = 100;\nclass Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Global_1.Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n var traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util_1.Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n var traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n var canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n var absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n var a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n var a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n var that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n var func = function (methodName) {\n var origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n var prop = arguments[0];\n var val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n var def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nexports.Context = Context;\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nclass SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n var fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n var grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n var dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n var hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n var color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexports.SceneContext = SceneContext;\nclass HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n var hitStrokeWidth = shape.hitStrokeWidth();\n var strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\nexports.HitContext = HitContext;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitCanvas = exports.SceneCanvas = exports.Canvas = void 0;\nconst Util_1 = require(\"./Util\");\nconst Context_1 = require(\"./Context\");\nconst Global_1 = require(\"./Global\");\nconst Factory_1 = require(\"./Factory\");\nconst Validators_1 = require(\"./Validators\");\nvar _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n var canvas = Util_1.Util.createCanvasElement();\n var context = canvas.getContext('2d');\n _pixelRatio = (function () {\n var devicePixelRatio = Global_1.Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util_1.Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nclass Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n var conf = config || {};\n var pixelRatio = conf.pixelRatio || Global_1.Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util_1.Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n var previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util_1.Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexports.Canvas = Canvas;\nFactory_1.Factory.addGetterSetter(Canvas, 'pixelRatio', undefined, (0, Validators_1.getNumberValidator)());\nclass SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new Context_1.SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexports.SceneCanvas = SceneCanvas;\nclass HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new Context_1.HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\nexports.HitCanvas = HitCanvas;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DD = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nexports.DD = {\n get isDragging() {\n var flag = false;\n exports.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n var node;\n exports.DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n exports.DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util_1.Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n var dragDistance = node.dragDistance();\n var distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n exports.DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n exports.DD.justDragged = true;\n Global_1.Konva._mouseListenClick = false;\n Global_1.Konva._touchListenClick = false;\n Global_1.Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Global_1.Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n exports.DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n exports.DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Global_1.Konva.isBrowser) {\n window.addEventListener('mouseup', exports.DD._endDragBefore, true);\n window.addEventListener('touchend', exports.DD._endDragBefore, true);\n window.addEventListener('mousemove', exports.DD._drag);\n window.addEventListener('touchmove', exports.DD._drag);\n window.addEventListener('mouseup', exports.DD._endDragAfter, false);\n window.addEventListener('touchend', exports.DD._endDragAfter, false);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Global_1 = require(\"./Global\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Validators_1 = require(\"./Validators\");\nvar ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nclass Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n var cache = this._cache.get(attr);\n var isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n var invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util_1.Util.releaseCanvas(scene, filter, hit);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n var conf = config || {};\n var rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n var width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util_1.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n var cachedSceneCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n var points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n var trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n var transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n var cacheCanvas = this._getCachedSceneCanvas();\n var ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n var canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n var filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n var ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter !== 'function') {\n Util_1.Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util_1.Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n }\n return filterCanvas;\n }\n return sceneCanvas;\n }\n on(evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n var events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n }\n off(evtStr, callback) {\n var events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n var e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n var stopNode = this;\n this.on(event, function (evt) {\n var targets = evt.target.findAncestors(selector, true, stopNode);\n for (var i = 0; i < targets.length; i++) {\n evt = Util_1.Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DragAndDrop_1.DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n var parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n var method = 'get' + Util_1.Util._capitalize(attr);\n if (Util_1.Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n var parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n var key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util_1.Util._capitalize(key);\n if (Util_1.Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n var layer = this.getLayer();\n var layerUnderDrag = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n var dragSkip = !skipDragCheck &&\n !Global_1.Konva.hitOnDragEnabled &&\n (layerUnderDrag || Global_1.Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n var depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n var depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n var pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n var transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n var absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Util_1.Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n var it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n var key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n var trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n var changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n var family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util_1.Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n var index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n var absOpacity = this.opacity();\n var parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n var attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util_1.Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n var res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n var ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n var selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util_1.Util.isValidSelector(sel)) {\n Util_1.Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util_1.Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n var parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n var parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n var at;\n if (top) {\n at = new Util_1.Transform();\n this._eachAncestorReverse(function (node) {\n var transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Util_1.Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n var transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n var parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n var m = this._cache.get(TRANSFORM) || new Util_1.Transform();\n m.reset();\n var x = this.x(), y = this.y(), rotation = Global_1.Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n var attrs = Util_1.Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n var node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n var box = this.getClientRect();\n var stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new Canvas_1.SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new Canvas_1.SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n var mimeType = config.mimeType || null, quality = config.quality || null;\n var url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util_1.Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Global_1.Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n var evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n var oldName = this.name();\n var newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n var names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n var names = (this.name() || '').split(/\\s/g);\n var index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n var func = this[SET + Util_1.Util._capitalize(attr)];\n if (Util_1.Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Global_1.Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n var oldVal = this.attrs[key];\n if (oldVal === val && !Util_1.Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n var oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n var shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n var stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (var i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (var i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n var pointerId = evt ? evt.pointerId : undefined;\n var stage = this.getStage();\n var ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n var pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DragAndDrop_1.DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n var newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n var dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util_1.Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DragAndDrop_1.DD._endDragBefore(evt);\n DragAndDrop_1.DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n var shouldCheckButton = evt.evt['button'] !== undefined;\n var canDrag = !shouldCheckButton || Global_1.Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n var hasDraggingChild = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n var stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DragAndDrop_1.DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DragAndDrop_1.DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util_1.Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util_1.Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n var className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Global_1.Konva[className]) {\n Util_1.Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Global_1.Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'y', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'opacity', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'name', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'id', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'rotation', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'scaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'skewY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'offsetY', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'dragDistance', null, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'width', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'height', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'listening', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'preventDefault', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'filters', null, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'transformsEnabled', 'all', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n if (!filterFunc) {\n return this.children || [];\n }\n const children = this.children || [];\n var results = [];\n children.forEach(function (child) {\n if (filterFunc(child)) {\n results.push(child);\n }\n });\n return results;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (var i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n var result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n var retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n var obj = Node_1.Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n var parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n var node = Node_1.Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n var arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n var caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n var context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n var transform = this.getAbsoluteTransform(top);\n var m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n var clipX = this.clipX();\n var clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n var hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n var skipTransform = config.skipTransform;\n var relativeTo = config.relativeTo;\n var minX, minY, maxX, maxY;\n var selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n var that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n var rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n var shapes = this.find('Shape');\n var hasVisible = false;\n for (var i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.releaseCapture = exports.setPointerCapture = exports.hasPointerCapture = exports.createEvent = exports.getCapturedShape = void 0;\nconst Global_1 = require(\"./Global\");\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexports.getCapturedShape = getCapturedShape;\nfunction createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexports.createEvent = createEvent;\nfunction hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexports.hasPointerCapture = hasPointerCapture;\nfunction setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexports.setPointerCapture = setPointerCapture;\nfunction releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\nexports.releaseCapture = releaseCapture;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Global_1.Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util_1.Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n exports.stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util_1.Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n if (container.charAt(0) === '.') {\n var className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n var layers = this.children, len = layers.length, n;\n for (n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container_1.Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n var content = this.content;\n if (content && Util_1.Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n var index = exports.stages.indexOf(this);\n if (index > -1) {\n exports.stages.splice(index, 1);\n }\n Util_1.Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util_1.Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n var canvas = new Canvas_1.SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n var _context = canvas.getContext()._context;\n var layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n var layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n var layers = this.children, len = layers.length, end = len - 1, n;\n for (n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n var width = this.width();\n var height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (var i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n var length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util_1.Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Global_1.Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n var targetShape = this._getTargetShape(eventType);\n var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n var triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n var shape = this.getIntersection(pos);\n DragAndDrop_1.DD.justDragged = false;\n Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n return;\n }\n if (Global_1.Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n if (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n var processedShapesIds = {};\n let triggeredOnShape = false;\n var targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n var differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n var processedShapesIds = {};\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Global_1.Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n var contentPosition = this._getContentPosition(), x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util_1.Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util_1.Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n var rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new Canvas_1.SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n var container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util_1.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar HAS_SHADOW = 'hasShadow';\nvar SHADOW_RGBA = 'shadowRGBA';\nvar patternImage = 'patternImage';\nvar linearGradient = 'linearGradient';\nvar radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexports.shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n context.fill();\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nclass Shape extends Node_1.Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util_1.Util.getRandomColor();\n if (key && !(key in exports.shapes)) {\n break;\n }\n }\n this.colorKey = key;\n exports.shapes[key] = this;\n }\n getContext() {\n Util_1.Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util_1.Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n var ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Util_1.Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Global_1.Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n var colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillLinearGradientStartPoint();\n var end = this.fillLinearGradientEndPoint();\n var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n var colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillRadialGradientStartPoint();\n var end = this.fillRadialGradientEndPoint();\n var grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n var rgba = Util_1.Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n var stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node_1.Node.prototype.destroy.call(this);\n delete exports.shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util_1.Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n var size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n var layer = this.getLayer();\n var canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferContext;\n var skipBuffer = canvas.isCache;\n var cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n var ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, 0, 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n const selfCache = this === top;\n if (!selfCache) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n var cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n hitData = hitImageData.data;\n len = hitData.length;\n rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n for (i = 0; i < len; i += 4) {\n alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util_1.Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nexports.Shape = Shape;\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n(0, Global_2._registerNode)(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRule', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nvar HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n constructor(config) {\n super(config);\n this.canvas = new Canvas_1.SceneCanvas();\n this.hitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n var stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node_1.Node.prototype.moveToTop.call(this);\n var stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n var moved = Node_1.Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n var stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node_1.Node.prototype.moveDown.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node_1.Node.prototype.moveToBottom.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n var _canvas = this.getNativeCanvasElement();\n Node_1.Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node_1.Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util_1.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util_1.Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n var spiralSearchDistance = 1;\n var continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n const shape = Shape_1.shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container_1.Container.prototype.drawScene.call(this, canvas, top);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container_1.Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n var parent = this.parent;\n var added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n _validateAdd(child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n if (Global_1.glob.performance && Global_1.glob.performance.now) {\n return function () {\n return Global_1.glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nclass Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (let key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util_1.Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util_1.Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nvar blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n var handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n var t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nclass Tween {\n constructor(config) {\n var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n var layers = node.getLayer() ||\n (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation_1.Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n start = node.getAttr(key);\n if (Util_1.Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util_1.Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n var startRGBA = Util_1.Util.colorToRGBA(start[n]);\n endRGBA = Util_1.Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util_1.Util.colorToRGBA(start);\n endRGBA = Util_1.Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n var node = this.node, attrs = Tween.attrs[node._id][this._id], key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util_1.Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n var node = this.node;\n var attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n var node = this.node;\n var attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n this.pause();\n for (key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.prototype.to = function (params) {\n var onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n var tween = new Tween(params);\n tween.play();\n};\nexports.Easings = {\n BackEaseIn(t, b, c, d) {\n var s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n var s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n var s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return exports.Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n Util: Util_1.Util,\n Transform: Util_1.Transform,\n Node: Node_1.Node,\n Container: Container_1.Container,\n Stage: Stage_1.Stage,\n stages: Stage_1.stages,\n Layer: Layer_1.Layer,\n FastLayer: FastLayer_1.FastLayer,\n Group: Group_1.Group,\n DD: DragAndDrop_1.DD,\n Shape: Shape_1.Shape,\n shapes: Shape_1.shapes,\n Animation: Animation_1.Animation,\n Tween: Tween_1.Tween,\n Easings: Tween_1.Easings,\n Context: Context_1.Context,\n Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n _sceneFunc(context) {\n var angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Global_1.Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n var d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n var len = p.length, allPoints = [], n, cp;\n for (n = 2; n < len - 2; n += 2) {\n cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nclass Line extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n var p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n var points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexports.cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst getCubicArcLength = (xs, ys, t) => {\n let z;\n let sum;\n let correctedT;\n const n = 20;\n z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * exports.tValues[n][i] + z;\n sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nexports.getQuadraticArcLength = getQuadraticArcLength;\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n exports.binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nconst t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\nexports.t2length = t2length;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n var ca = this.dataArray;\n context.beginPath();\n var isClosed = false;\n for (var n = 0; n < ca.length; n++) {\n var c = ca[n].command;\n var p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n var points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n var start = data.points[4];\n var dTheta = data.points[5];\n var end = data.points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (var i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n var point, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n point = dataArray[i - 1].points.slice(-2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n if (length < 0.01) {\n point = dataArray[i].points.slice(0, 2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n var cp = dataArray[i];\n var p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getCubicArcLength)([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getQuadraticArcLength)([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n if (fromX === undefined) {\n fromX = P1x;\n }\n if (fromY === undefined) {\n fromY = P1y;\n }\n var m = (P2y - P1y) / (P2x - P1x + 0.00000001);\n var run = Math.sqrt((dist * dist) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n var rise = m * run;\n var pt;\n if (P2x === P1x) {\n pt = {\n x: fromX,\n y: fromY + rise,\n };\n }\n else if ((fromY - P1y) / (fromX - P1x + 0.00000001) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise,\n };\n }\n else {\n var ix, iy;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt((pRun * pRun) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise,\n };\n }\n return pt;\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n var cs = data;\n var cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n var arr = cs.split('|');\n var ca = [];\n var coords = [];\n var cpx = 0;\n var cpy = 0;\n var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n var match;\n for (n = 1; n < arr.length; n++) {\n var str = arr[n];\n var c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n var p = [];\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n if (coords[j] === '00') {\n p.push(0, 0);\n continue;\n }\n var parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n var cmd = '';\n var points = [];\n var startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n var dx = p.shift();\n var dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (var idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n var len, p1, p2, t;\n var path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n var psi = psiDeg * (Math.PI / 180.0);\n var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n var cxp = (f * rx * yp) / ry;\n var cyp = (f * -ry * xp) / rx;\n var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n var vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n var vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n var vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n var PI2 = Math.PI * 2;\n var points = this.points();\n var tp = points;\n var fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n var length = this.pointerLength();\n var n = points.length;\n var dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path_1.Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n var radians = (Math.atan2(dy, dx) + PI2) % PI2;\n var width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n var isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x - offset,\n y: lineRect.y - offset,\n width: lineRect.width + offset * 2,\n height: lineRect.height + offset * 2,\n };\n }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.Shape {\n _sceneFunc(context) {\n var rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n constructor(attrs) {\n super(attrs);\n this.on('imageChange.konva', () => {\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', () => {\n this._requestDraw();\n });\n }\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n var width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n var img = Util_1.Util.createImageElement();\n img.onload = function () {\n var image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nclass Label extends Group_1.Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n var that = this, n;\n var func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n var text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.Shape {\n _sceneFunc(context) {\n var width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n var x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nclass Rect extends Shape_1.Shape {\n _sceneFunc(context) {\n var cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\n(0, Global_1._registerNode)(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n _sceneFunc(context) {\n const points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (var n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (var n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n var minX = points[0].x;\n var maxX = points[0].y;\n var minY = points[0].x;\n var maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar PIx2 = Math.PI * 2;\nclass Ring extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation_1.Animation(() => {\n var updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n var offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n var offset = offsets[anim];\n var ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n var that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n var layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n var index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.Shape {\n _sceneFunc(context) {\n var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (var n = 1; n < numPoints * 2; n++) {\n var radius = n % 2 === 0 ? outerRadius : innerRadius;\n var x = radius * Math.sin((n * Math.PI) / numPoints);\n var y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = exports.stringToArray = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction stringToArray(string) {\n return Array.from(string);\n}\nexports.stringToArray = stringToArray;\nvar AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', LTR = 'ltr', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nvar dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nclass Text extends Shape_1.Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (var n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n var padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n var translateY = 0;\n var translateY = lineHeightPx / 2;\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', MIDDLE);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY + Math.round(fontSize / 2));\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + Math.round(fontSize / 2));\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && lastLine && !oneWord\n ? totalWidth - padding * 2\n : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n spacesNumber = text.split(' ').length - 1;\n var array = stringToArray(text);\n for (var li = 0; li < array.length; li++) {\n var letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n var width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n var str = Util_1.Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n var isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n var width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n var letterSpacing = this.letterSpacing();\n var length = text.length;\n return (getDummyContext().measureText(text).width +\n (length ? letterSpacing * (length - 1) : 0));\n }\n _setTextData() {\n var lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\n for (var i = 0, max = lines.length; i < max; ++i) {\n var line = lines[i];\n var lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n var low = 0, high = line.length, match = '', matchWidth = 0;\n while (low < high) {\n var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n if (substrWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n var wrapIndex;\n var nextChar = line[match.length];\n var nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = match.length;\n }\n else {\n wrapIndex =\n Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = match.slice(0, low);\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n var shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n line = line.slice(low);\n line = line.trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n var fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n var width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n var lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n var haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nexports.Text = Text;\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n(0, Global_1._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nclass TextPath extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util_1.Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path_1.Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length - 1 > totalLength) {\n return null;\n }\n return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n var textDecoration = this.textDecoration();\n var fill = this.fill();\n var fontSize = this.fontSize();\n var glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n context.save();\n var p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n var glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n var p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n var p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text_1.Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text_1.Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n var dummyCanvas = this.dummyCanvas;\n var _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n var metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const { width, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n const charArr = (0, Text_1.stringToArray)(this.text());\n let offsetToGlyph = offset;\n for (var i = 0; i < charArr.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n if (charArr[i] === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint)\n return;\n const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n var points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n var minX = points[0] || 0;\n var maxX = points[0] || 0;\n var minY = points[1] || 0;\n var maxY = points[1] || 0;\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n var fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nexports.TextPath = TextPath;\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', null);\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', null);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nvar EVENTS_NAME = 'tr-konva';\nvar ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nvar NODES_RECT = 'nodesRect';\nvar TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n];\nvar ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n var angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nvar ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nvar MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Global_1.Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nclass Transformer extends Group_1.Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util_1.Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n var elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n var rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var absScale = node.getAbsoluteScale(relative);\n var absPos = node.getAbsolutePosition(relative);\n var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n var dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Global_1.Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Global_1.Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n var node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n var trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n var transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Util_1.Transform();\n tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n var transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n var anchor = new Rect_1.Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n var self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n var rad = Global_1.Konva.getAngle(this.rotation());\n var rotateCursor = this.rotateAnchorCursor();\n var cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n var back = new Shape_1.Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc(ctx, shape) {\n var tr = shape.getParent();\n var padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n var padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n this._movingAnchorName = e.target.name().split(' ')[0];\n var attrs = this._getNodeRect();\n var width = attrs.width;\n var height = attrs.height;\n var hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n var ap = e.target.getAbsolutePosition();\n var pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n var x, y, newHypotenuse;\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n var stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n var attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n var oldRotation = Global_1.Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Global_1.Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n var shiftBehavior = this.shiftBehavior();\n var keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n var topLeft = this.findOne('.top-left');\n var bottomRight = this.findOne('.bottom-right');\n var topOffsetX = topLeft.x();\n var topOffsetY = topLeft.y();\n var bottomOffsetX = this.getWidth() - bottomRight.x();\n var bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n var absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n var height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n var node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n var oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n var t = new Util_1.Transform();\n t.rotate(Global_1.Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Util_1.Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Util_1.Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Util_1.Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n var attrs = this._getNodeRect();\n this.rotation(Util_1.Util._getRotation(attrs.rotation));\n var width = attrs.width;\n var height = attrs.height;\n var enabledAnchors = this.enabledAnchors();\n var resizeEnabled = this.resizeEnabled();\n var padding = this.padding();\n var anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group_1.Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node_1.Node.prototype.toObject.call(this);\n }\n clone(obj) {\n var node = Node_1.Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nexports.Transformer = Transformer;\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util_1.Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util_1.Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Global_1.Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nvar mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nvar shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n var pixels = imageData.data, width = imageData.width, height = imageData.height;\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n yp = width;\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nconst Blur = function Blur(imageData) {\n var radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n var adjust = Math.pow((this.contrast() + 100) / 100, 2);\n var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n for (i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util_1.Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n var offsetY = (y - 1) * w4;\n var otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n var offsetYOther = (y - 1 + otherY) * w * 4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n var dR = data[offset] - data[offsetOther];\n var dG = data[offset + 1] - data[offsetOther + 1];\n var dB = data[offset + 2] - data[offsetOther + 2];\n var dif = dR;\n var absDif = dif > 0 ? dif : -dif;\n var absG = dG > 0 ? dG : -dG;\n var absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n var r = data[offset] + dif;\n var g = data[offset + 1] + dif;\n var b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n var grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', null, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, null, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nconst Enhance = function (imageData) {\n var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n var enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n var data = imageData.data, len = data.length, i, brightness;\n for (i = 0; i < len; i += 4) {\n brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\nexports.Grayscale = Grayscale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\nexports.HSL = HSL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst HSV = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n var data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\nexports.Invert = Invert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nvar ToPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta;\n var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n for (theta = 0; theta < tSize; theta += 1) {\n sin = Math.sin(theta * conversion);\n cos = Math.cos(theta * conversion);\n for (radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n i = (y * xSize + x) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nvar FromPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\n var x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n dx = x - xMid;\n dy = y - yMid;\n radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n i = (y1 * xSize + x1) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst Kaleidoscope = function (imageData) {\n var xSize = imageData.width, ySize = imageData.height;\n var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n var power = Math.round(this.kaleidoscopePower());\n var angle = Math.round(this.kaleidoscopeAngle());\n var offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n var tempCanvas = Util_1.Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n var scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util_1.Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n var minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n var sectionSize = minSectionSize;\n var xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n var idx = (y * idata.width + x) * 4;\n var d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n var m = [0, 0, 0];\n for (var i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n var rgbv_no = pixelAt(idata, 0, 0);\n var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n var rgbv_so = pixelAt(idata, 0, idata.height - 1);\n var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n var thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n var mask = [];\n for (var i = 0; i < idata.width * idata.height; i++) {\n var d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (var i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nconst Mask = function (imageData) {\n var threshold = this.threshold(), mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Noise = function (imageData) {\n var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\n for (i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util_1.Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n for (i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n for (i = 0; i < nPixels; i += 4) {\n brightness =\n (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGBA = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\n for (i = 0; i < nPixels; i += 4) {\n ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n var data = imageData.data, nPixels = data.length, i, r, g, b;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\nexports.Sepia = Sepia;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n do {\n var offsetY = (y - 1) * w4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var r = data[offset];\n var g = data[offset + 1];\n var b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\nexports.Solarize = Solarize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Threshold = function (imageData) {\n var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n Arc: Arc_1.Arc,\n Arrow: Arrow_1.Arrow,\n Circle: Circle_1.Circle,\n Ellipse: Ellipse_1.Ellipse,\n Image: Image_1.Image,\n Label: Label_1.Label,\n Tag: Label_1.Tag,\n Line: Line_1.Line,\n Path: Path_1.Path,\n Rect: Rect_1.Rect,\n RegularPolygon: RegularPolygon_1.RegularPolygon,\n Ring: Ring_1.Ring,\n Sprite: Sprite_1.Sprite,\n Star: Star_1.Star,\n Text: Text_1.Text,\n TextPath: TextPath_1.TextPath,\n Transformer: Transformer_1.Transformer,\n Wedge: Wedge_1.Wedge,\n Filters: {\n Blur: Blur_1.Blur,\n Brighten: Brighten_1.Brighten,\n Contrast: Contrast_1.Contrast,\n Emboss: Emboss_1.Emboss,\n Enhance: Enhance_1.Enhance,\n Grayscale: Grayscale_1.Grayscale,\n HSL: HSL_1.HSL,\n HSV: HSV_1.HSV,\n Invert: Invert_1.Invert,\n Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n Mask: Mask_1.Mask,\n Noise: Noise_1.Noise,\n Pixelate: Pixelate_1.Pixelate,\n Posterize: Posterize_1.Posterize,\n RGB: RGB_1.RGB,\n RGBA: RGBA_1.RGBA,\n Sepia: Sepia_1.Sepia,\n Solarize: Solarize_1.Solarize,\n Threshold: Threshold_1.Threshold,\n },\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";function _createForOfIteratorHelper(a,b){var c=\"undefined\"!=typeof Symbol&&a[Symbol.iterator]||a[\"@@iterator\"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&\"number\"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c[\"return\"]||c[\"return\"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if(\"string\"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return\"Object\"===c&&a.constructor&&(c=a.constructor.name),\"Map\"===c||\"Set\"===c?Array.from(a):\"Arguments\"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);cc?-1:c,c=~~(255*c),[b[0]+c,b[1]+c,b[2]+c]}},contrast:function contrast(a){return function(b){var c=a;c*=255;var d=259*(c+255)/(255*(259-c));return[d*(b[0]-128)+128,d*(b[1]-128)+128,d*(b[2]-128)+128]}},saturation:function saturation(a){return function(c){var d=a;d=-1>d?-1:d;var e=c[0],f=c[1],g=c[2],b=.2989*e+.587*f+.114*g;return[-b*d+e*(1+d),-b*d+f*(1+d),-b*d+g*(1+d)]}},grayscale:function grayscale(){return function(a){var c=a[0],d=a[1],e=a[2];return[,,,].fill(.2126*c+.7152*d+.0722*e)}},sepia:function sepia(a){return function(c){var d=c[0],e=c[1],f=c[2];return[d*(1-.607*a)+.769*e*a+.189*f*a,.349*d*a+e*(1-.314*a)+.168*f*a,.272*d*a+.534*e*a+f*(1-.869*a)]}},adjustRGB:function adjustRGB(a){return function(b){return[b[0]*a[0],b[1]*a[1],b[2]*a[2]]}},colorFilter:function colorFilter(a){return function(c){var d=c[0],e=c[1],f=c[2],b=a[3];return[d-(d-a[0])*b,e-(e-a[1])*b,f-(f-a[2])*b]}}};export default BaseFilters;","import BaseFilters from\"./BaseFilters\";function BlackAndWhite(a){BaseFilters.apply(a,function(a){var b=(a[0]+a[1]+a[2])/3>100,c=b?255:0;return[c,c,c]})}BlackAndWhite.filterName=\"BlackAndWhite\";export default BlackAndWhite;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,CONTRAST_CONST=.1,SATURATION_CONST=.15;function Clarendon(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}Clarendon.filterName=\"Clarendon\";export default Clarendon;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.04,CONTRAST_CONST=-.15;function Gingham(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.contrast(CONTRAST_CONST))}Gingham.filterName=\"Gingham\";export default Gingham;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1;function Moon(a){BaseFilters.apply(a,BaseFilters.grayscale(),BaseFilters.brightness(BRIGHTNESS_CONST));var b=a.data,c=b.length}Moon.filterName=\"Moon\";export default Moon;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.08,ADJUST_RGB_CONST=[1,1.03,1.05],SATURATION_CONST=.12;function Lark(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Lark.filterName=\"Lark\";export default Lark;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.4,BRIGHTNESS_CONST=.13,CONTRAST_CONST=-.05;function Reyes(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.contrast(CONTRAST_CONST))}Reyes.filterName=\"Reyes\";export default Reyes;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1.01,1.04,1],SATURATION_CONST=.3;function Juno(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Juno.filterName=\"Juno\";export default Juno;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,SATURATION_CONST=-.5;function Slumber(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Slumber.filterName=\"Slumber\";export default Slumber;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1.04,1,1.02],SATURATION_CONST=-.05;function Crema(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Crema.filterName=\"Crema\";export default Crema;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.05,SATURATION_CONST=-.03;function Ludwig(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Ludwig.filterName=\"Ludwig\";export default Ludwig;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[228,130,225,.13],SATURATION_CONST=-.2;function Aden(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST))}Aden.filterName=\"Aden\";export default Aden;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1.05,1.1,1];function Perpetua(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST))}Perpetua.filterName=\"Perpetua\";export default Perpetua;","import BaseFilters from\"./BaseFilters\";var SATURATION_CONST=.3,BRIGHTNESS_CONST=.15;function Amaro(a){BaseFilters.apply(a,BaseFilters.saturation(SATURATION_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Amaro.filterName=\"Amaro\";export default Amaro;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[230,115,108,.05],SATURATION_CONST=.15;function Mayfair(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST))}Mayfair.filterName=\"Mayfair\";export default Mayfair;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,170,0,.1],BRIGHTNESS_CONST=.09,SATURATION_CONST=.1;function Rise(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Rise.filterName=\"Rise\";export default Rise;","import BaseFilters from\"./BaseFilters\";var ADJUST_RGB_CONST=[1,1,1.25],CONTRAST_CONST=.1,BRIGHTNESS_CONST=.15;function Hudson(a){BaseFilters.apply(a,BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.contrast(CONTRAST_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Hudson.filterName=\"Hudson\";export default Hudson;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,225,80,.08],SATURATION_CONST=.1,CONTRAST_CONST=.05;function Valencia(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST),BaseFilters.contrast(CONTRAST_CONST))}Valencia.filterName=\"Valencia\";export default Valencia;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,255,0,.07],SATURATION_CONST=.2,CONTRAST_CONST=.15;function XPro2(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST),BaseFilters.contrast(CONTRAST_CONST))}XPro2.filterName=\"XPro2\";export default XPro2;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=-.15,SATURATION_CONST=.1;function Sierra(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}Sierra.filterName=\"Sierra\";export default Sierra;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[100,28,210,.03],BRIGHTNESS_CONST=.1;function Willow(a){BaseFilters.apply(a,BaseFilters.grayscale(),BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Willow.filterName=\"Willow\";export default Willow;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.15,SATURATION_CONST=.2;function LoFi(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}LoFi.filterName=\"LoFi\";export default LoFi;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.1,SATURATION_CONST=.15;function Hefe(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.saturation(SATURATION_CONST))}Hefe.filterName=\"Hefe\";export default Hefe;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[220,115,188,.12],CONTRAST_CONST=-.05;function Nashville(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.contrast(CONTRAST_CONST))}Nashville.filterName=\"Nashville\";export default Nashville;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,SEPIA_CONST=.3;function Stinson(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.sepia(SEPIA_CONST))}Stinson.filterName=\"Stinson\";export default Stinson;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,225,0,.05],BRIGHTNESS_CONST=.06,CONTRAST_CONST=.06;function Vesper(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.contrast(CONTRAST_CONST))}Vesper.filterName=\"Vesper\";export default Vesper;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,165,40,.2];function Earlybird(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST))}Earlybird.filterName=\"Earlybird\";export default Earlybird;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.2,COLOR_FILTER_CONST=[140,10,185,.1];function Brannan(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.colorFilter(COLOR_FILTER_CONST))}Brannan.filterName=\"Brannan\";export default Brannan;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=-.1,SATURATION_CONST=-.1;function Sutro(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.saturation(SATURATION_CONST))}Sutro.filterName=\"Sutro\";export default Sutro;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.1,COLOR_FILTER_CONST=[255,145,0,.2];function Toaster(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.colorFilter(COLOR_FILTER_CONST))}Toaster.filterName=\"Toaster\";export default Toaster;","import BaseFilters from\"./BaseFilters\";var BRIGHTNESS_CONST=.1,COLOR_FILTER_CONST=[255,255,0,.2];function Walden(a){BaseFilters.apply(a,BaseFilters.brightness(BRIGHTNESS_CONST),BaseFilters.colorFilter(COLOR_FILTER_CONST))}Walden.filterName=\"Walden\";export default Walden;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,25,0,.15],BRIGHTNESS_CONST=.1;function NinteenSeventySeven(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}NinteenSeventySeven.filterName=\"NinteenSeventySeven\";export default NinteenSeventySeven;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,140,0,.1],ADJUST_RGB_CONST=[1.15,1.05,1],SATURATION_CONST=.35;function Kelvin(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.adjustRGB(ADJUST_RGB_CONST),BaseFilters.saturation(SATURATION_CONST))}Kelvin.filterName=\"Kelvin\";export default Kelvin;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[225,240,0,.1],SATURATION_CONST=.25,CONTRAST_CONST=.05;function Maven(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.saturation(SATURATION_CONST),BaseFilters.contrast(CONTRAST_CONST))}Maven.filterName=\"Maven\";export default Maven;","import BaseFilters from\"./BaseFilters\";var SEPIA_CONST=.06,BRIGHTNESS_CONST=.1;function Ginza(a){BaseFilters.apply(a,BaseFilters.sepia(SEPIA_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Ginza.filterName=\"Ginza\";export default Ginza;","import BaseFilters from\"./BaseFilters\";var SATURATION_CONST=.35,BRIGHTNESS_CONST=.1;function Skyline(a){BaseFilters.apply(a,BaseFilters.saturation(SATURATION_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Skyline.filterName=\"Skyline\";export default Skyline;","import BaseFilters from\"./BaseFilters\";var CONTRAST_CONST=.15,BRIGHTNESS_CONST=.1;function Dogpatch(a){BaseFilters.apply(a,BaseFilters.contrast(CONTRAST_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Dogpatch.filterName=\"Dogpatch\";export default Dogpatch;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[25,240,252,.05],SEPIA_CONST=.3;function Brooklyn(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.sepia(SEPIA_CONST))}Brooklyn.filterName=\"Brooklyn\";export default Brooklyn;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[208,208,86,.2],CONTRAST_CONST=.15;function Helena(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.contrast(CONTRAST_CONST))}Helena.filterName=\"Helena\";export default Helena;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,160,25,.1],BRIGHTNESS_CONST=.1;function Ashby(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.brightness(BRIGHTNESS_CONST))}Ashby.filterName=\"Ashby\";export default Ashby;","import BaseFilters from\"./BaseFilters\";var COLOR_FILTER_CONST=[255,50,80,.12],CONTRAST_CONST=.05;function Charmes(a){BaseFilters.apply(a,BaseFilters.colorFilter(COLOR_FILTER_CONST),BaseFilters.contrast(CONTRAST_CONST))}Charmes.filterName=\"Charmes\";export default Charmes;","import Konva from\"konva\";import*as CustomFilters from\"../custom/filters\";var filterStrToClass=function(a){return a?CustomFilters[a]||Konva.Filters[a]:null};export default filterStrToClass;","import Konva from\"konva\";import{Factory as KonvaFactory}from\"konva/lib/Factory\";import{getNumberValidator as konvaGetNumberValidator}from\"konva/lib/Validators\";function Warmth(a){for(var b=this.warmth(),c=a.data,d=c.length,e=0;e=b?255:0,c[e+1]=c[e+1]>=b?255:0,c[e+2]=c[e+2]>=b?255:0)}CustomThreshold.finetuneName=\"CustomThreshold\";export default CustomThreshold;KonvaFactory.addGetterSetter(Konva.Image,\"threshold\",0,konvaGetNumberValidator,KonvaFactory.afterSetFilter);","import Konva from\"konva\";import*as CustomFinetunes from\"../custom/finetunes\";var finetunesStrsToClasses=function(a){return Array.isArray(a)&&0d.status)b(d.response);else{var a;console.warn(\"Error in sending translation key to backend \".concat(null===(a=d.response)||void 0===a?void 0:a.hint,\", \").concat(d.status)),c()}},d.onerror=function(){var a;console.warn(\"Error in sending translation key to backend \".concat(null===(a=d.response)||void 0===a?void 0:a.hint,\", \").concat(d.status)),c()};d.open(\"POST\",\"https://neo.wordplex.io/api/import/request-translations?grid_uuid=\".concat(TRANSLATIONS_GRID_UUID)),d.send(JSON.stringify({grid_uuid:TRANSLATIONS_GRID_UUID,translations_requests:a}))})};export var getBackendTranslations=function(){var a=0f.status){(f.response||[]).forEach(function(a){backendTranslations[e]=_objectSpread(_objectSpread({},backendTranslations[e]),{},_defineProperty({},a.translation_key,a.translations[e]))});var a=[];Object.keys(defaultTranslations).forEach(function(b){var c;b&&!(null!==(c=backendTranslations[e])&&void 0!==c&&c[b])&&a.push({key:b,lang:e,default:defaultTranslations[b]})}),0d,l=0>e;switch(b){case TOOLS_IDS.RECT:c?(h.width=Math.sqrt(i*i+j*j),h.height=h.width,h.x-=k?h.width-i:0,h.y-=l?h.height-j:0):(h.width=i,h.height=j);break;case TOOLS_IDS.ELLIPSE:c?(h.radiusX=Math.sqrt(i*i+j*j)/2,h.radiusY=h.radiusX,h.x-=k?2*h.radiusX-i:0,h.y-=l?2*h.radiusY-j:0):(h.radiusX=i/2,h.radiusY=j/2),h.offsetX=-h.radiusX,h.offsetY=-h.radiusY;break;case TOOLS_IDS.POLYGON:h.radius=(i+j)/2,h.x-=k?2*h.radius-i:0,h.y-=l?2*h.radius-j:0,h.offsetX=-h.radius,h.offsetY=-h.radius;break;case TOOLS_IDS.LINE:case TOOLS_IDS.ARROW:h.x=f,h.y=g,h.points=[0,0],c?h.points.push(i>=j?d:0,j>i?e:0):h.points=[0,0,d,e];break;default:h.width=i,h.height=j}return h};export default getNewAnnotationPreview;","import _objectWithoutProperties from\"@babel/runtime/helpers/objectWithoutProperties\";import _defineProperty from\"@babel/runtime/helpers/defineProperty\";var _excluded=[\"id\",\"x\",\"y\",\"points\"],_excluded2=[\"startedX\",\"startedY\",\"offsetX\",\"offsetY\",\"width\",\"height\"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c=MIN_PIXELS&&latestAnnotationProps.height>=MIN_PIXELS||latestAnnotationProps.radiusX>=MIN_PIXELS&&latestAnnotationProps.radiusY>=MIN_PIXELS||null!==(c=latestAnnotationProps.points)&&void 0!==c&&c[2]||null!==(e=latestAnnotationProps.points)&&void 0!==e&&e[3]||latestAnnotationProps.radius>=MIN_PIXELS)){var f=latestAnnotationProps,g=f.startedX,h=f.startedY,i=f.offsetX,o=f.offsetY,p=f.width,q=f.height,r=_objectWithoutProperties(f,_excluded2);NO_WIDTH_HEIGHT_ANNOTATIONS.includes(b.name)||(r.width=p,r.height=q),d(r,!0)}shownAnnotationPreview=null,textAnnotationWrappedRect=null,latestAnnotationProps=null,a.setAttrs({isDrawing:!1}),a.off(\"mousemove touchmove\",l),a.off(\"mouseleave touchcancel\",m),document.removeEventListener(\"mouseup\",n,eventsOptions),document.removeEventListener(\"touchend\",n,eventsOptions),document.removeEventListener(\"mouseleave\",n,eventsOptions),document.removeEventListener(\"touchcancel\",n,eventsOptions),document.removeEventListener(\"mousemove\",j,eventsOptions),document.removeEventListener(\"touchmove\",j,eventsOptions),pointerDown.isOutOfCanvas=!1},o=function handlePointerDown(b){var d;if(b.evt.preventDefault(),!(b.target.attrs.draggable||1<(null===(d=b.evt.touches)||void 0===d?void 0:d.length))){k();var e=getPointerOffsetPositionBoundedToObject(c,f());pointerDown.startedX=e.offsetX,pointerDown.startedY=e.offsetY,pointerDown.isOutOfCanvas=!1,a.on(\"mousemove touchmove\",l),a.on(\"mouseleave touchcancel\",m),document.addEventListener(\"mouseup\",n,eventsOptions),document.addEventListener(\"touchend\",n,eventsOptions),document.addEventListener(\"mouseleave\",n,eventsOptions),document.addEventListener(\"touchcancel\",n,eventsOptions)}};return a.on(\"mousedown touchstart\",o),function(){k(),a.off(\"mousedown touchstart\",o)}};export default previewThenCallAnnotationAdding;","import{useCallback}from\"react\";import debounce from\"../utils/debounce\";var useDebouncedCallback=function(a,b){var c=2=e?0:function getTopOffset(){return 0>e&&-90=e&&-90<=e?0:function getLeftOffset(){return 90>>32-b},cvtHex=function(a){var b,c,d=\"\";for(b=7;0<=b;b--)c=15&a>>>4*b,d+=c.toString(16);return d},Utf8Encode=function(a){for(var b,d=a.replace(/\\r\\n/g,\"\\n\"),e=\"\",f=0;fb?e+=String.fromCharCode(b):127b?(e+=String.fromCharCode(192|b>>6),e+=String.fromCharCode(128|63&b)):(e+=String.fromCharCode(224|b>>12),e+=String.fromCharCode(128|63&b>>6),e+=String.fromCharCode(128|63&b));return e},sha1=function(a){var b,c,d,e,f,g,h,k,l,m=a,n=Array(80),o=1732584193,p=4023233417,q=2562383102,r=271733878,s=3285377520;m=Utf8Encode(m);var t=m.length,u=[];for(c=0;c>>29),u.push(4294967295&t<<3),b=0;bc;c++)n[c]=u[b+c];for(c=16;79>=c;c++)n[c]=rotateLeft(n[c-3]^n[c-8]^n[c-14]^n[c-16],1);for(e=o,f=p,g=q,h=r,k=s,c=0;19>=c;c++)l=4294967295&rotateLeft(e,5)+(f&g|~f&h)+k+n[c]+1518500249,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;for(c=20;39>=c;c++)l=4294967295&rotateLeft(e,5)+(f^g^h)+k+n[c]+1859775393,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;for(c=40;59>=c;c++)l=4294967295&rotateLeft(e,5)+(f&g|f&h|g&h)+k+n[c]+2400959708,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;for(c=60;79>=c;c++)l=4294967295&rotateLeft(e,5)+(f^g^h)+k+n[c]+3395469782,k=h,h=g,g=rotateLeft(f,30),f=e,e=l;o=4294967295&o+e,p=4294967295&p+f,q=4294967295&q+g,r=4294967295&r+h,s=4294967295&s+k}return l=cvtHex(o)+cvtHex(p)+cvtHex(q)+cvtHex(r)+cvtHex(s),l.toLowerCase()};export default sha1;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import sha1 from\"./sha1\";var encodeBase64=function(a){return btoa(a).replace(/=*$/g,\"\")},getSha1=function(a,b){return sha1(a).slice(0,b)},getSealingParams=function(a,b,c,d){var e=encodeBase64(a),f=getSha1(b+e+c,d);return[f?\"ci_seal=\".concat(f):\"\",e?\"ci_eqs=\".concat(e):\"\"].filter(function(a){return a}).join(\"&\")},getImageSealingParams=function(a,b,c){var d=b||{},e=d.salt,f=d.charCount,g=d.includeParams,h=void 0===g?[]:g,i=!h||0===(null===h||void 0===h?void 0:h.length),j=\"\",k=\"\",l=[],m=[];return a.split(\"&\").forEach(function(a){var b=a.split(\"=\"),c=_slicedToArray(b,1),d=c[0];-1<(null===h||void 0===h?void 0:h.indexOf(d))||i?l.push(a):m.push(a)}),0o?e*k/p:f*m/q),2);return\"\".concat(t,\"&wat_opacity=\").concat(i,\"&wat_scale=\").concat(A,\"p\").concat(z?\"&wat_url=\".concat(encodeURIComponent(z)):\"\")};export var finetuneNameToParamInfo={Brighten:{cloudimage:{name:\"bright\",min:-100,max:100},internal:{propName:\"brightness\",min:-1,max:1}},Contrast:{cloudimage:{name:\"contrast\",min:-100,max:100},internal:{propName:\"contrast\",min:-100,max:100}},Blur:{cloudimage:{name:\"blur\",min:0,max:100},internal:{propName:\"blurRadius\",min:0,max:100}}};var generateFinetuneQuery=function(a){var b=1 input{border:0px;clip:rect(0px,0px,0px,0px);height:100%;margin:-1px;overflow:hidden;padding:0px;position:absolute;white-space:nowrap;width:100%;direction:ltr;}&::before{position:absolute;content:'';border-radius:inherit;width:100%;height:100%;box-shadow:0px 3px 1px -2px rgb(0 0 0 / 20%),0px 2px 2px 0px rgb(0 0 0 / 14%),0px 1px 5px 0px rgb(0 0 0 / 12%);}&::after{position:absolute;content:'';border-radius:50%;width:42px;height:42px;top:50%;left:50%;transform:translate(-50%,-50%);}\"]);\nvar LabelTooltip = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'label')\n}).withConfig({\n componentId: \"sc-jjink6-4\"\n})(function (_ref2) {\n var theme = _ref2.theme,\n _ref2$open = _ref2.open,\n open = _ref2$open === void 0 ? false : _ref2$open,\n _ref2$disabled = _ref2.disabled,\n disabled = _ref2$disabled === void 0 ? false : _ref2$disabled;\n return css([\"display:flex;align-items:center;justify-content:center;padding:6px 6px;border-radius:2px;position:absolute;top:-10px;font-size:10px;z-index:1;white-space:nowrap;transition:transform 150ms cubic-bezier(0.4,0,0.2,1) 0ms;transform-origin:bottom center;transform:\", \";background-color:\", \";color:#fff;cursor:pointer;transition:all 100ms ease-out;&::before{position:absolute;content:'';background-color:inherit;width:8px;height:8px;bottom:0px;left:50%;transform:translate(-50%,50%) rotate(45deg);}\"], open ? 'translateY(-100%) scale(1)' : 'translateY(-100%) scale(0)', disabled ? theme.palette[PC.AccentPrimaryDisabled] : theme.palette[PC.LinkStateless]);\n});\nvar SliderAnnotation = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'annotation')\n}).withConfig({\n componentId: \"sc-jjink6-5\"\n})(function (_ref3) {\n var theme = _ref3.theme;\n return css([\"display:flex;justify-content:space-between;margin-top:12px;color:\", \";\"], theme.palette[PC.TextSecondary]);\n});\nvar Styled = applyDisplayNames({\n Slider: Slider,\n Rail: Rail,\n Track: Track,\n Thumb: Thumb,\n SliderAnnotation: SliderAnnotation,\n LabelTooltip: LabelTooltip\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"defaultValue\", \"disabled\", \"disableSwap\", \"hideTrack\", \"hideAnnotation\", \"value\", \"min\", \"max\", \"onChange\", \"onMouseDown\", \"onMouseUp\", \"step\", \"labelTooltip\", \"annotation\", \"components\", \"componentsProps\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/* eslint-disable no-use-before-define */\n\nimport React, { useEffect, useRef, useState, useCallback } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues, asc, valueToPercent, percentToValue, roundValueToStep, setValueIndex, findClosest, ownerDocument, clamp, trackFinger, focusThumb, axisProps, useForkRef } from '../../utils/functions';\nimport useControlled from '../../hooks/use-controlled';\nimport useEventCallback from '../../hooks/use-event-callback';\nimport { LabelTooltip } from './types';\nimport Styled from './slider.styles';\nvar INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;\nvar dataIndex = 'data-index';\nvar Slider = intrinsicComponent(function (_ref,\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nref) {\n var defaultValue = _ref.defaultValue,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$disableSwap = _ref.disableSwap,\n disableSwap = _ref$disableSwap === void 0 ? false : _ref$disableSwap,\n _ref$hideTrack = _ref.hideTrack,\n hideTrack = _ref$hideTrack === void 0 ? false : _ref$hideTrack,\n _ref$hideAnnotation = _ref.hideAnnotation,\n hideAnnotation = _ref$hideAnnotation === void 0 ? false : _ref$hideAnnotation,\n valueProp = _ref.value,\n _ref$min = _ref.min,\n min = _ref$min === void 0 ? 0 : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 100 : _ref$max,\n onChange = _ref.onChange,\n onMouseDown = _ref.onMouseDown,\n onMouseUp = _ref.onMouseUp,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step,\n _ref$labelTooltip = _ref.labelTooltip,\n labelTooltip = _ref$labelTooltip === void 0 ? LabelTooltip.Off : _ref$labelTooltip,\n _ref$annotation = _ref.annotation,\n annotation = _ref$annotation === void 0 ? '' : _ref$annotation,\n _ref$components = _ref.components,\n components = _ref$components === void 0 ? {} : _ref$components,\n _ref$componentsProps = _ref.componentsProps,\n componentsProps = _ref$componentsProps === void 0 ? {} : _ref$componentsProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n active = _useState2[0],\n setActive = _useState2[1];\n var _useState3 = useState(-1),\n _useState4 = _slicedToArray(_useState3, 2),\n open = _useState4[0],\n setOpen = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n dragging = _useState6[0],\n setDragging = _useState6[1];\n var moveCount = useRef(0);\n var previousIndex = useRef(0);\n var touchId = useRef();\n var sliderRef = useRef(null);\n var handleRef = useForkRef(ref, sliderRef);\n var _useControlled = useControlled({\n controlled: valueProp,\n \"default\": defaultValue !== null && defaultValue !== void 0 ? defaultValue : min\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n valueDerived = _useControlled2[0],\n setValueState = _useControlled2[1];\n var axis = 'horizontal';\n var range = Array.isArray(valueDerived);\n var values = range ? valueDerived.slice().sort(asc) : [valueDerived];\n var getFingerNewValue = function getFingerNewValue(_ref2) {\n var finger = _ref2.finger,\n _ref2$move = _ref2.move,\n move = _ref2$move === void 0 ? false : _ref2$move,\n values2 = _ref2.values;\n var slider = sliderRef.current;\n if (slider) {\n var _slider$getBoundingCl = slider.getBoundingClientRect(),\n width = _slider$getBoundingCl.width,\n height = _slider$getBoundingCl.height,\n bottom = _slider$getBoundingCl.bottom,\n left = _slider$getBoundingCl.left;\n var percent;\n if (axis.indexOf('vertical') === 0) {\n percent = (bottom - finger.y) / height;\n } else {\n percent = (finger.x - left) / width;\n }\n if (axis.includes('-reverse')) {\n percent = 1 - percent;\n }\n var newValue;\n newValue = percentToValue(percent, min, max);\n if (step) {\n newValue = roundValueToStep(newValue, step, min);\n }\n newValue = clamp(newValue, min, max);\n var activeIndex = 0;\n if (range) {\n if (!move) {\n activeIndex = findClosest(values2, newValue);\n } else {\n activeIndex = previousIndex.current;\n }\n if (disableSwap) {\n newValue = clamp(newValue, values2[activeIndex - 1] || -Infinity, values2[activeIndex + 1] || Infinity);\n }\n var previousValue = newValue;\n newValue = setValueIndex({\n values: values2,\n newValue: newValue,\n index: activeIndex\n });\n if (!(disableSwap && move) && Array.isArray(newValue)) {\n activeIndex = newValue.indexOf(previousValue);\n previousIndex.current = activeIndex;\n }\n }\n return {\n newValue: newValue,\n activeIndex: activeIndex\n };\n }\n return null;\n };\n var handleChange = function handleChange(event, value, thumbIndex) {\n if (onChange) {\n onChange(event, value, thumbIndex);\n }\n };\n var handleHiddenInputChange = function handleHiddenInputChange(event) {\n var index = Number(event.currentTarget.getAttribute(dataIndex));\n var newValue = event.target.valueAsNumber;\n if (range) {\n if (disableSwap) {\n newValue = clamp(newValue, values[index - 1] || -Infinity, values[index + 1] || Infinity);\n }\n var previousValue = newValue;\n newValue = setValueIndex({\n values: values,\n newValue: newValue,\n index: index\n });\n var activeIndex = index;\n if (!disableSwap) {\n activeIndex = newValue.indexOf(previousValue);\n }\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex\n });\n }\n setValueState(newValue);\n handleChange(event, newValue, index);\n if (onMouseUp) {\n onMouseUp(event);\n }\n };\n var handleTouchMove = useEventCallback(function (nativeEvent) {\n var finger = trackFinger(nativeEvent, touchId);\n if (!finger) {\n return;\n }\n moveCount.current += 1;\n if (nativeEvent.type === 'mousemove' && nativeEvent.buttons === 0) {\n handleTouchEnd(nativeEvent);\n return;\n }\n var _ref3 = getFingerNewValue({\n finger: finger,\n move: true,\n values: values\n }),\n newValue = _ref3.newValue,\n activeIndex = _ref3.activeIndex;\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex,\n setActive: setActive\n });\n setValueState(newValue);\n if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {\n setDragging(true);\n }\n handleChange(nativeEvent, newValue, activeIndex);\n });\n var handleTouchEnd = useEventCallback(function (nativeEvent) {\n var finger = trackFinger(nativeEvent, touchId);\n setDragging(false);\n if (!finger) {\n return;\n }\n setActive(-1);\n if (nativeEvent.type === 'touchend') {\n setOpen(-1);\n }\n if (onMouseUp) {\n onMouseUp(nativeEvent);\n }\n touchId.current = undefined;\n stopListening();\n });\n var handleTouchStart = useEventCallback(function (nativeEvent) {\n var touch = nativeEvent.changedTouches[0];\n if (touch != null) {\n touchId.current = touch.identifier;\n }\n var finger = trackFinger(nativeEvent, touchId);\n var _ref4 = getFingerNewValue({\n finger: finger,\n values: values\n }),\n newValue = _ref4.newValue,\n activeIndex = _ref4.activeIndex;\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex,\n setActive: setActive\n });\n setValueState(newValue);\n handleChange(nativeEvent, newValue, activeIndex);\n moveCount.current = 0;\n var doc = ownerDocument(sliderRef.current);\n doc.addEventListener('touchmove', handleTouchMove);\n doc.addEventListener('touchend', handleTouchEnd);\n });\n var handleMouseOver = useEventCallback(function (event) {\n var index = Number(event.currentTarget.getAttribute(dataIndex));\n setOpen(index);\n });\n var handleMouseLeave = useEventCallback(function () {\n setOpen(-1);\n });\n var handleMouseDown = useEventCallback(function (event) {\n if (!disabled) {\n if (onMouseDown) {\n onMouseDown(event);\n }\n if (event.button !== 0) {\n return;\n }\n\n // Avoid text selection\n event.preventDefault();\n var finger = trackFinger(event, touchId);\n var _ref5 = getFingerNewValue({\n finger: finger,\n values: values\n }),\n newValue = _ref5.newValue,\n activeIndex = _ref5.activeIndex;\n focusThumb({\n sliderRef: sliderRef,\n activeIndex: activeIndex,\n setActive: setActive\n });\n setValueState(newValue);\n handleChange(event, newValue, activeIndex);\n moveCount.current = 0;\n var doc = ownerDocument(sliderRef.current);\n doc.addEventListener('mousemove', handleTouchMove);\n doc.addEventListener('mouseup', handleTouchEnd);\n } else {\n // Avoid text selection\n event.preventDefault();\n }\n });\n var stopListening = useCallback(function () {\n var doc = ownerDocument(sliderRef.current);\n doc.removeEventListener('mousemove', handleTouchMove);\n doc.removeEventListener('mouseup', handleTouchEnd);\n doc.removeEventListener('touchmove', handleTouchMove);\n doc.removeEventListener('touchend', handleTouchEnd);\n }, [handleTouchEnd, handleTouchMove]);\n useEffect(function () {\n var slider = sliderRef.current;\n if (slider) {\n return function () {\n stopListening();\n };\n }\n }, [stopListening, handleTouchStart]);\n useEffect(function () {\n if (disabled) {\n stopListening();\n }\n }, [disabled, stopListening]);\n if (disabled && active !== -1) {\n setActive(-1);\n }\n var trackOffset = valueToPercent(range ? values[0] : min, min, max);\n var trackLeap = valueToPercent(values[values.length - 1], min, max) - trackOffset;\n var trackStyle = _objectSpread(_objectSpread({}, axisProps[axis].offset(trackOffset)), axisProps[axis].leap(trackLeap));\n var railProps = componentsProps.rail;\n var Rail = typeof components.Rail === 'function' ? /*#__PURE__*/React.createElement(components.Rail, _extends({}, railProps, {\n style: _objectSpread({}, railProps === null || railProps === void 0 ? void 0 : railProps.style)\n })) : /*#__PURE__*/React.createElement(Styled.Rail, _extends({}, railProps, {\n style: _objectSpread({}, railProps === null || railProps === void 0 ? void 0 : railProps.style)\n }));\n var trackProps = componentsProps.track;\n var Track = !hideTrack && (typeof components.Track === 'function' ? /*#__PURE__*/React.createElement(components.Track, _extends({}, trackProps, {\n style: _objectSpread(_objectSpread({}, trackStyle), trackProps === null || trackProps === void 0 ? void 0 : trackProps.style)\n })) : /*#__PURE__*/React.createElement(Styled.Track, _extends({}, trackProps, {\n style: _objectSpread(_objectSpread({}, trackStyle), trackProps === null || trackProps === void 0 ? void 0 : trackProps.style)\n })));\n var thumbProps = componentsProps.thumb;\n var Thumb = components.Thumb || Styled.Thumb;\n var LabelTooltipComponent = components.LabelTooltip || Styled.LabelTooltip;\n var labelTooltipProps = componentsProps.labelTooltip;\n var annotationText = annotation ? \" \".concat(annotation) : '';\n return /*#__PURE__*/React.createElement(Styled.Slider, _extends({\n ref: handleRef,\n disabled: disabled,\n onTouchStart: handleTouchStart,\n onMouseDown: handleMouseDown\n }, rest), Rail, Track, values.map(function (value, index) {\n var percent = valueToPercent(value, min, max);\n var style = axisProps[axis].offset(percent);\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: index\n }, /*#__PURE__*/React.createElement(Thumb, _extends({\n \"data-index\": index,\n onMouseOver: handleMouseOver,\n onMouseLeave: handleMouseLeave\n }, thumbProps, {\n style: _objectSpread(_objectSpread({}, style), {}, {\n pointerEvents: disableSwap && active !== index ? 'none' : undefined\n }, thumbProps === null || thumbProps === void 0 ? void 0 : thumbProps.style)\n }), /*#__PURE__*/React.createElement(\"input\", {\n \"data-index\": index,\n type: \"range\",\n min: min,\n max: max,\n value: values[index],\n step: step,\n disabled: disabled,\n onChange: handleHiddenInputChange\n }), /*#__PURE__*/React.createElement(LabelTooltipComponent, {\n open: (open === index || active === index || labelTooltip === 'on') && labelTooltip !== 'off',\n disabled: disabled,\n style: _objectSpread({}, labelTooltipProps === null || labelTooltipProps === void 0 ? void 0 : labelTooltipProps.style)\n }, values[index], annotationText)));\n }), !hideAnnotation && /*#__PURE__*/React.createElement(Styled.SliderAnnotation, null, /*#__PURE__*/React.createElement(\"span\", null, min, annotationText), /*#__PURE__*/React.createElement(\"span\", null, max, annotationText)));\n});\nSlider.defaultProps = {\n annotation: 'MB',\n min: 0,\n max: 100,\n step: 1,\n labelTooltip: LabelTooltip.Off\n};\nSlider.propTypes = {\n defaultValue: PT.oneOfType([PT.array, PT.number]),\n value: PT.oneOfType([PT.array, PT.number]),\n min: PT.number,\n max: PT.number,\n onChange: PT.func,\n onMouseDown: PT.func,\n onMouseUp: PT.func,\n step: PT.number,\n annotation: PT.string,\n disabled: PT.bool,\n disableSwap: PT.bool,\n hideTrack: PT.bool,\n hideAnnotation: PT.bool,\n labelTooltip: PT.oneOf(objectValues(LabelTooltip)),\n components: PT.shape({\n Rail: PT.elementType,\n Track: PT.elementType,\n Thumb: PT.elementType,\n LabelTooltip: PT.elementType\n }),\n componentsProps: PT.object\n};\nexport default Slider;","import styled from\"styled-components\";import Slider from\"@scaleflex/ui/core/slider\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledSlider=styled(Slider).withConfig({componentId:\"sc-1wort0h-0\"})([\"width:\",\";max-width:\",\";user-select:none;padding:0;margin-bottom:\",\";.SfxSlider-thumb{background-color:\",\";}.SfxSlider-Track{height:2px;color:\",\";}.SfxSlider-rail{height:2px;background-color:\",\";}\"],function(a){var b=a.width;return b||\"104px\"},function(a){var b=a.width;return b||\"104px\"},function(a){var b=a.noMargin;return b?\"\":\"16px\"},function(a){var b=a.theme.palette;return b[PC.AccentStateless]},function(a){var b=a.theme.palette;return b[PC.AccentStateless]},function(a){var b=a.theme.palette;return b[PC.BordersItem]});export{StyledSlider};","import _extends from\"@babel/runtime/helpers/extends\";import _objectWithoutProperties from\"@babel/runtime/helpers/objectWithoutProperties\";var _excluded=[\"onChange\"];import React from\"react\";import{StyledSlider}from\"./Slider.styled\";var Slider=function(a){var b=a.onChange,c=_objectWithoutProperties(a,_excluded);return React.createElement(StyledSlider,_extends({annotation:\"\",onChange:function onChange(a,c){return b?b(c):void 0},hideAnnotation:!0,labelTooltip:\"auto\"},c))};export default Slider;","import PT from 'prop-types';\nexport var iconPropTypes = {\n size: PT.number,\n width: PT.oneOfType([PT.string, PT.number]),\n height: PT.oneOfType([PT.string, PT.number]),\n color: PT.string,\n color2: PT.string,\n stroke: PT.string,\n stroke2: PT.string,\n viewBox: PT.string\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowBottom = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 11 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.8468 3.13984C11.0457 3.33138 11.0517 3.64791 10.8602 3.84682L6.04534 8.84682C5.95332 8.94238 5.82709 8.99746 5.69445 8.99991C5.5618 9.00237 5.43362 8.95201 5.33812 8.85992L0.152931 3.85992C-0.0458479 3.66824 -0.0516033 3.35171 0.140078 3.15293C0.331758 2.95415 0.648288 2.9484 0.847067 3.14008L5.67208 7.79277L10.1398 3.15318C10.3314 2.95427 10.6479 2.9483 10.8468 3.13984Z\",\n fill: color\n }));\n});\nexport default ArrowBottom;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PaletteColor } from '../../utils/types/palette';\nimport { Position } from '../../utils/types';\nexport var typeArrowTickMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Position.Right, css([\"svg{transform:rotate(-90deg);transition:transform 150ms ease-out;}\"])), Position.Left, css([\"svg{transform:rotate(90deg);transition:transform 150ms ease-out;}\"])), Position.Top, css([\"svg{transform:rotate(180deg);transition:transform 150ms ease-out;}\"])), Position.Bottom, css([\"svg{transform:rotate(0);transition:transform 150ms ease-out;}\"]));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { typeArrowTickMixin } from './arrow-tick.mixin';\nimport { Position } from '../../utils/types';\nvar baseClassName = 'ArrowTick';\nvar ArrowTick = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-tlypde-0\"\n})(function (_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? Position.Right : _ref$type;\n return css([\"display:inline-flex;\", \"\"], typeArrowTickMixin[type]);\n});\nvar Styled = applyDisplayNames({\n ArrowTick: ArrowTick\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"IconProps\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport ArrowBottom from '@scaleflex/icons/arrow-bottom';\nimport { iconPropTypes } from '@scaleflex/icons/icon.prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Position } from '../../utils/types';\nimport Styled from './arrow-tick.styles';\nvar ArrowTick = intrinsicComponent(function (_ref, ref) {\n var IconPropsData = _ref.IconProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ArrowTick, _extends({}, rest, {\n ref: ref\n }), /*#__PURE__*/React.createElement(ArrowBottom, IconPropsData));\n});\nArrowTick.defaultProps = {\n type: Position.Right\n};\nArrowTick.propTypes = {\n type: PT.oneOf(objectValues(Position)),\n IconProps: PT.exact(iconPropTypes)\n};\nexport default ArrowTick;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { FontVariant } from '../../utils/types/typography';\nvar baseClassName = 'AccordionHeader';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'icon')\n}).withConfig({\n componentId: \"sc-1dtjsgt-0\"\n})(function () {\n return css([\"display:inline-flex;padding-left:8px;\"]);\n});\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'label')\n}).withConfig({\n componentId: \"sc-1dtjsgt-1\"\n})(function (_ref) {\n var theme = _ref.theme;\n return css([\"\", \"\"], theme.typography.font[FontVariant.ButtonSm]);\n});\nvar Header = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1dtjsgt-2\"\n})(function (_ref2) {\n var theme = _ref2.theme,\n fullWidth = _ref2.fullWidth;\n return css([\"display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:pointer;width:\", \";color:\", \";user-select:none;\"], fullWidth ? '100%' : 'auto', theme.palette[PColor.LinkPrimary]);\n});\nvar Wrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'wrapper')\n}).withConfig({\n componentId: \"sc-1dtjsgt-3\"\n})(function (_ref3) {\n var theme = _ref3.theme;\n return css([\"color:\", \";\"], theme.palette[PColor.LinkPrimary]);\n});\nvar Styled = applyDisplayNames({\n Header: Header,\n Wrapper: Wrapper,\n Icon: Icon,\n Label: Label\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"expanded\", \"label\", \"onChange\", \"onClick\", \"onContextMenu\", \"hideIcon\", \"fullWidth\", \"iconProps\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { iconPropTypes } from '@scaleflex/icons/icon.prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport ArrowTick from '../arrow-tick';\nimport { Position as ArrowTickType } from '../../utils/types';\nimport Styled from './accordion-header.styles';\nvar AccordionHeader = intrinsicComponent(function (_ref, ref) {\n var expanded = _ref.expanded,\n label = _ref.label,\n onChange = _ref.onChange,\n _onClick = _ref.onClick,\n onContextMenu = _ref.onContextMenu,\n hideIcon = _ref.hideIcon,\n fullWidth = _ref.fullWidth,\n iconPropsData = _ref.iconProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Header, _extends({\n ref: ref,\n onClick: function onClick(event) {\n if (typeof onChange === 'function') {\n onChange(!expanded);\n }\n if (typeof _onClick === 'function') {\n _onClick(event);\n }\n },\n fullWidth: fullWidth\n }, rest), /*#__PURE__*/React.createElement(Styled.Label, {\n onContextMenu: onContextMenu\n }, label), !hideIcon && /*#__PURE__*/React.createElement(Styled.Icon, {\n onContextMenu: onContextMenu\n }, /*#__PURE__*/React.createElement(ArrowTick, {\n type: expanded ? ArrowTickType.Top : ArrowTickType.Bottom,\n IconProps: _objectSpread({\n size: 11\n }, iconPropsData)\n })));\n});\nAccordionHeader.defaultProps = {\n expanded: false,\n hideIcon: false,\n fullWidth: false\n};\nAccordionHeader.propTypes = {\n label: PT.node.isRequired,\n expanded: PT.bool,\n hideIcon: PT.bool,\n fullWidth: PT.bool,\n onChange: PT.func,\n iconProps: PT.exact(iconPropTypes)\n};\nexport default AccordionHeader;","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'AccordionDetails';\nvar AccordionDetails = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1wr6wpr-0\"\n})([\"margin:16px 0;\"]);\nvar Styled = applyDisplayNames({\n AccordionDetails: AccordionDetails\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"expanded\", \"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './accordion-details.styles';\nvar AccordionDetails = intrinsicComponent(function (_ref, ref) {\n var expanded = _ref.expanded,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(React.Fragment, null, expanded && /*#__PURE__*/React.createElement(Styled.AccordionDetails, _extends({\n ref: ref\n }, rest), children));\n});\nAccordionDetails.defaultProps = {\n expanded: false\n};\nAccordionDetails.propTypes = {\n expanded: PT.bool\n};\nexport default AccordionDetails;","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'Accordion';\nvar Accordion = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1g4tz7s-0\"\n})([\"\"]);\nvar Styled = applyDisplayNames({\n Accordion: Accordion\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"label\", \"expanded\", \"children\", \"detailStyle\", \"headerStyle\", \"fullWidth\", \"iconProps\", \"onClick\", \"onChange\", \"onContextMenu\", \"hideIcon\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { iconPropTypes } from '@scaleflex/icons/icon.prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport AccordionHeader from '../accordion-header';\nimport AccordionDetails from '../accordion-details';\nimport Styled from './accordion.styles';\nvar Accordion = intrinsicComponent(function (_ref, ref) {\n var label = _ref.label,\n expanded = _ref.expanded,\n children = _ref.children,\n detailStyle = _ref.detailStyle,\n headerStyle = _ref.headerStyle,\n fullWidth = _ref.fullWidth,\n iconPropsData = _ref.iconProps,\n _onClick = _ref.onClick,\n onChange = _ref.onChange,\n onContextMenu = _ref.onContextMenu,\n hideIcon = _ref.hideIcon,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Accordion, _extends({\n ref: ref\n }, rest), /*#__PURE__*/React.createElement(AccordionHeader, {\n label: label,\n expanded: expanded,\n style: _objectSpread({}, headerStyle),\n hideIcon: hideIcon,\n onClick: function onClick(event) {\n if (typeof onChange === 'function') {\n onChange(!expanded, event);\n }\n if (typeof _onClick === 'function') {\n _onClick(event);\n }\n },\n onContextMenu: onContextMenu,\n iconProps: iconPropsData,\n fullWidth: fullWidth\n }), /*#__PURE__*/React.createElement(AccordionDetails, {\n expanded: expanded,\n style: _objectSpread({}, detailStyle)\n }, children));\n});\nAccordion.defaultProps = {\n expanded: false,\n hideIcon: false\n};\nAccordion.propTypes = {\n label: PT.node.isRequired,\n expanded: PT.bool,\n detailStyle: PT.object,\n headerStyle: PT.object,\n onChange: PT.func,\n onContextMenu: PT.func,\n hideIcon: PT.bool,\n fullWidth: PT.bool,\n iconProps: PT.exact(iconPropTypes)\n};\nexport default Accordion;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"stroke\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Arrow = intrinsicComponent(function (_ref, ref) {\n var _ref$stroke = _ref.stroke,\n stroke = _ref$stroke === void 0 ? 'currentColor' : _ref$stroke,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 10 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size * (51 / 56),\n height: size,\n viewBox: \"0 0 51 56\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.2754 3L37.2754 27.0741L12.2754 53\",\n stroke: stroke,\n strokeWidth: \"5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }));\n});\nexport default Arrow;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Tick = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.9783 2.30184C12.7972 2.12074 12.586 2 12.3143 2C12.0728 2 11.8314 2.09055 11.6503 2.30184L4.73816 9.84779L2.29327 7.34254C2.11217 7.16143 1.8707 7.07088 1.62923 7.07088C1.38776 7.07088 1.14629 7.19162 0.995367 7.37272C0.663345 7.76511 0.663345 8.36879 1.02555 8.73099L4.13448 11.9003C4.31559 12.0814 4.52687 12.1719 4.76835 12.1719C5.00982 12.1719 5.25129 12.0814 5.43239 11.8701L12.9783 3.62993C13.3406 3.2979 13.3406 2.66404 12.9783 2.30184Z\",\n fill: color\n }));\n});\nexport default Tick;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CopyOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.33984 12.111V2.04761C2.33984 1.49532 2.78756 1.04761 3.33984 1.04761H10.8182C11.3705 1.04761 11.8182 1.49532 11.8182 2.04761V12.111C11.8182 12.6633 11.3705 13.111 10.8182 13.111H3.33984C2.78756 13.111 2.33984 12.6633 2.33984 12.111ZM3.33984 12.111V2.04761L10.8182 2.04761L10.8182 12.111L3.33984 12.111Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.66 4.97388C13.66 4.69774 13.4361 4.47388 13.16 4.47388C12.8838 4.47388 12.66 4.69774 12.66 4.97388V13.9523H5.40491C5.12876 13.9523 4.90491 14.1761 4.90491 14.4523C4.90491 14.7284 5.12876 14.9523 5.40491 14.9523H13.16C13.4361 14.9523 13.66 14.7284 13.66 14.4523V4.97388Z\",\n fill: color\n }));\n});\nexport default CopyOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var EyeOpen = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 31.625C8.64336 31.625 0.533984 17.3656 0.196875 16.759C-0.065625 16.2867 -0.065625 15.7129 0.196875 15.2406C0.533984 14.6344 8.64336 0.375 25 0.375C41.3566 0.375 49.466 14.6344 49.8031 15.241C50.0656 15.7133 50.0656 16.2871 49.8031 16.7594C49.466 17.3656 41.3566 31.625 25 31.625ZM3.40117 15.9977C5.25977 18.8145 12.557 28.5 25 28.5C37.4824 28.5 44.7473 18.8223 46.5988 16.0023C44.7402 13.1855 37.443 3.5 25 3.5C12.5176 3.5 5.25273 13.1777 3.40117 15.9977ZM25 25.375C19.8305 25.375 15.625 21.1695 15.625 16C15.625 10.8305 19.8305 6.625 25 6.625C30.1695 6.625 34.375 10.8305 34.375 16C34.375 21.1695 30.1695 25.375 25 25.375ZM25 9.75C21.5539 9.75 18.75 12.5539 18.75 16C18.75 19.4461 21.5539 22.25 25 22.25C28.4461 22.25 31.25 19.4461 31.25 16C31.25 12.5539 28.4461 9.75 25 9.75Z\",\n fill: color\n }));\n});\nexport default EyeOpen;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var EyeClosed = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 44 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.2553 6.05501C36.5966 5.71376 37.1514 5.71376 37.4926 6.05501C37.8339 6.39626 37.8339 6.95103 37.4926 7.29228L32.3765 12.4084C38.3601 15.8067 42.6046 20.7607 42.7917 20.9825C43.0682 21.3097 43.0699 21.7874 42.7936 22.113C42.3893 22.5908 32.7818 33.7978 22.0001 33.7978C18.9909 33.7978 15.9678 33.1203 13.0065 31.7785L7.74272 37.0423C7.57292 37.2121 7.34897 37.2978 7.12495 37.2978C6.90092 37.2978 6.67698 37.212 6.50545 37.0423C6.1642 36.701 6.1642 36.1462 6.50545 35.805L17.0426 25.2678C17.0453 25.265 17.0481 25.2622 17.0509 25.2595C17.0531 25.2573 17.0553 25.2551 17.0575 25.2529L25.7063 16.6041C25.7081 16.6023 25.7098 16.6005 25.7116 16.5987C25.7134 16.5969 25.7152 16.5952 25.717 16.5934L30.2895 12.0208C30.3028 12.0067 30.3164 11.9931 30.3304 11.9799L36.2553 6.05501ZM31.0895 13.6954L27.5301 17.2548C28.4835 18.476 28.9998 19.9721 28.9998 21.5478C28.9998 25.4083 25.8603 28.5478 21.9999 28.5478C20.4242 28.5478 18.9281 28.0314 17.7069 27.078L14.3353 30.4497C16.8728 31.5113 19.445 32.0478 22 32.0478C30.6537 32.0478 38.863 23.8071 40.9489 21.5478C39.6267 20.1195 35.855 16.3016 31.0895 13.6954ZM18.9574 25.8276C19.8392 26.458 20.8929 26.7977 21.9999 26.7977C24.8943 26.7977 27.2499 24.4422 27.2499 21.5477C27.2499 20.4409 26.9092 19.3873 26.2793 18.5056L18.9574 25.8276Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.7418 10.3057C25.7504 9.63545 23.8184 9.29773 22.0001 9.29773C11.2183 9.29773 1.61084 20.5047 1.20659 20.9825C0.951064 21.2835 0.930064 21.721 1.15762 22.0482C1.27837 22.2215 4.17111 26.3287 9.18485 29.659C9.33358 29.7587 9.49985 29.806 9.66785 29.806C9.94963 29.806 10.2279 29.6695 10.3959 29.4122C10.6636 29.0115 10.5534 28.4672 10.1509 28.2012C6.46889 25.753 3.94889 22.7973 3.00561 21.595C5.01989 19.4075 13.2834 11.0478 22.0001 11.0478C23.6293 11.0478 25.3741 11.3558 27.1835 11.963C27.642 12.1275 28.139 11.8738 28.2913 11.4135C28.4453 10.955 28.2003 10.4598 27.7418 10.3057Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2197 14.6685C22.8224 14.5985 22.4164 14.5477 22 14.5477C18.1395 14.5477 15 17.6872 15 21.5477C15 21.9642 15.0508 22.3702 15.1225 22.7674C15.1977 23.1909 15.567 23.4902 15.9817 23.4902C16.0325 23.4902 16.0832 23.4867 16.1357 23.4762C16.6099 23.3922 16.9285 22.9371 16.8445 22.4629C16.7902 22.1654 16.75 21.8627 16.75 21.5477C16.75 18.6532 19.1055 16.2977 22 16.2977C22.315 16.2977 22.6177 16.338 22.9152 16.3905C23.3807 16.485 23.8444 16.1559 23.9284 15.6817C24.0124 15.2075 23.694 14.7525 23.2197 14.6685Z\",\n fill: color\n }));\n});\nexport default EyeClosed;","import { lightPalette } from '../../theme/roots/palette';\nimport { Color } from '../../utils/types/palette';\nexport var getInputBackgroundColor = function getInputBackgroundColor(readOnly, disabled) {\n if (readOnly || disabled) {\n return lightPalette[Color.BackgroundHover];\n }\n return lightPalette[Color.BackgroundStateless];\n};\nexport var getInputTextColor = function getInputTextColor(readOnly, disabled) {\n if (readOnly) {\n return lightPalette[Color.AccentPrimaryHover];\n }\n if (disabled) {\n return lightPalette[Color.TextPlaceholder];\n }\n return lightPalette[Color.TextPrimary];\n};\nexport var getInputBorderColor = function getInputBorderColor(readOnly, disabled) {\n if (readOnly) {\n return lightPalette[Color.BordersItem];\n }\n if (disabled) {\n return lightPalette[Color.BordersSecondary];\n }\n return lightPalette[Color.BorderPrimaryStateless];\n};\nexport var handleCopyIcon = function handleCopyIcon(value, setShowCopyMessage) {\n navigator.clipboard.writeText(value);\n setShowCopyMessage(true);\n};","export var Type = {\n Text: 'text',\n Password: 'password'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { FontVariant as FV } from '../../utils/types/typography';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { sizeInputMixin, fontSizeInputMixin, errorMixin } from './input.mixin';\nimport { InputSize } from '../../utils/types';\nimport { getInputBackgroundColor, getInputTextColor, getInputBorderColor } from './input.utils';\nvar baseClassName = 'Input';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-150k0cz-0\"\n})(function (_ref) {\n var iconClickStart = _ref.iconClickStart,\n iconClickEnd = _ref.iconClickEnd,\n disabled = _ref.disabled,\n readOnly = _ref.readOnly,\n iconType = _ref.iconType,\n palette = _ref.theme.palette;\n return css([\"display:flex;color:\", \";cursor:\", \";flex-shrink:0;\", \"\"], palette[PColor.IconsPrimary], (iconClickStart || iconClickEnd) && !disabled && !readOnly ? 'pointer' : 'default', iconType === 'end' && css([\"color:\", \";\"], palette[PColor.IconsSecondary]));\n});\nvar CopyIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'CopyIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-1\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"display:flex;color:\", \";cursor:pointer;\"], palette[PColor.IconsSecondary]);\n});\nvar PasswordIcon = /*#__PURE__*/styled(CopyIcon).attrs({\n className: generateClassNames(baseClassName, 'PasswordIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-2\"\n})([\"\"]);\nvar Container = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Container')\n}).withConfig({\n componentId: \"sc-150k0cz-3\"\n})(function () {\n return css([\"display:block;color:inherit;font-size:inherit;width:100%;min-width:0;margin:0;padding:0;border:0;background-color:transparent;outline:none;\"]);\n});\nvar Base = /*#__PURE__*/styled.input.attrs({\n className: generateClassNames(baseClassName, 'Base')\n}).withConfig({\n componentId: \"sc-150k0cz-4\"\n})(function (_ref3) {\n var palette = _ref3.theme.palette,\n _ref3$isEllipsis = _ref3.isEllipsis,\n isEllipsis = _ref3$isEllipsis === void 0 ? false : _ref3$isEllipsis;\n return css([\"display:block;color:inherit;width:100%;min-width:fit-content;margin:0;padding:0;border:0;background-color:transparent;outline:none;\", \" &::placeholder{color:\", \";}\"], isEllipsis && css([\"text-overflow:ellipsis;\"]), palette[PColor.TextPlaceholder]);\n});\nvar Input = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-150k0cz-5\"\n})(function (_ref4) {\n var _ref4$size = _ref4.size,\n size = _ref4$size === void 0 ? InputSize.Md : _ref4$size,\n _ref4$error = _ref4.error,\n error = _ref4$error === void 0 ? false : _ref4$error,\n _ref4$fullWidth = _ref4.fullWidth,\n fullWidth = _ref4$fullWidth === void 0 ? false : _ref4$fullWidth,\n _ref4$readOnly = _ref4.readOnly,\n readOnly = _ref4$readOnly === void 0 ? false : _ref4$readOnly,\n _ref4$disabled = _ref4.disabled,\n disabled = _ref4$disabled === void 0 ? false : _ref4$disabled,\n _ref4$isHovering = _ref4.isHovering,\n isHovering = _ref4$isHovering === void 0 ? false : _ref4$isHovering,\n _ref4$isSelectedItems = _ref4.isSelectedItems,\n isSelectedItems = _ref4$isSelectedItems === void 0 ? false : _ref4$isSelectedItems,\n theme = _ref4.theme;\n return css([\"position:relative;display:inline-flex;align-items:center;box-sizing:border-box;column-gap:8px;cursor:text;transition:all 100ms ease-out;width:\", \";pointer-events:\", \";background-color:\", \";border-radius:\", \";border:1px solid \", \";color:\", \";\", \" \", \";\", \"{\", \"}\", \" \", \" &:hover{color:\", \";}\", \"\"], fullWidth ? '100%' : '300px', disabled ? 'none' : 'auto', getInputBackgroundColor(readOnly, disabled), theme.shape.borderRadius[BRSize.Md], getInputBorderColor(readOnly, disabled), disabled ? theme.palette[PColor.TextPlaceholder] : theme.palette[PColor.TextPrimary], sizeInputMixin[size], isSelectedItems && \"\\n height: fit-content;\\n\\n \".concat(Base, \" {\\n max-width: fit-content;\\n min-width: 20px;\\n flex-grow: 1;\\n width: 40px;\\n }\\n \"), Base, fontSizeInputMixin[size], !readOnly && !disabled && css([\"&:focus-within{background-color:\", \"!important;border:1px solid \", \";&:hover{border:1px solid \", \";\", \"{color:\", \";}}}\", \" &:hover{background-color:\", \";border:1px solid \", \";\", \"{color:\", \";}}\"], theme.palette[PColor.BackgroundSecondary], theme.palette[PColor.AccentStateless], theme.palette[PColor.AccentStateless], Icon, theme.palette[PColor.IconsPrimary], isHovering && css([\"\", \"{color:\", \";}\"], Icon, theme.palette[PColor.IconsPrimaryHover]), theme.palette[PColor.BackgroundStateless], theme.palette[PColor.BordersPrimaryHover], Icon, theme.palette[PColor.IconsPrimaryHover]), disabled && css([\"\", \"{color:\", \";}\"], Icon, theme.palette[PColor.IconsMuted]), getInputTextColor(readOnly, disabled), error && errorMixin);\n});\nvar ClearIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'ClearIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-6\"\n})(function (_ref5) {\n var palette = _ref5.theme.palette;\n return css([\"display:flex;cursor:pointer;color:\", \";\"], palette[PColor.IconsPrimary]);\n});\nvar NotificationBox = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'NotificationBox')\n}).withConfig({\n componentId: \"sc-150k0cz-7\"\n})(function (_ref6) {\n var _ref6$size = _ref6.size,\n size = _ref6$size === void 0 ? InputSize.Md : _ref6$size,\n _ref6$isTextarea = _ref6.isTextarea,\n isTextarea = _ref6$isTextarea === void 0 ? false : _ref6$isTextarea,\n palette = _ref6.theme.palette;\n return css([\"display:flex;position:absolute;align-items:center;max-height:34px;right:0px;padding:8px 12px;gap:6px;bottom:\", \";box-shadow:0px 2px 6px \", \";background-color:\", \";border-radius:4px;align-items:center;\", \"\"], size === InputSize.Md ? '45px' : '35px', palette[PColor.LargeShadow], palette[PColor.BackgroundStateless], isTextarea && \"\\n bottom: \".concat(size === InputSize.Md ? 27 : 22, \"px;\\n right: \").concat(size === InputSize.Md ? 16 : 12, \"px;\\n \"));\n});\nvar NotificationIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'NotificationIcon')\n}).withConfig({\n componentId: \"sc-150k0cz-8\"\n})(function (_ref7) {\n var palette = _ref7.theme.palette;\n return css([\"display:flex;color:\", \";\"], palette[PColor.IconsPrimary]);\n});\nvar NotificationText = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'NotificationText')\n}).withConfig({\n componentId: \"sc-150k0cz-9\"\n})(function (_ref8) {\n var _ref8$theme = _ref8.theme,\n palette = _ref8$theme.palette,\n font = _ref8$theme.typography.font;\n return css([\"display:flex;white-space:nowrap;\", \";color:\", \";\"], font[FV.TextSmall], palette[PColor.TextPrimary]);\n});\nvar FieldWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'fieldWrapper')\n}).withConfig({\n componentId: \"sc-150k0cz-10\"\n})(function (_ref9) {\n var isSelectedItems = _ref9.isSelectedItems;\n return css([\"width:100%;height:100%;display:inline-flex;flex-wrap:wrap;gap:8px;max-height:120px;\", \";::-webkit-scrollbar{display:none;}\"], isSelectedItems && \"\\n overflow-y: auto;\\n \");\n});\nvar Styled = applyDisplayNames({\n Input: Input,\n Container: Container,\n Base: Base,\n Icon: Icon,\n CopyIcon: CopyIcon,\n PasswordIcon: PasswordIcon,\n ClearIcon: ClearIcon,\n NotificationBox: NotificationBox,\n NotificationIcon: NotificationIcon,\n NotificationText: NotificationText,\n FieldWrapper: FieldWrapper\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"inputType\", \"children\", \"iconStart\", \"iconEnd\", \"iconChange\", \"clearIcon\", \"iconClickStart\", \"iconClickEnd\", \"clearIconClick\", \"size\", \"className\", \"style\", \"fullWidth\", \"readOnly\", \"disabled\", \"hideCopyIcon\", \"focusOnMount\", \"focusOnClick\", \"isEllipsis\", \"copyTextMessage\", \"copySuccessIcon\", \"error\", \"renderTags\", \"showPlaceholder\"];\nimport React, { useState, useRef, useEffect } from 'react';\nimport PT from 'prop-types';\nimport CopyOutline from '@scaleflex/icons/copy-outline';\nimport EyeOpen from '@scaleflex/icons/eye-open';\nimport EyeClosed from '@scaleflex/icons/eye-closed';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { handleCopyIcon } from './input.utils';\nimport { Type } from './types';\nimport Styled from './input.styles';\nvar getIconSize = function getIconSize(sizeName, iconType) {\n switch (sizeName) {\n case InputSize.Md:\n return iconType === 'start' ? 15 : 14;\n case InputSize.Sm:\n default:\n return iconType === 'start' ? 13 : 10;\n }\n};\nvar getPasswordIconSize = function getPasswordIconSize(sizeName) {\n switch (sizeName) {\n case InputSize.Md:\n return 16;\n case InputSize.Sm:\n default:\n return 14;\n }\n};\nvar Input = intrinsicComponent(function (_ref, ref) {\n var _rest$selectedItems;\n var inputType = _ref.inputType,\n children = _ref.children,\n iconStart = _ref.iconStart,\n iconEnd = _ref.iconEnd,\n iconChange = _ref.iconChange,\n clearIcon = _ref.clearIcon,\n iconClickStart = _ref.iconClickStart,\n iconClickEnd = _ref.iconClickEnd,\n clearIconClick = _ref.clearIconClick,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n className = _ref.className,\n style = _ref.style,\n fullWidth = _ref.fullWidth,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n _ref$hideCopyIcon = _ref.hideCopyIcon,\n hideCopyIcon = _ref$hideCopyIcon === void 0 ? false : _ref$hideCopyIcon,\n _ref$focusOnMount = _ref.focusOnMount,\n focusOnMount = _ref$focusOnMount === void 0 ? false : _ref$focusOnMount,\n _ref$focusOnClick = _ref.focusOnClick,\n focusOnClick = _ref$focusOnClick === void 0 ? true : _ref$focusOnClick,\n _ref$isEllipsis = _ref.isEllipsis,\n isEllipsis = _ref$isEllipsis === void 0 ? false : _ref$isEllipsis,\n copyTextMessage = _ref.copyTextMessage,\n copySuccessIcon = _ref.copySuccessIcon,\n error = _ref.error,\n renderTags = _ref.renderTags,\n showPlaceholder = _ref.showPlaceholder,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isHovering = _useState2[0],\n setIsHovering = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n showCopyMessage = _useState4[0],\n setShowCopyMessage = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isVisible = _useState6[0],\n setIsVisible = _useState6[1];\n var inputRef = useRef(null);\n var isSelectedItems = (_rest$selectedItems = rest.selectedItems) === null || _rest$selectedItems === void 0 ? void 0 : _rest$selectedItems.length;\n var placeholder = rest.value || isSelectedItems ? '' : rest.placeholder;\n var showCopyIcon = isHovering && readOnly && rest.value.length > 0 && !hideCopyIcon;\n var handleFocus = function handleFocus() {\n var _inputRef$current;\n if (disabled || readOnly) return;\n showPlaceholder === null || showPlaceholder === void 0 || showPlaceholder(false);\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();\n };\n useEffect(function () {\n if (focusOnMount) {\n handleFocus();\n }\n }, []);\n useEffect(function () {\n setTimeout(function () {\n return setShowCopyMessage(false);\n }, 2000);\n }, [showCopyMessage]);\n var handleEntering = function handleEntering() {\n setTimeout(function () {\n setIsHovering(true);\n }, 150);\n };\n var handleLeaving = function handleLeaving() {\n setTimeout(function () {\n setIsHovering(false);\n }, 200);\n };\n var handleIconClick = function handleIconClick(event, type) {\n if (disabled || readOnly) return;\n if (focusOnClick) {\n handleFocus();\n }\n if (type === 'start') {\n if (iconClickStart) {\n iconClickStart(event);\n }\n } else if (type === 'end') {\n if (iconClickEnd) {\n iconClickEnd(event);\n }\n } else if (clearIconClick) {\n clearIconClick(event);\n }\n };\n var renderIcon = function renderIcon(_icon, type) {\n return _icon ? /*#__PURE__*/React.createElement(Styled.Icon, {\n onClick: function onClick(event) {\n return handleIconClick(event, type);\n },\n iconClickStart: iconClickStart,\n iconClickEnd: iconClickEnd,\n iconType: type,\n disabled: disabled,\n readOnly: readOnly\n }, typeof _icon === 'function' ? _icon({\n size: getIconSize(size, type)\n }) : _icon) : undefined;\n };\n var renderClearIcon = function renderClearIcon() {\n return disabled || readOnly || !clearIcon ? undefined : /*#__PURE__*/React.createElement(Styled.ClearIcon, {\n onClick: function onClick(event) {\n return handleIconClick(event, 'clear');\n }\n }, typeof clearIcon === 'function' ? clearIcon({\n size: getIconSize(size, 'clear')\n }) : clearIcon);\n };\n var renderCopyIcon = function renderCopyIcon(icon) {\n return showCopyIcon ? /*#__PURE__*/React.createElement(Styled.CopyIcon, {\n onClick: function onClick() {\n return handleCopyIcon(rest.value, setShowCopyMessage);\n }\n }, typeof icon === 'function' ? icon() : icon) : undefined;\n };\n var toggleVisibility = function toggleVisibility(event) {\n event.stopPropagation();\n setIsVisible(!isVisible);\n };\n var renderPasswordIcon = function renderPasswordIcon() {\n return /*#__PURE__*/React.createElement(Styled.PasswordIcon, {\n onClick: function onClick(event) {\n return toggleVisibility(event);\n }\n }, isVisible ? /*#__PURE__*/React.createElement(EyeClosed, {\n size: getPasswordIconSize(size)\n }) : /*#__PURE__*/React.createElement(EyeOpen, {\n size: getPasswordIconSize(size)\n }));\n };\n var getInputType = function getInputType() {\n if (!inputType && rest !== null && rest !== void 0 && rest.type) {\n return rest === null || rest === void 0 ? void 0 : rest.type;\n }\n if (inputType === Type.Password && !isVisible) {\n return Type.Password;\n }\n return Type.Text;\n };\n var renderField = function renderField() {\n return /*#__PURE__*/React.createElement(Styled.FieldWrapper, {\n isSelectedItems: Boolean(isSelectedItems)\n }, renderTags && renderTags(), /*#__PURE__*/React.createElement(Styled.Base, _extends({}, rest, {\n placeholder: placeholder,\n ref: inputRef,\n readOnly: Boolean(readOnly),\n type: getInputType(),\n isEllipsis: isEllipsis\n })));\n };\n var renderCopyText = function renderCopyText() {\n return /*#__PURE__*/React.createElement(Styled.NotificationBox, {\n size: size\n }, /*#__PURE__*/React.createElement(Styled.NotificationIcon, null, copySuccessIcon), /*#__PURE__*/React.createElement(Styled.NotificationText, null, copyTextMessage));\n };\n return /*#__PURE__*/React.createElement(Styled.Input, {\n onClick: focusOnClick ? handleFocus : undefined,\n ref: ref,\n size: size,\n onMouseEnter: handleEntering,\n onMouseLeave: handleLeaving,\n className: className,\n style: style,\n readOnly: readOnly,\n disabled: disabled,\n fullWidth: Boolean(fullWidth),\n error: error,\n clearIcon: clearIcon,\n isHovering: rest.isHovering,\n isSelectedItems: Boolean(isSelectedItems)\n }, renderIcon(iconStart, 'start'), renderField(), renderCopyIcon( /*#__PURE__*/React.createElement(CopyOutline, {\n size: getIconSize(size, 'copy')\n })), showCopyMessage && renderCopyText(), renderClearIcon(), inputType === Type.Password && renderPasswordIcon(), renderIcon(iconEnd, 'end'), renderIcon(iconChange, ''), children && /*#__PURE__*/React.createElement(React.Fragment, null, children));\n});\nexport var defaultProps = {\n size: InputSize.Md,\n error: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n copyTextMessage: 'Copied!'\n};\nInput.defaultProps = defaultProps;\nexport var propTypes = {\n size: PT.oneOf(objectValues(InputSize)),\n iconStart: PT.oneOfType([PT.node, PT.func]),\n iconEnd: PT.oneOfType([PT.node, PT.func]),\n iconChange: PT.oneOfType([PT.node, PT.func]),\n copySuccessIcon: PT.oneOfType([PT.node, PT.func]),\n clearIcon: PT.oneOfType([PT.node, PT.func]),\n error: PT.bool,\n fullWidth: PT.bool,\n value: PT.any,\n readOnly: PT.bool,\n disabled: PT.bool,\n iconClickStart: PT.func,\n showPlaceholder: PT.func,\n iconClickEnd: PT.func,\n clearIconClick: PT.func,\n focusOnMount: PT.bool,\n focusOnClick: PT.bool,\n copyTextMessage: PT.string,\n inputType: PT.string,\n renderTags: PT.func\n};\nInput.propTypes = propTypes;\nexport default Input;","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { useRef, useEffect } from 'react';\n/**\r\n * Creates DOM element to be used as React root.\r\n */\nfunction createRootElement(id) {\n var rootContainer = document.createElement('div');\n rootContainer.setAttribute('id', id);\n return rootContainer;\n}\n\n/**\r\n * Appends element as last child of body.\r\n */\nfunction addRootElement(rootElem) {\n document.body.append(rootElem);\n}\n\n/**\r\n * Hook to create a React Portal.\r\n * Automatically handles creating and tearing-down the root elements (no SRR\r\n * makes this trivial), so there is no need to ensure the parent target already\r\n * exists.\r\n * @example\r\n * const target = usePortal(id, [id]);\r\n * return createPortal(children, target);\r\n * @param {String} id The id of the target container, e.g 'modal' or 'spotlight'\r\n * @returns {HTMLElement} The DOM node to use as the Portal target.\r\n */\nfunction usePortal(id) {\n var rootElemRef = useRef(null);\n useEffect(function () {\n // Look for existing target dom element to append to\n var existingParent = document.querySelector(\"#\".concat(id));\n // Parent is either a new root or the existing dom element\n var parentElem = existingParent || createRootElement(id);\n\n // If there is no existing DOM element, add a new one.\n if (!existingParent) {\n addRootElement(parentElem);\n }\n\n // Add the detached element to the parent\n if (rootElemRef.current) {\n parentElem.append(rootElemRef.current);\n }\n return function removeElement() {\n if (rootElemRef.current) {\n rootElemRef.current.remove();\n }\n if (parentElem.childNodes.length === -1) {\n parentElem.remove();\n }\n };\n }, []);\n\n /**\r\n * It's important we evaluate this lazily:\r\n * - We need first render to contain the DOM element, so it shouldn't happen\r\n * in useEffect. We would normally put this in the constructor().\r\n * - We can't do 'const rootElemRef = useRef(document.createElement('div))',\r\n * since this will run every single render (that's a lot).\r\n * - We want the ref to consistently point to the same DOM element and only\r\n * ever run once.\r\n * @link https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\r\n */\n function getRootElem() {\n if (!rootElemRef.current) {\n rootElemRef.current = document.createElement('div');\n }\n return rootElemRef.current;\n }\n return getRootElem();\n}\nexport default usePortal;\nexport { usePortal };","export var Position = {\n AutoStart: 'auto-start',\n Auto: 'auto',\n AutoEnd: 'auto-end',\n TopStart: 'top-start',\n Top: 'top',\n TopEnd: 'top-end',\n BottomStart: 'bottom-start',\n Bottom: 'bottom',\n BottomEnd: 'bottom-end',\n LeftStart: 'left-start',\n Left: 'left',\n LeftEnd: 'left-end',\n RightStart: 'right-start',\n Right: 'right',\n RightEnd: 'right-end'\n};","export var Strategy = {\n Absloute: 'absolute',\n Fixed: 'fixed'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _PopperMixin;\nimport { css } from 'styled-components';\nimport { Position } from './types';\nexport var PopperMixin = (_PopperMixin = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_PopperMixin, Position.Auto, css([\"top:0px;bottom:0px;left:0px;right:0px;\"])), Position.AutoEnd, css([\"top:0px;bottom:0px;left:0px;right:0px;\"])), Position.AutoStart, css([\"top:0px;bottom:0px;left:0px;right:0px;\"])), Position.Right, css([\"left:-4px;\"])), Position.RightEnd, css([\"left:-4px;\"])), Position.RightStart, css([\"left:-4px;\"])), Position.Left, css([\"right:-4px;\"])), Position.LeftEnd, css([\"right:-4px;\"])), Position.LeftStart, css([\"right:-4px;\"])), Position.Top, css([\"bottom:-4px;\"])), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_PopperMixin, Position.TopEnd, css([\"bottom:-4px;\"])), Position.TopStart, css([\"bottom:-4px;\"])), Position.Bottom, css([\"top:-4px;\"])), Position.BottomEnd, css([\"top:-4px;\"])), Position.BottomStart, css([\"top:-4px;\"])));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { PopperMixin } from './popper.mixin';\nimport { Position } from './types';\nvar baseClassName = 'Popper';\nvar Popper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1373tsp-0\"\n})([\"\"]);\nvar PopperWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'wrapper')\n}).withConfig({\n componentId: \"sc-1373tsp-1\"\n})(function (_ref) {\n var zIndex = _ref.zIndex;\n return css([\"position:relative;z-index:\", \";\"], zIndex);\n});\nvar Arrow = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'arrow')\n}).withConfig({\n componentId: \"sc-1373tsp-2\"\n})(function (_ref2) {\n var _ref2$warning = _ref2.warning,\n warning = _ref2$warning === void 0 ? false : _ref2$warning,\n _ref2$position = _ref2.position,\n position = _ref2$position === void 0 ? Position.Right : _ref2$position,\n theme = _ref2.theme;\n return css([\"width:8px;height:8px;position:absolute;&::before{content:'';background:\", \";width:8px;height:8px;transform:rotate(45deg);position:absolute;top:0;left:0;z-index:-1;}\", \"\"], warning ? theme.palette[PColor.BackgroundOrange] : theme.palette[PColor.BackgroundGrey], PopperMixin[position]);\n});\nvar Overlay = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Overlay')\n}).withConfig({\n componentId: \"sc-1373tsp-3\"\n})(function () {\n return css([\"position:fixed;right:0;bottom:0;top:0;left:0;background-color:transparent;\"]);\n});\nvar Styled = applyDisplayNames({\n Popper: Popper,\n Overlay: Overlay,\n Arrow: Arrow,\n PopperWrapper: PopperWrapper\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"anchorEl\", \"children\", \"open\", \"warning\", \"position\", \"arrow\", \"popperOptions\", \"onClick\", \"overlay\", \"zIndex\", \"enableUnderlayingEvent\", \"wrapperStyles\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport { createPopper } from '@popperjs/core';\nimport usePortal from '../../hooks/use-portal';\nimport { intrinsicComponent, generateClassNames, useForkRef, objectValues } from '../../utils/functions';\nimport { Position, Strategy } from './types';\nimport Styled from './popper.styles';\nvar Popper = intrinsicComponent(function (_ref, ref) {\n var anchorEl = _ref.anchorEl,\n children = _ref.children,\n open = _ref.open,\n _ref$warning = _ref.warning,\n warning = _ref$warning === void 0 ? false : _ref$warning,\n _ref$position = _ref.position,\n initialPlacement = _ref$position === void 0 ? 'bottom' : _ref$position,\n _ref$arrow = _ref.arrow,\n arrow = _ref$arrow === void 0 ? false : _ref$arrow,\n popperOptions = _ref.popperOptions,\n onClick = _ref.onClick,\n _ref$overlay = _ref.overlay,\n overlay = _ref$overlay === void 0 ? false : _ref$overlay,\n _ref$zIndex = _ref.zIndex,\n zIndex = _ref$zIndex === void 0 ? 1300 : _ref$zIndex,\n enableUnderlayingEvent = _ref.enableUnderlayingEvent,\n _ref$wrapperStyles = _ref.wrapperStyles,\n wrapperStyles = _ref$wrapperStyles === void 0 ? {} : _ref$wrapperStyles,\n rest = _objectWithoutProperties(_ref, _excluded);\n var target = usePortal(generateClassNames('Popper'));\n var popperRef = useRef(null);\n var handlePopperRef = useForkRef(popperRef, ref);\n useEffect(function () {\n if (!anchorEl || !open || popperRef.current === null) {\n return undefined;\n }\n var defaultModifiers = [{\n name: 'arrow',\n options: {\n element: '[data-popper-arrow]'\n }\n }, {\n name: 'offset',\n options: {\n offset: [0, 10]\n }\n }];\n var popperModifiers = arrow ? defaultModifiers : [];\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n var popper = createPopper(anchorEl, popperRef.current, _objectSpread(_objectSpread({\n placement: initialPlacement\n }, popperOptions), {}, {\n modifiers: popperModifiers\n }));\n handlePopperRef.current = popper;\n return function () {\n popper.destroy();\n handlePopperRef.current = null;\n };\n }, [anchorEl, open, popperOptions, initialPlacement, arrow]);\n var passEventToUnderlayingEvent = function passEventToUnderlayingEvent(event) {\n setTimeout(function () {\n if (event.clientX && event.clientY) {\n var elem = document.elementFromPoint(event.clientX, event.clientY);\n if (elem) {\n elem.dispatchEvent(event.nativeEvent);\n }\n }\n }, 0);\n };\n var handleOnClicking = function handleOnClicking(event) {\n event.persist();\n event.preventDefault();\n event.stopPropagation();\n if (onClick) {\n onClick(event);\n }\n if (enableUnderlayingEvent) {\n passEventToUnderlayingEvent(event);\n }\n };\n var renderOverlay = function renderOverlay() {\n return /*#__PURE__*/React.createElement(Styled.Overlay, {\n onClick: handleOnClicking,\n onContextMenu: handleOnClicking\n });\n };\n if (!open) {\n return /*#__PURE__*/React.createElement(\"div\", {\n hidden: true,\n ref: handlePopperRef\n });\n }\n var render = function render() {\n var _handlePopperRef$stat;\n return /*#__PURE__*/React.createElement(Styled.PopperWrapper, {\n zIndex: zIndex,\n style: _objectSpread({}, wrapperStyles)\n }, overlay && renderOverlay(), /*#__PURE__*/React.createElement(Styled.Popper, _extends({\n ref: handlePopperRef\n }, rest), children, arrow && /*#__PURE__*/React.createElement(Styled.Arrow, {\n warning: warning,\n \"data-popper-arrow\": true,\n position: (handlePopperRef === null || handlePopperRef === void 0 || (_handlePopperRef$stat = handlePopperRef.state) === null || _handlePopperRef$stat === void 0 ? void 0 : _handlePopperRef$stat.placement) || initialPlacement\n })));\n };\n return /*#__PURE__*/createPortal(render(), target);\n});\nPopper.defaultProps = {};\nexport var propTypes = {\n anchorEl: PT.oneOfType([PT.instanceOf(Element), PT.object]),\n popperOptions: PT.shape({\n modifiers: PT.arrayOf(PT.shape({\n data: PT.object,\n effect: PT.func,\n enabled: PT.bool,\n fn: PT.func,\n name: PT.any.isRequired,\n options: PT.object,\n phase: PT.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PT.arrayOf(PT.string),\n requiresIfExists: PT.arrayOf(PT.string)\n })),\n onFirstUpdate: PT.func,\n placement: PT.oneOf(objectValues(Position)),\n strategy: PT.oneOf(objectValues(Strategy))\n }),\n overlay: PT.bool,\n warning: PT.bool,\n arrow: PT.bool,\n zIndex: PT.number,\n enableUnderlayingEvent: PT.bool,\n wrapperStyles: PT.object\n};\nPopper.propTypes = propTypes;\nexport default Popper;","import styled, { css, keyframes } from 'styled-components';\nimport { generateClassNames, applyDisplayNames, scrollBar } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nvar baseClassName = 'Menu';\nvar Overlay = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Overlay')\n}).withConfig({\n componentId: \"sc-10okxhw-0\"\n})(function () {\n return css([\"position:fixed;right:0;bottom:0;top:0;left:0;background-color:transparent;z-index:-1;\"]);\n});\nvar opacityKeyframes = /*#__PURE__*/keyframes([\"from{opacity:0;}to{opacity:1;}\"]);\nvar transformKeyframes = /*#__PURE__*/keyframes([\"from{transform:scale(0.97);margin-top:0px;}to{transform:scale(1);margin-top:4px;}\"]);\nvar fadeInAnimation = /*#__PURE__*/css([\"animation:\", \" 250ms 0ms cubic-bezier(0.4,0,0.2,1),\", \" 250ms cubic-bezier(0.4,0,0.2,1);\"], opacityKeyframes, transformKeyframes);\nvar Menu = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-10okxhw-1\"\n})(function (_ref) {\n var rect = _ref.rect,\n theme = _ref.theme,\n scroll = _ref.scroll,\n _ref$maxHeight = _ref.maxHeight,\n maxHeight = _ref$maxHeight === void 0 ? '' : _ref$maxHeight;\n return css([\"min-width:\", \"px;width:195px;min-height:16px;overflow-x:hidden;overflow-y:auto;transition:opacity 250ms cubic-bezier(0.4,0,0,1),transform 250ms cubic-bezier(0.4,0,0,1),margin-top 250ms cubic-bezier(0.4,0,0,1);outline:0;box-shadow:0 2px 4px \", \";border-radius:\", \";\", \" \", \" margin-top:4px;\", \"\"], rect.width, theme.palette[PColor.MediumShadow], theme.shape.borderRadius[BRSize.Md], scroll && scrollBar, maxHeight && css([\"max-height:\", \";\"], Number.isNaN(+maxHeight) ? maxHeight : \"\".concat(maxHeight, \"px\")), fadeInAnimation);\n});\nvar Styled = applyDisplayNames({\n Menu: Menu,\n Overlay: Overlay\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"id\", \"children\", \"open\", \"fullWidth\", \"anchorElPosition\", \"anchorEl\", \"onClose\", \"containerProps\", \"alignCenter\", \"maxHeight\", \"position\", \"popperOptions\", \"enableOverlay\", \"zIndex\", \"hideScroll\", \"scroll\", \"enableUnderlayingEvent\", \"popperWrapperStyles\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { propTypes as popperPropTypes } from '../popper/popper.component';\nimport { Position } from '../popper/types';\nimport Popper from '../popper';\nimport Styled from './menu.styles';\nvar Menu = intrinsicComponent(function (_ref, ref) {\n var id = _ref.id,\n children = _ref.children,\n open = _ref.open,\n fullWidth = _ref.fullWidth,\n anchorElPosition = _ref.anchorElPosition,\n anchorEl = _ref.anchorEl,\n onClose = _ref.onClose,\n containerProps = _ref.containerProps,\n alignCenter = _ref.alignCenter,\n maxHeight = _ref.maxHeight,\n position = _ref.position,\n popperOptions = _ref.popperOptions,\n _ref$enableOverlay = _ref.enableOverlay,\n enableOverlay = _ref$enableOverlay === void 0 ? true : _ref$enableOverlay,\n zIndex = _ref.zIndex,\n _ref$hideScroll = _ref.hideScroll,\n hideScroll = _ref$hideScroll === void 0 ? true : _ref$hideScroll,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? true : _ref$scroll,\n _ref$enableUnderlayin = _ref.enableUnderlayingEvent,\n enableUnderlayingEvent = _ref$enableUnderlayin === void 0 ? false : _ref$enableUnderlayin,\n _ref$popperWrapperSty = _ref.popperWrapperStyles,\n popperWrapperStyles = _ref$popperWrapperSty === void 0 ? {} : _ref$popperWrapperSty,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n timeout = _useState2[0],\n setTimeoutState = _useState2[1];\n var _useState3 = useState(new DOMRect()),\n _useState4 = _slicedToArray(_useState3, 2),\n rect = _useState4[0],\n setRect = _useState4[1];\n var menuRef = useRef(null);\n var updateRect = useCallback(function () {\n var _anchorEl$getBounding;\n var defaultPosition = _objectSpread({\n top: 0,\n left: 0,\n height: 0,\n width: 0\n }, anchorElPosition || {});\n var defaultRect = new DOMRect(defaultPosition.left, defaultPosition.top, defaultPosition.width, defaultPosition.height);\n setRect((_anchorEl$getBounding = anchorEl === null || anchorEl === void 0 ? void 0 : anchorEl.getBoundingClientRect()) !== null && _anchorEl$getBounding !== void 0 ? _anchorEl$getBounding : defaultRect);\n }, [open, timeout, anchorEl]);\n var handleWindowSizeChanged = useCallback(function () {\n if (open) {\n if (timeout) {\n clearTimeout(timeout);\n }\n setTimeoutState(setTimeout(updateRect, 300));\n }\n }, [open, timeout]);\n useEffect(function () {\n window.addEventListener('resize', handleWindowSizeChanged);\n return function () {\n window.removeEventListener('resize', handleWindowSizeChanged);\n };\n }, [handleWindowSizeChanged]);\n useEffect(function () {\n updateRect();\n }, [anchorElPosition, updateRect]);\n useEffect(function () {\n if (hideScroll) {\n if (open) {\n document.body.classList.add('Menu-open');\n updateRect();\n } else {\n document.body.classList.remove('Menu-open');\n }\n return function () {\n document.body.classList.remove('Menu-open');\n };\n }\n }, [open, updateRect]);\n var handleClose = function handleClose(event) {\n if (typeof onClose === 'function') {\n onClose(event);\n }\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Popper, {\n ref: menuRef,\n position: position || 'bottom-start',\n open: Boolean(anchorEl),\n anchorEl: anchorEl,\n overlay: Boolean(enableOverlay),\n onClick: handleClose,\n popperOptions: popperOptions,\n zIndex: zIndex,\n enableUnderlayingEvent: enableUnderlayingEvent,\n wrapperStyles: popperWrapperStyles\n }, /*#__PURE__*/React.createElement(Styled.Menu, _extends({}, containerProps, {\n alignCenter: Boolean(alignCenter),\n scroll: scroll,\n rect: rect\n }, rest, {\n ref: ref,\n maxHeight: maxHeight\n }), children)));\n});\nexport var defaultProps = {\n open: false,\n containerProps: {},\n maxHeight: 250,\n position: Position.BottomStart,\n enableOverlay: true,\n hideScroll: true,\n scroll: true\n};\nMenu.defaultProps = defaultProps;\nexport var propTypes = {\n anchorElPosition: PT.shape({\n left: PT.number,\n right: PT.number,\n top: PT.number,\n bottom: PT.number\n }),\n anchorEl: PT.instanceOf(Element),\n open: PT.bool,\n fullWidth: PT.bool,\n onClose: PT.func,\n id: PT.string,\n containerProps: PT.object,\n alignCenter: PT.bool,\n maxHeight: PT.oneOfType([PT.string, PT.number]),\n popperOptions: popperPropTypes.popperOptions,\n position: PT.oneOf(objectValues(Position)),\n enableOverlay: PT.bool,\n zIndex: PT.number,\n hideScroll: PT.bool,\n scroll: PT.bool,\n enableUnderlayingEvent: PT.bool,\n popperWrapperStyles: PT.object,\n style: PT.object\n};\nMenu.propTypes = propTypes;\nexport default Menu;","export var Size = {\n Sm: 'sm',\n Md: 'md'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\n// import type { With } from '../../utils/types';\n\n// import { Color as PaletteColor } from '../../utils/types/palette';\nimport { FontVariant as FV } from '../../utils/types/typography';\nimport { Size } from './types';\nexport var sizeMenuItemMixin = _defineProperty(_defineProperty({}, Size.Sm, function (_ref) {\n var font = _ref.theme.typography.font;\n return css([\"padding:8px 16px;min-height:32px;\", \"\"], font[FV.LabelMedium]);\n}), Size.Md, function (_ref2) {\n var font = _ref2.theme.typography.font;\n return css([\"padding:11px 16px;min-height:40px;\", \"\"], font[FV.LabelLarge]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\n// import { BorderRadiusSize as BRSize } from '../../utils/types/shape';\n\nimport { sizeMenuItemMixin } from './menu-item.mixin';\nimport { Size } from './types';\nvar baseClassName = 'MenuItem';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-rrzye0-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette,\n disabled = _ref.disabled;\n return css([\"flex-shrink:0;margin-right:10px;color:\", \";\"], disabled ? palette[PColor.TextPlaceholder] : palette[PColor.IconsPrimary]);\n});\nvar Actions = /*#__PURE__*/styled(Icon).attrs({\n className: generateClassNames(baseClassName, 'Actions')\n}).withConfig({\n componentId: \"sc-rrzye0-1\"\n})(function () {\n return css([\"margin-right:0px;margin-left:16px;\"]);\n});\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-rrzye0-2\"\n})([\"align-items:center;column-gap:4px;flex-grow:1;\"]);\nvar MenuItemWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'wrapper')\n}).withConfig({\n componentId: \"sc-rrzye0-3\"\n})(function (_ref2) {\n var _ref2$divider = _ref2.divider,\n divider = _ref2$divider === void 0 ? false : _ref2$divider,\n _ref2$noOptionsText = _ref2.noOptionsText,\n noOptionsText = _ref2$noOptionsText === void 0 ? false : _ref2$noOptionsText,\n _ref2$disabled = _ref2.disabled,\n disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,\n theme = _ref2.theme;\n return css([\"\", \" \", \"\"], divider && css([\"width:100%;height:1px;background:\", \";box-sizing:border-box;\"], theme.palette[PColor.BordersSecondary]), (noOptionsText || disabled) && css([\"color:\", \";\"], theme.palette[PColor.ButtonDisabledText]));\n});\nvar MenuItem = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-rrzye0-4\"\n})(function (_ref3) {\n var _ref3$size = _ref3.size,\n size = _ref3$size === void 0 ? Size.Sm : _ref3$size,\n active = _ref3.active,\n theme = _ref3.theme,\n _ref3$disableHover = _ref3.disableHover,\n disableHover = _ref3$disableHover === void 0 ? false : _ref3$disableHover,\n noOptionsText = _ref3.noOptionsText,\n disabled = _ref3.disabled;\n return css([\"display:flex;justify-content:space-between;flex-direction:row;align-items:center;width:100%;background:\", \";color:\", \";cursor:pointer;box-sizing:border-box;transition:all 100ms ease-out;\", \" &:focus-within,&:focus,&:hover{\", \";\", \"}\", \"\"], theme.palette[active ? PColor.BackgroundActive : PColor.BackgroundSecondary], theme.palette[PColor.TextPrimary], sizeMenuItemMixin[size], !disableHover && \"background-color: \".concat(theme.palette[PColor.BackgroundHover]), (noOptionsText || disabled) && css([\"cursor:default;background-color:white;\"]), (noOptionsText || disabled) && css([\"& > svg{path{fill:\", \";}}color:\", \";\"], theme.palette[PColor.ButtonDisabledText], theme.palette[PColor.ButtonDisabledText]));\n});\nvar MenuPrefix = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'prefix')\n}).withConfig({\n componentId: \"sc-rrzye0-5\"\n})(function () {\n return css([\"display:flex;\"]);\n});\nvar MenuContent = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'content')\n}).withConfig({\n componentId: \"sc-rrzye0-6\"\n})(function () {\n return css([\"flex-grow:1;line-height:16px;\"]);\n});\nvar MenuSuffix = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'suffix')\n}).withConfig({\n componentId: \"sc-rrzye0-7\"\n})(function () {\n return css([\"display:flex;margin-left:8px;\"]);\n});\nvar Styled = applyDisplayNames({\n MenuItemWrapper: MenuItemWrapper,\n MenuItem: MenuItem,\n MenuPrefix: MenuPrefix,\n MenuContent: MenuContent,\n MenuSuffix: MenuSuffix,\n Label: Label,\n Icon: Icon,\n Actions: Actions\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"list\", \"depth\", \"children\", \"disableHover\", \"noOptionsText\", \"disabled\", \"enableScrollIntoView\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useRef, useEffect } from 'react';\nimport Arrow from '@scaleflex/icons/arrow';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Menu from '../menu';\nimport { Size } from './types';\nimport Styled from './menu-item.styles';\nvar MenuItem = intrinsicComponent(function (_ref, ref) {\n var list = _ref.list,\n _ref$depth = _ref.depth,\n depth = _ref$depth === void 0 ? 0 : _ref$depth,\n children = _ref.children,\n disableHover = _ref.disableHover,\n noOptionsText = _ref.noOptionsText,\n disabled = _ref.disabled,\n enableScrollIntoView = _ref.enableScrollIntoView,\n props = _objectWithoutProperties(_ref, _excluded);\n var menuItemRef = useRef(null);\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n anchorEl = _React$useState2[0],\n setAnchorEl = _React$useState2[1];\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n selectedIds = _React$useState4[0],\n setSelectedIds = _React$useState4[1];\n var handleOpenMenu = function handleOpenMenu(event) {\n setAnchorEl(event.currentTarget);\n };\n var handleScroll = function handleScroll() {\n var _menuItemRef$current;\n (_menuItemRef$current = menuItemRef.current) === null || _menuItemRef$current === void 0 || _menuItemRef$current.scrollIntoView({\n behavior: 'auto',\n block: 'nearest'\n });\n };\n useEffect(function () {\n if (props.active && enableScrollIntoView) {\n handleScroll();\n }\n }, [props.active]);\n var handleSelectedId = function handleSelectedId(ev, selected, depthLevel) {\n var updatedArray = selectedIds.slice(0);\n updatedArray[depthLevel] = selected;\n setSelectedIds(updatedArray);\n handleOpenMenu(ev);\n };\n var handleCloseSubMenu = function handleCloseSubMenu(depthLevel) {\n var updatedArray = selectedIds.slice(0);\n updatedArray[depthLevel] = '';\n setSelectedIds(updatedArray);\n setAnchorEl(null);\n };\n var renderItems = function renderItems(options) {\n var depthLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return options.map(function (option) {\n var hasOptions = option.subList && option.subList.length > 0;\n var subMenu;\n if (selectedIds[depthLevel] === option.key && hasOptions) {\n var newDepthLevel = depthLevel + 1;\n subMenu = /*#__PURE__*/React.createElement(Menu, _extends({\n key: option.key,\n position: \"right\",\n open: Boolean(anchorEl),\n anchorEl: anchorEl,\n enableOverlay: false\n }, option.subMenuProps), /*#__PURE__*/React.createElement(MenuItem, _extends({\n list: option.subList,\n depth: newDepthLevel\n }, props)));\n }\n if (option.content === 'divider') {\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, {\n divider: true,\n key: option.key\n });\n }\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, _extends({\n disabled: false,\n key: option.key,\n onMouseLeave: function onMouseLeave() {\n return handleCloseSubMenu(depthLevel);\n }\n }, props), /*#__PURE__*/React.createElement(Styled.MenuItem, _extends({}, props, {\n className: option.className,\n ref: ref,\n active: Boolean(option.active),\n onClick: option.onClick ? function (event) {\n return option.onClick(_objectSpread({\n event: event\n }, props));\n } : undefined,\n onMouseEnter: function onMouseEnter(ev) {\n return handleSelectedId(ev, option.key, depthLevel);\n },\n disableHover: disableHover || option.disableHover\n }), option.prefix && /*#__PURE__*/React.createElement(Styled.MenuPrefix, null, typeof option.prefix === 'function' ? option.prefix(props) : option.prefix), option.content && /*#__PURE__*/React.createElement(Styled.MenuContent, null, typeof option.content === 'function' ? option.content(props) : option.content), (option.suffix || option.subList) && /*#__PURE__*/React.createElement(Styled.MenuSuffix, null, typeof option.suffix === 'function' ? option.suffix(props) : option.suffix, option.subList && /*#__PURE__*/React.createElement(Arrow, {\n size: 10,\n color: \"#768A9F\"\n }))), subMenu);\n });\n };\n if (!list) {\n if (props.value === 'divider') {\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, {\n divider: true,\n key: props.value\n });\n }\n return /*#__PURE__*/React.createElement(Styled.MenuItemWrapper, {\n noOptionsText: Boolean(noOptionsText),\n disabled: Boolean(disabled)\n }, /*#__PURE__*/React.createElement(Styled.MenuItem, _extends({}, props, {\n ref: menuItemRef,\n disableHover: disableHover,\n noOptionsText: noOptionsText,\n disabled: disabled\n }), children));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderItems(list, depth));\n});\nMenuItem.displayName = 'MenuItem';\nexport var defaultProps = {\n size: Size.Sm,\n active: false\n};\nMenuItem.defaultProps = defaultProps;\nMenuItem.propTypes = {\n size: PT.oneOf(objectValues(Size)),\n children: PT.oneOfType([PT.node, PT.func]),\n active: PT.bool,\n value: PT.oneOfType([PT.string, PT.number, PT.bool, PT.oneOf([null])]),\n depth: PT.number,\n disableHover: PT.bool,\n noOptionsText: PT.bool,\n disabled: PT.bool,\n enableScrollIntoView: PT.bool\n};\nexport default MenuItem;\n// list: PT.arrayOf(\n// PT.shape({\n// key: PT.string.isRequired,\n// content: PT.oneOfType([PT.string, PT.node]).isRequired,\n// prefix: PT.oneOfType([PT.string, PT.node]),\n// subList: PT.arrayOf(PT.object),\n// suffix: PT.oneOfType([PT.string, PT.node]),\n// onClick: PT.func,\n// disabled: PT.bool,\n// })\n// ),","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"disabled\", \"size\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport Styled from './menu-item.styles';\nvar getIconSize = function getIconSize(sizeName) {\n switch (sizeName) {\n case Size.Md:\n return 16;\n case Size.Sm:\n default:\n return 14;\n }\n};\nvar MenuItemIcon = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? Size.Md : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Icon, _extends({\n disabled: disabled\n }, rest, {\n ref: ref\n }), children && typeof children === 'function' ? children({\n size: getIconSize(size)\n }) : children);\n});\nMenuItemIcon.defaultProps = {\n size: Size.Md\n};\nMenuItemIcon.propTypes = {\n size: PT.oneOf(objectValues(Size)),\n children: PT.oneOfType([PT.node, PT.func]).isRequired,\n disabled: PT.bool\n};\nexport default MenuItemIcon;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './menu-item.styles';\nvar MenuItemLabel = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Label, _extends({}, rest, {\n ref: ref\n }), children);\n});\nMenuItemLabel.displayName = 'MenuItemLabel';\nexport default MenuItemLabel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport Styled from './menu-item.styles';\nvar MenuItemActions = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Actions, _extends({}, rest, {\n ref: ref\n }), children && typeof children === 'function' ? children({\n size: rest.size\n }) : children);\n});\nMenuItemActions.displayName = 'MenuItemActions';\nMenuItemActions.defaultProps = {\n size: Size.Md\n};\nMenuItemActions.propTypes = {\n size: PT.oneOf(objectValues(Size)),\n children: PT.oneOfType([PT.node, PT.func]).isRequired\n};\nexport default MenuItemActions;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CrossOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 44 44\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.3196 40.0403C44.2253 40.9461 44.2253 42.4146 43.3196 43.3204C42.4138 44.2262 40.9453 44.2262 40.0396 43.3204L21.9997 25.2802L3.95952 43.3207C3.05376 44.2264 1.58525 44.2264 0.679494 43.3207C-0.226258 42.4149 -0.226258 40.9464 0.679495 40.0406L18.7197 22.0001L0.679313 3.95941C-0.226437 3.05364 -0.226439 1.5851 0.679314 0.679328C1.58507 -0.226442 3.05358 -0.226443 3.95934 0.679328L21.9997 18.72L40.0398 0.679604C40.9455 -0.226163 42.414 -0.226165 43.3198 0.679605C44.2255 1.58537 44.2255 3.05392 43.3198 3.95969L25.2797 22.0001L43.3196 40.0403Z\",\n fill: color\n }));\n});\nexport default CrossOutline;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { FontVariant as FV } from '../../utils/types/typography';\nimport { InputSize } from '../../utils/types';\nexport var sizeHintMixin = _defineProperty(_defineProperty({}, InputSize.Sm, function (_ref) {\n var font = _ref.theme.typography.font;\n return css(font[FV.LabelExtraSmallUp]);\n}), InputSize.Md, function (_ref2) {\n var font = _ref2.theme.typography.font;\n return css(font[FV.LabelSmall]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { sizeHintMixin } from './form-hint.mixin';\nvar baseClassName = 'FormHint';\nvar FormHint = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1vu99sv-0\"\n})(function (_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n _ref$error = _ref.error,\n error = _ref$error === void 0 ? false : _ref$error,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n theme = _ref.theme;\n return css([\"display:flex;align-items:center;color:\", \";\", \" \", \"\"], error ? theme.palette[PColor.Error] : theme.palette[PColor.TextSecondary], disabled && css([\"color:\", \";\"], theme.palette[PColor.ButtonDisabledText]), sizeHintMixin[size]);\n});\nvar Styled = applyDisplayNames({\n FormHint: FormHint\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport Styled from './form-hint.styles';\nvar FormHint = intrinsicComponent(function (props, ref) {\n return /*#__PURE__*/React.createElement(Styled.FormHint, _extends({\n ref: ref\n }, props));\n});\nFormHint.defaultProps = {\n error: false\n};\nFormHint.propTypes = {\n error: PT.bool,\n size: PT.oneOf(objectValues(InputSize))\n};\nexport default FormHint;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { BadgeColor } from '../../utils/types';\nexport var colorBadgeMixin = _defineProperty(_defineProperty(_defineProperty({}, BadgeColor.Primary, function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"background-color:\", \";color:\", \";\"], palette[PaletteColor.AccentPrimary], palette[PaletteColor.ButtonPrimaryText]);\n}), BadgeColor.White, function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"background-color:\", \";color:\", \";\"], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimary]);\n}), BadgeColor.Secondary, function (_ref3) {\n var palette = _ref3.theme.palette;\n return css([\"background-color:\", \";color:\", \";\"], palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.TextPrimary]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { colorBadgeMixin } from './badge.mixin';\nvar baseClassName = 'Badge';\nvar defaultSize = 20;\nvar BadgeRoot = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1rfm40m-0\"\n})([\"position:relative;display:inline-flex;flex-shrink:0;vertical-align:middle;\"]);\nvar Badge = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName)\n}).withConfig({\n componentId: \"sc-1rfm40m-1\"\n})(function (_ref) {\n var size = _ref.size,\n _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'secondary' : _ref$color,\n fontSize = _ref.fontSize,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? '0 6px' : _ref$padding,\n inline = _ref.inline;\n return css([\"\", \" display:flex;flex-wrap:wrap;flex-direction:row;justify-content:center;align-items:center;align-content:center;height:\", \"px;min-width:\", \"px;line-height:1;padding:\", \";font-size:\", \";box-sizing:border-box;transition:transform 225ms cubic-bezier(0.4,0,0.2,1) 0ms;border-radius:\", \"px;z-index:1;\", \"\"], inline ? '' : 'position: absolute;', size || defaultSize, size || defaultSize, typeof padding === 'number' ? \"\".concat(padding, \"px\") : padding, typeof fontSize === 'number' ? \"\".concat(fontSize, \"px\") : fontSize, (size || defaultSize) / 2, colorBadgeMixin[color]);\n});\nvar Styled = applyDisplayNames({\n BadgeRoot: BadgeRoot,\n Badge: Badge\n});\nexport default Styled;","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"badgeContent\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { BadgeColor } from '../../utils/types';\nimport Styled from './badge.styles';\nvar Badge = intrinsicComponent(function (_ref, ref) {\n var badgeContent = _ref.badgeContent,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.BadgeRoot, {\n ref: ref\n }, /*#__PURE__*/React.createElement(Styled.Badge, rest, badgeContent));\n});\nBadge.defaultProps = {\n color: BadgeColor.Secondary,\n inline: false\n};\nBadge.propTypes = {\n color: PT.oneOf(objectValues(BadgeColor)),\n badgeContent: PT.node,\n size: PT.oneOfType([PT.number]),\n fontSize: PT.oneOfType([PT.number, PT.string]),\n padding: PT.oneOfType([PT.number, PT.string]),\n inline: PT.bool\n};\nexport default Badge;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Spinner = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 28 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.3465 44.355C33.5656 50.7844 22.9687 51.6268 14.3708 47.3665L17.8949 44.4545C24.754 47.117 32.7424 46.1093 38.709 41.1792C44.6755 36.249 47.1546 28.6071 45.8085 21.3893L49.3325 18.4773C51.9291 27.6967 49.1274 37.9256 41.3465 44.355Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.1749 2.63356L32.6509 5.54555C25.821 2.91828 17.838 3.86187 11.8366 8.82088C5.87009 13.7511 3.42028 21.4282 4.7372 28.6107L1.21311 31.5227C-1.38344 22.3034 1.45314 12.0456 9.19916 5.64502C16.9801 -0.784402 27.5768 -1.62682 36.1749 2.63356Z\",\n fill: color\n }));\n});\nexport default Spinner;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TwoArrowsRight = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.74299 0.152553C5.95998 -0.056404 6.30528 -0.0498885 6.51424 0.167105C6.7232 0.384099 6.71668 0.7294 6.49969 0.938357L1.43832 5.81227L6.51398 11.0759C6.72309 11.2928 6.71681 11.6381 6.49996 11.8472C6.28311 12.0563 5.9378 12.05 5.7287 11.8332L0.274151 6.1766C0.17369 6.07242 0.118752 5.93258 0.121433 5.78788C0.124113 5.64317 0.184193 5.50547 0.288444 5.40508L5.74299 0.152553Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9549 0.152554C11.1719 -0.0564031 11.5172 -0.0498876 11.7262 0.167106C11.9351 0.3841 11.9286 0.729401 11.7116 0.938357L6.65023 5.81227L11.7259 11.0759C11.935 11.2928 11.9287 11.6381 11.7119 11.8472C11.495 12.0563 11.1497 12.05 10.9406 11.8332L5.48606 6.1766C5.3856 6.07242 5.33067 5.93258 5.33335 5.78788C5.33603 5.64317 5.39611 5.50547 5.50036 5.40508L10.9549 0.152554Z\",\n fill: color\n }));\n});\nexport default TwoArrowsRight;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TwoArrowsLeft = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.25714 11.8474C6.04014 12.0564 5.69484 12.0499 5.48588 11.8329C5.27693 11.6159 5.28344 11.2706 5.50043 11.0616L10.5618 6.18773L5.48614 0.924074C5.27704 0.707224 5.28331 0.361919 5.50016 0.152813C5.71701 -0.0562931 6.06232 -0.0500145 6.27143 0.166835L11.726 5.8234C11.8264 5.92758 11.8814 6.06742 11.8787 6.21212C11.876 6.35683 11.8159 6.49453 11.7117 6.59492L6.25714 11.8474Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.04522 11.8474C0.828227 12.0564 0.482925 12.0499 0.273969 11.8329C0.065012 11.6159 0.0715275 11.2706 0.288521 11.0616L5.34989 6.18773L0.274227 0.924074C0.0651226 0.707224 0.0714006 0.361919 0.28825 0.152813C0.5051 -0.0562931 0.850407 -0.0500145 1.05951 0.166835L6.51406 5.8234C6.61452 5.92758 6.66946 6.06742 6.66678 6.21212C6.6641 6.35683 6.60402 6.49453 6.49977 6.59492L1.04522 11.8474Z\",\n fill: color\n }));\n});\nexport default TwoArrowsLeft;","export var ButtonType = {\n Default: 'default',\n Sidebar: 'sidebar'\n};","export var SideBar = {\n Left: 'left',\n Right: 'right'\n};","import { ButtonSize } from '../../utils/types';\nexport var getIconSize = function getIconSize(sizeName) {\n switch (sizeName) {\n case ButtonSize.Lg:\n return 18;\n case ButtonSize.Md:\n return 16;\n case ButtonSize.Sm:\n return 14;\n case ButtonSize.Xs:\n return 12;\n default:\n return 16;\n }\n};\nexport var getSideBarIconSize = function getSideBarIconSize(sizeName) {\n switch (sizeName) {\n case ButtonSize.Lg:\n return 12;\n case ButtonSize.Md:\n return 11;\n case ButtonSize.Sm:\n return 10;\n default:\n return 11;\n }\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _colorButtonMixin;\nimport { css } from 'styled-components';\nimport StyledBadge from '../badge/badge.styles';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { FontVariant } from '../../utils/types/typography';\nimport { ButtonSize, ButtonColor } from '../../utils/types';\nexport var colorButtonMixin = (_colorButtonMixin = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_colorButtonMixin, ButtonColor.Primary, function (_ref) {\n var palette = _ref.theme.palette,\n active = _ref.active;\n return css([\"background-color:\", \";color:\", \";\", \"{color:\", \";background:transparent;}&:hover{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{color:\", \";background:\", \";cursor:default;\", \"{color:\", \";background:transparent;}}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.Secondary, function (_ref2) {\n var palette = _ref2.theme.palette,\n active = _ref2.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \"{color:\", \";background:transparent;}&:hover{color:\", \";background-color:\", \";\", \"{color:\", \";}}&:focus{color:\", \";background-color:\", \";border:1px solid \", \";\", \"{color:\", \";}}&:active{color:\", \";background-color:\", \";\", \"{color:\", \";}}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;\", \"{color:\", \";}}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentStateless], StyledBadge.Badge, palette[PaletteColor.AccentStateless], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryHover], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], active && css([\"color:\", \";background-color:\", \";\", \"{color:\", \";}&:hover,&:focus{color:\", \";background-color:\", \";\", \"{color:\", \";}}\"], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.AccentPrimaryActive], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.Basic, function (_ref3) {\n var palette = _ref3.theme.palette,\n active = _ref3.active;\n return css([\"background-color:transparent;border:1px solid \", \";color:\", \";\", \"{background-color:transparent;color:\", \";}&:hover{background-color:\", \";color:\", \";\", \"{color:\", \";}}&:active{background-color:\", \";color:\", \";\", \"{color:\", \";}}\", \" &:disabled{background-color:\", \";color:\", \";cursor:default;border:none;\", \"{color:\", \";}}\"], palette[PaletteColor.BordersButton], palette[PaletteColor.LinkStateless], StyledBadge.Badge, palette[PaletteColor.LinkStateless], palette[PaletteColor.BackgroundHover], palette[PaletteColor.LinkHover], StyledBadge.Badge, palette[PaletteColor.LinkHover], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkHover], StyledBadge.Badge, palette[PaletteColor.LinkHover], active && css([\"background-color:\", \";color:\", \";\", \"{color:\", \";}&:hover,&:focus{background-color:\", \";color:\", \";}\"], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkHover], StyledBadge.Badge, palette[PaletteColor.LinkHover], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkHover]), palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.BordersDisabled], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkPrimary, function (_ref4) {\n var palette = _ref4.theme.palette,\n active = _ref4.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkSecondary, function (_ref5) {\n var palette = _ref5.theme.palette,\n active = _ref5.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkBasicPrimary, function (_ref6) {\n var palette = _ref6.theme.palette,\n active = _ref6.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.LinkBasicSecondary, function (_ref7) {\n var palette = _ref7.theme.palette,\n active = _ref7.active;\n return css([\"color:\", \";background-color:transparent;padding:0px !important;&:hover{background-color:transparent;color:\", \";}&:active{color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.ErrorPrimary, function (_ref8) {\n var palette = _ref8.theme.palette,\n active = _ref8.active;\n return css([\"background-color:\", \";color:\", \";\", \"{color:\", \";background:transparent;}&:hover{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{background-color:\", \";color:\", \";cursor:default;\", \"{color:\", \";background:transparent;}}\"], palette[PaletteColor.Error], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ErrorHover], palette[PaletteColor.ErrorActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.ErrorActive], palette[PaletteColor.ErrorActive]), palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.BordersDisabled], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.ErrorSecondary, function (_ref9) {\n var palette = _ref9.theme.palette,\n active = _ref9.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \"{color:\", \";background-color:transparent;}&:hover{background-color:\", \";color:\", \";border:none;\", \"{color:\", \";}}&:active{background-color:\", \";color:\", \";border:none;}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;\", \"{color:\", \";}}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.LinkStateless], palette[PaletteColor.BordersButton], StyledBadge.Badge, palette[PaletteColor.LinkStateless], palette[PaletteColor.ErrorHover], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ErrorActive], palette[PaletteColor.ButtonPrimaryText], active && css([\"background-color:\", \";color:\", \";border:none;&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.ErrorActive], palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.ErrorActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.ErrorBasic, function (_ref10) {\n var palette = _ref10.theme.palette,\n active = _ref10.active;\n return css([\"color:\", \";background-color:transparent;&:hover{color:\", \";}&:active{color:\", \";}\", \" &:disabled{color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.ErrorHover], palette[PaletteColor.ErrorActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.ErrorActive], palette[PaletteColor.ErrorActive]), palette[PaletteColor.BordersDisabled]);\n}), _defineProperty(_defineProperty(_defineProperty(_colorButtonMixin, ButtonColor.WarningPrimary, function (_ref11) {\n var palette = _ref11.theme.palette,\n active = _ref11.active;\n return css([\"background-color:\", \";color:\", \";\", \"{color:\", \";background:transparent;}&:hover{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{background-color:\", \";color:\", \";cursor:default;\", \"{color:\", \";background:transparent;}}\"], palette[PaletteColor.Warning], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.WarningHover], palette[PaletteColor.WarningActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.WarningActive], palette[PaletteColor.WarningActive]), palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.BordersDisabled], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.WarningSecondary, function (_ref12) {\n var palette = _ref12.theme.palette,\n active = _ref12.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \"{color:\", \";background-color:transparent;}&:hover{background-color:\", \";color:\", \";border:none;\", \"{color:\", \";}}&:active{background-color:\", \";color:\", \";border:none;}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;\", \"{color:\", \";}}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.LinkStateless], palette[PaletteColor.BordersButton], StyledBadge.Badge, palette[PaletteColor.LinkStateless], palette[PaletteColor.WarningHover], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.WarningActive], palette[PaletteColor.ButtonPrimaryText], active && css([\"background-color:\", \";color:\", \";border:none;\", \"{color:\", \";background-color:transparent;}&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.WarningActive], palette[PaletteColor.ButtonPrimaryText], StyledBadge.Badge, palette[PaletteColor.ButtonPrimaryText], palette[PaletteColor.WarningActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity], StyledBadge.Badge, palette[PaletteColor.BordersDisabled]);\n}), ButtonColor.WarningBasic, function (_ref13) {\n var palette = _ref13.theme.palette,\n active = _ref13.active;\n return css([\"color:\", \";background-color:transparent;&:hover{color:\", \";}&:active{color:\", \";}\", \" &:disabled{color:\", \";cursor:default;}\"], palette[PaletteColor.LinkStateless], palette[PaletteColor.WarningHover], palette[PaletteColor.WarningActive], active && css([\"color:\", \";&:hover,&:focus{color:\", \";}\"], palette[PaletteColor.WarningActive], palette[PaletteColor.WarningActive]), palette[PaletteColor.BordersDisabled]);\n}));\nexport var sizeButtonMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:5px 10px;\"])), ButtonSize.Sm, css([\"padding:8px 12px;\"])), ButtonSize.Md, css([\"padding:11px 16px;\"])), ButtonSize.Lg, css([\"padding:14px 24px;\"]));\nexport var sizeSecondaryButtonMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:4px 10px;\"])), ButtonSize.Sm, css([\"padding:7px 12px;\"])), ButtonSize.Md, css([\"padding:10px 16px;\"])), ButtonSize.Lg, css([\"padding:13px 24px;\"]));\nexport var sizeSidebarMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:5px 10px;\"])), ButtonSize.Sm, css([\"padding:8px 12px;\"])), ButtonSize.Md, css([\"padding:11px 14px;\"])), ButtonSize.Lg, css([\"padding:14px 16px;\"]));\nexport var sizeSidebarDividerMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"height:14px;\"])), ButtonSize.Sm, css([\"height:16px;\"])), ButtonSize.Md, css([\"height:18px;\"])), ButtonSize.Lg, css([\"height:20px;\"]));\nexport var paddingIconLabelMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"margin-right:5px;\"])), ButtonSize.Sm, css([\"margin-right:6px;\"])), ButtonSize.Md, css([\"margin-right:7px;\"])), ButtonSize.Lg, css([\"margin-right:8px;\"]));\nexport var sizeButtonLabelMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, function (_ref14) {\n var font = _ref14.theme.typography.font;\n return css(font[FontVariant.ButtonSm]);\n}), ButtonSize.Sm, function (_ref15) {\n var font = _ref15.theme.typography.font;\n return css(font[FontVariant.ButtonMd]);\n}), ButtonSize.Md, function (_ref16) {\n var font = _ref16.theme.typography.font;\n return css(font[FontVariant.ButtonLg]);\n}), ButtonSize.Lg, function (_ref17) {\n var font = _ref17.theme.typography.font;\n return css(font[FontVariant.ButtonLgUp]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { colorButtonMixin, sizeButtonMixin, sizeButtonLabelMixin, sizeSidebarMixin, sizeSidebarDividerMixin, paddingIconLabelMixin, sizeSecondaryButtonMixin } from './button.mixin';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { ButtonSize, ButtonColor } from '../../utils/types';\nimport { ButtonType, SideBar } from './types';\nvar baseClassName = 'Button';\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-lxwit0-0\"\n})([\"display:flex;\"]);\nvar Badge = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Badge')\n}).withConfig({\n componentId: \"sc-lxwit0-1\"\n})([\"display:flex;margin-left:5px;\"]);\nvar Wrapper = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Body')\n}).withConfig({\n componentId: \"sc-lxwit0-2\"\n})(function () {\n return css([\"display:flex;align-items:center;\"]);\n});\nvar Button = /*#__PURE__*/styled.button.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-lxwit0-3\"\n})(function (_ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? ButtonColor.Secondary : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? ButtonSize.Md : _ref$size,\n buttonType = _ref.buttonType,\n active = _ref.active,\n theme = _ref.theme;\n return css([\"display:inline-flex;flex-shrink:0;flex-direction:row;align-items:center;justify-content:center;border-radius:\", \";transition:all 100ms ease-out;border:0;cursor:pointer;outline:none;\", \" \", \" \", \" \", \"{\", \" \", \"}\", \"{\", \"}\", \"\"], theme.shape.borderRadius[BRSize.Md], buttonType !== ButtonType.Sidebar && colorButtonMixin[color], buttonType === ButtonType.Sidebar ? sizeSidebarMixin[size] : sizeButtonMixin[size], color === ButtonColor.Secondary && sizeSecondaryButtonMixin[size], Label, sizeButtonLabelMixin[size], (color === ButtonColor.LinkBasicPrimary || color === ButtonColor.LinkBasicSecondary) && \"font-weight: 400\", Badge, sizeButtonLabelMixin[size], buttonType === ButtonType.Sidebar && css([\"background-color:\", \";color:\", \";border:1px solid \", \";\", \" \", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;}\"], theme.palette[PaletteColor.ButtonPrimaryText], theme.palette[PaletteColor.LinkStateless], theme.palette[PaletteColor.BordersButton], !active && css([\"&:hover{color:\", \";background-color:\", \";border:none;}&:active{color:\", \";background-color:\", \";border:none;}\"], theme.palette[PaletteColor.ButtonPrimaryText], theme.palette[PaletteColor.AccentPrimaryHover], theme.palette[PaletteColor.ButtonPrimaryText], theme.palette[PaletteColor.AccentPrimaryActive]), active && css([\"background-color:\", \";color:\", \";border:1px solid \", \";\"], theme.palette[PaletteColor.Accent_1_2_Opacity], theme.palette[PaletteColor.AccentPrimaryActive], theme.palette[PaletteColor.AccentPrimaryActive]), theme.palette[PaletteColor.BordersDisabled], theme.palette[PaletteColor.AccentPrimaryDisabled]));\n});\nvar StartIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'StartIcon')\n}).withConfig({\n componentId: \"sc-lxwit0-4\"\n})(function (_ref2) {\n var $loading = _ref2.$loading,\n _ref2$size = _ref2.size,\n size = _ref2$size === void 0 ? ButtonSize.Md : _ref2$size;\n return css([\"display:flex;svg{animation:\", \";}\", \"\"], $loading ? 'spinner 1.2s linear infinite' : '1.2s', paddingIconLabelMixin[size]);\n});\nvar SideArrows = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'SideBar')\n}).withConfig({\n componentId: \"sc-lxwit0-5\"\n})(function (_ref3) {\n var sideBarType = _ref3.sideBarType;\n return css([\"display:flex;\", \":12px;\"], \"margin-\".concat(sideBarType === SideBar.Left ? 'right' : 'left'));\n});\nvar Divider = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Divider')\n}).withConfig({\n componentId: \"sc-lxwit0-6\"\n})(function (_ref4) {\n var sideBarType = _ref4.sideBarType,\n _ref4$size = _ref4.size,\n size = _ref4$size === void 0 ? ButtonSize.Md : _ref4$size;\n return css([\"border-left-style:solid;border-width:1px;\", \" \", \":12px;\"], sizeSidebarDividerMixin[size], \"margin-\".concat(sideBarType === SideBar.Left ? 'right' : 'left'));\n});\nvar EndIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'EndIcon')\n}).withConfig({\n componentId: \"sc-lxwit0-7\"\n})([\"display:flex;margin-left:6px;\"]);\nvar Styled = applyDisplayNames({\n Button: Button,\n Wrapper: Wrapper,\n Label: Label,\n SideArrows: SideArrows,\n Divider: Divider,\n StartIcon: StartIcon,\n EndIcon: EndIcon,\n Badge: Badge\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"startIcon\", \"endIcon\", \"badge\", \"color\", \"active\", \"buttonType\", \"sideBarType\", \"size\", \"loading\", \"disabled\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport SpinnerIcon from '@scaleflex/icons/spinner';\nimport TwoArrowsRight from '@scaleflex/icons/two-arrows-right';\nimport TwoArrowsLeft from '@scaleflex/icons/two-arrows-left';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Badge from '../badge';\nimport { ButtonSize, ButtonColor } from '../../utils/types';\nimport { ButtonType, SideBar } from './types';\nimport { getIconSize, getSideBarIconSize } from './button.utils';\nimport Styled from './button.styles';\nvar Button = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n startIcon = _ref.startIcon,\n endIcon = _ref.endIcon,\n badge = _ref.badge,\n color = _ref.color,\n active = _ref.active,\n buttonType = _ref.buttonType,\n _ref$sideBarType = _ref.sideBarType,\n sideBarType = _ref$sideBarType === void 0 ? SideBar.Left : _ref$sideBarType,\n size = _ref.size,\n loading = _ref.loading,\n disabled = _ref.disabled,\n rest = _objectWithoutProperties(_ref, _excluded);\n var getSideBarArrows = function getSideBarArrows(props) {\n switch (sideBarType) {\n case SideBar.Right:\n return active ? /*#__PURE__*/React.createElement(TwoArrowsLeft, props) : /*#__PURE__*/React.createElement(TwoArrowsRight, props);\n case SideBar.Left:\n return active ? /*#__PURE__*/React.createElement(TwoArrowsRight, props) : /*#__PURE__*/React.createElement(TwoArrowsLeft, props);\n default:\n }\n };\n var getSideBarSection = function getSideBarSection() {\n var sideBarSection = [/*#__PURE__*/React.createElement(Styled.SideArrows, {\n key: \"arrows\",\n sideBarType: sideBarType\n }, getSideBarArrows({\n size: getSideBarIconSize(size)\n }))];\n var divider = /*#__PURE__*/React.createElement(Styled.Divider, {\n key: \"divider\",\n size: size,\n sideBarType: sideBarType\n });\n if (sideBarType === SideBar.Right) {\n sideBarSection.unshift(divider);\n } else {\n sideBarSection.push(divider);\n }\n return buttonType === ButtonType.Sidebar && sideBarSection;\n };\n return /*#__PURE__*/React.createElement(Styled.Button, _extends({\n type: \"button\",\n buttonType: buttonType\n }, rest, {\n disabled: loading || disabled,\n sideBarType: sideBarType,\n color: color,\n active: active,\n size: size,\n ref: ref\n }), sideBarType === SideBar.Left && getSideBarSection(), /*#__PURE__*/React.createElement(Styled.Wrapper, null, startIcon && /*#__PURE__*/React.createElement(Styled.StartIcon, {\n $loading: loading,\n size: size\n }, typeof startIcon === 'function' ? loading ? /*#__PURE__*/React.createElement(SpinnerIcon, {\n size: getIconSize(size)\n }) : startIcon({\n size: getIconSize(size)\n }) :\n // eslint-disable-next-line unicorn/no-nested-ternary\n loading ? /*#__PURE__*/React.createElement(SpinnerIcon, {\n size: getIconSize(size)\n }) : startIcon), loading && !startIcon && /*#__PURE__*/React.createElement(Styled.StartIcon, {\n $loading: loading\n }, /*#__PURE__*/React.createElement(SpinnerIcon, {\n size: getIconSize(size)\n })), /*#__PURE__*/React.createElement(Styled.Label, null, children), endIcon && /*#__PURE__*/React.createElement(Styled.EndIcon, null, typeof endIcon === 'function' ? endIcon({\n size: getIconSize(size)\n }) : endIcon)), sideBarType === SideBar.Right && getSideBarSection(), badge && /*#__PURE__*/React.createElement(Styled.Badge, null, /*#__PURE__*/React.createElement(Badge, {\n inline: true,\n size: 14,\n padding: \"0 1px\",\n badgeContent: badge,\n color: color === ButtonColor.Primary ? 'white' : 'secondary'\n })));\n});\nButton.defaultProps = {\n size: ButtonSize.Md,\n color: ButtonColor.Secondary,\n buttonType: ButtonType.Default,\n active: false\n};\nButton.propTypes = {\n size: PT.oneOf(objectValues(ButtonSize)),\n color: PT.oneOf(objectValues(ButtonColor)),\n buttonType: PT.oneOf(objectValues(ButtonType)),\n sideBarType: PT.oneOf(objectValues(SideBar)),\n startIcon: PT.oneOfType([PT.node, PT.func]),\n endIcon: PT.oneOfType([PT.node, PT.func]),\n badge: PT.node,\n active: PT.bool,\n loading: PT.bool,\n disabled: PT.bool\n};\nexport default Button;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Image2 = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 42 42\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.483002 4.49014V37.5097C0.483002 38.5725 0.90519 39.5917 1.65669 40.3432C2.40819 41.0947 3.42745 41.5169 4.49023 41.5169H37.5098C38.5726 41.5169 39.5918 41.0947 40.3433 40.3432C41.0948 39.5917 41.517 38.5725 41.517 37.5097V4.49014C41.517 3.42735 41.0948 2.4081 40.3433 1.6566C39.5918 0.905099 38.5726 0.48291 37.5098 0.48291H4.49023C3.42745 0.48291 2.40819 0.905099 1.65669 1.6566C0.90519 2.4081 0.483002 3.42735 0.483002 4.49014ZM38.9272 5.87776V31.3044L26.3817 19.5446L21.8068 22.3356L14.8048 15.3337L3.07279 23.0543V6.06233C3.07279 5.2695 3.38775 4.50913 3.94836 3.94851C4.50898 3.38789 5.26935 3.07294 6.06218 3.07294H36.1222C36.8661 3.07294 37.5795 3.36844 38.1055 3.89444C38.6316 4.42044 38.9272 5.13385 38.9272 5.87776Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.4602 15.6943C33.066 15.6943 35.1784 13.5819 35.1784 10.976C35.1784 8.37021 33.066 6.25777 30.4602 6.25777C27.8543 6.25777 25.7419 8.37021 25.7419 10.976C25.7419 13.5819 27.8543 15.6943 30.4602 15.6943Z\",\n fill: color\n }));\n});\nexport default Image2;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Undo = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 40 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5112 31.2036C39.5112 41.568 31.0785 50 20.7148 50H14.0613C12.9587 50 12.0652 49.1066 12.0652 48.004V47.3386C12.0652 46.2359 12.9586 45.3425 14.0613 45.3425H20.7148C28.5107 45.3425 34.8537 38.9995 34.8537 31.2036C34.8537 23.4078 28.5107 17.0648 20.7148 17.0648H8.4394L16.8935 25.5189C17.8015 26.4266 17.8015 27.9042 16.8935 28.8119C16.0124 29.6923 14.479 29.691 13.5999 28.8119L1.17111 16.3828C0.731285 15.943 0.488892 15.3581 0.488892 14.7359C0.488892 14.1142 0.731285 13.529 1.17111 13.0894L13.6006 0.65976C14.4797 -0.220001 16.0144 -0.220001 16.8936 0.65976C17.8016 1.56722 17.8016 3.04511 16.8936 3.95246L8.43951 12.4072H20.7148C31.0785 12.4072 39.5112 20.8395 39.5112 31.2036Z\",\n fill: color\n }));\n});\nexport default Undo;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Redo = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 40 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.98 31.2037C0.98 41.568 9.41216 50 19.7752 50H26.4284C27.5309 50 28.4244 49.1066 28.4244 48.004V47.3386C28.4244 46.2359 27.531 45.3425 26.4284 45.3425H19.7752C11.9798 45.3425 5.6372 38.9995 5.6372 31.2037C5.6372 23.4079 11.9798 17.0648 19.7752 17.0648H32.05L23.5964 25.5189C22.6884 26.4266 22.6884 27.9043 23.5964 28.812C24.4774 29.6924 26.0107 29.6911 26.8897 28.812L39.3178 16.3828C39.7576 15.943 40 15.3582 40 14.736C40 14.1142 39.7576 13.5291 39.3178 13.0895L26.8891 0.659821C26.01 -0.21994 24.4754 -0.21994 23.5962 0.659821C22.6883 1.56728 22.6883 3.04517 23.5962 3.95252L32.0498 12.4073H19.7752C9.41216 12.4073 0.98 20.8396 0.98 31.2037Z\",\n fill: color\n }));\n});\nexport default Redo;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Line = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.1901 7.27549L7.59689 39.8687C6.83412 40.6315 6.83412 41.8681 7.59689 42.6308C8.35965 43.3936 9.59626 43.3936 10.359 42.6308L42.9522 10.0376C43.715 9.27486 43.715 8.03825 42.9522 7.27549C42.1895 6.51272 40.9529 6.51272 40.1901 7.27549Z\",\n fill: color\n }));\n});\nexport default Line;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ImageFilters = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.2229 16.7653C41.3215 12.426 39.7436 8.284 36.6864 5.02956C33.6292 1.77513 29.4872 -2.09808e-05 25.0493 -2.09808e-05C20.6114 -2.09808e-05 16.3708 1.77513 13.3136 5.02956C10.2564 8.18538 8.6785 12.3274 8.77712 16.7653C3.45168 19.5266 0 25.1479 0 31.1637C0 37.2781 3.25444 42.6035 8.57988 45.4635C11.0454 46.7455 13.7081 47.4359 16.2722 47.4359C19.3294 47.4359 22.288 46.5483 24.9507 44.8718C29.9803 48.1262 36.0947 48.3234 41.4201 45.4635C46.7456 42.6035 50 37.2781 50 31.1637C50 25.0493 46.6469 19.5266 41.2229 16.7653ZM22.7811 43.0966C18.6391 45.3649 13.7081 45.3649 9.56607 42.998C5.22682 40.5325 2.66272 36.1933 2.66272 31.1637C2.66272 26.43 5.12821 22.0907 9.1716 19.6252C10.1578 24.359 13.3136 28.501 17.6529 30.6706C17.4556 35.4043 19.3294 39.8422 22.7811 43.0966ZM32.1499 27.8106C31.4596 24.5562 29.783 21.499 27.3176 19.2307C30.6706 17.357 34.8126 17.0611 38.4615 18.3432C37.7712 22.2879 35.503 25.7396 32.1499 27.8106ZM20.6114 28.1065C21.3018 25.2465 22.8797 22.6824 25.0493 20.8087C27.5148 22.8797 29.1913 25.8382 29.6844 28.9941C26.7258 30.0789 23.4714 30.0789 20.4142 28.9941C20.4142 28.6982 20.5128 28.4023 20.6114 28.1065ZM25.0493 17.4556C23.57 16.4694 21.8935 15.7791 20.1183 15.3846C19.428 15.1874 18.6391 15.6805 18.5404 16.3708C18.4418 16.7653 18.5404 17.0611 18.7377 17.357C18.9349 17.6528 19.2308 17.8501 19.5266 17.9487C20.7101 18.2446 21.7949 18.639 22.7811 19.2307C20.3156 21.499 18.6391 24.4576 17.9487 27.8106C14.5957 25.7396 12.2288 22.2879 11.6371 18.3432C11.9329 18.2446 12.1302 18.1459 12.426 18.0473C12.7219 17.9487 13.0178 17.7515 13.215 17.357C13.4122 17.0611 13.4122 16.6666 13.3136 16.3708C13.1164 15.6805 12.3274 15.286 11.6371 15.4832C11.5385 15.4832 11.5385 15.4832 11.4398 15.5818C11.8343 8.48124 17.7515 2.6627 25.0493 2.6627C32.3471 2.6627 38.2643 8.38262 38.6588 15.5818C34.0237 14.2012 28.9941 14.8915 25.0493 17.4556ZM29.783 31.7554C29.5858 35.5029 27.9093 39.0532 25.0493 41.5187C22.1893 39.0532 20.4142 35.6016 20.3156 31.7554C23.3728 32.7416 26.7258 32.7416 29.783 31.7554ZM32.4458 30.6706C36.785 28.4023 39.8422 24.359 40.927 19.6252C44.9704 22.0907 47.4359 26.43 47.4359 31.1637C47.4359 36.0947 44.8718 40.5325 40.5325 42.998C36.3905 45.3649 31.4596 45.3649 27.3176 43.0966C30.7692 39.8422 32.643 35.4043 32.4458 30.6706Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5819 14.8915C14.9901 14.9901 14.497 15.5818 14.497 16.1735C14.497 16.8639 15.0888 17.5542 15.8777 17.5542C16.6667 17.5542 17.2584 16.9625 17.2584 16.1735C17.2584 15.7791 17.0611 15.3846 16.7653 15.1874C16.3708 14.9901 15.9763 14.8915 15.5819 14.8915Z\",\n fill: color\n }));\n});\nexport default ImageFilters;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Crop = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5 2.00049C3.34315 2.00049 2 3.34364 2 5.00049V16.7505H5.5V5.50049H16.75V2.00049H5ZM45 2.00049H33.25V5.50049H44.5V16.7505H48V5.00049C48 3.34363 46.6569 2.00049 45 2.00049ZM5.5 33.2505H2V45.0005C2 46.6573 3.34315 48.0005 5 48.0005H16.75V44.5005H5.5V33.2505ZM48 33.2505H44.5V44.5005H33.25V48.0005H45C46.6569 48.0005 48 46.6573 48 45.0005V33.2505Z\",\n fill: color\n }));\n});\nexport default Crop;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CropLandscape = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 53 37\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.11841 3.93799V32.063H47.8684V3.93799H4.11841ZM3.49341 0.812988C2.1127 0.812988 0.993408 1.91229 0.993408 3.26835V32.7326C0.993408 34.0887 2.1127 35.188 3.49341 35.188H48.4934C49.8741 35.188 50.9934 34.0887 50.9934 32.7326V3.26835C50.9934 1.91229 49.8741 0.812988 48.4934 0.812988H3.49341Z\",\n fill: color\n }));\n});\nexport default CropLandscape;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Resize = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 0.5H3V2.375H2.375V3H0.5V0.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 21.125H3V21.2693H24.7308V43H24.875V45.5L0.5 45.5001V21.125ZM22.2308 43L3 43.0001V23.7693H22.2308V43Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 45.5H45.5V43H43.625V43.625H43V45.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 3V0.5H43V2.375H43.625V3H45.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.125 0.5V3H9.875V0.5H6.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.625 0.5V3H17.375V0.5H13.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.125 0.5V3H24.875V0.5H21.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.625 0.5V3H32.375V0.5H28.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.125 0.5V3H39.875V0.5H36.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 6.125H43V9.875H45.5V6.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 13.625H43V17.375H45.5V13.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 21.125H43V24.875H45.5V21.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 28.625H43V32.375H45.5V28.625Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 36.125H43V39.875H45.5V36.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.875 45.5V43H36.125V45.5H39.875Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.375 45.5V43H28.625V45.5H32.375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 17.375H3V13.625H0.5V17.375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 9.875H3V6.125H0.5V9.875Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1391 9.23718L26.3209 17.8619C25.8274 18.3446 25.8186 19.136 26.3013 19.6295C26.784 20.1231 27.5754 20.1319 28.069 19.6492L37.1012 10.815V16.9907C37.1012 17.681 37.6609 18.2407 38.3512 18.2407C39.0416 18.2407 39.6012 17.681 39.6012 16.9907V7.98718C39.6012 7.29683 39.0416 6.73718 38.3512 6.73718L29.3477 6.73718C28.6574 6.73718 28.0977 7.29683 28.0977 7.98718C28.0977 8.67754 28.6574 9.23718 29.3477 9.23718L35.1391 9.23718Z\",\n fill: color\n }));\n});\nexport default Resize;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Watermark = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.1323 0.500031H2.73399C1.42693 0.500031 0.399963 1.527 0.399963 2.83406V43.166C0.399963 44.4731 1.42693 45.5 2.73399 45.5H42.1323C43.4394 45.5 44.4664 44.4731 44.4664 43.166V2.83406C44.4664 1.527 43.4394 0.500031 42.1323 0.500031ZM41.6655 3.30086V25.8942L36.624 21.693C36.1572 21.2262 35.4103 21.2262 34.8502 21.5996L28.595 26.2677L15.5244 11.2365C15.3377 10.9565 14.9643 10.7697 14.5908 10.7697C14.2174 10.7697 13.8439 10.9565 13.5639 11.1432L3.20079 21.693V3.30086H41.6655ZM3.20079 42.6992V39.8984C4.22776 40.3652 5.72154 40.832 7.58876 40.832C9.36262 40.832 10.483 40.2718 11.3232 39.805C12.0701 39.4316 12.5369 39.1515 13.3771 39.2448C14.3108 39.3382 14.8709 39.5249 15.4311 39.805C16.2713 40.0851 17.2049 40.4585 18.9788 40.4585V38.3112C17.6717 38.3112 17.0182 38.0312 16.178 37.7511C15.5244 37.471 14.6842 37.1909 13.5639 37.0975C12.0701 36.9108 11.1365 37.471 10.2962 37.8444C9.54934 38.2179 8.80245 38.5913 7.4954 38.5913C5.06801 38.5913 3.6676 37.7511 3.10743 37.2843V35.0436C4.1344 35.5104 5.62818 35.9772 7.4954 35.9772C9.26926 35.9772 10.3896 35.417 11.2298 34.9502C11.9767 34.5768 12.4435 34.2967 13.2838 34.3901C14.2174 34.4834 14.7776 34.6702 15.3377 34.9502C16.178 35.2303 17.1116 35.6038 18.8854 35.6038V33.4565C17.5784 33.4565 16.9249 33.1764 16.0846 32.8963C15.4311 32.6162 14.5908 32.3361 13.4705 32.2428C11.9767 32.056 11.0431 32.6162 10.2029 32.9897C9.45598 33.3631 8.70909 33.7365 7.40204 33.7365C4.97465 33.7365 3.57424 32.8963 3.01407 32.4295V30.1888C4.04104 30.6556 5.53482 31.1224 7.40204 31.1224C9.1759 31.1224 10.2962 30.5623 11.1365 30.0955C11.8834 29.722 12.3502 29.4419 13.1904 29.5353C14.124 29.6287 14.6842 29.8154 15.2444 30.0955C16.0846 30.3755 17.0182 30.749 18.7921 30.749V28.6017C17.485 28.6017 16.8315 28.3216 15.9912 28.0415C15.3377 27.7614 14.4975 27.4814 13.3771 27.388C11.8834 27.2013 10.9498 27.7614 10.1095 28.1349C9.36262 28.5083 8.61573 28.8818 7.30868 28.8818C4.88129 28.8818 3.48088 28.0415 2.92071 27.5747V25.7075L14.124 14.2241L27.1012 29.0685C27.568 29.6287 28.4083 29.722 28.9684 29.2552L35.4103 24.4004L41.3854 29.4419V42.6058H3.20079V42.6992Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.7029 15.7179C35.4103 15.7179 37.651 13.4772 37.651 10.7697C37.651 8.06227 35.4103 5.82161 32.7029 5.82161C29.9954 5.82161 27.7547 8.06227 27.7547 10.7697C27.7547 13.4772 29.9954 15.7179 32.7029 15.7179ZM32.7029 8.15563C34.1966 8.15563 35.317 9.36933 35.317 10.7697C35.317 12.1702 34.1033 13.3838 32.7029 13.3838C31.3025 13.3838 30.0888 12.1702 30.0888 10.7697C30.0888 9.36933 31.2091 8.15563 32.7029 8.15563Z\",\n fill: color\n }));\n});\nexport default Watermark;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Images = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.4164 5.98527H1.06762C0.533808 5.98527 0 6.53674 0 7.08821V49C0 49.7353 0.533808 50.1029 1.06762 50.1029H43.4164C44.1281 50.1029 44.484 49.7353 44.484 49V7.08821C44.484 6.53674 44.1281 5.98527 43.4164 5.98527ZM35.7651 13.1544C37.9004 13.1544 39.5 15.0809 39.5 17.1029C39.5 19.3088 37.7224 20.6029 35.7651 20.6029C33.8078 20.6029 32 19.125 32 17.1029C31.8221 14.897 33.6299 13.1544 35.7651 13.1544ZM1.9573 45.875C2.13523 45.6912 14.2349 30.9853 16.548 27.8603C16.726 27.4926 17.2598 27.4926 17.4377 27.8603L29.7153 43.4853L35.0534 37.4191C35.4093 37.0514 35.7651 37.2353 35.9431 37.4191L42.5267 45.875H1.9573Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.9164 -3.8147e-06H6.74555C6.03381 -3.8147e-06 5.5 0.367643 5.5 1.10294V4.29294H7.5V2.20588H47.6892V39H46.2473V44.1176H48.9164C49.6281 44.1176 49.984 43.75 49.984 43.0147V1.10294C49.984 0.367643 49.6281 -3.8147e-06 48.9164 -3.8147e-06Z\",\n fill: color\n }));\n});\nexport default Images;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Reset = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 0C38.8071 0 50 11.1929 50 25C50 38.807 38.8071 50 25 50C14.111 50 4.854 43.0397 1.42326 33.333C0.963005 32.0312 1.6455 30.603 2.94725 30.143C4.249 29.6828 5.67725 30.365 6.1375 31.667C8.88425 39.4382 16.2957 45 25 45C36.0457 45 45 36.0457 45 25C45 13.9543 36.0457 5 25 5C21.121 5 17.8345 6.40292 14.7095 8.6015C12.6078 10.0803 10.663 11.8526 8.6895 13.75H16.25C17.6308 13.75 18.75 14.8693 18.75 16.25C18.75 17.6307 17.6308 18.75 16.25 18.75H2.5C1.11926 18.75 0 17.6307 0 16.25V2.5C0 1.1193 1.11926 0 2.5 0C3.88075 0 5 1.1193 5 2.5V10.3593C7.12075 8.31457 9.38601 6.23342 11.8325 4.51222C15.5128 1.9229 19.7882 0 25 0Z\",\n fill: color\n }));\n});\nexport default Reset;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Text = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.4229 8.89453L39.7891 16.6582H38.8613C38.6823 15.291 38.4382 14.3145 38.1289 13.7285C37.6243 12.7845 36.9489 12.0928 36.1025 11.6533C35.2725 11.1976 34.1738 10.9697 32.8066 10.9697H28.1436V36.2627C28.1436 38.2972 28.3633 39.5667 28.8027 40.0713C29.4212 40.7549 30.3734 41.0967 31.6592 41.0967H32.8066V42H18.7686V41.0967H19.9404C21.3402 41.0967 22.333 40.6735 22.9189 39.8271C23.277 39.3063 23.4561 38.1182 23.4561 36.2627V10.9697H19.4766C17.9303 10.9697 16.8317 11.0837 16.1807 11.3115C15.3343 11.6208 14.61 12.2148 14.0078 13.0938C13.4056 13.9727 13.0475 15.1608 12.9336 16.6582H12.0059L12.3965 8.89453H39.4229Z\",\n fill: color\n }));\n});\nexport default Text;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TextAlignLeft = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 45 29\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 1.89502C0 1.20466 0.559644 0.64502 1.25 0.64502H28.75C29.4404 0.64502 30 1.20466 30 1.89502C30 2.58538 29.4404 3.14502 28.75 3.14502H1.25C0.559645 3.14502 0 2.58538 0 1.89502Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 14.395C0 13.7047 0.559644 13.145 1.25 13.145H43.75C44.4404 13.145 45 13.7047 45 14.395C45 15.0854 44.4404 15.645 43.75 15.645H1.25C0.559645 15.645 0 15.0854 0 14.395Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.25 25.645C0.559644 25.645 0 26.2047 0 26.895C0 27.5854 0.559645 28.145 1.25 28.145H28.75C29.4404 28.145 30 27.5854 30 26.895C30 26.2047 29.4404 25.645 28.75 25.645H1.25Z\",\n fill: color\n }));\n});\nexport default TextAlignLeft;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var TextAlignCenter = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 1.50049C38 0.810132 37.4404 0.250488 36.75 0.250488H9.25C8.55964 0.250488 8 0.810132 8 1.50049C8 2.19084 8.55964 2.75049 9.25 2.75049H36.75C37.4404 2.75049 38 2.19084 38 1.50049Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 14.0005C45.5 13.3101 44.9404 12.7505 44.25 12.7505H1.75C1.05964 12.7505 0.5 13.3101 0.5 14.0005C0.5 14.6908 1.05964 15.2505 1.75 15.2505H44.25C44.9404 15.2505 45.5 14.6908 45.5 14.0005Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.75 25.2505C37.4404 25.2505 38 25.8101 38 26.5005C38 27.1908 37.4404 27.7505 36.75 27.7505H9.25C8.55964 27.7505 8 27.1908 8 26.5005C8 25.8101 8.55964 25.2505 9.25 25.2505H36.75Z\",\n fill: color\n }));\n});\nexport default TextAlignCenter;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var RotationLeft = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 45 43\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.66027 14.6997L3.59752 14.4437L3.09232 3.93218C3.05918 3.24262 2.47331 2.71049 1.78375 2.74363C1.09419 2.77677 0.562061 3.36263 0.595202 4.05219L1.16041 15.8123C1.19355 16.5018 1.77942 17.034 2.46898 17.0008L14.2291 16.4356C14.9186 16.4025 15.4508 15.8166 15.4176 15.1271C15.3845 14.4375 14.7986 13.9054 14.1091 13.9385L5.48447 14.353C8.23224 7.41077 15.0052 2.50049 22.925 2.50049C33.2802 2.50049 41.6748 10.8951 41.6748 21.2503C41.6748 22.4035 41.5706 23.5324 41.3713 24.6281L43.7968 25.261C44.0449 23.9622 44.1748 22.6214 44.1748 21.2503C44.1748 9.51435 34.6609 0.000488281 22.925 0.000488281C15.0467 0.000488281 8.16974 4.28779 4.50001 10.6566L2.66027 14.6997Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.88491 34.708L8.27773 36.6309C8.82614 37.1539 9.40248 37.6479 10.0043 38.1103L11.5276 36.128C10.9528 35.6863 10.4043 35.2121 9.88491 34.708Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3142 39.6567C13.9038 40.5764 15.6235 41.2961 17.439 41.7814L18.0846 39.3662C16.4846 38.9385 14.9685 38.3041 13.5662 37.4928L12.3142 39.6567Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1654 42.3209C21.0738 42.4394 22.0002 42.5005 22.9408 42.5005C23.8815 42.5005 24.8079 42.4394 25.7162 42.3209L25.3929 39.8419C24.5915 39.9465 23.7731 40.0005 22.9408 40.0005C22.1086 40.0005 21.2902 39.9465 20.4888 39.8419L20.1654 42.3209Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.4427 41.7814C30.2582 41.2961 31.9779 40.5764 33.5674 39.6567L32.3154 37.4928C30.9132 38.3041 29.397 38.9385 27.7971 39.3662L28.4427 41.7814Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.8774 38.1103C37.3494 36.9791 38.6692 35.6594 39.8004 34.1873L37.8181 32.664C36.8193 33.9638 35.6538 35.1292 34.354 36.128L35.8774 38.1103Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.3468 31.8773C42.2665 30.2878 42.9862 28.5681 43.4715 26.7526L41.0563 26.107C40.6286 27.707 39.9942 29.2231 39.1829 30.6253L41.3468 31.8773Z\",\n fill: color\n }));\n});\nexport default RotationLeft;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var RotationRight = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2753 26.8064H24.4689L36.5656 14.7096C32.735 11.0806 28.7027 9.66933 23.6624 9.66933C13.3802 9.66933 6.32372 15.3145 3.50118 25.5967L0.275391 24.7903C3.50118 13.0968 11.9689 6.44355 23.6625 6.44355C29.7109 6.44355 34.348 8.25806 38.9851 12.2903L50.2754 1L50.2753 26.8064Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.5495 46.3628L33.1382 44.3467C33.743 43.9435 34.3479 43.3386 34.9527 42.9355L36.5656 44.75C35.9608 45.1532 35.3559 45.758 34.5495 46.3628Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.2913 49.387C26.6865 49.5886 26.0817 49.5886 25.4768 49.7903L25.0736 47.3709C26.4848 47.1693 27.8962 46.7661 29.3074 46.3628L30.1139 48.5806C29.1058 48.9838 28.2994 49.1854 27.2913 49.387ZM20.4365 49.9919C18.8235 49.7903 17.2107 49.5886 15.5978 48.9838L16.4042 46.766C17.8155 47.1693 19.2268 47.5724 20.6381 47.5724L20.4365 49.9919ZM11.1623 46.9677C9.75104 46.1612 8.33971 45.1532 7.13003 43.9435L8.74296 42.129C9.75104 43.137 10.9607 43.9435 12.372 44.7499L11.1623 46.9677ZM3.90425 40.3144C2.89617 38.9032 2.08974 37.2903 1.6865 35.879L3.90425 35.0726C4.50909 36.4838 5.11393 37.6935 5.92036 38.9032L3.90425 40.3144Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.2996 30.0322L0.880241 30.2338C0.678647 29.2257 0.678647 28.4193 0.678647 27.4112H3.09801C3.09801 28.4193 3.2996 29.2258 3.2996 30.0322Z\",\n fill: color\n })), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"rect\", {\n width: \"50\",\n height: \"50\",\n fill: \"white\",\n transform: \"translate(0.275391)\"\n })));\n});\nexport default RotationRight;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var LockOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 51 51\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.5 20H38V12.5C38 5.6 32.4 0 25.5 0C18.6 0 13 5.6 13 12.5V20H10.5C9.1 20 8 21.1 8 22.5V47.5C8 48.9 9.1 50 10.5 50H40.5C41.9 50 43 48.9 43 47.5V22.5C43 21.1 41.9 20 40.5 20ZM15.5 12.5C15.5 7 20 2.5 25.5 2.5C31 2.5 35.5 7 35.5 12.5V20H15.5V12.5ZM40.5 47.5H10.5V22.5H40.5V47.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.3 37.3V41.3H26.8V37.3C28.3 36.8 29.3 35.4 29.3 33.8C29.3 31.7 27.6 30 25.5 30C23.4 30 21.7 31.7 21.7 33.8C21.8 35.4 22.8 36.8 24.3 37.3ZM25.5 32.5C26.2 32.5 26.8 33.1 26.8 33.8C26.8 34.5 26.2 35.1 25.5 35.1C24.8 35.1 24.2 34.5 24.2 33.8C24.3 33.1 24.8 32.5 25.5 32.5Z\",\n fill: color\n }));\n});\nexport default LockOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var UnlockOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.2754 7.5C34.2754 3.1 29.8754 0 24.7754 0C17.8754 0 12.2754 5.6 12.2754 12.5V20H9.77539C8.37539 20 7.27539 21.1 7.27539 22.5V47.5C7.27539 48.9 8.37539 50 9.77539 50H39.7754C41.1754 50 42.2754 48.9 42.2754 47.5V22.5C42.2754 21.1 41.1754 20 39.7754 20H14.7754V12.5C14.7754 7 19.2754 2.5 24.7754 2.5C28.4754 2.5 31.7754 4.5 33.4754 7.6L36.2754 7.5ZM39.7754 47.5H9.77539V22.5H39.7754V47.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.7754 30C22.6754 30 20.9754 31.7 20.9754 33.7C20.9754 35.3 21.9754 36.7 23.4754 37.2V41.2H25.9754V37.2C27.4754 36.7 28.4754 35.3 28.4754 33.7C28.5754 31.7 26.8754 30 24.7754 30ZM24.7754 35C24.0754 35 23.4754 34.4 23.4754 33.7C23.4754 33 24.0754 32.4 24.7754 32.4C25.4754 32.4 25.9754 33 25.9754 33.7C25.9754 34.4 25.4754 35 24.7754 35Z\",\n fill: color\n }));\n});\nexport default UnlockOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Point = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"25\",\n cy: \"25\",\n r: \"8.33333\",\n fill: color\n }));\n});\nexport default Point;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var About = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.6793 7.32203C32.916 -2.44013 17.0863 -2.44122 7.32197 7.32203C-2.44128 17.0853 -2.4402 32.915 7.32197 42.6793C17.0852 52.4404 32.9149 52.4415 42.6793 42.6793C52.4414 32.915 52.4403 17.0864 42.6793 7.32203ZM28.2605 35.8705C28.2605 37.6716 26.8007 39.1314 24.9995 39.1314C23.1984 39.1314 21.7386 37.6716 21.7386 35.8705V22.8267C21.7386 21.0256 23.1984 19.5658 24.9995 19.5658C26.8007 19.5658 28.2605 21.0256 28.2605 22.8267V35.8705ZM24.9419 17.2527C23.0636 17.2527 21.8114 15.9222 21.8506 14.2798C21.8114 12.558 23.0636 11.2678 24.98 11.2678C26.8974 11.2678 28.1105 12.5591 28.1507 14.2798C28.1496 15.9222 26.8985 17.2527 24.9419 17.2527Z\",\n fill: color\n }));\n});\nexport default About;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Warning = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.9856 38.314L31.3034 3.80423C29.9688 1.42247 27.6118 0 24.9985 0C22.3852 0 20.0282 1.42247 18.6936 3.80423C18.6836 3.82245 18.6751 3.84067 18.665 3.8589L1.04158 38.2594C-0.321602 40.6914 -0.347383 43.612 0.971367 46.0713C2.29314 48.5321 4.67439 50 7.345 50H42.5544C45.225 50 47.7041 48.5321 49.0258 46.0713C50.3445 43.6121 50.3188 40.6913 48.9856 38.314ZM22.0659 15.8013C22.0659 14.0842 23.3789 12.6924 24.9985 12.6924C26.6182 12.6924 27.9311 14.0843 27.9311 15.8013V28.2372C27.9311 29.9541 26.6181 31.3462 24.9985 31.3462C23.3789 31.3462 22.0659 29.954 22.0659 28.2372V15.8013ZM24.9985 43.7821C22.5728 43.7821 20.5995 41.6902 20.5995 39.1186C20.5995 36.5471 22.5727 34.4552 24.9985 34.4552C27.4242 34.4552 29.3974 36.5471 29.3974 39.1186C29.3975 41.6901 27.4243 43.7821 24.9985 43.7821Z\",\n fill: color\n }));\n});\nexport default Warning;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var InfoOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 50C11.2033 50 0 38.7967 0 25C0 11.2033 11.2033 0 25 0C38.7967 0 50 11.2033 50 25C50 38.7967 38.6929 50 25 50ZM25 3.52697C13.1743 3.52697 3.63071 13.1743 3.63071 24.8963C3.63071 36.6183 13.278 46.2656 25 46.2656C36.8257 46.2656 46.3693 36.6183 46.3693 24.8963C46.3693 13.1743 36.8257 3.52697 25 3.52697Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.3755 13.125C28.3755 11.3992 26.9765 10 25.2505 10C23.5245 10 22.1255 11.3992 22.1255 13.125C22.1255 14.8516 23.5245 16.25 25.2505 16.25C26.9765 16.25 28.3755 14.8516 28.3755 13.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.563 38.5H29.938C30.8009 38.5 31.5005 37.8012 31.5005 36.9375C31.5005 36.0746 30.8009 35.375 29.938 35.375H28.3755V20.9375C28.3755 20.0746 27.6759 19.375 26.813 19.375H20.563C19.7001 19.375 19.0005 20.0746 19.0005 20.9375C19.0005 21.8012 19.7001 22.5 20.563 22.5H22.1255V35.375H20.563C19.7001 35.375 19.0005 36.0746 19.0005 36.9375C19.0005 37.8012 19.7001 38.5 20.563 38.5Z\",\n fill: color\n }));\n});\nexport default InfoOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ImageOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.3032 17.8662C34.0646 17.8662 36.3032 15.6276 36.3032 12.8662C36.3032 10.1048 34.0646 7.86618 31.3032 7.86618C28.5418 7.86618 26.3032 10.1048 26.3032 12.8662C26.3032 15.6276 28.5418 17.8662 31.3032 17.8662ZM31.3032 15.3662C32.6839 15.3662 33.8032 14.2469 33.8032 12.8662C33.8032 11.4855 32.6839 10.3662 31.3032 10.3662C29.9225 10.3662 28.8032 11.4855 28.8032 12.8662C28.8032 14.2469 29.9225 15.3662 31.3032 15.3662Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.9372 15.1063C16.3967 15.0794 16.8338 15.3071 17.075 15.6991L25.0831 28.7141L29.8357 24.4289C30.0935 24.1966 30.4362 24.0818 30.7819 24.1121C31.1276 24.1424 31.4452 24.3151 31.6586 24.5887L40.2822 35.6497C40.5759 36.0264 40.6292 36.5376 40.4196 36.9668C40.21 37.396 39.7741 37.6683 39.2964 37.6683H6.70331C6.2766 37.6683 5.87937 37.4506 5.64974 37.091C5.42011 36.7313 5.38981 36.2794 5.56937 35.8923L14.8765 15.8282C15.0702 15.4106 15.4777 15.1333 15.9372 15.1063ZM16.1652 18.991L8.66108 35.1683H36.7368L30.5126 27.1848L25.6422 31.5761C25.3666 31.8246 24.9947 31.9378 24.6274 31.885C24.26 31.8322 23.9351 31.6189 23.7406 31.3027L16.1652 18.991Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 3C0.5 1.61929 1.61929 0.5 3 0.5H43C44.3807 0.5 45.5 1.61929 45.5 3V43C45.5 44.3807 44.3807 45.5 43 45.5H3C1.61929 45.5 0.5 44.3807 0.5 43V3ZM3 3H43V43H3V3Z\",\n fill: color\n }));\n});\nexport default ImageOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Custom = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.562515 0.562512H3.68752V2.90626H2.90627V3.68751H0.562515V0.562512ZM0.562515 44.3125V47.4375H3.68752V45.0938H2.90627V44.3125H0.562515ZM44.3125 47.4375H47.4375V44.3125H45.0938V45.0938H44.3125V47.4375ZM47.4375 3.68751V0.562512H44.3125V2.90626H45.0938V3.68751H47.4375ZM7.59376 0.562512V3.68751H12.2813V0.562512H7.59376ZM16.9688 0.562512V3.68751H21.6563V0.562512H16.9688ZM26.3438 0.562512V3.68751H31.0313V0.562512H26.3438ZM35.7188 0.562512V3.68751H40.4063V0.562512H35.7188ZM47.4375 7.59376H44.3125V12.2813H47.4375V7.59376ZM47.4375 16.9688H44.3125V21.6563H47.4375V16.9688ZM47.4375 26.3438H44.3125V31.0313H47.4375V26.3438ZM47.4375 35.7188H44.3125V40.4063H47.4375V35.7188ZM40.4063 47.4375V44.3125H35.7188V47.4375H40.4063ZM31.0313 47.4375V44.3125H26.3438V47.4375H31.0313ZM21.6563 47.4375V44.3125H16.9688V47.4375H21.6563ZM12.2813 47.4375V44.3125H7.59377V47.4375H12.2813ZM0.562515 40.4063H3.68752V35.7188H0.562515V40.4063ZM0.562515 31.0313H3.68752V26.3438H0.562515V31.0313ZM0.562515 21.6563H3.68752V16.9688H0.562515V21.6563ZM0.562515 12.2813H3.68752V7.59376H0.562515V12.2813Z\",\n fill: color\n }));\n});\nexport default Custom;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FlipY = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.5001 24.0625C38.2086 24.0625 38.8284 23.5858 39.0102 22.901C39.1921 22.2162 38.8904 21.4948 38.2753 21.1433L3.27531 1.14333C2.79171 0.866989 2.19757 0.868973 1.71583 1.14854C1.23409 1.4281 0.937592 1.94298 0.937592 2.49996V22.5C0.937592 23.3629 1.63715 24.0625 2.50009 24.0625L37.5001 24.0625ZM4.06259 20.9375L4.06259 5.19243L31.6164 20.9375L4.06259 20.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2753 28.8566C38.8904 28.5051 39.1921 27.7837 39.0102 27.0989C38.8284 26.4142 38.2086 25.9375 37.5001 25.9375H35.3126V26.9504L34.5374 27.3933L35.3126 28.75V29.0625H35.4912L36.0878 30.1066L38.2753 28.8566Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.3378 35.1066L31.7128 32.6066L30.1624 29.8933L25.7874 32.3933L27.3378 35.1066Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.9376 25.9375H26.5626L26.5626 29.0625H30.9376L30.9376 25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5878 40.1066L22.9628 37.6066L21.4124 34.8933L17.0374 37.3933L18.5878 40.1066Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1876 25.9375H17.8126V29.0625H22.1876V25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.83781 45.1066L14.2128 42.6066L12.6624 39.8933L8.28738 42.3933L9.83781 45.1066Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4376 25.9375H9.0626V29.0625H13.4376V25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.27531 48.8566L5.46281 47.6066L4.06259 45.1562V45H3.97331L3.91238 44.8933L3.72578 45H0.937592V47.5C0.937592 48.0569 1.23409 48.5718 1.71583 48.8514C2.19758 49.1309 2.79171 49.1329 3.27531 48.8566Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.6876 25.9375L2.50009 25.9375C1.63715 25.9375 0.937592 26.637 0.937592 27.5V30H4.06259V29.0625H4.6876V25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.937592 35V40L4.06259 40V35H0.937592Z\",\n fill: color\n }));\n});\nexport default FlipY;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FlipX = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M24.0625 1.93758C24.0625 1.22909 23.5858 0.609274 22.901 0.427427C22.2163 0.245581 21.4949 0.547225 21.1434 1.16237L1.14337 39.2874C0.867028 39.771 0.869012 40.3651 1.14858 40.8468C1.42814 41.3286 1.94302 41.6251 2.5 41.6251H22.5C23.3629 41.6251 24.0625 40.9255 24.0625 40.0626V1.93758ZM20.9375 38.5001H5.19247L20.9375 7.82128V38.5001Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.8566 1.16237C28.5051 0.547225 27.7837 0.245581 27.099 0.427428C26.4142 0.609274 25.9375 1.22909 25.9375 1.93758V4.12508H26.9504L27.3934 4.9003L28.75 4.12508H29.0625V3.94651L30.1066 3.34986L28.8566 1.16237Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1066 12.0999L32.6066 7.72486L29.8934 9.2753L32.3934 13.6503L35.1066 12.0999Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 8.50008V12.8751H29.0625V8.50008H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.1066 23.9749L37.6066 19.5999L34.8934 21.1503L37.3934 25.5253L40.1066 23.9749Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 20.3751V24.7501H29.0625V20.3751H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.1066 32.7249L42.6066 28.3499L39.8934 29.9003L42.3934 34.2753L45.1066 32.7249Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 29.1251V33.5001H29.0625V29.1251H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.8566 39.2874L47.6066 37.0999L45.1562 38.5001H45V38.5894L44.8934 38.6503L45 38.8369V41.6251H47.5C48.057 41.6251 48.5719 41.3286 48.8514 40.8468C49.131 40.3651 49.133 39.771 48.8566 39.2874Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.9375 37.8751V40.0626C25.9375 40.9255 26.6371 41.6251 27.5 41.6251H30V38.5001H29.0625V37.8751H25.9375Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35 41.6251H40V38.5001H35V41.6251Z\",\n fill: color\n }));\n});\nexport default FlipX;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Ellipse = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25.2047 46.875C37.2859 46.875 47.0797 37.0812 47.0797 25C47.0797 12.9188 37.2859 3.125 25.2047 3.125C13.1235 3.125 3.32968 12.9188 3.32968 25C3.32968 37.0812 13.1235 46.875 25.2047 46.875ZM25.2047 50C39.0118 50 50.2047 38.8071 50.2047 25C50.2047 11.1929 39.0118 0 25.2047 0C11.3976 0 0.204681 11.1929 0.204681 25C0.204681 38.8071 11.3976 50 25.2047 50Z\",\n fill: color\n }));\n});\nexport default Ellipse;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Landscape = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 51 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.11841 3.93805V32.063H47.8684V3.93805H4.11841ZM3.49341 0.813049C2.1127 0.813049 0.993408 1.91235 0.993408 3.26841V32.7327C0.993408 34.0887 2.1127 35.188 3.49341 35.188H48.4934C49.8741 35.188 50.9934 34.0887 50.9934 32.7327V3.26841C50.9934 1.91235 49.8741 0.813049 48.4934 0.813049H3.49341Z\",\n fill: color\n }));\n});\nexport default Landscape;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Stroke = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.50015 7.9997C5.50015 6.61898 6.61944 5.49969 8.00015 5.49969H38.0002C39.3809 5.49969 40.5002 6.61898 40.5002 7.99969V37.9997C40.5002 39.3804 39.3809 40.4997 38.0002 40.4997H8.00015C6.61944 40.4997 5.50015 39.3804 5.50015 37.9997V7.9997ZM8.00015 7.99969H38.0002V37.9997H8.00015V7.99969Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.5 3C0.5 1.61929 1.61929 0.5 3 0.5H43C44.3807 0.5 45.5 1.61929 45.5 3V43C45.5 44.3807 44.3807 45.5 43 45.5H3C1.61929 45.5 0.5 44.3807 0.5 43V3ZM3 3H43V43H3V3Z\",\n fill: color\n }));\n});\nexport default Stroke;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Transparency = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.166672 0.166664H8.50001V8.5H0.166672V0.166664Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.8333 8.5H8.50001V16.8333H0.166672V25.1667H8.50001V33.5H0.166672V41.8333H8.50001V33.5H16.8333V41.8333H25.1667V33.5H33.5V41.8333H41.8333V33.5H33.5V25.1667H41.8333V16.8333H33.5V8.5H41.8333V0.166664H33.5V8.5H25.1667V0.166664H16.8333V8.5ZM16.8333 16.8333V8.5H25.1667V16.8333H16.8333ZM16.8333 25.1667V33.5H25.1667V25.1667H33.5V16.8333H25.1667V25.1667H16.8333ZM16.8333 25.1667H8.50001V16.8333H16.8333V25.1667Z\",\n fill: color\n }));\n});\nexport default Transparency;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Shadow = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.95831 0.458374C1.5776 0.458374 0.458313 1.57766 0.458313 2.95837V35.4584C0.458313 36.8391 1.5776 37.9584 2.95831 37.9584H7.54167V43.7917C7.54167 45.8627 9.2206 47.5417 11.2917 47.5417H43.7917C45.8627 47.5417 47.5417 45.8627 47.5417 43.7917V11.2917C47.5417 9.22059 45.8627 7.54166 43.7917 7.54166H37.9583V2.95837C37.9583 1.57766 36.839 0.458374 35.4583 0.458374H2.95831ZM35.4583 2.95837H2.95831L2.95831 35.4584H35.4583V2.95837ZM15.7267 37.9584L10.0417 43.746V37.9584H15.7267ZM11.5135 45.0417L18.4712 37.9584H28.5529L21.4696 45.0417H11.5135ZM24.4159 45.0417H34.2932L45.0417 34.1339V24.0207L37.9583 31.3242V35.4584C37.9583 36.8391 36.839 37.9584 35.4583 37.9584H31.4912C31.4689 37.9859 31.445 38.0126 31.4194 38.0382L24.4159 45.0417ZM45.0417 21.3515L37.9583 28.655V18.9107L45.0417 11.8338V21.3515ZM37.0311 45.0417H43.7917C44.482 45.0417 45.0417 44.482 45.0417 43.7917V36.9124L37.0311 45.0417ZM43.8844 10.045C43.8538 10.0428 43.8229 10.0417 43.7917 10.0417H37.9583V15.9657L43.8844 10.045Z\",\n fill: color\n }));\n});\nexport default Shadow;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var RadiusCorner = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 3H23V0.5H3C1.61929 0.5 0.5 1.61929 0.5 3V43C0.5 44.3807 1.61929 45.5 3 45.5H43C44.3807 45.5 45.5 44.3807 45.5 43V23H43V43H3V3Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 7.25076H43V5.50076C43 5.15718 42.9321 4.83576 42.8113 4.54446L45.1206 3.58682C45.3651 4.17636 45.5 4.82281 45.5 5.50076V7.25076Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.75 0.500763V3.00076H28.25V0.500763H24.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.75 0.500763V3.00076H35.25V0.500763H31.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.75 0.500763V3.00076H40.5C40.8436 3.00076 41.165 3.06868 41.4563 3.18948L42.414 0.880166C41.8244 0.635694 41.178 0.500763 40.5 0.500763H38.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 10.7508H43V14.2508H45.5V10.7508Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.5 17.7508H43V21.2508H45.5V17.7508Z\",\n fill: color\n }));\n});\nexport default RadiusCorner;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Position = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 9.24878H11.7501V10.9675H10.9688V11.7488H9.25008V9.24878Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 34.2488V36.7488H11.7501V35.03H10.9688V34.2488H9.25008Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.2501 36.7488H36.7501V34.2488H35.0313V35.03H34.2501V36.7488Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 11.7488V9.24878H34.2501V10.9675H35.0313V11.7488H36.7501Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.4063 9.24878V11.7488H17.8438V9.24878H14.4063Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2813 9.24878V11.7488H24.7188V9.24878H21.2813Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.1563 9.24878V11.7488H31.5938V9.24878H28.1563Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 14.405H34.2501V17.8425H36.7501V14.405Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 21.28H34.2501V24.7175H36.7501V21.28Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.7501 28.155H34.2501V31.5925H36.7501V28.155Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.5938 36.7488V34.2488H28.1563V36.7488H31.5938Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.7188 36.7488V34.2488H21.2813V36.7488H24.7188Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8438 36.7488V34.2488H14.4063V36.7488H17.8438Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 31.5925H11.7501V28.155H9.25008V31.5925Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 24.7175H11.7501V21.28H9.25008V24.7175Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.25008 17.8425H11.7501V14.405H9.25008V17.8425Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.0002 26.7497C25.0712 26.7497 26.7502 25.0708 26.7502 22.9997C26.7502 20.9286 25.0712 19.2497 23.0002 19.2497C20.9291 19.2497 19.2502 20.9286 19.2502 22.9997C19.2502 25.0708 20.9291 26.7497 23.0002 26.7497Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V43C0.5 44.3807 1.61929 45.5 3 45.5H43C44.3807 45.5 45.5 44.3807 45.5 43V3C45.5 1.61929 44.3807 0.5 43 0.5H3ZM43 3H3V43H43V3Z\",\n fill: color\n }));\n});\nexport default Position;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Spacing = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.29986 0.991788C4.78802 0.503633 5.57947 0.503633 6.06763 0.991788L9.367 4.29116C9.85516 4.77932 9.85516 5.57077 9.367 6.05893C8.87885 6.54708 8.08739 6.54708 7.59924 6.05893L6.43374 4.89344V34.0829L7.59924 32.9174C8.08739 32.4293 8.87885 32.4293 9.367 32.9174C9.85516 33.4056 9.85516 34.197 9.367 34.6852L6.06763 37.9846C5.8332 38.219 5.51524 38.3507 5.18371 38.3507C4.85217 38.3507 4.53422 38.219 4.29981 37.9845L1.00084 34.6851C0.512712 34.1969 0.512761 33.4055 1.00095 32.9174C1.48913 32.4292 2.28059 32.4293 2.76871 32.9175L3.93374 34.0827V4.89344L2.76825 6.05893C2.2801 6.54708 1.48864 6.54708 1.00049 6.05893C0.51233 5.57077 0.51233 4.77932 1.00049 4.29116L4.29986 0.991788ZM13.1588 8.34109V1.49725H46.3156V8.34102H43.398V7.19776C43.398 5.54595 42.0562 4.20442 40.4047 4.20442H31.8516V26.0992C31.8516 28.1387 33.5088 29.7957 35.5481 29.7957H36.5137V32.4599H23.01V29.7957H23.9756C26.0151 29.7957 27.6721 28.1387 27.6721 26.0992V4.20448H19.0697C17.418 4.20448 16.0763 5.54604 16.0763 7.19783V8.34109H13.1588ZM46.9995 39.7088C47.4877 39.2207 47.4877 38.4292 46.9995 37.9411L43.7001 34.6417C43.212 34.1535 42.4205 34.1535 41.9324 34.6417C41.4442 35.1298 41.4442 35.9213 41.9324 36.4095L43.0979 37.5749L15.0832 37.5749L16.2484 36.4099C16.7366 35.9218 16.7366 35.1303 16.2485 34.6421C15.7604 34.154 14.9689 34.1539 14.4807 34.642L11.1814 37.941C10.9469 38.1754 10.8152 38.4934 10.8152 38.8249C10.8152 39.1564 10.9469 39.4744 11.1813 39.7088L14.4807 43.0082C14.9688 43.4964 15.7603 43.4964 16.2485 43.0082C16.7366 42.5201 16.7366 41.7286 16.2485 41.2404L15.083 40.0749L43.0979 40.0749L41.9324 41.2404C41.4442 41.7286 41.4442 42.5201 41.9324 43.0082C42.4205 43.4964 43.212 43.4964 43.7001 43.0082L46.9995 39.7088Z\",\n fill: color\n }));\n});\nexport default Spacing;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Padding = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.8334 9.19949C13.8334 8.50914 14.3931 7.94949 15.0834 7.94949H31.3334C32.0238 7.94949 32.5834 8.50914 32.5834 9.19949C32.5834 9.88985 32.0238 10.4495 31.3334 10.4495H15.0834C14.3931 10.4495 13.8334 9.88985 13.8334 9.19949Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.0834 35.5496C14.3931 35.5496 13.8334 36.1092 13.8334 36.7996C13.8334 37.4899 14.3931 38.0496 15.0834 38.0496H31.3334C32.0238 38.0496 32.5834 37.4899 32.5834 36.7996C32.5834 36.1092 32.0238 35.5496 31.3334 35.5496H15.0834Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.8001 13.4163C37.4905 13.4163 38.0501 13.9759 38.0501 14.6663V30.9163C38.0501 31.6066 37.4905 32.1663 36.8001 32.1663C36.1098 32.1663 35.5501 31.6066 35.5501 30.9163V14.6663C35.5501 13.9759 36.1098 13.4163 36.8001 13.4163Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.45 14.6663C10.45 13.9759 9.89038 13.4163 9.20003 13.4163C8.50967 13.4163 7.95003 13.9759 7.95003 14.6663L7.95003 30.9163C7.95003 31.6066 8.50967 32.1663 9.20003 32.1663C9.89038 32.1663 10.45 31.6066 10.45 30.9163L10.45 14.6663Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V43C0.5 44.3807 1.61929 45.5 3 45.5H43C44.3807 45.5 45.5 44.3807 45.5 43V3C45.5 1.61929 44.3807 0.5 43 0.5H3ZM43 3H3V43H43V3Z\",\n fill: color\n }));\n});\nexport default Padding;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Polygon = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.103 18.4866L24.0002 3.8811L3.89749 18.4866L11.5761 42.1188H36.4244L44.103 18.4866ZM25.8371 1.35293C24.7418 0.557164 23.2587 0.557162 22.1634 1.35292L2.06066 15.9584C0.96539 16.7542 0.507082 18.1647 0.925439 19.4523L8.604 43.0845C9.02236 44.372 10.2222 45.2438 11.5761 45.2438H36.4244C37.7782 45.2438 38.9781 44.372 39.3965 43.0845L47.075 19.4523C47.4934 18.1647 47.0351 16.7542 45.9398 15.9584L25.8371 1.35293Z\",\n fill: color\n }));\n});\nexport default Polygon;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var PolygonSides = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 48\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.0078 29.9669H25.835L24.7803 35.9727H27.4609L28.5156 29.9669H32.2363V27.4473H28.9551L29.6875 23.2872H33.3496V20.7383H30.1416L31.2109 14.6446H28.5303L27.4609 20.7383H24.6191L25.6885 14.6446H23.0225L21.9531 20.7383H18.1006V23.2872H21.499L20.7666 27.4473H17.002V29.9669H20.3271L19.2725 35.9727H21.9531L23.0078 29.9669ZM26.2744 27.4473H23.4473L24.165 23.2872H27.0068L26.2744 27.4473Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.5448 0.821208C24.421 0.184598 25.6075 0.184597 26.4837 0.821207L48.4803 16.8026C49.3565 17.4392 49.7231 18.5677 49.3885 19.5977L40.9865 45.4562C40.6518 46.4862 39.692 47.1836 38.6089 47.1836H11.4197C10.3366 47.1836 9.37672 46.4862 9.04204 45.4562L0.640107 19.5977C0.305422 18.5677 0.672067 17.4392 1.54829 16.8026L23.5448 0.821208ZM25.0143 2.84375L47.0108 18.8252L38.6089 44.6836H11.4197L3.01775 18.8252L25.0143 2.84375Z\",\n fill: color\n }));\n});\nexport default PolygonSides;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowRight = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.5 15.0005C45.5 15.7079 45.2003 16.3822 44.6753 16.8562L30.8291 29.3562C29.8042 30.2814 28.2234 30.2006 27.2982 29.1758C26.373 28.1509 26.4537 26.57 27.4786 25.6448L36.5 17.5005L3 17.5005C1.61928 17.5005 0.499999 16.3812 0.499999 15.0005C0.499999 13.6198 1.61929 12.5005 3 12.5005L36.5 12.5005L27.4786 4.35618C26.4537 3.43096 26.373 1.85011 27.2982 0.82525C28.2234 -0.199608 29.8042 -0.280382 30.8291 0.644837L44.6753 13.1448C45.2003 13.6189 45.5 14.2931 45.5 15.0005Z\",\n fill: color\n }));\n});\nexport default ArrowRight;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FontItalic = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19 48L26.9931 2H31.2019L23.2087 48H19Z\",\n fill: color\n }));\n});\nexport default FontItalic;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FontBold = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 14 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.214966 17.4813V0.518677H6.61123C8.82693 0.518677 10.5075 0.914783 11.653 1.70699C12.7985 2.49144 13.3712 3.64481 13.3712 5.16709C13.3712 5.99814 13.1413 6.7321 12.6814 7.36898C12.2216 7.99809 11.5819 8.46021 10.7625 8.75535C11.699 8.97282 12.4348 9.41164 12.9699 10.0718C13.5133 10.732 13.7851 11.5397 13.7851 12.4951C13.7851 14.1261 13.2249 15.361 12.1045 16.1998C10.9841 17.0386 9.38713 17.4658 7.31357 17.4813H0.214966ZM3.97748 10.0951V14.6736H7.20069C8.08697 14.6736 8.77677 14.4795 9.27007 14.0911C9.77174 13.695 10.0226 13.1513 10.0226 12.4601C10.0226 10.9067 9.1572 10.1184 7.42644 10.0951H3.97748ZM3.97748 7.62528H6.76173C8.65971 7.59421 9.6087 6.89132 9.6087 5.5166C9.6087 4.74769 9.36623 4.19625 8.88128 3.86228C8.4047 3.52054 7.64801 3.34967 6.61123 3.34967H3.97748V7.62528Z\",\n fill: color\n }));\n});\nexport default FontBold;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var UploadOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5911 1.54582C16.7075 0.680052 15.2937 0.680014 14.4101 1.54573L4.05296 11.6925C3.15635 12.5709 3.14159 14.0098 4.01999 14.9064C4.89839 15.8031 6.33733 15.8178 7.23394 14.9394L13.7278 8.57741V30.4419C13.7278 31.6971 14.7454 32.7147 16.0006 32.7147C17.2558 32.7147 18.2733 31.6971 18.2733 30.4419V8.57782L24.766 14.9393C25.6625 15.8178 27.1015 15.8031 27.9799 14.9065C28.8584 14.01 28.8437 12.571 27.9471 11.6926L17.5911 1.54582Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.78827 36.5543C1.53308 36.5543 0.515541 37.5719 0.515541 38.827C0.515541 40.0822 1.53308 41.0998 2.78827 41.0998H29.1519C30.4071 41.0998 31.4246 40.0822 31.4246 38.827C31.4246 37.5719 30.4071 36.5543 29.1519 36.5543H2.78827Z\",\n fill: color\n }));\n});\nexport default UploadOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowLeftOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 28 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M26.907 0.71085C25.7493 -0.292553 23.9445 -0.224769 22.8758 0.862251L0.931376 23.1837C-0.0773525 24.2097 -0.0773525 25.7913 0.931376 26.8173L22.8758 49.1388C23.9445 50.2258 25.7493 50.2936 26.907 49.2902C28.0647 48.2868 28.1369 46.5921 27.0683 45.5051L6.90997 25.0005L27.0683 4.49589C28.1369 3.40888 28.0647 1.71425 26.907 0.71085Z\",\n fill: color\n }));\n});\nexport default ArrowLeftOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowRightOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 28 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.09286 0.71085C2.25057 -0.292553 4.05541 -0.224769 5.12407 0.862251L27.0685 23.1837C28.0772 24.2097 28.0772 25.7913 27.0685 26.8173L5.12407 49.1388C4.05541 50.2258 2.25057 50.2936 1.09286 49.2902C-0.0648579 48.2868 -0.137051 46.5921 0.93161 45.5051L21.0899 25.0005L0.93161 4.49589C-0.137051 3.40888 -0.0648579 1.71425 1.09286 0.71085Z\",\n fill: color\n }));\n});\nexport default ArrowRightOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var PlusOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 38 38\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9167 21.0838L16.9167 35.6672C16.9167 36.8177 17.8494 37.7505 19 37.7505C20.1506 37.7505 21.0833 36.8177 21.0833 35.6672L21.0833 21.0838H35.6667C36.8173 21.0838 37.75 20.1511 37.75 19.0005C37.75 17.8499 36.8173 16.9172 35.6667 16.9172L21.0833 16.9172L21.0833 2.33382C21.0833 1.18323 20.1506 0.250488 19 0.250488C17.8494 0.250488 16.9167 1.18323 16.9167 2.33382L16.9167 16.9172H2.33333C1.18274 16.9172 0.25 17.8499 0.25 19.0005C0.25 20.1511 1.18274 21.0838 2.33333 21.0838H16.9167Z\",\n fill: color\n }));\n});\nexport default PlusOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowTool = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.04757 38.9503C0.437373 38.3401 0.437373 37.3508 1.04757 36.7406L33.9229 3.86697L23.8354 3.33584C22.9736 3.29047 22.3118 2.5551 22.3572 1.69335C22.4026 0.831601 23.138 0.169794 23.9997 0.215167L37.5909 0.930759C38.3892 0.972794 39.027 1.61063 39.0691 2.40894L39.7846 16.0001C39.83 16.8619 39.1682 17.5972 38.3065 17.6426C37.4447 17.688 36.7093 17.0262 36.664 16.1644L36.1328 6.07651L3.25728 38.9503C2.64708 39.5605 1.65776 39.5605 1.04757 38.9503Z\",\n fill: color\n }));\n});\nexport default ArrowTool;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Compare = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.1607 4.16667V2.08333C27.1607 0.93274 26.2279 0 25.0773 0C23.9267 0 22.994 0.932741 22.994 2.08333V4.16667H4.244C1.94281 4.16667 0.0773315 6.03215 0.0773315 8.33333V41.6667C0.0773315 43.9679 1.94281 45.8333 4.244 45.8333H22.994V47.9167C22.994 49.0673 23.9267 50 25.0773 50C26.2279 50 27.1607 49.0673 27.1607 47.9167V45.8333H45.9107C48.2118 45.8333 50.0773 43.9678 50.0773 41.6667V8.33333C50.0773 6.03215 48.2119 4.16667 45.9107 4.16667H27.1607ZM22.994 8.33333H4.244L4.244 41.6667H22.994V8.33333ZM27.1607 41.6667V8.33333H45.9107V41.6667H27.1607Z\",\n fill: color\n }));\n});\nexport default Compare;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var MinusOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 38 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M35.835 5.0769L2.16498 5.0769C1.00277 5.0769 0.0606079 4.14726 0.0606079 3.00048C0.060608 1.85371 1.00277 0.924072 2.16498 0.924072L35.835 0.924074C36.9972 0.924074 37.9394 1.85372 37.9394 3.00049C37.9394 4.14726 36.9972 5.0769 35.835 5.0769Z\",\n fill: color\n }));\n});\nexport default MinusOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Temprature = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.48799 3.125H17.0311L17.0311 24.4063C17.0311 26.6148 18.1889 28.4084 19.5429 29.5401C21.7011 31.3438 23.0656 34.0456 23.0656 37.069C23.0656 42.4847 18.6753 46.875 13.2595 46.875C7.84382 46.875 3.45351 42.4847 3.45351 37.069C3.45351 34.0456 4.81799 31.3438 6.97617 29.5401C8.33021 28.4084 9.48799 26.6148 9.48799 24.4063V3.125ZM20.1561 3.125C20.1561 1.39911 18.757 0 17.0311 0H9.48799C7.7621 0 6.36299 1.39911 6.36299 3.125V24.4063C6.36299 25.4785 5.79482 26.4547 4.97216 27.1423C2.13398 29.5143 0.328506 33.0808 0.328506 37.069C0.328506 44.2106 6.11793 50 13.2595 50C20.4012 50 26.1906 44.2106 26.1906 37.069C26.1906 33.0808 24.3851 29.5143 21.5469 27.1423C20.7243 26.4547 20.1561 25.4785 20.1561 24.4063V3.125ZM35.6715 1.25C35.6715 0.559645 35.1119 0 34.4215 0H28.1715C27.4812 0 26.9215 0.559644 26.9215 1.25C26.9215 1.94036 27.4812 2.5 28.1715 2.5L34.4215 2.5C35.1119 2.5 35.6715 1.94036 35.6715 1.25ZM35.6715 8.24951C35.6715 7.55916 35.1119 6.99951 34.4215 6.99951H28.1715C27.4812 6.99951 26.9215 7.55916 26.9215 8.24951C26.9215 8.93987 27.4812 9.49951 28.1715 9.49951H34.4215C35.1119 9.49951 35.6715 8.93987 35.6715 8.24951ZM34.4215 13.999C35.1119 13.999 35.6715 14.5587 35.6715 15.249C35.6715 15.9394 35.1119 16.499 34.4215 16.499H28.1715C27.4812 16.499 26.9215 15.9394 26.9215 15.249C26.9215 14.5587 27.4812 13.999 28.1715 13.999H34.4215ZM13.2594 43.7501C16.366 43.7501 18.8844 41.2317 18.8844 38.1251C18.8844 35.4037 16.9519 33.1337 14.3844 32.6126V10.3662C14.3844 9.67582 13.8247 9.11617 13.1344 9.11617C12.444 9.11617 11.8844 9.67582 11.8844 10.3662V32.6694C9.44245 33.2829 7.63441 35.4928 7.63441 38.1251C7.63441 41.2317 10.1528 43.7501 13.2594 43.7501Z\",\n fill: color\n }));\n});\nexport default Temprature;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Contrast = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.4376 40.6858V38.5625V4.18746V3.31418C10.8133 4.10816 3.25006 12.1708 3.25006 22C3.25006 31.8292 10.8133 39.8918 20.4376 40.6858ZM40.7501 22C40.7501 31.8292 33.1868 39.8918 23.5626 40.6858V38.5625V4.18746V3.31418C33.1868 4.10816 40.7501 12.1708 40.7501 22ZM43.8751 22C43.8751 34.0812 34.0813 43.875 22.0001 43.875C9.91883 43.875 0.125061 34.0812 0.125061 22C0.125061 9.91877 9.91883 0.125 22.0001 0.125C34.0813 0.125 43.8751 9.91877 43.8751 22Z\",\n fill: color\n }));\n});\nexport default Contrast;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var FineTune = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.3679 7.50003C15.7995 10.005 13.5592 11.875 10.8823 11.875C8.20528 11.875 5.96506 10.005 5.39665 7.50003H1.5448C0.854444 7.50003 0.2948 6.94039 0.2948 6.25003C0.2948 5.55967 0.854444 5.00003 1.5448 5.00003H5.39665C5.96506 2.49504 8.20528 0.625031 10.8823 0.625031C13.5592 0.625031 15.7995 2.49504 16.3679 5.00003H48.4557C49.1461 5.00003 49.7057 5.55967 49.7057 6.25003C49.7057 6.94039 49.1461 7.50003 48.4557 7.50003H16.3679ZM14.0073 6.25003C14.0073 7.97592 12.6082 9.37503 10.8823 9.37503C9.15637 9.37503 7.75726 7.97592 7.75726 6.25003C7.75726 4.52414 9.15637 3.12503 10.8823 3.12503C12.6082 3.12503 14.0073 4.52414 14.0073 6.25003Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M34.5715 27.625C37.2485 27.625 39.4887 25.755 40.0571 23.25H48.4554C49.1458 23.25 49.7054 22.6904 49.7054 22C49.7054 21.3096 49.1458 20.75 48.4554 20.75H40.0571C39.4887 18.245 37.2485 16.375 34.5715 16.375C31.8946 16.375 29.6543 18.245 29.0859 20.75H1.5448C0.854444 20.75 0.2948 21.3096 0.2948 22C0.2948 22.6904 0.854444 23.25 1.5448 23.25H29.0859C29.6543 25.755 31.8946 27.625 34.5715 27.625ZM34.5715 25.125C36.2974 25.125 37.6965 23.7259 37.6965 22C37.6965 20.2741 36.2974 18.875 34.5715 18.875C32.8456 18.875 31.4465 20.2741 31.4465 22C31.4465 23.7259 32.8456 25.125 34.5715 25.125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.7702 39C22.2018 41.505 19.9615 43.375 17.2845 43.375C14.6076 43.375 12.3673 41.505 11.7989 39H1.5448C0.854444 39 0.2948 38.4403 0.2948 37.75C0.2948 37.0596 0.854444 36.5 1.5448 36.5H11.7989C12.3673 33.995 14.6076 32.125 17.2845 32.125C19.9615 32.125 22.2018 33.995 22.7702 36.5H48.4554C49.1458 36.5 49.7054 37.0596 49.7054 37.75C49.7054 38.4403 49.1458 39 48.4554 39H22.7702ZM20.4095 37.75C20.4095 39.4759 19.0104 40.875 17.2845 40.875C15.5587 40.875 14.1595 39.4759 14.1595 37.75C14.1595 36.0241 15.5587 34.625 17.2845 34.625C19.0104 34.625 20.4095 36.0241 20.4095 37.75Z\",\n fill: color\n }));\n});\nexport default FineTune;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Saturation = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.2341 37.6984H37.5121V37.4237C41.4447 33.4687 43.875 28.0182 43.875 22C43.875 15.9819 41.4447 10.5314 37.5121 6.57632V6.30045H37.2328C33.2942 2.47819 27.9219 0.125031 22 0.125031C9.91877 0.125031 0.125 9.9188 0.125 22C0.125 34.0813 9.91877 43.875 22 43.875C24.718 43.875 27.3203 43.3793 29.7213 42.4733H30.5303V42.1494C33.0389 41.0861 35.308 39.5679 37.2341 37.6984ZM20.4257 3.31519C10.807 4.1148 3.25 12.1749 3.25 22C3.25 31.8252 10.807 39.8853 20.4257 40.6849V3.31519ZM34.3871 36.0759C33.221 37.1029 31.9263 37.9873 30.5303 38.7017V5.29836C31.9263 6.01281 33.221 6.89715 34.3871 7.92411V36.0759ZM37.5121 11.4641C39.5556 14.4669 40.75 18.094 40.75 22C40.75 25.9061 39.5556 29.5332 37.5121 32.536V11.4641ZM23.5507 40.6868C24.8796 40.578 26.1693 40.3307 27.4053 39.9592V4.04089C26.1693 3.66941 24.8796 3.42203 23.5507 3.31324V40.6868Z\",\n fill: color\n }));\n});\nexport default Saturation;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Annotate = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.1442 31.379C45.4585 31.379 44.8974 31.9429 44.8974 32.6321V43.7349C44.8974 45.8025 43.2267 47.4817 41.157 47.4943H6.22156C4.16433 47.4943 2.49361 45.8151 2.48114 43.7349V11.1283C2.48114 9.06067 4.15186 7.38147 6.22156 7.36894H17.2807C17.9665 7.36894 18.5275 6.80503 18.5275 6.1158C18.5275 5.42658 17.9665 4.86267 17.2807 4.86267H6.22156C2.79284 4.8752 0 7.66969 0 11.1283V43.7349C0 47.1935 2.79284 50.0005 6.22156 50.0005H41.157C44.5982 50.0005 47.3786 47.1935 47.3786 43.7474V32.6321C47.391 31.9429 46.83 31.379 46.1442 31.379Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.8923 1.65462C44.698 -0.55089 41.157 -0.55089 38.9627 1.65462L16.7571 23.9729C16.6075 24.1233 16.4953 24.3113 16.4329 24.5243L13.5154 35.1258C13.3907 35.5644 13.5154 36.0281 13.8396 36.3413C14.1513 36.6546 14.6251 36.7799 15.049 36.6672L25.5969 33.7348C25.8089 33.6722 25.9959 33.5719 26.1455 33.409L48.3636 11.0782C50.5455 8.87267 50.5455 5.31377 48.3636 3.10826L46.8923 1.65462ZM19.4751 24.7875L37.6535 6.51678L43.5135 12.4065L25.3351 30.6897L19.4751 24.7875ZM18.3031 27.1559L22.9911 31.8677L16.5077 33.6722L18.3031 27.1559ZM46.5931 9.31127L45.2715 10.6396L39.4115 4.74986L40.7331 3.42154C41.9425 2.206 43.9249 2.206 45.1343 3.42154L46.5931 4.88771C47.815 6.11578 47.815 8.09573 46.5931 9.31127Z\",\n fill: color\n }));\n});\nexport default Annotate;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Blur = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.3626 41.293C17.5103 41.4285 16.7096 40.8474 16.5742 39.9952C16.4387 39.143 17.0198 38.3423 17.872 38.2068C18.2902 38.1403 18.6988 38.0456 19.0958 37.9246C21.9368 37.059 24.1957 34.8468 25.1254 32.0335C25.2671 31.6049 25.378 31.1621 25.4555 30.7076C25.6005 29.857 26.4076 29.2849 27.2583 29.4299C28.109 29.5749 28.681 30.3821 28.536 31.2327C28.432 31.8429 28.283 32.4379 28.0926 33.0142C26.8449 36.7893 23.8206 39.7519 20.0065 40.914C19.4728 41.0766 18.9239 41.2038 18.3626 41.293Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.9356 31.0645C33.9356 23.9644 24.1764 8.59028 19.4747 1.59549C18.2785 -0.184172 15.7216 -0.184172 14.5254 1.59548C9.82374 8.59028 0.0645752 23.9644 0.0645752 31.0645C0.0645752 40.4177 7.64685 48 17.0001 48C26.3533 48 33.9356 40.4177 33.9356 31.0645ZM30.8106 31.0645C30.8106 29.8836 30.375 28.0316 29.4236 25.578C28.5 23.1959 27.1988 20.5159 25.7187 17.7756C22.8106 12.3913 19.3287 6.98743 17.0001 3.51586C14.6715 6.98743 11.1895 12.3913 8.28145 17.7756C6.80135 20.5159 5.50017 23.1959 4.57655 25.578C3.62517 28.0316 3.18958 29.8836 3.18958 31.0645C3.18958 38.6918 9.37274 44.875 17.0001 44.875C24.6274 44.875 30.8106 38.6918 30.8106 31.0645Z\",\n fill: color\n }));\n});\nexport default Blur;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var PinOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.0081 15.2287L36.7869 17.6214L28.935 29.9601C30.5809 33.9266 30.3662 38.0903 27.1408 41.3158L26.5656 41.8909C25.9554 42.5011 24.9661 42.5011 24.3559 41.8909L14.4122 31.9472L2.99211 43.3673C2.38192 43.9775 1.3926 43.9775 0.782403 43.3673C0.17221 42.7571 0.172211 41.7678 0.782403 41.1576L12.2025 29.7375L2.25883 19.7938C1.64864 19.1836 1.64864 18.1943 2.25883 17.5841L2.50512 17.3378C5.73058 14.1123 10.2231 13.5688 14.1897 15.2147L26.5283 7.36283L28.9211 1.14165C29.327 0.0863053 30.6847 -0.201832 31.4843 0.597706L43.552 12.6655C44.3516 13.465 44.0634 14.8228 43.0081 15.2287ZM29.0752 9.44618L30.9747 4.50752L39.6422 13.1751L34.7035 15.0745L25.4251 29.655L26.0486 31.1577C27.234 34.0146 27.0773 36.5309 25.4342 38.5498L5.64209 18.7576C7.75439 17.2384 10.4304 17.0382 12.992 18.1011L14.4948 18.7246L29.0752 9.44618Z\",\n fill: color\n }));\n});\nexport default PinOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Duplicate = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0.312012 34.847V3.39883C0.312012 1.67294 1.71112 0.273834 3.43701 0.273834H26.807C28.5329 0.273834 29.932 1.67294 29.932 3.39883V34.847C29.932 36.5729 28.5329 37.972 26.807 37.972H3.43701C1.71112 37.972 0.312012 36.5729 0.312012 34.847ZM3.43701 34.847V3.39883L26.807 3.39883L26.807 34.847L3.43701 34.847Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.6874 12.5434C35.6874 11.6805 34.9878 10.9809 34.1249 10.9809C33.2619 10.9809 32.5624 11.6805 32.5624 12.5434V40.6009H9.89033C9.02739 40.6009 8.32783 41.3005 8.32783 42.1634C8.32783 43.0263 9.02739 43.7259 9.89033 43.7259H34.1249C34.9878 43.7259 35.6874 43.0263 35.6874 42.1634V12.5434Z\",\n fill: color\n }));\n});\nexport default Duplicate;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var DeleteOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.75 17.3125C15.75 16.4496 16.4496 15.75 17.3125 15.75C18.1754 15.75 18.875 16.4496 18.875 17.3125L18.875 32.9375C18.875 33.8005 18.1754 34.5 17.3125 34.5C16.4496 34.5 15.75 33.8005 15.75 32.9375L15.75 17.3125Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.6875 15.75C25.8246 15.75 25.125 16.4496 25.125 17.3125L25.125 32.9375C25.125 33.8005 25.8246 34.5 26.6875 34.5C27.5504 34.5 28.25 33.8005 28.25 32.9375V17.3125C28.25 16.4496 27.5504 15.75 26.6875 15.75Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.625 6.37503V3.25003C12.625 1.52414 14.0241 0.125031 15.75 0.125031H28.25C29.9759 0.125031 31.375 1.52414 31.375 3.25003V6.37503H42.3125C43.1754 6.37503 43.875 7.07459 43.875 7.93753C43.875 8.80048 43.1754 9.50003 42.3125 9.50003H39.1875V40.75C39.1875 42.4759 37.7884 43.875 36.0625 43.875H7.9375C6.21161 43.875 4.8125 42.4759 4.8125 40.75V9.50003L1.6875 9.50003C0.824554 9.50003 0.125 8.80048 0.125 7.93753C0.125 7.07459 0.824555 6.37503 1.6875 6.37503H12.625ZM15.75 3.25003H28.25V6.37503H15.75V3.25003ZM7.9375 9.50003L7.9375 40.75H36.0625V9.50003H7.9375Z\",\n fill: color\n }));\n});\nexport default DeleteOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var CropFrame = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 3H31.75V0.5H43C44.3807 0.5 45.5 1.61929 45.5 3V14.25H43V3Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 14.25V3H14.25V0.5H3C1.61929 0.5 0.5 1.61929 0.5 3V14.25H3Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 31.75V43C0.5 44.3807 1.61929 45.5 3 45.5H14.25V43H3V31.75H0.5Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 31.75H45.5V43C45.5 44.3807 44.3807 45.5 43 45.5H31.75V43H43V31.75Z\",\n fill: color\n }));\n});\nexport default CropFrame;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Portrait = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 36 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.0559 46.8755L32.0559 3.12555L3.93091 3.12555L3.93091 46.8755H32.0559ZM35.1809 3.12555C35.1809 1.39966 33.7818 0.000549316 32.0559 0.000549316H3.93091C2.20502 0.000549316 0.805908 1.39966 0.805908 3.12555V46.8755C0.805908 48.6014 2.20502 50.0005 3.93091 50.0005H32.0559C33.7818 50.0005 35.1809 48.6014 35.1809 46.8755L35.1809 3.12555Z\",\n fill: color\n }));\n});\nexport default Portrait;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var WarningOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.961 39.0119L28.2837 7.27185C27.5934 6.17538 26.3971 5.5 24.9981 5.5C23.5956 5.5 22.3967 6.17887 21.7073 7.28034L4.06571 38.9613L4.03009 39.0197C3.33595 40.159 3.32316 41.4697 3.9939 42.6216C4.67405 43.786 5.89 44.5 7.34459 44.5H42.554C44.0596 44.5 45.3464 43.7436 46.0016 42.6231C46.6817 41.4564 46.652 40.1455 45.9968 39.0706L45.961 39.0119ZM49.0254 44.3856C47.7038 46.6495 45.2246 48 42.554 48H7.34459C4.67398 48 2.29272 46.6495 0.970942 44.3856C-0.347811 42.1231 -0.322029 39.4361 1.04116 37.1987L18.6646 5.55018C18.6697 5.5418 18.6743 5.53342 18.6789 5.52504C18.6836 5.51666 18.6882 5.50828 18.6932 5.49989C20.0278 3.30867 22.3849 2 24.9981 2C27.6114 2 29.9685 3.30867 31.303 5.49989L48.9853 37.2489C50.3185 39.436 50.3442 42.1232 49.0254 44.3856Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.0001 16C22.0001 14.3431 23.3433 13 25.0001 13C26.657 13 28.0001 14.3431 28.0001 16V28C28.0001 29.6569 26.657 31 25.0001 31C23.3433 31 22.0001 29.6569 22.0001 28V16Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.0001 37C28.0001 38.6569 26.657 40 25.0001 40C23.3433 40 22.0001 38.6569 22.0001 37C22.0001 35.3431 23.3433 34 25.0001 34C26.657 34 28.0001 35.3431 28.0001 37Z\",\n fill: color\n }));\n});\nexport default WarningOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Success = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.5 10.5001C20.5 16.023 16.0228 20.5001 10.5 20.5001C4.97714 20.5001 0.5 16.023 0.5 10.5001C0.5 4.97727 4.97714 0.500122 10.5 0.500122C16.0228 0.500122 20.5 4.97727 20.5 10.5001ZM7.88239 9.56904C8.00439 9.62145 8.11473 9.69763 8.20698 9.79314L9.49998 11.0861L12.793 7.79314C12.8852 7.69763 12.9956 7.62145 13.1176 7.56904C13.2396 7.51663 13.3708 7.48905 13.5036 7.48789C13.6363 7.48674 13.768 7.51204 13.8909 7.56232C14.0138 7.6126 14.1255 7.68686 14.2194 7.78075C14.3133 7.87464 14.3875 7.98629 14.4378 8.10919C14.4881 8.23208 14.5134 8.36376 14.5122 8.49654C14.5111 8.62932 14.4835 8.76054 14.4311 8.88255C14.3787 9.00455 14.3025 9.1149 14.207 9.20714L10.207 13.2071C10.0194 13.3946 9.76514 13.4999 9.49998 13.4999C9.23482 13.4999 8.98051 13.3946 8.79298 13.2071L6.79298 11.2071C6.69747 11.1149 6.62129 11.0046 6.56888 10.8825C6.51647 10.7605 6.48889 10.6293 6.48773 10.4965C6.48658 10.3638 6.51188 10.2321 6.56216 10.1092C6.61244 9.98629 6.6867 9.87464 6.78059 9.78075C6.87448 9.68686 6.98613 9.6126 7.10903 9.56232C7.23193 9.51204 7.3636 9.48674 7.49638 9.48789C7.62916 9.48905 7.76038 9.51663 7.88239 9.56904Z\",\n fill: color\n }));\n});\nexport default Success;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Error = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.5 20.5001C16.0228 20.5001 20.5 16.023 20.5 10.5001C20.5 4.97727 16.0228 0.500122 10.5 0.500122C4.97715 0.500122 0.5 4.97727 0.5 10.5001C0.5 16.023 4.97715 20.5001 10.5 20.5001ZM15.4375 7.0912L11.8155 10.7132L15.4638 14.309C15.6213 14.4665 15.7 14.6503 15.7 14.8865C15.7 15.1227 15.6213 15.3064 15.4638 15.4639C15.3063 15.6214 15.1226 15.7001 14.8864 15.7001C14.6501 15.7001 14.4664 15.6214 14.3089 15.4639L10.6869 11.8419L7.06483 15.4639C6.77612 15.7789 6.25118 15.7789 5.93622 15.4639C5.77874 15.3064 5.7 15.0964 5.7 14.8865C5.7 14.6765 5.77874 14.4928 5.93622 14.3353L9.55827 10.7132L5.93622 7.0912C5.77874 6.93372 5.7 6.72374 5.7 6.51377C5.7 6.3038 5.77874 6.12007 5.93622 5.96259C6.25118 5.64763 6.74987 5.64763 7.06483 5.96259L10.6869 9.58464L14.3089 5.93634C14.5976 5.62138 15.1226 5.62138 15.4375 5.93634C15.595 6.09382 15.6738 6.27755 15.6738 6.51377C15.6738 6.74999 15.595 6.93372 15.4375 7.0912Z\",\n fill: color\n }));\n});\nexport default Error;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ErrorOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 52\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.3438 16.4782L28.2887 25.5333L37.4095 34.5228C37.8032 34.9165 38 35.3758 38 35.9664C38 36.5569 37.8032 37.0162 37.4095 37.4099C37.0158 37.8036 36.5564 38.0005 35.9659 38.0005C35.3753 38.0005 34.916 37.8036 34.5223 37.4099L25.4672 28.3548L16.4121 37.4099C15.6903 38.1973 14.378 38.1973 13.5906 37.4099C13.1969 37.0162 13 36.4913 13 35.9664C13 35.4414 13.1969 34.9821 13.5906 34.5884L22.6457 25.5333L13.5906 16.4782C13.1969 16.0845 13 15.5595 13 15.0346C13 14.5097 13.1969 14.0504 13.5906 13.6567C14.378 12.8693 15.6247 12.8693 16.4121 13.6567L25.4672 22.7118L34.5223 13.591C35.2441 12.8036 36.5564 12.8036 37.3438 13.591C37.7375 13.9847 37.9344 14.4441 37.9344 15.0346C37.9344 15.6252 37.7375 16.0845 37.3438 16.4782Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-0.000488281 25.0005C-0.000488281 38.7972 11.2028 50.0005 24.9995 50.0005C38.6925 50.0005 49.9995 38.7972 49.9995 25.0005C49.9995 11.2038 38.7962 0.000488281 24.9995 0.000488281C11.2028 0.000488281 -0.000488281 11.2038 -0.000488281 25.0005ZM3.63022 24.8968C3.63022 13.1748 13.1738 3.52746 24.9995 3.52746C36.8252 3.52746 46.3688 13.1748 46.3688 24.8968C46.3688 36.6187 36.8252 46.266 24.9995 46.266C13.2775 46.266 3.63022 36.6187 3.63022 24.8968Z\",\n fill: color\n }));\n});\nexport default ErrorOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Loading = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.9338 5.26853C27.8524 4.75154 25.7006 4.56814 23.5381 4.72351C22.4874 4.799 21.4379 4.95535 20.4183 5.18855L19.3724 0.636496C20.6245 0.350265 21.9128 0.158175 23.2017 0.065597C25.8579 -0.125223 28.5034 0.100753 31.0653 0.737277L29.9338 5.26853Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.9\",\n d: \"M40.6131 11.9278C38.5498 9.48098 35.9044 7.52805 32.963 6.2805L34.7952 1.98303C38.4106 3.51633 41.6615 5.91575 44.1962 8.922L40.6131 11.9278Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.8\",\n d: \"M45.3329 23.5739L45.3303 23.5392C45.097 20.3085 44.1359 17.275 42.4734 14.5227L46.4838 12.1129C48.5302 15.501 49.7133 19.2325 50 23.2036L45.3329 23.5739Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.7\",\n d: \"M46.2688 38.2308L42.2981 35.7565C43.9958 33.0458 45.0372 29.9357 45.3095 26.7618L49.9744 27.1604C49.639 31.0674 48.3577 34.8958 46.2688 38.2308Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.6\",\n d: \"M34.4209 48.1735L32.6626 43.8456C35.6192 42.6505 38.2938 40.7405 40.3975 38.3222L43.9338 41.3828C41.3483 44.3551 38.0588 46.7033 34.4209 48.1735V48.1735Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.5\",\n d: \"M26.8033 49.9345C24.1593 50.1242 21.5262 49.9011 18.9766 49.2716L20.1013 44.7386C22.1729 45.25 24.3148 45.4309 26.4673 45.2766C27.5283 45.2004 28.5879 45.0416 29.6165 44.8049L30.6697 49.3551C29.4061 49.6459 28.1052 49.841 26.8033 49.9345V49.9345Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.4\",\n d: \"M15.2449 48.0311C11.6272 46.5033 8.37276 44.1086 5.83362 41.1063L9.412 38.0952C11.479 40.5388 14.1272 42.4877 17.0704 43.7306L15.2449 48.0311Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.3\",\n d: \"M3.54069 37.9198C1.48217 34.5223 0.292537 30.78 0.00479729 26.7959L0 26.7274L4.66972 26.3918L4.67579 26.478C4.90861 29.7017 5.87511 32.7443 7.54751 35.504L3.54069 37.9198Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \"0.2\",\n d: \"M4.69761 23.2075L0.0335693 22.802C0.374666 18.8955 1.66191 15.0691 3.75587 11.7373L7.72274 14.2175C6.02088 16.9257 4.97478 20.0344 4.69761 23.2075V23.2075Z\",\n fill: color\n }));\n});\nexport default Loading;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"color2\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ColorPicker = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$color2 = _ref.color2,\n color2 = _ref$color2 === void 0 ? '#F8FAFB' : _ref$color2,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 42 42\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.0001 6.11477C42.0001 4.48089 41.3639 2.94468 40.2086 1.78931C37.8238 -0.595528 33.9433 -0.595878 31.5582 1.78931L25.666 7.68191L22.9908 5.00654C22.5351 4.5509 21.7965 4.5509 21.3407 5.00654L17.8405 8.50695C17.3849 8.96259 17.3849 9.70141 17.8405 10.1572L20.5157 12.8325L3.63971 29.7097C3.5116 29.8378 3.41511 29.9939 3.35783 30.1658L2.27826 33.4048L1.30626 34.3769C-0.435198 36.1186 -0.435314 38.9525 1.30626 40.6943C3.04783 42.436 5.88157 42.4359 7.62314 40.6943L8.59514 39.7223L11.834 38.6426C12.0058 38.5853 12.1619 38.4888 12.29 38.3607L29.1661 21.4835L31.8413 24.1588C32.297 24.6145 33.0357 24.6145 33.4914 24.1588L36.9916 20.6584C37.4472 20.2028 37.4472 19.464 36.9916 19.0082L34.3164 16.3328L40.2086 10.4402C41.3639 9.28486 42.0001 7.74876 42.0001 6.11477ZM20.5157 26.8341H9.81507L22.1658 14.4826L27.516 19.8333L20.5157 26.8341ZM32.6663 21.6836L20.3156 9.332L22.1657 7.48168L34.5163 19.8333L32.6663 21.6836ZM38.5585 8.79014L32.6663 14.6827L27.316 9.332L33.2081 3.4394C34.6833 1.96421 37.0835 1.96409 38.5584 3.4394C40.0263 4.84774 40.0261 7.3818 38.5585 8.79014Z\",\n fill: color\n }));\n});\nexport default ColorPicker;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Menu = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 7.75049C0 6.92206 0.671573 6.25049 1.5 6.25049H48.5C49.3284 6.25049 50 6.92206 50 7.75049V9.43806C50 10.2665 49.3284 10.9381 48.5 10.9381H1.5C0.671571 10.9381 0 10.2665 0 9.43806V7.75049ZM0 24.1567C0 23.3283 0.671573 22.6567 1.5 22.6567H48.5C49.3284 22.6567 50 23.3283 50 24.1567V25.8443C50 26.6727 49.3284 27.3443 48.5 27.3443H1.5C0.671571 27.3443 0 26.6727 0 25.8443V24.1567ZM1.5 39.0629C0.671573 39.0629 0 39.7345 0 40.5629V42.2505C0 43.0789 0.671571 43.7505 1.5 43.7505H48.5C49.3284 43.7505 50 43.0789 50 42.2505V40.5629C50 39.7345 49.3284 39.0629 48.5 39.0629H1.5Z\",\n fill: color\n }));\n});\nexport default Menu;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var MoveDownOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.23229 1.23267C2.20863 0.256387 3.79154 0.256434 4.76782 1.23277L22.9989 19.465L41.2323 1.23267C42.2086 0.256387 43.7915 0.256434 44.7678 1.23277C45.7441 2.20911 45.7441 3.79203 44.7677 4.76831L24.7665 24.7683C24.2977 25.2371 23.6618 25.5005 22.9987 25.5005C22.3357 25.5005 21.6998 25.2371 21.231 24.7682L1.23218 4.7682C0.255899 3.79186 0.255946 2.20895 1.23229 1.23267Z\",\n fill: color\n }));\n});\nexport default MoveDownOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var MoveUpOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 46 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.2326 1.23271C22.2089 0.256404 23.7918 0.256417 24.7681 1.23274L44.7678 21.2327C45.7441 22.2091 45.7441 23.792 44.7678 24.7683C43.7914 25.7446 42.2085 25.7446 41.2322 24.7682L23.0003 6.53602L4.76775 24.7683C3.79143 25.7446 2.20852 25.7446 1.23222 24.7682C0.255916 23.7919 0.255928 22.209 1.23225 21.2327L21.2326 1.23271Z\",\n fill: color\n }));\n});\nexport default MoveUpOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowSidebarLeftOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25 47.5006C37.4264 47.5006 47.5 37.427 47.5 25.0006C47.5 12.5742 37.4264 2.50061 25 2.50061C12.5736 2.50061 2.5 12.5742 2.5 25.0006C2.5 37.427 12.5736 47.5006 25 47.5006ZM25 50.0006C38.8071 50.0006 50 38.8077 50 25.0006C50 11.1935 38.8071 0.000610352 25 0.000610352C11.1929 0.000610352 0 11.1935 0 25.0006C0 38.8077 11.1929 50.0006 25 50.0006Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.7355 35.1357C27.1751 35.7705 26.2217 35.7926 25.6359 35.1773L17.3026 26.423C17.0301 26.1368 16.8819 25.755 16.8752 25.3647C16.8686 24.9745 17.0037 24.5881 17.2652 24.2923L25.5985 14.8647C26.1593 14.2302 27.1128 14.2089 27.6981 14.8247C28.2539 15.4093 28.2679 16.3516 27.7348 16.9546L20.36 25.2978L27.6974 33.0057C28.2536 33.59 28.2681 34.5323 27.7355 35.1357ZM26.6695 34.3756C26.7058 34.3748 26.753 34.3599 26.7984 34.3085C26.9042 34.1886 26.8989 33.9798 26.792 33.8676L19.0594 25.7444C18.8357 25.5095 18.829 25.1425 19.0438 24.8995L26.7983 16.1268C26.9041 16.007 26.899 15.7983 26.7921 15.6859C26.7464 15.6377 26.7001 15.6249 26.6639 15.6256C26.6276 15.6263 26.5805 15.6412 26.5351 15.6926L18.2017 25.1202C18.1562 25.1717 18.1235 25.2514 18.1251 25.3435C18.1266 25.4356 18.1619 25.5128 18.208 25.5612L26.5413 34.3154C26.5871 34.3635 26.6334 34.3763 26.6695 34.3756Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.7984 34.3085C26.753 34.3599 26.7058 34.3748 26.6695 34.3756C26.6334 34.3763 26.5871 34.3635 26.5413 34.3154L18.208 25.5612C18.1619 25.5128 18.1266 25.4356 18.1251 25.3435C18.1235 25.2514 18.1562 25.1717 18.2017 25.1202L26.5351 15.6926C26.5805 15.6412 26.6276 15.6263 26.6639 15.6256C26.7001 15.6249 26.7464 15.6377 26.7921 15.6859C26.899 15.7983 26.9041 16.007 26.7983 16.1268L19.0438 24.8995C18.829 25.1425 18.8357 25.5095 19.0594 25.7444L26.792 33.8676C26.8989 33.9798 26.9042 34.1886 26.7984 34.3085Z\",\n fill: color\n }));\n});\nexport default ArrowSidebarLeftOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var ArrowSidebarRightOutline = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25 47.5006C37.4264 47.5006 47.5 37.427 47.5 25.0006C47.5 12.5742 37.4264 2.50061 25 2.50061C12.5736 2.50061 2.5 12.5742 2.5 25.0006C2.5 37.427 12.5736 47.5006 25 47.5006ZM25 50.0006C38.8071 50.0006 50 38.8077 50 25.0006C50 11.1935 38.8071 0.000610352 25 0.000610352C11.1929 0.000610352 0 11.1935 0 25.0006C0 38.8077 11.1929 50.0006 25 50.0006Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.2645 14.8655C22.8249 14.2307 23.7783 14.2086 24.3641 14.8239L32.6974 23.5781C32.9699 23.8644 33.1181 24.2461 33.1248 24.6364C33.1314 25.0267 32.9963 25.4131 32.7348 25.7089L24.4015 35.1365C23.8406 35.7709 22.8872 35.7923 22.3019 35.1765C21.7461 34.5919 21.7321 33.6496 22.2652 33.0465L29.6399 24.7034L22.3026 16.9954C21.7464 16.4112 21.7319 15.4689 22.2645 14.8655ZM23.3305 15.6256C23.2942 15.6264 23.247 15.6413 23.2016 15.6927C23.0958 15.8126 23.1011 16.0214 23.208 16.1336L30.9406 24.2568C31.1643 24.4917 31.171 24.8586 30.9562 25.1016L23.2017 33.8744C23.0959 33.9942 23.101 34.2029 23.2079 34.3153C23.2536 34.3634 23.2999 34.3763 23.3361 34.3756C23.3724 34.3748 23.4195 34.36 23.4649 34.3086L31.7983 24.881C31.8438 24.8295 31.8765 24.7497 31.8749 24.6577C31.8734 24.5656 31.838 24.4883 31.792 24.44L23.4587 15.6858C23.4129 15.6377 23.3666 15.6249 23.3305 15.6256Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2016 15.6927C23.247 15.6413 23.2942 15.6264 23.3305 15.6256C23.3666 15.6249 23.4129 15.6377 23.4587 15.6858L31.792 24.44C31.838 24.4883 31.8734 24.5656 31.8749 24.6577C31.8765 24.7497 31.8438 24.8295 31.7983 24.881L23.4649 34.3086C23.4195 34.36 23.3724 34.3748 23.3361 34.3756C23.2999 34.3763 23.2536 34.3634 23.2079 34.3153C23.101 34.2029 23.0959 33.9942 23.2017 33.8744L30.9562 25.1016C31.171 24.8586 31.1643 24.4917 30.9406 24.2568L23.208 16.1336C23.1011 16.0214 23.0958 15.8126 23.2016 15.6927Z\",\n fill: color\n }));\n});\nexport default ArrowSidebarRightOutline;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Annotation = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.5577 38.9423H34.8557C31.8069 38.9423 29.327 41.4224 29.327 44.4712C29.327 45.9293 28.1406 47.1157 26.6827 47.1157H5.52902C4.07066 47.1157 2.88467 45.9293 2.88467 44.4712V42.5459C2.88467 41.0886 4.07028 39.9025 5.5275 39.9018L9.33952 39.8999C9.34067 39.8999 9.34219 39.8995 9.34334 39.8995C9.38683 39.8995 9.43031 39.8968 9.47418 39.893C9.49211 39.8915 9.50966 39.8884 9.52759 39.8861C9.54628 39.8835 9.56535 39.8819 9.58405 39.8789L19.7636 38.1229C19.7689 38.1217 19.7739 38.1206 19.7788 38.1195C19.7948 38.1164 19.8105 38.113 19.8261 38.1095C19.8517 38.1038 19.8769 38.0981 19.9017 38.0908C19.9192 38.0863 19.9368 38.0809 19.9543 38.0756C19.9776 38.068 20.0008 38.0599 20.0241 38.0512C20.0409 38.0447 20.0581 38.039 20.0748 38.0321C20.1107 38.0168 20.1458 38.0008 20.1805 37.9829C20.1942 37.9756 20.208 37.9672 20.2217 37.9596C20.2461 37.9459 20.2702 37.9321 20.2938 37.9169C20.3083 37.9077 20.3228 37.8978 20.3373 37.8879C20.3602 37.8719 20.3831 37.8551 20.4052 37.8375C20.417 37.8284 20.4292 37.8192 20.4411 37.8093C20.4746 37.7815 20.5074 37.7525 20.5383 37.7212L46.2479 12.0109C48.3097 9.94895 48.3097 6.59377 46.2479 4.53146L43.2632 1.54708C41.2014 -0.515234 37.846 -0.514853 35.7841 1.54708L10.075 27.2574C10.0437 27.2883 10.0147 27.3215 9.9865 27.355C9.97696 27.3665 9.9678 27.3783 9.95865 27.3901C9.9411 27.4127 9.92432 27.4355 9.90829 27.4588C9.89838 27.4729 9.88846 27.4874 9.8793 27.5019C9.86443 27.5252 9.85069 27.5488 9.83734 27.5729C9.82857 27.5885 9.81941 27.6042 9.81102 27.6198C9.79424 27.653 9.77898 27.6862 9.76448 27.7205C9.75723 27.7377 9.75113 27.7556 9.74426 27.7732C9.73625 27.7953 9.72824 27.8178 9.72099 27.8403C9.71527 27.8586 9.70993 27.8769 9.70497 27.8952C9.69849 27.9189 9.69276 27.9429 9.68742 27.9673C9.68361 27.9841 9.67979 28.0009 9.67674 28.0177C9.6756 28.0226 9.67445 28.0272 9.67369 28.0318L8.12378 37.0158L5.52597 37.017C2.47879 37.0185 0 39.4989 0 42.5459V44.4712C0 47.5201 2.48032 50.0005 5.52902 50.0005H26.6827C29.7314 50.0005 32.2117 47.5201 32.2117 44.4712C32.2117 43.0132 33.3977 41.8267 34.8557 41.8267H48.5577C49.3542 41.8267 50 41.1813 50 40.3847C50 39.5878 49.3542 38.9423 48.5577 38.9423ZM12.043 31.2653L16.5306 35.7531L11.1076 36.6885L12.043 31.2653ZM33.5567 7.85382L35.7288 10.026L15.3065 30.4493L13.1344 28.2771L33.5567 7.85382ZM19.5183 34.6613L17.3462 32.4891L37.7689 12.0658L39.941 14.238L19.5183 34.6613ZM37.8239 3.58651C38.7611 2.64958 40.2859 2.64958 41.2235 3.58651L44.2078 6.57126C45.145 7.50858 45.145 9.03376 44.2078 9.97108L41.9804 12.1986L35.5965 5.81401L37.8239 3.58651Z\",\n fill: color\n }));\n});\nexport default Annotation;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"color\", \"size\"];\nimport React from 'react';\nimport { intrinsicComponent } from './utils/functions';\nexport var Rotate90 = intrinsicComponent(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 14 : _ref$size,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n width: size,\n height: size,\n viewBox: \"0 0 52 42\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.4326 40.0282C46.1217 40.5666 45.6098 40.9595 45.0093 41.1204C44.4088 41.2813 43.7691 41.197 43.2307 40.8862C42.6923 40.5754 42.2995 40.0634 42.1386 39.463C41.9777 38.8625 42.0619 38.2227 42.3727 37.6843C45.2819 32.6454 46.0703 26.6571 44.5644 21.0369C43.0584 15.4167 39.3816 10.6249 34.3426 7.71563C25.1427 2.4043 13.7736 4.38306 6.93632 12.1744L14.5457 12.0831H14.5744C15.196 12.0795 15.7937 12.3229 16.2358 12.7599C16.678 13.1969 16.9284 13.7916 16.9321 14.4133C16.9357 15.0349 16.6923 15.6326 16.2553 16.0747C15.8183 16.5169 15.2236 16.7673 14.6019 16.771L2.37222 16.9175H2.34409C2.03391 16.9175 1.72681 16.856 1.44059 16.7364C1.15437 16.6169 0.894721 16.4417 0.676697 16.2211C0.458674 16.0004 0.28661 15.7387 0.170478 15.4511C0.0543471 15.1635 -0.00354164 14.8557 0.000167612 14.5455L0.147346 2.31591C0.151046 2.00811 0.215338 1.70404 0.336549 1.42108C0.457761 1.13812 0.633519 0.881802 0.853788 0.666765C1.07406 0.451728 1.33453 0.282182 1.62032 0.167807C1.90611 0.0534328 2.21164 -0.00353076 2.51944 0.000169355C2.82725 0.00386947 3.13132 0.0681609 3.41428 0.189372C3.69724 0.310584 3.95356 0.486342 4.16859 0.706611C4.38363 0.926881 4.55318 1.18735 4.66755 1.47314C4.78193 1.75894 4.83889 2.06446 4.83519 2.37227L4.77171 7.65586C9.37537 3.16334 15.4496 0.489016 21.8718 0.127065C28.2941 -0.234886 34.6303 1.74001 39.7096 5.6868C44.7889 9.63359 48.2679 15.2855 49.5038 21.5981C50.7397 27.9107 49.6485 34.4574 46.4326 40.0282Z\",\n fill: color\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M25 28C26.6569 28 28 26.6569 28 25C28 23.3431 26.6569 22 25 22C23.3431 22 22 23.3431 22 25C22 26.6569 23.3431 28 25 28ZM25 32C28.866 32 32 28.866 32 25C32 21.134 28.866 18 25 18C21.134 18 18 21.134 18 25C18 28.866 21.134 32 25 32Z\",\n fill: color\n }));\n});\nexport default Rotate90;","function _objectDestructuringEmpty(t) {\n if (null == t) throw new TypeError(\"Cannot destructure \" + t);\n}\nexport { _objectDestructuringEmpty as default };","export var Size = {\n Xs: 'xs',\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { Size } from './types';\nvar baseClassName = 'CrossButton';\nvar crossButtonPaddingMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Size.Xs, css([\"padding:5px;height:20px;\"])), Size.Sm, css([\"padding:6px;height:24px;\"])), Size.Md, css([\"padding:9px;\"])), Size.Lg, css([\"padding:12px;\"]));\nvar CrossButton = /*#__PURE__*/styled.button.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-ygfku-0\"\n})(function (_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? Size.Lg : _ref$size,\n theme = _ref.theme;\n return css([\"display:flex;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;\", \" color:\", \";background:transparent;border:none;transition:all 100ms ease-out;&:hover{color:\", \";background:\", \";}&:active{color:\", \";background:\", \";}\"], crossButtonPaddingMixin[size], theme.palette[PaletteColor.IconsSecondary], theme.palette[PaletteColor.IconsPrimary], theme.palette[PaletteColor.BackgroundHover], theme.palette[PaletteColor.IconsPrimaryHover], theme.palette[PaletteColor.BackgroundActive]);\n});\nvar Styled = applyDisplayNames({\n CrossButton: CrossButton\n});\nexport default Styled;","import _objectDestructuringEmpty from \"@babel/runtime/helpers/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport PT from 'prop-types';\nimport CrossOutline from '@scaleflex/icons/cross-outline';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport Styled from './cross-button.styles';\nvar getIconSize = function getIconSize(sizeName) {\n switch (sizeName) {\n case Size.Lg:\n return 16;\n case Size.Xs:\n return 10;\n case Size.Sm:\n default:\n return 12;\n }\n};\nvar CrossButton = intrinsicComponent(function (_ref, ref) {\n var rest = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n return /*#__PURE__*/React.createElement(Styled.CrossButton, _extends({}, rest, {\n ref: ref\n }), /*#__PURE__*/React.createElement(CrossOutline, {\n size: getIconSize(rest.size)\n }));\n});\nCrossButton.defaultProps = {\n size: Size.Lg\n};\nCrossButton.propTypes = {\n size: PT.oneOf(objectValues(Size))\n};\nexport default CrossButton;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\n// import { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport InputStyled from '../input/input.styles';\nimport { fontSizeInputMixin } from '../input/input.mixin';\nimport { Size } from '../menu-item/types';\nimport CrossButton from '../cross-button/cross-button.component';\nvar baseClassName = 'Select';\nvar Icon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-mfrapg-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette,\n size = _ref.size;\n return css([\"display:flex;flex-shrink:0;color:\", \";padding:\", \";\"], palette[PColor.IconsPrimary], size === Size.Md ? '2.5px' : '2px');\n});\nvar TickIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'tickIcon')\n}).withConfig({\n componentId: \"sc-mfrapg-1\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"color:\", \";\"], palette[PColor.AccentStateless]);\n});\nvar Container = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Container')\n}).withConfig({\n componentId: \"sc-mfrapg-2\"\n})(function (_ref3) {\n var _ref3$fullWidth = _ref3.fullWidth,\n fullWidth = _ref3$fullWidth === void 0 ? false : _ref3$fullWidth;\n return css([\"position:relative;display:inline-flex;\", \"\"], fullWidth ? 'width: 100%' : '');\n});\nvar StyledCrossButton = /*#__PURE__*/styled(CrossButton).attrs({\n className: generateClassNames(baseClassName, 'CrossButton')\n}).withConfig({\n componentId: \"sc-mfrapg-3\"\n})(function () {\n return css([\"display:none;margin-right:6px;\"]);\n});\nvar Select = /*#__PURE__*/styled(InputStyled.Input).attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-mfrapg-4\"\n})(function (_ref4) {\n var palette = _ref4.theme.palette,\n disabled = _ref4.disabled,\n readOnly = _ref4.readOnly,\n _ref4$size = _ref4.size,\n size = _ref4$size === void 0 ? 'sm' : _ref4$size,\n isValueExists = _ref4.isValueExists;\n return css([\"cursor:\", \";user-select:none;gap:0px;background:\", \";\", \" \", \";\"], disabled || readOnly ? 'default' : 'pointer', disabled ? palette[PColor.BackgroundHover] : palette[PColor.BackgroundStateless], isValueExists && \"\\n &:hover {\\n \".concat(StyledCrossButton, \" {\\n display: flex;\\n }\\n }\\n \"), fontSizeInputMixin[size]);\n});\nvar Label = /*#__PURE__*/styled.label.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-mfrapg-5\"\n})(function (_ref5) {\n var hideEllipsis = _ref5.hideEllipsis,\n _ref5$size = _ref5.size,\n size = _ref5$size === void 0 ? Size.Md : _ref5$size;\n return \"\\n flex-grow: 1;\\n margin-right: \".concat(size === Size.Md ? 8 : 12, \"px;\\n\\n \").concat(!hideEllipsis && css([\"white-space:nowrap;text-overflow:ellipsis;overflow:hidden;\"]), \"\\n \");\n});\nvar Placeholder = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Placeholder')\n}).withConfig({\n componentId: \"sc-mfrapg-6\"\n})(function (_ref6) {\n var palette = _ref6.theme.palette,\n size = _ref6.size;\n return css([\"width:100%;color:\", \";margin-right:\", \"px;\"], palette[PColor.TextPlaceholder], size === Size.Md ? 16 : 12);\n});\nvar Input = /*#__PURE__*/styled.input.attrs({\n className: generateClassNames(baseClassName, 'Input'),\n 'aria-hidden': 'true',\n tabindex: '-1'\n}).withConfig({\n componentId: \"sc-mfrapg-7\"\n})([\"left:0;width:100%;bottom:0;opacity:0;position:absolute;pointer-events:none;box-sizing:border-box;\"]);\nvar Styled = applyDisplayNames({\n Container: Container,\n Select: Select,\n Label: Label,\n Icon: Icon,\n TickIcon: TickIcon,\n Input: Input,\n Placeholder: Placeholder,\n StyledCrossButton: StyledCrossButton\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport { Tick } from '@scaleflex/icons/tick';\nimport { MenuItemActions, MenuItemLabel } from '../menu-item';\nimport { InputSize } from '../../utils/types';\nimport Styled from './select.styles';\nexport var getIconSize = function getIconSize(size) {\n switch (size) {\n case InputSize.Md:\n return 16;\n case InputSize.Sm:\n default:\n return 14;\n }\n};\nexport var renderIcon = function renderIcon(_icon, size) {\n return _icon ? /*#__PURE__*/React.createElement(Styled.Icon, null, typeof _icon === 'function' ? _icon({\n size: getIconSize(size)\n }) : _icon) : undefined;\n};\nvar generateChildren = function generateChildren(children) {\n var isActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var size = arguments.length > 2 ? arguments[2] : undefined;\n var hideMenuItemsActions = arguments.length > 3 ? arguments[3] : undefined;\n var miChildren = /*#__PURE__*/React.createElement(MenuItemLabel, null, children);\n if (isActive && children) {\n var miActions = /*#__PURE__*/React.createElement(MenuItemActions, null, /*#__PURE__*/React.createElement(Styled.TickIcon, null, /*#__PURE__*/React.createElement(Tick, {\n size: getIconSize(size)\n })));\n if (React.Children.count(children) === 1) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, miChildren, !hideMenuItemsActions && miActions);\n }\n if (React.Children.count(children) > 1 && !React.Children.toArray(children).some(function (child) {\n var _child$type;\n return (child === null || child === void 0 || (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'MenuItemActions';\n })) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children, miActions);\n }\n }\n return miChildren;\n};\nexport var renderOption = function renderOption(menuItem, _ref) {\n var _type, _props, _props2, _props3;\n var value = _ref.value,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n _ref$hideMenuItemsAct = _ref.hideMenuItemsActions,\n hideMenuItemsActions = _ref$hideMenuItemsAct === void 0 ? false : _ref$hideMenuItemsAct,\n onClose = _ref.onClose,\n onChange = _ref.onChange;\n if (! /*#__PURE__*/React.isValidElement(menuItem)) {\n return menuItem;\n }\n if (((_type = menuItem.type) === null || _type === void 0 ? void 0 : _type.displayName) !== 'MenuItem') {\n return /*#__PURE__*/React.cloneElement(menuItem);\n }\n var menuItemValue = menuItem === null || menuItem === void 0 || (_props = menuItem.props) === null || _props === void 0 ? void 0 : _props.value;\n var valueArr = multiple ? Array.isArray(value) ? value : [] : [value];\n var active = valueArr.length > 0 && valueArr.includes(menuItemValue);\n var isDisabledMenuItem = menuItem === null || menuItem === void 0 || (_props2 = menuItem.props) === null || _props2 === void 0 ? void 0 : _props2.disabled;\n return /*#__PURE__*/React.cloneElement(menuItem, {\n active: active,\n size: size,\n children: generateChildren(menuItem === null || menuItem === void 0 || (_props3 = menuItem.props) === null || _props3 === void 0 ? void 0 : _props3.children, active, size, hideMenuItemsActions),\n onClick: function onClick() {\n var _menuItemValue$toStri;\n if (!multiple && typeof onClose === 'function') {\n onClose();\n }\n if (typeof onChange === 'function' && !isDisabledMenuItem && !!(menuItemValue !== null && menuItemValue !== void 0 && (_menuItemValue$toStri = menuItemValue.toString()) !== null && _menuItemValue$toStri !== void 0 && _menuItemValue$toStri.length)) {\n var newValue = menuItemValue;\n if (multiple) {\n newValue = _toConsumableArray(Array.isArray(value) ? value : []);\n var index = newValue.indexOf(menuItemValue);\n if (index > -1) {\n newValue.splice(index, 1);\n } else {\n newValue.push(menuItemValue);\n }\n }\n onChange(newValue);\n }\n }\n });\n};\nvar getOptionValue = function getOptionValue(option) {\n var children = option.props ? option.props.children : option;\n if (Array.isArray(children)) return children.map(function (child) {\n return getOptionValue(child);\n }).join(' ');\n if (_typeof(children) === 'object') return getOptionValue(children.props.children);\n return children;\n};\nvar renderOptionValue = function renderOptionValue(option, showSelectionKey) {\n if (option && option.children) {\n var child = showSelectionKey ? option.value : option.children;\n while (typeof child !== 'string') {\n if (Array.isArray(child)) {\n child = getOptionValue(child[1]);\n } else {\n child = getOptionValue(child);\n }\n }\n return child;\n }\n};\nexport var renderValue = function renderValue(_ref2) {\n var value = _ref2.value,\n _ref2$multiple = _ref2.multiple,\n multiple = _ref2$multiple === void 0 ? false : _ref2$multiple,\n children = _ref2.children,\n _ref2$showSelectionKe = _ref2.showSelectionKey,\n showSelectionKey = _ref2$showSelectionKe === void 0 ? false : _ref2$showSelectionKe;\n var optionsProps = [];\n React.Children.forEach(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _type2 = child === null || child === void 0 ? void 0 : child.type,\n displayName = _type2.displayName;\n if (displayName === 'MenuItem' && Boolean(child.props)) {\n optionsProps.push(_objectSpread({}, child.props));\n }\n }\n });\n var activeOptions = multiple ? optionsProps.filter(function (itemProps) {\n return Array.isArray(value) && value.includes(itemProps.value);\n }) : [optionsProps.find(function (itemProps) {\n return itemProps.value === value;\n })];\n if (activeOptions.length > 0) {\n return activeOptions.map(function (option) {\n return renderOptionValue(option, showSelectionKey);\n }).join(', ');\n }\n return Array.isArray(value) ? value.join(', ') : value;\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"size\", \"error\", \"multiple\", \"onChange\", \"value\", \"fullWidth\", \"selectProps\", \"MenuProps\", \"readOnly\", \"disabled\", \"scroll\", \"placeholder\", \"showSelectionKey\", \"hideMenuItemsActions\", \"showClearIcon\", \"renderLabel\", \"onRequestClose\", \"hideEllipsis\"];\nimport React, { useState } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport ArrowTick from '../arrow-tick';\nimport Menu from '../menu';\nimport { propTypes as menuPropTypes } from '../menu/menu.component';\nimport { renderValue, renderOption } from './select.utils';\nimport { InputSize } from '../../utils/types';\nimport Styled from './select.styles';\nimport { Size } from '../cross-button/types';\nvar Select = intrinsicComponent(function (_ref, ref) {\n var _value$toString;\n var children = _ref.children,\n size = _ref.size,\n error = _ref.error,\n multiple = _ref.multiple,\n onChange = _ref.onChange,\n value = _ref.value,\n fullWidth = _ref.fullWidth,\n selectProps = _ref.selectProps,\n MenuProps = _ref.MenuProps,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? true : _ref$scroll,\n placeholder = _ref.placeholder,\n showSelectionKey = _ref.showSelectionKey,\n hideMenuItemsActions = _ref.hideMenuItemsActions,\n showClearIcon = _ref.showClearIcon,\n renderLabel = _ref.renderLabel,\n onRequestClose = _ref.onRequestClose,\n _ref$hideEllipsis = _ref.hideEllipsis,\n hideEllipsis = _ref$hideEllipsis === void 0 ? false : _ref$hideEllipsis,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(undefined),\n _useState2 = _slicedToArray(_useState, 2),\n anchorEl = _useState2[0],\n setAnchorEl = _useState2[1];\n var open = Boolean(anchorEl);\n var handleClick = function handleClick(event) {\n return setAnchorEl(event.currentTarget);\n };\n var isValueExists = Array.isArray(value) ? !!value.length : !!(value !== null && value !== void 0 && (_value$toString = value.toString()) !== null && _value$toString !== void 0 && _value$toString.length);\n var handleClose = function handleClose() {\n if (onRequestClose) {\n onRequestClose();\n }\n setAnchorEl(undefined);\n };\n var handleClearSelection = function handleClearSelection(event) {\n event.stopPropagation();\n if (typeof onChange === 'function') {\n onChange('');\n }\n };\n return /*#__PURE__*/React.createElement(Styled.Container, {\n ref: ref,\n fullWidth: Boolean(fullWidth)\n }, /*#__PURE__*/React.createElement(Styled.Select, _extends({}, rest, {\n disabled: disabled,\n size: size,\n error: error,\n fullWidth: Boolean(fullWidth),\n readOnly: readOnly,\n showSelectionKey: showSelectionKey,\n isValueExists: isValueExists,\n onClick: readOnly || disabled ? undefined : handleClick\n }), isValueExists && /*#__PURE__*/React.createElement(Styled.Label, {\n hideEllipsis: hideEllipsis,\n size: size\n }, typeof renderLabel === 'function' ? renderLabel(value) : renderValue({\n value: value,\n multiple: multiple,\n children: children,\n showSelectionKey: showSelectionKey\n })), !isValueExists && /*#__PURE__*/React.createElement(Styled.Placeholder, {\n size: size\n }, placeholder), !readOnly && showClearIcon && /*#__PURE__*/React.createElement(Styled.StyledCrossButton, {\n size: size === Size.Md ? Size.Sm : Size.Xs,\n onClick: handleClearSelection\n }), /*#__PURE__*/React.createElement(Styled.Icon, {\n size: size\n }, /*#__PURE__*/React.createElement(ArrowTick, {\n type: open ? 'top' : 'bottom',\n IconProps: {\n size: size === Size.Md ? 11 : 10\n }\n })), /*#__PURE__*/React.createElement(Styled.Input, selectProps)), /*#__PURE__*/React.createElement(Menu, _extends({\n onClose: handleClose,\n scroll: scroll,\n open: open,\n anchorEl: anchorEl\n }, MenuProps), React.Children.map(children, function (child) {\n return renderOption(child, {\n value: value,\n multiple: multiple,\n size: size,\n hideMenuItemsActions: hideMenuItemsActions,\n onClose: handleClose,\n onChange: readOnly || disabled ? undefined : onChange\n });\n })));\n});\nexport var defaultProps = {\n size: InputSize.Md,\n error: false,\n multiple: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n showClearIcon: false,\n scroll: true,\n hideMenuItemsActions: false\n};\nSelect.defaultProps = defaultProps;\nexport var simpleValuePropTypes = PT.oneOfType([PT.string, PT.number, PT.oneOf([null])]);\nexport var propTypes = {\n size: PT.oneOf(objectValues(InputSize)),\n error: PT.bool,\n multiple: PT.bool,\n fullWidth: PT.bool,\n children: PT.oneOfType([PT.element, PT.arrayOf(PT.element)]),\n value: PT.oneOfType([PT.string, PT.number, PT.bool, PT.oneOf([null]), PT.arrayOf(simpleValuePropTypes)]),\n onChange: PT.func,\n MenuProps: PT.exact(menuPropTypes),\n // eslint-disable-next-line react/forbid-prop-types\n selectProps: PT.object,\n readOnly: PT.bool,\n disabled: PT.bool,\n showClearIcon: PT.bool,\n hideMenuItemsActions: PT.bool,\n showSelectionKey: PT.bool,\n scroll: PT.bool,\n renderLabel: PT.func,\n onRequestClose: PT.func,\n hideEllipsis: PT.bool\n};\nSelect.propTypes = propTypes;\nexport default Select;","function useDrag(onMove, onStart, onEnd) {\n var onDragging = function onDragging(e) {\n if (typeof onMove === 'function') {\n var _e$touches;\n onMove(((_e$touches = e.touches) === null || _e$touches === void 0 ? void 0 : _e$touches[0]) || e);\n }\n };\n var disableSliding = function disableSliding(e) {\n document.removeEventListener('mousemove', onDragging);\n document.removeEventListener('mouseup', disableSliding);\n document.removeEventListener('mouseleave', disableSliding);\n document.removeEventListener('touchmove', onDragging);\n document.removeEventListener('touchend', disableSliding);\n document.removeEventListener('touchcancel', disableSliding);\n if (typeof onEnd === 'function') {\n var _e$touches2;\n onEnd(((_e$touches2 = e.touches) === null || _e$touches2 === void 0 ? void 0 : _e$touches2[0]) || e);\n }\n };\n var enableDrag = function enableDrag(e) {\n document.addEventListener('mousemove', onDragging);\n document.addEventListener('mouseup', disableSliding);\n document.addEventListener('mouseleave', disableSliding);\n document.addEventListener('touchmove', onDragging);\n document.addEventListener('touchend', disableSliding);\n document.addEventListener('touchcancel', disableSliding);\n if (typeof onStart === 'function') {\n var _e$touches3;\n onStart(((_e$touches3 = e.touches) === null || _e$touches3 === void 0 ? void 0 : _e$touches3[0]) || e);\n }\n };\n return {\n onMouseDown: enableDrag,\n onTouchStart: enableDrag\n };\n}\nexport default useDrag;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nvar baseClassName = 'ColorPicker';\nvar colorItemClassName = 'ColorItem';\n\n// const ColorPicker = styled.div.attrs({\n// className: generateClassNames(baseClassName, 'root'),\n// })`\n// display: flex;\n// flex-direction: column;\n// align-items: center;\n// `;\n\nvar ColorPickerWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-qj4xo5-0\"\n})([\"background-color:\", \";box-shadow:0px 1px 2px rgba(78,77,77,0.15);border-radius:2px;padding:12px;max-width:300px;\"], function (_ref) {\n var theme = _ref.theme;\n return theme.palette[PColor.BackgroundSecondary];\n});\nvar ColorPickerIcon = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'icon')\n}).withConfig({\n componentId: \"sc-qj4xo5-1\"\n})([\"display:flex;justify-content:space-between;align-items:center;cursor:pointer;\"]);\nvar RangePickerWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'range-picker')\n}).withConfig({\n componentId: \"sc-qj4xo5-2\"\n})(function (_ref2) {\n var color = _ref2.color;\n return css([\"position:relative;border-radius:2px;width:100%;height:180px;user-select:none;cursor:crosshair;background-color:\", \";\"], color);\n});\nvar WhiteGradient = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'white-gradient')\n}).withConfig({\n componentId: \"sc-qj4xo5-3\"\n})([\"background:linear-gradient(to right,white 0%,rgba(255,255,255,0) 100%);z-index:0;position:absolute;width:100%;height:100%;border-radius:2px;user-select:none;pointer-events:none;top:-1px;\"]);\nvar BlackGradient = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'black-gradient')\n}).withConfig({\n componentId: \"sc-qj4xo5-4\"\n})([\"background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,black 100%);z-index:1;position:absolute;width:100%;height:100%;border-radius:2px;user-select:none;pointer-events:none;\"]);\nvar ColorPointer = /*#__PURE__*/styled.span.attrs(function (_ref3) {\n var _ref3$left = _ref3.left,\n left = _ref3$left === void 0 ? 0 : _ref3$left,\n _ref3$top = _ref3.top,\n top = _ref3$top === void 0 ? 0 : _ref3$top,\n _ref3$considerTopWidt = _ref3.considerTopWidth,\n considerTopWidth = _ref3$considerTopWidt === void 0 ? false : _ref3$considerTopWidt,\n style = _ref3.style;\n return {\n className: generateClassNames(baseClassName, 'pointer'),\n style: _objectSpread({\n left: left - 7,\n // 7\n top: top - (considerTopWidth ? 7 : 0)\n }, style)\n };\n}).withConfig({\n componentId: \"sc-qj4xo5-5\"\n})(function (_ref4) {\n var theme = _ref4.theme,\n pointerColor = _ref4.pointerColor;\n return css([\"display:inline-block;box-sizing:border-box;width:15px;height:15px;border-radius:20px;box-shadow:0px 1px 2px rgba(78,77,77,0.15);border:2px solid \", \";background-color:\", \";position:absolute;cursor:pointer;z-index:11;user-select:none;outline:none;\"], theme.palette[PColor.BackgroundSecondary], pointerColor);\n});\nvar BarWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'bar-wrapper')\n}).withConfig({\n componentId: \"sc-qj4xo5-6\"\n})([\"margin-top:8px;position:relative;width:100%;height:12px;\"]);\nvar Bar = /*#__PURE__*/styled.table.attrs({\n className: generateClassNames(baseClassName, 'bar')\n}).withConfig({\n componentId: \"sc-qj4xo5-7\"\n})([\"border-radius:4px;width:100%;height:8px;border-collapse:collapse;\"]);\nvar BarColorStop = /*#__PURE__*/styled.td.attrs(function (_ref5) {\n var $color = _ref5.$color;\n return {\n className: generateClassNames(baseClassName, 'stop'),\n style: {\n backgroundColor: $color\n }\n };\n}).withConfig({\n componentId: \"sc-qj4xo5-8\"\n})([\"padding:0;user-select:none;pointer-events:none;&:first-child{width:4px;border-top-left-radius:4px;border-bottom-left-radius:4px;}&:last-child{width:4px;border-top-right-radius:4px;border-bottom-right-radius:4px;}\"]);\nvar ColorPickerAction = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'action')\n}).withConfig({\n componentId: \"sc-qj4xo5-9\"\n})([\"display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;\"]);\nvar ColorItemWrapper = /*#__PURE__*/styled.label.attrs({\n className: generateClassNames(colorItemClassName, 'label')\n}).withConfig({\n componentId: \"sc-qj4xo5-10\"\n})(function (_ref6) {\n var theme = _ref6.theme,\n size = _ref6.size,\n color = _ref6.color,\n stroke = _ref6.stroke,\n value = _ref6.value;\n return css([\"border-radius:2px;border:\", \";box-sizing:border-box;width:\", \"px;height:\", \"px;background-color:\", \";user-select:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 300ms;margin-bottom:8px;background:\", \";input{display:none;}\"], \"1px solid \".concat(stroke), size, size, color, value === 'rgba(0,0,0,0)' && \"repeating-conic-gradient(\".concat(theme.palette[PColor.LinkPrimary], \" 0% 25%, transparent 0% 50%) 50% / 8px 8px\"));\n});\nvar ColorItemsContainer = /*#__PURE__*/styled.div.withConfig({\n componentId: \"sc-qj4xo5-11\"\n})([\"display:flex;flex-wrap:wrap;align-content:space-between;margin-top:14px;margin-left:12px;& > .item{margin-right:8px;display:flex;justify-content:center;}\"]);\nvar Select = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'select')\n}).withConfig({\n componentId: \"sc-qj4xo5-12\"\n})(function (_ref7) {\n var value = _ref7.value;\n return css([\"width:\", \";\"], value === 'rgb' ? '25%' : '35%');\n});\nvar SelectWrapper = /*#__PURE__*/styled.div.withConfig({\n componentId: \"sc-qj4xo5-13\"\n})({\n display: 'flex',\n alignItems: 'center',\n gap: '12px'\n});\nvar Styled = applyDisplayNames({\n ColorPickerWrapper: ColorPickerWrapper,\n RangePickerWrapper: RangePickerWrapper,\n WhiteGradient: WhiteGradient,\n BlackGradient: BlackGradient,\n ColorPointer: ColorPointer,\n BarWrapper: BarWrapper,\n Bar: Bar,\n BarColorStop: BarColorStop,\n ColorPickerAction: ColorPickerAction,\n ColorPickerIcon: ColorPickerIcon,\n ColorItemsContainer: ColorItemsContainer,\n ColorItemWrapper: ColorItemWrapper,\n Select: Select,\n SelectWrapper: SelectWrapper\n});\nexport default Styled;","import React, { useMemo } from 'react';\nimport PT from 'prop-types';\nimport Tick from '@scaleflex/icons/tick';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './color-picker.styles';\nvar ColorItem = intrinsicComponent(function (_ref, ref) {\n var value = _ref.value,\n onChange = _ref.onChange,\n checked = _ref.checked,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size;\n var checkIconColor = useMemo(function () {\n if (value === '#ffffff' || value === 'rgba(0,0,0,0)') {\n return 'black';\n }\n return 'white';\n }, [value]);\n return /*#__PURE__*/React.createElement(Styled.ColorItemWrapper, {\n ref: ref,\n color: value,\n size: size,\n stroke: value === 'rgba(0,0,0,0)' ? '#a8a8a8' : '#E9EEF2',\n value: value\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"radio\",\n value: value,\n checked: checked,\n onChange: onChange\n }), checked && /*#__PURE__*/React.createElement(Tick, {\n color: checkIconColor\n }));\n});\nColorItem.defaultProps = {};\nColorItem.propTypes = {\n value: PT.string.isRequired,\n checked: PT.bool,\n onChange: PT.func.isRequired,\n size: PT.number\n};\nexport default ColorItem;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"defaultColor\", \"onChange\", \"pinnedColors\", \"showTransparentColor\", \"hidePinIcon\", \"containerProps\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useMemo, useEffect } from 'react';\nimport PT from 'prop-types';\nimport { PinOutline, DeleteOutline } from '@scaleflex/icons';\nimport Select from '../select';\nimport MenuItem from '../menu-item';\nimport Input from '../input';\nimport useDrag from '../../hooks/use-drag';\nimport { intrinsicComponent, colorToHsl, hexToRgb, hslToHex, hslToHsv, hsvToHsl, restrictNumber, mapNumber, colorToHex, getElemDocumentCoords, rgbToHex, validateHex, rgbStringToArray } from '../../utils/functions';\nimport Styled from './color-picker.styles';\nimport ColorItem from './color-item.component';\nvar transparentColor = ['rgba(0,0,0,0)'];\nvar transparentColorHex = '#00000000';\nvar colorsHuesCount = 360;\nvar ColorPicker = intrinsicComponent(function (_ref, ref) {\n var _ref$defaultColor = _ref.defaultColor,\n defaultColor = _ref$defaultColor === void 0 ? '#000000' : _ref$defaultColor,\n onChange = _ref.onChange,\n _ref$pinnedColors = _ref.pinnedColors,\n pinnedColors = _ref$pinnedColors === void 0 ? [] : _ref$pinnedColors,\n _ref$showTransparentC = _ref.showTransparentColor,\n showTransparentColor = _ref$showTransparentC === void 0 ? false : _ref$showTransparentC,\n _ref$hidePinIcon = _ref.hidePinIcon,\n hidePinIcon = _ref$hidePinIcon === void 0 ? false : _ref$hidePinIcon,\n containerProps = _ref.containerProps,\n rest = _objectWithoutProperties(_ref, _excluded);\n var showedColors = showTransparentColor ? transparentColor.concat(pinnedColors) : pinnedColors;\n var isTransparentColor = function isTransparentColor(color) {\n return color === transparentColorHex || color === transparentColor[0];\n };\n var _useState = useState({\n color: '#ff0000',\n pointerLeft: 0\n }),\n _useState2 = _slicedToArray(_useState, 2),\n bar = _useState2[0],\n setBar = _useState2[1];\n var _useState3 = useState({\n color: isTransparentColor(defaultColor) ? '#00000000' : colorToHex(defaultColor) || '#000000',\n pointer: {\n left: 0,\n top: 0\n }\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n rangePicker = _useState4[0],\n setRangePicker = _useState4[1];\n var _useState5 = useState(showedColors),\n _useState6 = _slicedToArray(_useState5, 2),\n localPinnedColors = _useState6[0],\n setLocalPinnedColors = _useState6[1];\n var _useState7 = useState('hex'),\n _useState8 = _slicedToArray(_useState7, 2),\n inputType = _useState8[0],\n setInputType = _useState8[1];\n var _useState9 = useState([]),\n _useState10 = _slicedToArray(_useState9, 2),\n rgbColorValue = _useState10[0],\n setRgbColorValue = _useState10[1];\n var _useState11 = useState(colorToHex(rangePicker.color)),\n _useState12 = _slicedToArray(_useState11, 2),\n hexInputValue = _useState12[0],\n setHexInputValue = _useState12[1];\n var _useState13 = useState(null),\n _useState14 = _slicedToArray(_useState13, 2),\n barRef = _useState14[0],\n setBarRef = _useState14[1];\n var _useState15 = useState(null),\n _useState16 = _slicedToArray(_useState15, 2),\n rangePickerRef = _useState16[0],\n setRangePickerRef = _useState16[1];\n var isColorChecked = function isColorChecked(checkedColor) {\n if (checkedColor === transparentColor[0] && rangePicker.color === transparentColorHex) {\n return true;\n }\n return checkedColor === rangePicker.color;\n };\n var filterTransparentColor = function filterTransparentColor(colors) {\n return colors.filter(function (item) {\n return item !== 'rgba(0,0,0,0)';\n });\n };\n var getRgbColor = function getRgbColor(color) {\n return isTransparentColor(color) ? transparentColor[0] : \"rgb(\".concat(hexToRgb(color).join(', '), \")\");\n };\n var handlePinnedColors = function handlePinnedColors(hexColor, type) {\n if (type === 'add') {\n var newLocalPinnedColors = [].concat(_toConsumableArray(localPinnedColors), [hexColor]);\n setLocalPinnedColors(newLocalPinnedColors);\n if (typeof onChange === 'function') {\n onChange(rangePicker.color, getRgbColor(hexColor), filterTransparentColor(newLocalPinnedColors));\n }\n } else {\n var _newLocalPinnedColors = localPinnedColors.filter(function (item) {\n return item !== rangePicker.color;\n });\n setLocalPinnedColors(_newLocalPinnedColors);\n if (typeof onChange === 'function') {\n onChange(rangePicker.color, getRgbColor(hexColor), filterTransparentColor(_newLocalPinnedColors));\n }\n }\n };\n var changeBarPosByColor = function changeBarPosByColor(color) {\n if (barRef !== null) {\n var _ref2 = getElemDocumentCoords(barRef),\n left = _ref2.left;\n var _colorToHsl = colorToHsl(color || rangePicker.color),\n _colorToHsl2 = _slicedToArray(_colorToHsl, 1),\n h = _colorToHsl2[0];\n var targetColorElem = barRef.querySelector(\"[data-hue='\".concat(h, \"']\"));\n if (targetColorElem !== null) {\n var targetColorRgb = targetColorElem.style.backgroundColor || bar.color;\n setBar({\n color: targetColorRgb,\n pointerLeft: getElemDocumentCoords(targetColorElem).left - left || bar.pointerLeft\n });\n }\n }\n };\n var handleRgbInput = function handleRgbInput(value, index) {\n if (value > 255 || Number.isNaN(value)) {\n return;\n }\n var rgbArr = rgbColorValue;\n rgbArr[index] = value;\n var newHexColor = rgbToHex.apply(void 0, _toConsumableArray(rgbArr));\n setRgbColorValue(_toConsumableArray(rgbArr));\n if (validateHex(newHexColor)) {\n setRangePicker(_objectSpread(_objectSpread({}, rangePicker), {}, {\n color: newHexColor\n }));\n changeBarPosByColor(newHexColor);\n }\n };\n var updateRgb = function updateRgb(color) {\n if (color.includes('rgb')) {\n setRgbColorValue(rgbStringToArray(color));\n } else {\n setRgbColorValue(hexToRgb(color));\n }\n };\n var getHexColor = function getHexColor(color) {\n return isTransparentColor(color) ? transparentColorHex : color;\n };\n var changeRangePickerPointerPosByColor = function changeRangePickerPointerPosByColor(color) {\n if (rangePickerRef !== null) {\n var _ref3 = getElemDocumentCoords(rangePickerRef),\n width = _ref3.width,\n height = _ref3.height;\n var colorHsl = colorToHsl(color);\n var colorHsv = hslToHsv(colorHsl[0], colorHsl[1] / 100, colorHsl[2] / 100);\n var left = mapNumber(colorHsv[1], 0, 100, 0, width);\n var top = height - mapNumber(colorHsv[2], 0, 100, 0, height);\n setRangePicker({\n color: getHexColor(color),\n pointer: {\n left: left,\n top: top\n }\n });\n changeBarPosByColor(color);\n updateRgb(color);\n if (typeof onChange === 'function') {\n onChange(getHexColor(color), getRgbColor(color), filterTransparentColor(localPinnedColors));\n }\n }\n };\n var changeRangePickerColorByPosition = function changeRangePickerColorByPosition(left, top, barColor) {\n if (rangePickerRef !== null) {\n var _ref4 = getElemDocumentCoords(rangePickerRef),\n width = _ref4.width,\n height = _ref4.height;\n var _colorToHsl3 = colorToHsl(barColor),\n _colorToHsl4 = _slicedToArray(_colorToHsl3, 1),\n barColorHue = _colorToHsl4[0];\n var restrictedLeft = restrictNumber(left, 0, width) || 0;\n var restrictedTop = restrictNumber(top, 0, height) || 0;\n var hsl = hsvToHsl(barColorHue, restrictedLeft / width, (height - restrictedTop) / height);\n var hexColor = hslToHex(hsl[0], hsl[1], hsl[2]);\n setRangePicker({\n color: hexColor,\n pointer: {\n left: restrictedLeft,\n top: restrictedTop\n }\n });\n if (typeof onChange === 'function') {\n onChange(hexColor, \"rgb(\".concat(hexToRgb(hexColor).join(', '), \")\"), filterTransparentColor(localPinnedColors));\n }\n }\n };\n var changeBarColorByPosition = function changeBarColorByPosition(pointerLeft) {\n var barElem = barRef;\n if (barElem !== null) {\n var _ref5 = getElemDocumentCoords(barElem),\n width = _ref5.width;\n var mappedPointerLeft = restrictNumber(Math.round(mapNumber(pointerLeft, 0, width, 0, colorsHuesCount)), 0, colorsHuesCount);\n var targetColorElem = barElem.querySelector(\"[data-hue='\".concat(mappedPointerLeft, \"']\"));\n var targetColorRgb = targetColorElem.style.backgroundColor;\n setBar({\n color: targetColorRgb,\n pointerLeft: restrictNumber(pointerLeft, 0, width)\n });\n return targetColorRgb;\n }\n return bar.color;\n };\n var updateBarColor = function updateBarColor(e) {\n var barElem = barRef;\n if (barElem !== null) {\n var _e$touches;\n var _ref6 = getElemDocumentCoords(barElem),\n left = _ref6.left;\n var pointerEvent = ((_e$touches = e.touches) === null || _e$touches === void 0 ? void 0 : _e$touches[0]) || e;\n var barColor = changeBarColorByPosition(pointerEvent.pageX - left);\n changeRangePickerColorByPosition(rangePicker.pointer.left, rangePicker.pointer.top, barColor);\n }\n };\n var updateRangePickerColor = function updateRangePickerColor(e) {\n var rangePickerElem = rangePickerRef;\n if (rangePickerElem !== null) {\n var _ref7 = getElemDocumentCoords(rangePickerElem),\n left = _ref7.left,\n top = _ref7.top,\n height = _ref7.height,\n width = _ref7.width;\n var pointerLeft = e ? restrictNumber(e.pageX - left, 0, width) : rangePicker.pointer.left || 0;\n var pointerTop = e ? restrictNumber(e.pageY - top, 0, height) : rangePicker.pointer.left || 0;\n changeRangePickerColorByPosition(pointerLeft, pointerTop, bar.color);\n }\n };\n var moveBarPointerByArrows = function moveBarPointerByArrows(e) {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') {\n return;\n }\n changeBarColorByPosition(bar.pointerLeft + (e.key === 'ArrowLeft' ? -1 : 1));\n };\n var moveRangePickerPointerByArrows = function moveRangePickerPointerByArrows(e) {\n var currentDirection = 0;\n if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n currentDirection = -1;\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n currentDirection = 1;\n }\n if (currentDirection) {\n changeRangePickerColorByPosition((rangePicker.pointer.left || 0) + (['ArrowLeft', 'ArrowRight'].includes(e.key) ? currentDirection : 0), (rangePicker.pointer.top || 0) + (['ArrowUp', 'ArrowDown'].includes(e.key) ? currentDirection : 0), bar.color);\n }\n };\n var validateHexAndUpdate = function validateHexAndUpdate(color) {\n var testHex = validateHex(color);\n if (testHex) {\n changeRangePickerPointerPosByColor(color);\n }\n setHexInputValue(color);\n };\n useEffect(function () {\n changeBarPosByColor(rangePicker.color);\n changeRangePickerPointerPosByColor(rangePicker.color);\n }, [barRef]);\n useEffect(function () {\n setHexInputValue(rangePicker.color);\n updateRgb(rangePicker.color);\n }, [rangePicker.color]);\n var barColors = useMemo(function () {\n return _toConsumableArray(new Array(colorsHuesCount + 1)).map(function (_, h) {\n return /*#__PURE__*/React.createElement(Styled.BarColorStop, {\n key: h,\n $color: \"hsl(\".concat(h, \", 100%, 50%)\"),\n \"data-hue\": h\n });\n });\n }, []);\n var barPointSliding = useDrag(updateBarColor, updateBarColor, null);\n var rangePickerPointSliding = useDrag(updateRangePickerColor, updateRangePickerColor, null);\n return /*#__PURE__*/React.createElement(Styled.ColorPickerWrapper, _extends({\n ref: ref\n }, rest), /*#__PURE__*/React.createElement(Styled.ColorPickerAction, null, /*#__PURE__*/React.createElement(Styled.SelectWrapper, null, /*#__PURE__*/React.createElement(Styled.Select, {\n value: inputType\n }, /*#__PURE__*/React.createElement(Select, {\n size: \"sm\",\n value: inputType,\n MenuProps: _objectSpread({\n zIndex: 11112\n }, containerProps),\n onChange: function onChange(ev) {\n return setInputType(ev);\n },\n fullWidth: true,\n hideEllipsis: true\n }, /*#__PURE__*/React.createElement(MenuItem, {\n value: \"hex\"\n }, \"Hex\"), /*#__PURE__*/React.createElement(MenuItem, {\n value: \"rgb\"\n }, \"RGB\"))), inputType === 'hex' ? /*#__PURE__*/React.createElement(Input, {\n size: \"sm\",\n error: !/^#([\\da-f]{3}){1,2}$/i.test(rangePicker.color),\n value: hexInputValue,\n onChange: function onChange(e) {\n return validateHexAndUpdate(e.target.value);\n },\n style: {\n width: '45%'\n }\n }) : rgbColorValue.map(function (rgb, index) {\n return /*#__PURE__*/React.createElement(Input, {\n key: index,\n size: \"sm\",\n value: rgb,\n onChange: function onChange(e) {\n var _e$target;\n return handleRgbInput(Number((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value), index);\n },\n style: {\n width: '20%'\n }\n });\n })), rangePicker.color !== transparentColorHex && !hidePinIcon && /*#__PURE__*/React.createElement(Styled.ColorPickerIcon, {\n onClick: function onClick() {\n return localPinnedColors.some(function (checkedColor) {\n return isColorChecked(checkedColor);\n }) ? handlePinnedColors(rangePicker.color, 'delete') : handlePinnedColors(rangePicker.color, 'add');\n }\n }, localPinnedColors.some(function (checkedColor) {\n return isColorChecked(checkedColor);\n }) ? /*#__PURE__*/React.createElement(DeleteOutline, null) : /*#__PURE__*/React.createElement(PinOutline, null))), /*#__PURE__*/React.createElement(Styled.RangePickerWrapper, _extends({\n ref: setRangePickerRef,\n color: bar.color\n }, rangePickerPointSliding), /*#__PURE__*/React.createElement(Styled.WhiteGradient, null), /*#__PURE__*/React.createElement(Styled.BlackGradient, null), /*#__PURE__*/React.createElement(Styled.ColorPointer, {\n tabIndex: -1,\n left: rangePicker.pointer.left || 0,\n top: rangePicker.pointer.top || 0,\n onKeyDown: moveRangePickerPointerByArrows,\n pointerColor: hexInputValue,\n considerTopWidth: true\n })), /*#__PURE__*/React.createElement(Styled.BarWrapper, barPointSliding, /*#__PURE__*/React.createElement(Styled.Bar, {\n ref: setBarRef\n }, /*#__PURE__*/React.createElement(\"tbody\", null, /*#__PURE__*/React.createElement(\"tr\", null, barColors))), /*#__PURE__*/React.createElement(Styled.ColorPointer, {\n tabIndex: -1,\n left: bar.pointerLeft,\n onKeyDown: moveBarPointerByArrows,\n considerTopWidth: false,\n pointerColor: hexInputValue,\n style: {\n top: -3\n }\n })), /*#__PURE__*/React.createElement(Styled.ColorItemsContainer, null, localPinnedColors.map(function (color) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"item\",\n key: color\n }, /*#__PURE__*/React.createElement(ColorItem, {\n value: color,\n checked: isColorChecked(color),\n onChange: function onChange(ev) {\n return changeRangePickerPointerPosByColor(ev.target.value);\n }\n }));\n })));\n});\nColorPicker.defaultProps = {\n defaultColor: '#000000',\n pinnedColors: [],\n showTransparentColor: false,\n hidePinIcon: false\n};\nColorPicker.propTypes = {\n defaultColor: PT.string,\n onChange: PT.func,\n pinnedColors: PT.array,\n showTransparentColor: PT.bool,\n hidePinIcon: PT.bool\n};\nexport default ColorPicker;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { ButtonSize, IconButtonColor } from '../../utils/types';\nexport var colorButtonMixin = _defineProperty(_defineProperty(_defineProperty({}, IconButtonColor.Primary, function (_ref) {\n var palette = _ref.theme.palette,\n active = _ref.active;\n return css([\"background-color:\", \";color:\", \";&:hover{background-color:\", \";}&:focus{background-color:\", \";}&:active{background-color:\", \";}\", \" &:disabled{color:\", \";background:\", \";cursor:default;}\"], palette[PaletteColor.AccentStateless], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive], active && css([\"background-color:\", \";&:hover,&:focus{background-color:\", \";}\"], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity]);\n}), IconButtonColor.Secondary, function (_ref2) {\n var palette = _ref2.theme.palette,\n active = _ref2.active;\n return css([\"background-color:\", \";color:\", \";border:1px solid \", \";&:hover{color:\", \";background-color:\", \";}&:focus{background-color:\", \";color:\", \";border:1px solid \", \";}&:active{color:\", \";background-color:\", \";}\", \" &:disabled{color:\", \";background:\", \";border:none;cursor:default;}\"], palette[PaletteColor.BackgroundStateless], palette[PaletteColor.AccentStateless], palette[PaletteColor.AccentStateless], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryHover], palette[PaletteColor.Accent_1_2_Opacity], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryActive], active && css([\"color:\", \";background-color:\", \";&:hover,&:focus{color:\", \";background-color:\", \";}\"], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryActive], palette[PaletteColor.IconsInvert], palette[PaletteColor.AccentPrimaryActive]), palette[PaletteColor.BordersDisabled], palette[PaletteColor.Accent_1_2_Opacity]);\n}), IconButtonColor.Basic, function (_ref3) {\n var palette = _ref3.theme.palette,\n active = _ref3.active;\n return css([\"background-color:transparent;color:\", \";border:none;&:hover{background-color:\", \";color:\", \";}&:focus{background-color:\", \";color:\", \";}&:active{background-color:\", \";color:\", \";}\", \" &:disabled{background-color:transparent;color:\", \";cursor:default;}\"], palette[PaletteColor.IconsPrimary], palette[PaletteColor.BackgroundHover], palette[PaletteColor.IconsPrimaryHover], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive], active && css([\"background-color:\", \";color:\", \";&:hover,&:focus{background-color:\", \";color:\", \";}\"], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive], palette[PaletteColor.BackgroundActive], palette[PaletteColor.LinkActive]), palette[PaletteColor.BordersDisabled]);\n});\nexport var squarePaddingMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, ButtonSize.Xs, css([\"padding:6px;\"])), ButtonSize.Sm, css([\"padding:9px;\"])), ButtonSize.Md, css([\"padding:12px;\"])), ButtonSize.Lg, css([\"padding:11px;\"]));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport ButtonStyled from '../button/button.styles';\nimport { colorButtonMixin, squarePaddingMixin } from './icon-button.mixin';\nimport { ButtonSize, IconButtonColor } from '../../utils/types';\nvar baseClassName = 'IconButton';\nvar IconButton = /*#__PURE__*/styled(ButtonStyled.Button).attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-10edh45-0\"\n})(function (_ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? IconButtonColor.Secondary : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? ButtonSize.Md : _ref$size;\n return css([\"\", \" \", \"\"], squarePaddingMixin[size], colorButtonMixin[color]);\n});\nvar Styled = applyDisplayNames({\n IconButton: IconButton\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { getIconSize } from '../button/button.utils';\nimport { ButtonSize, IconButtonColor } from '../../utils/types';\nimport Styled from './icon-button.styles';\nvar IconButton = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.IconButton, _extends({}, rest, {\n ref: ref\n }), children && (typeof children === 'function' ? children({\n size: getIconSize(rest.size)\n }) : children));\n});\nIconButton.defaultProps = {\n size: ButtonSize.Md,\n color: IconButtonColor.Secondary,\n active: false\n};\nIconButton.propTypes = {\n children: PT.oneOfType([PT.node, PT.func]).isRequired,\n size: PT.oneOf(objectValues(ButtonSize)),\n color: PT.oneOf(objectValues(IconButtonColor)),\n disabled: PT.bool,\n active: PT.bool\n};\nexport default IconButton;","export var onClickByMouseDown = function onClickByMouseDown(event, callback) {\n event.preventDefault();\n if (event.button !== 0) {\n return;\n }\n if (callback) {\n callback(event);\n }\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { InputSize } from '../../utils/types';\nimport { Color as PaletteColor } from '../../utils/types/palette';\nimport { FontVariant as FV } from '../../utils/types/typography';\nexport var errorMixin = function errorMixin(_ref) {\n var palette = _ref.theme.palette;\n return css([\"background:\", \" !important;border:1px solid \", \" !important;\"], palette[PaletteColor.BackgroundSecondary], palette[PaletteColor.Error]);\n};\nexport var heightTextAreaMixin = _defineProperty(_defineProperty({}, InputSize.Sm, function () {\n return css([\"height:136px;\"]);\n}), InputSize.Md, function () {\n return css([\"height:152px;\"]);\n});\nexport var sizeTextAreaMixin = _defineProperty(_defineProperty({}, InputSize.Sm, function (_ref2) {\n var font = _ref2.theme.typography.font;\n return css([\"padding:8px 12px;\", \"\"], font[FV.InputMd]);\n}), InputSize.Md, function (_ref3) {\n var font = _ref3.theme.typography.font;\n return css([\"padding:8px 16px;\", \"\"], font[FV.InputLg]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { errorMixin, sizeTextAreaMixin, heightTextAreaMixin } from './textarea.mixin';\nimport { getInputBackgroundColor, getInputTextColor, getInputBorderColor } from '../input/input.utils';\nvar baseClassName = 'Textarea';\nvar Textarea = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1usif6k-0\"\n})(function (_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? InputSize.Md : _ref$size,\n _ref$error = _ref.error,\n error = _ref$error === void 0 ? false : _ref$error,\n _ref$fullWidth = _ref.fullWidth,\n fullWidth = _ref$fullWidth === void 0 ? false : _ref$fullWidth,\n _ref$readOnly = _ref.readOnly,\n readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$autoSize = _ref.autoSize,\n autoSize = _ref$autoSize === void 0 ? false : _ref$autoSize,\n theme = _ref.theme;\n return css([\"position:relative;display:inline-flex;flex-direction:column;align-items:flex-end;justify-content:space-between;cursor:text;box-sizing:border-box;transition:all 100ms ease-out;width:\", \";pointer-events:\", \";background-color:\", \";border-radius:\", \";border:1px solid \", \";color:\", \";\", \" \", \" &:hover{color:\", \";}\", \" \", \"\"], fullWidth ? '100%' : '300px', disabled ? 'none' : 'auto', getInputBackgroundColor(readOnly, disabled), theme.shape.borderRadius[BRSize.Md], getInputBorderColor(readOnly, disabled), disabled ? theme.palette[PColor.TextPlaceholder] : theme.palette[PColor.TextPrimary], heightTextAreaMixin[size], !readOnly && !disabled && css([\"&:focus-within{background-color:\", \"!important;border:1px solid \", \";&:hover{border:1px solid \", \";}}&:hover{background-color:\", \";border:1px solid \", \";}\"], theme.palette[PColor.BackgroundSecondary], theme.palette[PColor.AccentStateless], theme.palette[PColor.AccentStateless], theme.palette[PColor.BackgroundStateless], theme.palette[PColor.BordersPrimaryHover]), getInputTextColor(readOnly, disabled), error && errorMixin, autoSize && css([\"width:auto;height:auto;\"]));\n});\nvar Base = /*#__PURE__*/styled.textarea.attrs({\n className: generateClassNames(baseClassName, 'Base')\n}).withConfig({\n componentId: \"sc-1usif6k-1\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette,\n _ref2$readOnly = _ref2.readOnly,\n readOnly = _ref2$readOnly === void 0 ? false : _ref2$readOnly,\n _ref2$size = _ref2.size,\n size = _ref2$size === void 0 ? InputSize.Md : _ref2$size;\n return css([\"display:block;width:100%;height:100%;color:inherit;outline:none;resize:none;min-width:0;margin:0;padding:0;border:0;background-color:transparent;outline:none;font-size:inherit;line-height:inherit;color:inherit;font-weight:inherit;font-family:inherit;box-sizing:border-box;flex:1;\", \" \", \";&::placeholder{color:\", \";}::-webkit-scrollbar{width:12px;}::-webkit-scrollbar-track{width:8px;}::-webkit-scrollbar-thumb{background:\", \";border-radius:8px;border:4px solid \", \";}\"], readOnly && \"padding-bottom: 0px;\", sizeTextAreaMixin[size], palette[PColor.TextPlaceholder], palette[PColor.BorderPrimaryStateless], palette[PColor.BackgroundStateless]);\n});\nvar ActionsButtonsWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'ActionsButtonsWrapper')\n}).withConfig({\n componentId: \"sc-1usif6k-2\"\n})(function (_ref3) {\n var _ref3$size = _ref3.size,\n size = _ref3$size === void 0 ? InputSize.Md : _ref3$size;\n return css([\"display:flex;align-items:center;width:100%;column-gap:12px;box-sizing:border-box;\", \";.SfxButton-Label{font-weight:500;}\"], sizeTextAreaMixin[size]);\n});\nvar CopyIcon = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'CopyIcon')\n}).withConfig({\n componentId: \"sc-1usif6k-3\"\n})(function (_ref4) {\n var palette = _ref4.theme.palette;\n return css([\"cursor:pointer;color:\", \";margin-left:auto;\"], palette[PColor.IconsPrimary]);\n});\nvar Styled = applyDisplayNames({\n Textarea: Textarea,\n CopyIcon: CopyIcon,\n Base: Base,\n ActionsButtonsWrapper: ActionsButtonsWrapper\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"fullWidth\", \"size\", \"value\", \"readOnly\", \"disabled\", \"error\", \"cols\", \"rows\", \"copyTextMessage\", \"copySuccessIcon\", \"showActionButton\", \"showClearButton\", \"showCopyIcon\", \"disableActionButton\", \"isActionButtonLoading\", \"actionButtonLabel\", \"clearAllButtonLabel\", \"onClickActionButton\", \"onClear\", \"onChange\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useEffect, useRef } from 'react';\nimport PT from 'prop-types';\nimport CopyOutline from '@scaleflex/icons/copy-outline';\nimport { onClickByMouseDown } from '../../utils/functions/on-click-by-mouse-down';\nimport { intrinsicComponent, objectValues, useForkRef } from '../../utils/functions';\nimport { InputSize } from '../../utils/types';\nimport { handleCopyIcon } from '../input/input.utils';\nimport { getIconSize } from '../button/button.utils';\nimport InputStyled from '../input/input.styles';\nimport { Size } from '../menu-item/types';\nimport Button from '../button';\nimport Styled from './textarea.styles';\nvar Textarea = intrinsicComponent(function (_ref, ref) {\n var _inputRef$current;\n var fullWidth = _ref.fullWidth,\n size = _ref.size,\n value = _ref.value,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n error = _ref.error,\n cols = _ref.cols,\n rows = _ref.rows,\n _ref$copyTextMessage = _ref.copyTextMessage,\n copyTextMessage = _ref$copyTextMessage === void 0 ? '' : _ref$copyTextMessage,\n copySuccessIcon = _ref.copySuccessIcon,\n _ref$showActionButton = _ref.showActionButton,\n showActionButton = _ref$showActionButton === void 0 ? false : _ref$showActionButton,\n _ref$showClearButton = _ref.showClearButton,\n showClearButton = _ref$showClearButton === void 0 ? false : _ref$showClearButton,\n _ref$showCopyIcon = _ref.showCopyIcon,\n showCopyIcon = _ref$showCopyIcon === void 0 ? false : _ref$showCopyIcon,\n _ref$disableActionBut = _ref.disableActionButton,\n disableActionButton = _ref$disableActionBut === void 0 ? false : _ref$disableActionBut,\n _ref$isActionButtonLo = _ref.isActionButtonLoading,\n isActionButtonLoading = _ref$isActionButtonLo === void 0 ? false : _ref$isActionButtonLo,\n actionButtonLabel = _ref.actionButtonLabel,\n clearAllButtonLabel = _ref.clearAllButtonLabel,\n onClickActionButton = _ref.onClickActionButton,\n onClear = _ref.onClear,\n onChange = _ref.onChange,\n rest = _objectWithoutProperties(_ref, _excluded);\n var inputRef = useRef(null);\n var textareaRef = useForkRef(inputRef, ref);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isHovering = _useState2[0],\n setIsHovering = _useState2[1];\n var _useState3 = useState({}),\n _useState4 = _slicedToArray(_useState3, 2),\n overflowStyles = _useState4[0],\n setOverflowStyles = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n showCopyMessage = _useState6[0],\n setShowCopyMessage = _useState6[1];\n var _useState7 = useState(value),\n _useState8 = _slicedToArray(_useState7, 2),\n inputValue = _useState8[0],\n setInputValue = _useState8[1];\n var actionButtonHandler = function actionButtonHandler(event) {\n if (onClickActionButton) {\n onClickActionButton(event);\n }\n };\n var clearAllHandler = function clearAllHandler(event) {\n setInputValue('');\n if (onClear) {\n onClear(event);\n }\n };\n var onChangeHandler = function onChangeHandler(event) {\n setInputValue(event.target.value);\n if (onChange) {\n onChange(event);\n }\n };\n var copyIconHandler = function copyIconHandler() {\n if (showCopyIcon) {\n handleCopyIcon(inputValue, setShowCopyMessage);\n }\n };\n useEffect(function () {\n var current = inputRef.current;\n if (current && current.scrollHeight > current.clientHeight) {\n setOverflowStyles({\n paddingRight: size === Size.Md ? '4px' : '0px'\n });\n }\n }, [(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.scrollHeight, size]);\n useEffect(function () {\n setTimeout(function () {\n return setShowCopyMessage(false);\n }, 2000);\n }, [showCopyMessage]);\n useEffect(function () {\n setInputValue(value);\n }, [value]);\n var handleEntering = function handleEntering() {\n setTimeout(function () {\n setIsHovering(true);\n }, 150);\n };\n var handleLeaving = function handleLeaving() {\n setTimeout(function () {\n setIsHovering(false);\n }, 200);\n };\n var renderCopyText = function renderCopyText() {\n return /*#__PURE__*/React.createElement(InputStyled.NotificationBox, {\n size: size,\n isTextarea: true\n }, /*#__PURE__*/React.createElement(InputStyled.NotificationIcon, null, copySuccessIcon), /*#__PURE__*/React.createElement(InputStyled.NotificationText, null, copyTextMessage));\n };\n return /*#__PURE__*/React.createElement(Styled.Textarea, {\n size: size,\n value: inputValue,\n onMouseEnter: handleEntering,\n onMouseLeave: handleLeaving,\n readOnly: readOnly,\n disabled: disabled,\n fullWidth: Boolean(fullWidth),\n error: error,\n autoSize: Boolean(cols) || Boolean(rows)\n }, /*#__PURE__*/React.createElement(Styled.Base, _extends({}, rest, {\n value: inputValue,\n ref: textareaRef,\n size: size,\n onChange: onChangeHandler,\n readOnly: readOnly,\n disabled: disabled,\n style: _objectSpread({}, overflowStyles)\n })), (showActionButton || showClearButton || showCopyIcon) && /*#__PURE__*/React.createElement(Styled.ActionsButtonsWrapper, {\n size: size\n }, showActionButton && /*#__PURE__*/React.createElement(Button, {\n color: \"link-primary\",\n size: \"sm\",\n disabled: disableActionButton,\n loading: isActionButtonLoading,\n onMouseDown: function onMouseDown(event) {\n return onClickByMouseDown(event, actionButtonHandler);\n }\n }, actionButtonLabel), showClearButton && /*#__PURE__*/React.createElement(Button, {\n color: \"link-secondary\",\n size: \"sm\",\n onMouseDown: function onMouseDown(event) {\n return onClickByMouseDown(event, clearAllHandler);\n }\n }, clearAllButtonLabel), showCopyIcon && /*#__PURE__*/React.createElement(Styled.CopyIcon, {\n showCopyIcon: isHovering && inputValue.length > 0,\n size: size,\n onMouseDown: function onMouseDown(event) {\n return onClickByMouseDown(event, copyIconHandler);\n }\n }, /*#__PURE__*/React.createElement(CopyOutline, {\n size: getIconSize(size)\n }), showCopyMessage && renderCopyText())));\n});\nTextarea.defaultProps = {\n size: InputSize.Md,\n error: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n disableActionButton: false,\n isActionButtonLoading: false,\n actionButtonLabel: 'Action',\n clearAllButtonLabel: 'Clear all'\n};\nexport var propTypes = {\n error: PT.bool,\n readOnly: PT.bool,\n disabled: PT.bool,\n fullWidth: PT.bool,\n disableActionButton: PT.bool,\n isActionButtonLoading: PT.bool,\n value: PT.any,\n size: PT.oneOf(objectValues(InputSize)),\n copySuccessIcon: PT.oneOfType([PT.node, PT.func]),\n copyTextMessage: PT.string,\n cols: PT.number,\n rows: PT.number,\n showActionButton: PT.bool,\n showClearButton: PT.bool,\n showCopyIcon: PT.bool,\n actionButtonLabel: PT.string,\n clearAllButtonLabel: PT.string,\n onClickActionButton: PT.func,\n onClear: PT.func\n};\nTextarea.propTypes = propTypes;\nexport default Textarea;","export var Type = {\n Input: 'input',\n Textarea: 'textarea'\n};","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport StyledLabel from '../label/label.styles';\nimport StyledFormHint from '../form-hint/form-hint.styles';\nvar baseClassName = 'InputGroup';\nvar InputGroup = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-zhtjwh-0\"\n})([\"\", \"{margin-top:4px;}\", \"{margin-bottom:4px;}\"], StyledFormHint.FormHint, StyledLabel.Label);\nvar Styled = applyDisplayNames({\n InputGroup: InputGroup\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"type\", \"error\", \"label\", \"hint\", \"LabelProps\", \"InputProps\", \"inputProps\", \"inputRef\", \"TextareaProps\", \"readOnly\", \"disabled\", \"size\", \"value\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Label from '../label';\nimport { propTypes as labelPropTypes } from '../label/label.component';\nimport Input from '../input';\nimport { propTypes as inputPropTypes } from '../input/input.component';\nimport { InputSize } from '../../utils/types';\nimport Textarea from '../textarea';\nimport { propTypes as textareaPropTypes } from '../textarea/textarea.component';\nimport FormHint from '../form-hint';\nimport { Type } from './types';\nimport Styled from './input-group.styles';\nvar InputGroup = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n type = _ref.type,\n error = _ref.error,\n label = _ref.label,\n hint = _ref.hint,\n LabelPropsData = _ref.LabelProps,\n InputPropsData = _ref.InputProps,\n inputProps = _ref.inputProps,\n inputRef = _ref.inputRef,\n TextareaPropsData = _ref.TextareaProps,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n size = _ref.size,\n value = _ref.value,\n rest = _objectWithoutProperties(_ref, _excluded);\n var renderLabel = function renderLabel() {\n if (label) {\n if (typeof label === 'function') {\n return label({\n error: error\n });\n }\n if (_typeof(label) === 'object') {\n return label;\n }\n return /*#__PURE__*/React.createElement(Label, _extends({\n size: size,\n error: error,\n disabled: disabled\n }, LabelPropsData || {}), label);\n }\n return null;\n };\n var renderField = function renderField() {\n var fieldProps = _objectSpread({\n value: value,\n readOnly: readOnly,\n disabled: disabled,\n size: size,\n error: error\n }, rest);\n if (type === Type.Input) {\n return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, InputPropsData || {}, inputProps, {\n ref: (inputRef === null || inputRef === void 0 ? void 0 : inputRef.ref) || inputRef,\n readOnly: readOnly,\n disabled: disabled\n }));\n }\n if (type === Type.Textarea) {\n return /*#__PURE__*/React.createElement(Textarea, _extends({}, fieldProps, TextareaPropsData || {}));\n }\n return null;\n };\n var renderHint = function renderHint() {\n if (hint) {\n if (typeof hint === 'function') {\n return hint({\n error: error\n });\n }\n if (_typeof(hint) === 'object') {\n return hint;\n }\n return /*#__PURE__*/React.createElement(FormHint, {\n size: size,\n error: error,\n disabled: disabled\n }, hint);\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Styled.InputGroup, {\n ref: ref\n }, renderLabel(), renderField(), renderHint());\n});\nInputGroup.defaultProps = {\n type: Type.Input,\n error: false,\n readOnly: false\n};\nInputGroup.propTypes = {\n type: PT.oneOf(objectValues(Type)),\n size: PT.oneOf(objectValues(InputSize)),\n label: PT.node,\n hint: PT.node,\n error: PT.bool,\n value: PT.any,\n LabelProps: PT.exact(labelPropTypes),\n InputProps: PT.exact(inputPropTypes),\n inputProps: PT.object,\n inputRef: PT.oneOfType([PT.func, PT.object]),\n TextareaProps: PT.exact(textareaPropTypes),\n readOnly: PT.bool,\n disabled: PT.bool\n};\nexport default InputGroup;","export var Size = {\n Xs: 'xs',\n Sm: 'sm',\n Md: 'md',\n Lg: 'lg',\n Xl: 'xl'\n};","import * as React from 'react';\nvar ModalMenuContext = /*#__PURE__*/React.createContext({\n modalOpened: false\n});\nif (process.env.NODE_ENV !== 'production') {\n ModalMenuContext.displayName = 'ModalMenuContext';\n}\nexport default ModalMenuContext;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Size } from './types';\nexport var modalSizeMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Size.Xs, css([\"max-width:300px;\"])), Size.Sm, css([\"max-width:600px;\"])), Size.Md, css([\"max-width:960px;\"])), Size.Lg, css([\"max-width:1280px;\"])), Size.Xl, css([\"max-width:1920px;\"]));","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { modalSizeMixin } from './modal.mixin';\nimport { Size } from './types';\nvar baseClassName = 'Modal';\nvar Wrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Wrapper')\n}).withConfig({\n componentId: \"sc-80m07l-0\"\n})(function (_ref) {\n var open = _ref.open;\n return css([\"position:fixed;right:0px;bottom:0px;top:0px;left:0px;z-index:1200;visibility:\", \";\"], open ? 'visible' : 'hidden');\n});\nvar Overlay = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Overlay')\n}).withConfig({\n componentId: \"sc-80m07l-1\"\n})(function (_ref2) {\n var open = _ref2.open;\n return css([\"position:fixed;right:0px;bottom:0px;top:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:-1;transition:opacity 251ms cubic-bezier(0.4,0,0.2,1) 0ms;opacity:\", \";\"], open ? '1' : '0');\n});\nvar Container = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Container')\n}).withConfig({\n componentId: \"sc-80m07l-2\"\n})(function (_ref3) {\n var theme = _ref3.theme,\n _ref3$open = _ref3.open,\n open = _ref3$open === void 0 ? false : _ref3$open,\n _ref3$fullWidth = _ref3.fullWidth,\n fullWidth = _ref3$fullWidth === void 0 ? false : _ref3$fullWidth,\n _ref3$maxWidth = _ref3.maxWidth,\n maxWidth = _ref3$maxWidth === void 0 ? Size.Sm : _ref3$maxWidth;\n return css([\"position:absolute;overflow-x:hidden;overflow-y:auto;transition:opacity 251ms cubic-bezier(0.4,0,0.2,1) 0ms,transform 167ms cubic-bezier(0.4,0,0.2,1) 0ms;outline:0;border-radius:\", \";background-color:\", \";box-shadow:0px 2px 4px \", \";visibility:\", \";opacity:\", \";display:flex;max-height:calc(100% - 64px);flex-direction:column;\", \" \", \" top:50%;left:50%;transform:translate(-50%,-50%);\"], theme.shape.borderRadius[BRSize.Lg], theme.palette[PColor.BackgroundSecondary], theme.palette[PColor.LightShadow], open ? 'visible' : 'hidden', open ? '1' : '0', fullWidth && css([\"width:calc(100% - 64px);\"]), modalSizeMixin[maxWidth]);\n});\nvar Modal = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-80m07l-3\"\n})(function () {\n return css([\"position:relative;padding-top:8px;padding-bottom:8px;margin:0;padding:0;outline:0;display:flex;flex-direction:column;\"]);\n});\nvar Styled = applyDisplayNames({\n Modal: Modal,\n Wrapper: Wrapper,\n Overlay: Overlay,\n Container: Container\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"open\", \"onClose\", \"maxWidth\", \"fullWidth\", \"modalStyles\", \"hideOverlay\", \"disableOverlayClick\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useEffect, isValidElement } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Size } from './types';\nimport ModalMenuContext from './modal-menu-context';\nimport Styled from './modal.styles';\nvar isValidSingleFragmentChildren = function isValidSingleFragmentChildren(children) {\n return children && /*#__PURE__*/isValidElement(children) && React.Children.count(children) === 1 && children.type === React.Fragment;\n};\nvar Modal = intrinsicComponent(function (_ref, ref) {\n var _children = _ref.children,\n open = _ref.open,\n onClose = _ref.onClose,\n maxWidth = _ref.maxWidth,\n fullWidth = _ref.fullWidth,\n modalStyles = _ref.modalStyles,\n hideOverlay = _ref.hideOverlay,\n disableOverlayClick = _ref.disableOverlayClick,\n rest = _objectWithoutProperties(_ref, _excluded);\n var children = isValidSingleFragmentChildren(_children) ? _children.props.children : _children;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var target = document.querySelector('body');\n useEffect(function () {\n if (open) {\n document.body.classList.add('Modal-open');\n } else {\n document.body.classList.remove('Modal-open');\n }\n return function () {\n document.body.classList.remove('Modal-open');\n };\n }, [open]);\n var handleClose = function handleClose() {\n if (typeof onClose === 'function') {\n onClose();\n }\n };\n useEffect(function () {\n var keyListener = function keyListener(ev) {\n if (ev.key === 'Escape') {\n handleClose();\n }\n };\n document.addEventListener('keydown', keyListener);\n return function () {\n return document.removeEventListener('keydown', keyListener);\n };\n });\n var render = function render() {\n return /*#__PURE__*/React.createElement(ModalMenuContext.Provider, {\n value: {\n modalOpened: Boolean(open)\n }\n }, /*#__PURE__*/React.createElement(Styled.Wrapper, {\n style: _objectSpread({}, modalStyles),\n open: Boolean(open),\n ref: ref\n }, !hideOverlay && /*#__PURE__*/React.createElement(Styled.Overlay, {\n onClick: function onClick() {\n return disableOverlayClick ? null : handleClose();\n },\n open: Boolean(open)\n }), /*#__PURE__*/React.createElement(Styled.Container, _extends({}, rest, {\n maxWidth: maxWidth,\n fullWidth: fullWidth,\n open: Boolean(open)\n }), /*#__PURE__*/React.createElement(Styled.Modal, null, React.Children.map(children, function (child) {\n if ( /*#__PURE__*/isValidElement(child) && child.type.displayName === 'ModalTitle') {\n return /*#__PURE__*/React.cloneElement(child, _objectSpread({\n onClose: handleClose\n }, child.props || {}));\n }\n return child;\n })))));\n };\n return /*#__PURE__*/createPortal(render(), target);\n});\nexport var defaultProps = {\n open: false,\n fullWidth: false,\n disableOverlayClick: false,\n hideOverlay: false,\n maxWidth: Size.Xs\n};\nModal.defaultProps = defaultProps;\nexport var propTypes = {\n onClose: PT.func,\n modalStyles: PT.object,\n disableOverlayClick: PT.bool,\n hideOverlay: PT.bool,\n children: PT.node.isRequired,\n maxWidth: PT.oneOf(objectValues(Size)),\n open: PT.bool,\n fullWidth: PT.bool\n};\nModal.propTypes = propTypes;\nexport default Modal;","export var Align = {\n Left: 'left',\n Center: 'center',\n Right: 'right'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Align } from './types';\nvar baseClassName = 'ModalActions';\nvar ModalActions = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1wg6u00-0\"\n})(function (_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? Align.Center : _ref$align;\n return css([\"position:relative;display:flex;align-items:center;padding:24px;justify-content:\", \";gap:12px;\"], align === Align.Right ? 'flex-end' : align);\n});\nvar Styled = applyDisplayNames({\n ModalActions: ModalActions\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Styled from './modal-actions.styles';\nimport { Align } from './types';\nvar ModalActions = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ModalActions, _extends({}, rest, {\n ref: ref\n }), children);\n});\nModalActions.defaultProps = {\n align: Align.Center\n};\nModalActions.propTypes = {\n children: PT.node.isRequired,\n align: PT.oneOf(objectValues(Align))\n};\nModalActions.displayName = 'ModalActions';\nexport default ModalActions;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'ModalContent';\nvar ModalContent = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1ng1w0v-0\"\n})(function () {\n return css([\"position:relative;padding:12px 24px 0px;\"]);\n});\nvar Styled = applyDisplayNames({\n ModalContent: ModalContent\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './modal-content.styles';\nvar ModalContent = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ModalContent, _extends({}, rest, {\n ref: ref\n }), children);\n});\nModalContent.defaultProps = {};\nModalContent.propTypes = {\n children: PT.node.isRequired\n};\nModalContent.displayName = 'ModalContent';\nexport default ModalContent;","export var Variant = {\n Default: 'default',\n WithIcon: 'with-icon'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { BorderRadiusSize as BRSize } from '../../utils/types/shape';\nimport { Variant } from './types';\nvar baseClassName = 'ModalTitle';\nvar Icon = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Icon')\n}).withConfig({\n componentId: \"sc-l3tf49-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"display:flex;margin-bottom:8px;padding:14.5px;border-radius:50%;background:\", \";color:\", \";\"], palette[PColor.Accent_1_2_Opacity], palette[PColor.AccentStateless]);\n});\nvar LabelPrimary = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'LabelPrimary')\n}).withConfig({\n componentId: \"sc-l3tf49-1\"\n})(function (_ref2) {\n var _ref2$variant = _ref2.variant,\n variant = _ref2$variant === void 0 ? Variant.Default : _ref2$variant;\n return css([\"font-size:18px;line-height:27px;font-weight:\", \";\"], variant === Variant.Default ? 400 : 500);\n});\nvar LabelSecondary = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'LabelSecondary')\n}).withConfig({\n componentId: \"sc-l3tf49-2\"\n})([\"font-size:12px;line-height:14px;margin-top:4px;\"]);\nvar Close = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'Close')\n}).withConfig({\n componentId: \"sc-l3tf49-3\"\n})(function (_ref3) {\n var _ref3$variant = _ref3.variant,\n variant = _ref3$variant === void 0 ? Variant.Default : _ref3$variant,\n palette = _ref3.theme.palette;\n return css([\"position:absolute;display:flex;top:\", \"px;right:\", \"px;color:\", \";&:hover{color:\", \";}cursor:pointer;\"], variant === Variant.WithIcon ? 2 : 8, variant === Variant.WithIcon ? 2 : 8, palette[PColor.IconsSecondary], palette[PColor.AccentPrimary]);\n});\nvar ModalTitle = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-l3tf49-4\"\n})(function (_ref4) {\n var _ref4$variant = _ref4.variant,\n variant = _ref4$variant === void 0 ? Variant.Default : _ref4$variant,\n _ref4$theme = _ref4.theme,\n palette = _ref4$theme.palette,\n borderRadius = _ref4$theme.shape.borderRadius;\n return css([\"position:relative;color:\", \";border-radius:\", \" \", \" 0px 0px;\", \" \", \" \", \"\"], palette[PColor.TextPrimary], borderRadius[BRSize.Md], borderRadius[BRSize.Md], function () {\n var paddingY = variant === Variant.WithIcon ? 26 : 14;\n var paddingX = variant === Variant.WithIcon ? 12 : 14;\n var paddingLeft = 18;\n var paddingRight = variant === Variant.WithIcon ? paddingLeft : 40;\n return css([\"padding:\", \"px \", \"px \", \"px \", \"px;\"], paddingY, paddingRight, paddingX, paddingLeft);\n }, variant === Variant.Default && css([\"background:\", \";border-bottom:1px solid \", \";\"], palette[PColor.BackgroundPrimary], palette[PColor.BordersSecondary]), variant === Variant.WithIcon && css([\"display:flex;align-items:center;flex-direction:column;\"]));\n});\nvar Styled = applyDisplayNames({\n ModalTitle: ModalTitle,\n LabelPrimary: LabelPrimary,\n LabelSecondary: LabelSecondary,\n Close: Close,\n Icon: Icon\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"secondary\", \"onClose\", \"primaryLabelStyles\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport CrossButton from '../cross-button';\nimport Styled from './modal-title.styles';\nimport { Variant } from './types';\nvar ModalTitle = intrinsicComponent(function (_ref, ref) {\n var secondary = _ref.secondary,\n onClose = _ref.onClose,\n primaryLabelStyles = _ref.primaryLabelStyles,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.ModalTitle, _extends({}, rest, {\n ref: ref\n }), rest.icon && /*#__PURE__*/React.createElement(Styled.Icon, {\n iconShadow: Boolean(rest.iconShadow)\n }, rest.icon), /*#__PURE__*/React.createElement(Styled.LabelPrimary, {\n variant: rest.variant,\n style: primaryLabelStyles\n }, rest.primary), rest.variant === Variant.WithIcon && secondary && /*#__PURE__*/React.createElement(Styled.LabelSecondary, null, secondary), /*#__PURE__*/React.createElement(Styled.Close, {\n variant: rest.variant\n }, /*#__PURE__*/React.createElement(CrossButton, {\n size: \"lg\",\n onClick: onClose\n })));\n});\nModalTitle.defaultProps = {\n iconShadow: true,\n variant: Variant.Default\n};\nModalTitle.propTypes = {\n primary: PT.node.isRequired,\n secondary: PT.node,\n icon: PT.node,\n iconShadow: PT.bool,\n onClose: PT.func,\n primaryLabelStyles: PT.object,\n variant: PT.oneOf(objectValues(Variant))\n};\nModalTitle.displayName = 'ModalTitle';\nexport default ModalTitle;","export var Status = {\n Success: 'success',\n Info: 'info',\n Error: 'error',\n Warning: 'warning'\n};","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nvar baseClassName = 'PopupStatus';\nvar PopupStatus = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-qash56-0\"\n})(function () {\n return css([\"display:flex;\"]);\n});\nvar Styled = applyDisplayNames({\n PopupStatus: PopupStatus\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"status\", \"notificationBackground\"];\nimport React from 'react';\nimport PT from 'prop-types';\nimport { Success, About, Error, Warning, InfoOutline, WarningOutline, ErrorOutline } from '@scaleflex/icons';\nimport { lightPalette } from '@scaleflex/ui/theme/roots/palette';\nimport { Color } from '@scaleflex/ui/utils/types/palette';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { Status } from './types';\nimport Styled from './popup-status.styles';\nvar getPopupStatusIcon = function getPopupStatusIcon(status, notificationBackground) {\n switch (status) {\n case Status.Warning:\n return notificationBackground ? /*#__PURE__*/React.createElement(Warning, {\n color: lightPalette[Color.Warning],\n size: 20\n }) : /*#__PURE__*/React.createElement(WarningOutline, {\n color: lightPalette[Color.Warning],\n size: 12\n });\n case Status.Error:\n return notificationBackground ? /*#__PURE__*/React.createElement(Error, {\n color: lightPalette[Color.Error],\n size: 20\n }) : /*#__PURE__*/React.createElement(ErrorOutline, {\n color: lightPalette[Color.Error],\n size: 12\n });\n case Status.Info:\n return notificationBackground ? /*#__PURE__*/React.createElement(About, {\n color: lightPalette[Color.Info],\n size: 20\n }) : /*#__PURE__*/React.createElement(InfoOutline, {\n color: lightPalette[Color.Info],\n size: 12\n });\n case Status.Success:\n default:\n return /*#__PURE__*/React.createElement(Success, {\n color: lightPalette[Color.Success],\n size: 20\n });\n }\n};\nvar PopupStatus = intrinsicComponent(function (_ref, ref) {\n var status = _ref.status,\n _ref$notificationBack = _ref.notificationBackground,\n notificationBackground = _ref$notificationBack === void 0 ? true : _ref$notificationBack,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.PopupStatus, _extends({\n status: status\n }, rest, {\n ref: ref\n }), getPopupStatusIcon(status, notificationBackground));\n});\nexport var defaultProps = {\n status: Status.Success\n};\nPopupStatus.defaultProps = defaultProps;\nexport var propTypes = {\n status: PT.oneOf(objectValues(Status))\n};\nPopupStatus.propTypes = propTypes;\nexport default PopupStatus;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\nimport { Color as PaletteColor } from '@scaleflex/ui/utils/types/palette';\nimport { Status } from '../popup-status/types';\nexport var popupContentMixin = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, Status.Success, function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundGreen]);\n}), Status.Info, function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundBlue]);\n}), Status.Error, function (_ref3) {\n var palette = _ref3.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundRed]);\n}), Status.Warning, function (_ref4) {\n var palette = _ref4.theme.palette;\n return css([\"background-color:\", \";\"], palette[PaletteColor.BackgroundOrange]);\n});","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { FontVariant } from '../../utils/types/typography';\nimport { popupContentMixin } from './popup-content.mixin';\nvar baseClassName = 'PopupContent';\nvar LabelWrapper = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'LabelWrapper')\n}).withConfig({\n componentId: \"sc-njbmnt-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"display:flex;flex-grow:1;margin-left:44px;margin-right:28px;padding:16px;padding-right:0;overflow:hidden;background:\", \";\"], palette[PColor.ButtonPrimaryText]);\n});\nvar Label = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'Label')\n}).withConfig({\n componentId: \"sc-njbmnt-1\"\n})(function (_ref2) {\n var _ref2$theme = _ref2.theme,\n palette = _ref2$theme.palette,\n font = _ref2$theme.typography.font;\n return css([\"max-width:100%;overflow:hidden;text-overflow:ellipsis;color:\", \";\", \"\"], palette[PColor.TextPrimary], font[FontVariant.TextSmallUp]);\n});\nvar PopupContent = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'PopupContent')\n}).withConfig({\n componentId: \"sc-njbmnt-2\"\n})(function (_ref3) {\n var theme = _ref3.theme;\n return css([\"position:relative;display:flex;align-items:center;width:360px;border-radius:4px;box-shadow:0px 2px 6px \", \";\"], theme.palette[PColor.LargeShadow]);\n});\nvar CloseWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'PopupContent')\n}).withConfig({\n componentId: \"sc-njbmnt-3\"\n})(function (_ref4) {\n var theme = _ref4.theme;\n return css([\"position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:flex-start;box-sizing:border-box;padding:2px;height:fit-content;cursor:pointer;background:\", \";border-radius:0 4px 4px 0;height:100%;\"], theme.palette[PColor.BackgroundStateless]);\n});\nvar PopupStatus = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'PopupStatus')\n}).withConfig({\n componentId: \"sc-njbmnt-4\"\n})(function (_ref5) {\n var _ref5$status = _ref5.status,\n status = _ref5$status === void 0 ? 'success' : _ref5$status;\n return css([\"position:absolute;display:flex;left:0;z-index:1;height:100%;min-width:44px;align-items:center;justify-content:center;box-sizing:border-box;border-radius:4px 0 0 4px;\", \"\"], popupContentMixin[status]);\n});\nvar Styled = applyDisplayNames({\n PopupContent: PopupContent,\n PopupStatus: PopupStatus,\n LabelWrapper: LabelWrapper,\n CloseWrapper: CloseWrapper,\n Label: Label\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"onClose\", \"message\", \"status\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport PopupStatus from '../popup-status';\nimport CrossButton from '../cross-button/cross-button.component';\nimport { defaultProps as popupStatusDefaultProps, propTypes as popupStatusPropTypes } from '../popup-status/popup-status.component';\nimport Styled from './popup-content.styles';\nvar PopupContent = intrinsicComponent(function (_ref, ref) {\n var onClose = _ref.onClose,\n message = _ref.message,\n status = _ref.status,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.PopupContent, _extends({}, rest, {\n ref: ref\n }), /*#__PURE__*/React.createElement(Styled.PopupStatus, _extends({\n status: status,\n message: message\n }, rest), /*#__PURE__*/React.createElement(PopupStatus, {\n status: status\n })), /*#__PURE__*/React.createElement(Styled.LabelWrapper, null, /*#__PURE__*/React.createElement(Styled.Label, null, message)), /*#__PURE__*/React.createElement(Styled.CloseWrapper, null, /*#__PURE__*/React.createElement(CrossButton, {\n size: \"sm\",\n onClick: onClose\n })));\n});\nexport var defaultProps = _objectSpread({}, popupStatusDefaultProps);\nPopupContent.defaultProps = defaultProps;\nexport var propTypes = _objectSpread(_objectSpread({}, popupStatusPropTypes), {}, {\n message: PT.node.isRequired,\n onClose: PT.func\n});\nPopupContent.propTypes = propTypes;\nexport default PopupContent;","export var Horizontal = {\n Center: 'center',\n Left: 'left',\n Right: 'right'\n};","export var Vertical = {\n Top: 'top',\n Bottom: 'bottom'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { css } from 'styled-components';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PaletteColor } from '../../utils/types/palette';\nimport { Horizontal, Vertical } from './types';\nexport var positionHorizontalMixin = _defineProperty(_defineProperty(_defineProperty({}, Horizontal.Left, css([\"left:25px;right:auto;\"])), Horizontal.Center, css([\"left:50%;right:auto;transform:translateX(-50%);\"])), Horizontal.Right, css([\"left:auto;right:25px;\"]));\nexport var positionVerticalMixin = _defineProperty(_defineProperty({}, Vertical.Top, css([\"top:25px;bottom:auto;\"])), Vertical.Bottom, css([\"top:auto;bottom:25px;\"]));\n\n// export const errorMixin = ({ theme: { palette } }: WithTheme) => css`\n// background: ${palette[PaletteColor.BackgroundSecondary]} !important;\n// border: 1px solid ${palette[PaletteColor.Error]} !important;\n// `;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PColor } from '../../utils/types/palette';\n// import { FontVariant } from '../../utils/types/typography';\n// import { BorderRadiusSize as BRSize } from '../../utils/types/shape';\n\nimport { positionHorizontalMixin, positionVerticalMixin } from './popup.mixin';\nimport { Horizontal, Vertical } from './types';\nvar baseClassName = 'Popup';\nvar Popup = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-jmtjri-0\"\n})(function (_ref) {\n var anchorOrigin = _ref.anchorOrigin;\n return css([\"position:fixed;display:flex;align-items:center;justify-content:center;z-index:1400;\", \" \", \"\"], positionHorizontalMixin[(anchorOrigin === null || anchorOrigin === void 0 ? void 0 : anchorOrigin.horizontal) || Horizontal.Left], positionVerticalMixin[(anchorOrigin === null || anchorOrigin === void 0 ? void 0 : anchorOrigin.vertical) || Vertical.Bottom]);\n});\nvar Styled = applyDisplayNames({\n Popup: Popup\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"autoHideDuration\", \"anchorOrigin\", \"open\", \"onClose\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues, generateClassNames } from '../../utils/functions';\nimport usePortal from '../../hooks/use-portal';\nimport PopupContent, { defaultProps as cDefaultProps, propTypes as cPropTypes } from '../popup-content/popup-content.component';\nimport { Horizontal, Vertical } from './types';\nimport Styled from './popup.styles';\nvar Popup = intrinsicComponent(function (props, ref) {\n var autoHideDuration = props.autoHideDuration,\n anchorOrigin = props.anchorOrigin,\n open = props.open,\n onClose = props.onClose,\n rest = _objectWithoutProperties(props, _excluded);\n var target = usePortal(generateClassNames('Popup'));\n var _useState = useState(autoHideDuration),\n _useState2 = _slicedToArray(_useState, 2),\n hoverHideDuration = _useState2[0],\n setHoverHideDuration = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isHovering = _useState4[0],\n setIsHovering = _useState4[1];\n var handleMouseLeave = function handleMouseLeave() {\n setIsHovering(false);\n setHoverHideDuration(1000);\n };\n useEffect(function () {\n if (open) setHoverHideDuration(autoHideDuration);\n }, [open]);\n useEffect(function () {\n var timeout = null;\n if (open && !isHovering && hoverHideDuration && typeof onClose === 'function') {\n timeout = setTimeout(onClose, hoverHideDuration);\n }\n return function () {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, [hoverHideDuration, isHovering, open, onClose]);\n var render = function render() {\n if (!open) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Styled.Popup, _extends({\n onMouseEnter: function onMouseEnter() {\n return setIsHovering(true);\n },\n onMouseLeave: handleMouseLeave\n }, props), /*#__PURE__*/React.createElement(PopupContent, _extends({\n onClose: onClose\n }, rest, {\n ref: ref\n })));\n };\n return /*#__PURE__*/createPortal(render(), target);\n});\nPopup.defaultProps = _objectSpread(_objectSpread({}, cDefaultProps), {}, {\n open: false,\n autoHideDuration: 5000,\n anchorOrigin: {\n vertical: Vertical.Bottom,\n horizontal: Horizontal.Left\n }\n});\nPopup.propTypes = _objectSpread(_objectSpread({}, cPropTypes), {}, {\n anchorOrigin: PT.exact({\n vertical: PT.oneOf(objectValues(Vertical)),\n horizontal: PT.oneOf(objectValues(Horizontal))\n }),\n open: PT.bool,\n autoHideDuration: PT.number,\n onClose: PT.func\n});\nexport default Popup;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PC } from '../../utils/types/palette';\nvar baseClassName = 'RotationSlider';\nvar RotationSliderList = /*#__PURE__*/styled.ul.attrs({\n className: generateClassNames(baseClassName, 'list')\n}).withConfig({\n componentId: \"sc-1xuruq0-0\"\n})([\"display:flex;align-items:center;position:relative;padding:0;width:100%;list-style:none;\"]);\nvar RotationSliderBigDot = /*#__PURE__*/styled.li.attrs({\n className: generateClassNames(baseClassName, 'big-dot')\n}).withConfig({\n componentId: \"sc-1xuruq0-1\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"width:8px;height:8px;border-radius:50%;background-color:\", \";cursor:pointer;\"], palette[PC.LinkPrimary]);\n});\nvar RotationSliderSmallDotWrapper = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'small-dot-wrapper')\n}).withConfig({\n componentId: \"sc-1xuruq0-2\"\n})([\"padding:2px;\"]);\nvar RotationSliderSmallDot = /*#__PURE__*/styled.li.attrs({\n className: generateClassNames(baseClassName, 'small-dot')\n}).withConfig({\n componentId: \"sc-1xuruq0-3\"\n})(function (_ref2) {\n var palette = _ref2.theme.palette;\n return css([\"width:2px;height:2px;border-radius:50%;background-color:\", \";cursor:pointer;\"], palette[PC.LinkPrimary]);\n});\nvar RotationSliderControl = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'control')\n}).withConfig({\n componentId: \"sc-1xuruq0-4\"\n})(function (_ref3) {\n var palette = _ref3.theme.palette;\n return css([\"display:flex;justify-content:center;align-items:center;position:absolute;height:18px;width:2px;transform:translate(-50%,-50%);top:50%;background-color:\", \";& > input{border:0px;clip:rect(0px,0px,0px,0px);height:100%;margin:-1px;overflow:hidden;padding:0px;position:absolute;white-space:nowrap;width:100%;direction:ltr;}&::before{position:absolute;content:'';border-radius:inherit;width:100%;height:100%;box-shadow:0px 3px 1px -2px rgb(0 0 0 / 20%),0px 2px 2px 0px rgb(0 0 0 / 14%),0px 1px 5px 0px rgb(0 0 0 / 12%);}&::after{position:absolute;content:'';border-radius:50%;width:42px;height:42px;top:50%;left:50%;transform:translate(-50%,-50%);}\"], palette[PC.LinkActive]);\n});\nvar RotationSliderMark = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'mark')\n}).withConfig({\n componentId: \"sc-1xuruq0-5\"\n})([\"padding:4px;\"]);\nvar RotationSliderMarkText = /*#__PURE__*/styled.span.attrs({\n className: generateClassNames(baseClassName, 'mark-text')\n}).withConfig({\n componentId: \"sc-1xuruq0-6\"\n})(function (_ref4) {\n var palette = _ref4.theme.palette;\n return css([\"position:absolute;top:20px;font-size:14px;transform:translateX(-10%);color:\", \";\"], palette[PC.TextPrimary]);\n});\nvar Styled = applyDisplayNames({\n RotationSliderList: RotationSliderList,\n RotationSliderBigDot: RotationSliderBigDot,\n RotationSliderSmallDotWrapper: RotationSliderSmallDotWrapper,\n RotationSliderSmallDot: RotationSliderSmallDot,\n RotationSliderControl: RotationSliderControl,\n RotationSliderMark: RotationSliderMark,\n RotationSliderMarkText: RotationSliderMarkText\n});\nexport default Styled;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"min\", \"max\", \"angle\", \"onChange\", \"onMouseDown\", \"onMouseUp\", \"step\", \"labelTooltipOptions\", \"annotation\", \"hideMarkText\", \"showCurrentMarkText\", \"value\", \"railProps\", \"trackProps\", \"thumbProps\", \"labelTooltipProps\", \"markStyles\", \"markTextStyles\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Slider from '../slider';\nimport { LabelTooltip } from '../slider/types';\nimport Styled from './rotation-slider.styles';\nvar RotationSlider = intrinsicComponent(function (_ref, ref) {\n var _ref$min = _ref.min,\n min = _ref$min === void 0 ? 0 : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 100 : _ref$max,\n _ref$angle = _ref.angle,\n angle = _ref$angle === void 0 ? 10 : _ref$angle,\n onChange = _ref.onChange,\n onMouseDown = _ref.onMouseDown,\n onMouseUp = _ref.onMouseUp,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step,\n _ref$labelTooltipOpti = _ref.labelTooltipOptions,\n labelTooltipOptions = _ref$labelTooltipOpti === void 0 ? LabelTooltip.Off : _ref$labelTooltipOpti,\n _ref$annotation = _ref.annotation,\n annotation = _ref$annotation === void 0 ? '°' : _ref$annotation,\n _ref$hideMarkText = _ref.hideMarkText,\n hideMarkText = _ref$hideMarkText === void 0 ? false : _ref$hideMarkText,\n _ref$showCurrentMarkT = _ref.showCurrentMarkText,\n showCurrentMarkText = _ref$showCurrentMarkT === void 0 ? false : _ref$showCurrentMarkT,\n value = _ref.value,\n _ref$railProps = _ref.railProps,\n railProps = _ref$railProps === void 0 ? {} : _ref$railProps,\n _ref$trackProps = _ref.trackProps,\n trackProps = _ref$trackProps === void 0 ? {} : _ref$trackProps,\n _ref$thumbProps = _ref.thumbProps,\n thumbProps = _ref$thumbProps === void 0 ? {} : _ref$thumbProps,\n _ref$labelTooltipProp = _ref.labelTooltipProps,\n labelTooltipProps = _ref$labelTooltipProp === void 0 ? {} : _ref$labelTooltipProp,\n _ref$markStyles = _ref.markStyles,\n markStyles = _ref$markStyles === void 0 ? {} : _ref$markStyles,\n _ref$markTextStyles = _ref.markTextStyles,\n markTextStyles = _ref$markTextStyles === void 0 ? {} : _ref$markTextStyles,\n rest = _objectWithoutProperties(_ref, _excluded);\n var handleChange = function handleChange(event, newValue) {\n if (onChange) {\n onChange(event, newValue);\n }\n };\n var getValue = function getValue() {\n if (value || value === 0) {\n if (value > max) {\n return max;\n }\n if (value < min) {\n return min;\n }\n return value;\n }\n return min;\n };\n var showMarkText = function showMarkText(index) {\n if (hideMarkText) return false;\n if (!showCurrentMarkText) return true;\n return getValue() === index;\n };\n var renderBar = function renderBar() {\n var barDom = [];\n var barDiv;\n for (var i = min; i <= max; i += step) {\n barDiv = [];\n if (i % angle === 0 || i === max) {\n barDiv = /*#__PURE__*/React.createElement(Styled.RotationSliderMark, {\n key: i,\n style: _objectSpread({}, markStyles)\n }, showMarkText(i) && /*#__PURE__*/React.createElement(Styled.RotationSliderMarkText, {\n style: _objectSpread({}, markTextStyles)\n }, i === min + 1 ? max : i, /*#__PURE__*/React.createElement(\"sup\", null, annotation)), /*#__PURE__*/React.createElement(Styled.RotationSliderBigDot, null));\n } else if (i % 10 === 0) {\n barDiv = /*#__PURE__*/React.createElement(Styled.RotationSliderSmallDotWrapper, {\n key: i\n }, /*#__PURE__*/React.createElement(Styled.RotationSliderSmallDot, null));\n }\n if (!Array.isArray(barDiv)) {\n barDom.push(barDiv);\n }\n }\n return barDom;\n };\n return /*#__PURE__*/React.createElement(Slider, _extends({\n min: min,\n max: max,\n step: step,\n value: getValue(),\n hideTrack: true,\n hideAnnotation: true,\n annotation: annotation,\n onChange: handleChange,\n labelTooltip: labelTooltipOptions,\n ref: ref,\n components: {\n Rail: function Rail(props, style) {\n return /*#__PURE__*/React.createElement(Styled.RotationSliderList, _extends({}, props, {\n styles: _objectSpread({}, style)\n }), renderBar());\n },\n Thumb: Styled.RotationSliderControl\n },\n componentsProps: {\n rail: _objectSpread(_objectSpread({}, railProps), {}, {\n style: _objectSpread({}, railProps.style)\n }),\n track: _objectSpread(_objectSpread({}, trackProps), {}, {\n style: _objectSpread({}, trackProps.style)\n }),\n thumb: _objectSpread(_objectSpread({}, thumbProps), {}, {\n style: _objectSpread({\n top: '15%'\n }, thumbProps.style)\n }),\n labelTooltip: _objectSpread(_objectSpread({}, labelTooltipProps), {}, {\n style: _objectSpread({}, labelTooltipProps.style)\n })\n }\n }, rest, {\n defaultValue: Number(rest.defaultValue),\n style: _objectSpread({\n width: 'auto',\n height: 'auto'\n }, rest.style)\n }));\n});\nRotationSlider.defaultProps = {\n annotation: '°',\n min: 0,\n max: 100,\n step: 1,\n labelTooltipOptions: LabelTooltip.Off\n};\nRotationSlider.propTypes = {\n value: PT.oneOfType([PT.array, PT.number]),\n min: PT.number,\n max: PT.number,\n angle: PT.number,\n onChange: PT.func,\n onMouseDown: PT.func,\n onMouseUp: PT.func,\n step: PT.number,\n annotation: PT.string,\n hideMarkText: PT.bool,\n showCurrentMarkText: PT.bool,\n railProps: PT.object,\n trackProps: PT.object,\n thumbProps: PT.object,\n labelTooltipProps: PT.object,\n markStyles: PT.object,\n markTextStyles: PT.object,\n labelTooltipOptions: PT.oneOf(objectValues(LabelTooltip))\n};\nexport default RotationSlider;","import styled from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\n// import type { With } from '../../utils/types';\n// import type { WithTheme } from '../../theme/entity';\n// import { Color as PColor } from '../../utils/types/palette';\n// import type { SelectGroupProps } from './select-group.props';\nimport StyledInputGroup from '../input-group/input-group.styles';\nvar baseClassName = 'SelectGroup';\nvar SelectGroup = /*#__PURE__*/styled(StyledInputGroup.InputGroup).attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1uvutwe-0\"\n})([\"\"]);\nvar Styled = applyDisplayNames({\n SelectGroup: SelectGroup\n});\nexport default Styled;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"size\", \"error\", \"label\", \"placeholder\", \"hint\", \"LabelProps\", \"SelectProps\", \"selectProps\", \"scroll\", \"fullWidth\", \"showSelectionKey\", \"value\", \"multiple\", \"hideMenuItemsActions\", \"onChange\", \"readOnly\", \"disabled\", \"showClearIcon\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React from 'react';\nimport PT from 'prop-types';\nimport { InputSize } from '../../utils/types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport Label from '../label';\nimport { propTypes as labelPropTypes } from '../label/label.component';\nimport Select from '../select';\nimport { propTypes as selectPropTypes } from '../select/select.component';\nimport FormHint from '../form-hint';\nimport Styled from './select-group.styles';\nvar SelectGroup = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n size = _ref.size,\n error = _ref.error,\n label = _ref.label,\n placeholder = _ref.placeholder,\n hint = _ref.hint,\n LabelPropsData = _ref.LabelProps,\n SelectPropsData = _ref.SelectProps,\n selectProps = _ref.selectProps,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? true : _ref$scroll,\n fullWidth = _ref.fullWidth,\n showSelectionKey = _ref.showSelectionKey,\n value = _ref.value,\n multiple = _ref.multiple,\n hideMenuItemsActions = _ref.hideMenuItemsActions,\n onChange = _ref.onChange,\n readOnly = _ref.readOnly,\n disabled = _ref.disabled,\n showClearIcon = _ref.showClearIcon,\n rest = _objectWithoutProperties(_ref, _excluded);\n var renderLabel = function renderLabel() {\n if (label) {\n if (typeof label === 'function') {\n return label({\n error: error\n });\n }\n if (_typeof(label) === 'object') {\n return label;\n }\n return /*#__PURE__*/React.createElement(Label, _extends({\n error: error\n }, LabelPropsData || {}), label);\n }\n return null;\n };\n var renderHint = function renderHint() {\n if (hint) {\n if (typeof hint === 'function') {\n return hint({\n error: error\n });\n }\n if (_typeof(hint) === 'object') {\n return hint;\n }\n return /*#__PURE__*/React.createElement(FormHint, {\n error: error\n }, hint);\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Styled.SelectGroup, _extends({}, rest, {\n ref: ref\n }), renderLabel(), /*#__PURE__*/React.createElement(Select, _extends({\n error: error,\n value: value,\n size: size,\n scroll: scroll,\n onChange: onChange,\n multiple: multiple,\n fullWidth: Boolean(fullWidth)\n }, SelectPropsData || {}, {\n selectProps: selectProps,\n readOnly: readOnly,\n disabled: disabled,\n placeholder: placeholder,\n showSelectionKey: showSelectionKey,\n hideMenuItemsActions: hideMenuItemsActions,\n showClearIcon: showClearIcon\n }), children), renderHint());\n});\nSelectGroup.defaultProps = {\n error: false,\n fullWidth: false,\n readOnly: false,\n disabled: false,\n scroll: true,\n hideMenuItemsActions: false\n};\nvar size = selectPropTypes.size,\n restSelectPropTypes = _objectWithoutProperties(selectPropTypes, [\"size\"]);\nSelectGroup.propTypes = _objectSpread(_objectSpread({}, restSelectPropTypes), {}, {\n // Extends from SelectProps: multiple, error, children, value, onChange\n fullWidth: PT.bool,\n size: PT.oneOf(objectValues(InputSize)),\n label: PT.node,\n hint: PT.node,\n LabelProps: PT.exact(labelPropTypes),\n SelectProps: PT.exact(selectPropTypes),\n selectProps: PT.object,\n readOnly: PT.bool,\n scroll: PT.bool,\n showSelectionKey: PT.bool,\n disabled: PT.bool\n});\nexport default SelectGroup;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nvar baseClassName = 'Backdrop';\nvar Backdrop = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-txa5a-0\"\n})(function (_ref) {\n var palette = _ref.theme.palette;\n return css([\"position:fixed;display:flex;align-items:center;justify-content:center;inset:0px;background-color:\", \";transition:opacity 251ms cubic-bezier(0.4,0,0.2,1) 0ms;opacity:1;z-index:-1;\"], palette[PColor.Extra_0_3_Overlay]);\n});\nvar Styled = applyDisplayNames({\n Backdrop: Backdrop\n});\nexport default Styled;","import _objectDestructuringEmpty from \"@babel/runtime/helpers/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './backdrop.styles';\nvar Backdrop = intrinsicComponent(function (_ref, ref) {\n var rest = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n return /*#__PURE__*/React.createElement(Styled.Backdrop, _extends({}, rest, {\n ref: ref\n }));\n});\nBackdrop.defaultProps = {};\nBackdrop.propTypes = {};\nexport default Backdrop;","import styled, { css } from 'styled-components';\nimport { generateClassNames, applyDisplayNames, scrollBar } from '../../utils/functions';\nimport { Color as PColor } from '../../utils/types/palette';\nimport { Shadows as PShadows } from '../../utils/types/shadows';\nimport { FontVariant as FV } from '../../utils/types/typography/font-variant';\nimport Accordion from '../accordion/accordion.component';\nimport AccordionHeaderStyled from '../accordion-header/accordion-header.styles';\nimport AccordionDetailsStyled from '../accordion-details/accordion-details.styles';\nvar baseClassName = 'Drawer';\nvar TemporaryDrawer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'temporary')\n}).withConfig({\n componentId: \"sc-1riasfx-0\"\n})(function (_ref) {\n var open = _ref.open;\n return css([\"position:absolute;inset:0px;z-index:1200;visibility:\", \";\"], !open && 'hidden');\n});\nvar PersistentDrawer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'persistent')\n}).withConfig({\n componentId: \"sc-1riasfx-1\"\n})([\"\"]);\nvar Drawer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'root')\n}).withConfig({\n componentId: \"sc-1riasfx-2\"\n})(function (_ref2) {\n var open = _ref2.open,\n isCollapsed = _ref2.isCollapsed,\n _ref2$top = _ref2.top,\n top = _ref2$top === void 0 ? 0 : _ref2$top,\n _ref2$theme = _ref2.theme,\n palette = _ref2$theme.palette,\n shadows = _ref2$theme.shadows,\n breakpoints = _ref2$theme.breakpoints;\n return css([\"display:flex;flex-direction:column;flex:1 0 auto;background-color:\", \";box-shadow:\", \";overflow-y:overlay;overflow-x:hidden;transform:\", \";visibility:\", \";transition:200ms;height:calc(100% - \", \"px);\", \"{margin-top:0px;height:100%;}\", \" &{margin-top:0px;height:100%;}box-sizing:border-box;width:\", \";\", \"\"], palette[PColor.BackgroundStateless], shadows[PShadows.LeftPanelMd], open ? 'none' : 'translateX(-100%)', !open && 'hidden', top, breakpoints.down('md'), breakpoints.classes.sm, isCollapsed ? '68px' : '302px', scrollBar);\n});\nvar Header = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'header')\n}).withConfig({\n componentId: \"sc-1riasfx-3\"\n})(function (_ref3) {\n var isCollapsed = _ref3.isCollapsed;\n return css([\"display:\", \";justify-content:flex-start;align-items:center;position:relative;text-decoration:none;width:100%;box-sizing:border-box;text-align:left;margin-top:12px;transition:background-color 100ms ease-out;\"], isCollapsed ? 'none' : 'flex');\n});\nvar Body = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'body')\n}).withConfig({\n componentId: \"sc-1riasfx-4\"\n})([\"flex:1 1 auto;.SfxAccordionDetails-root{margin:0;}\"]);\nvar Footer = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'footer')\n}).withConfig({\n componentId: \"sc-1riasfx-5\"\n})(function (_ref4) {\n var isCollapsed = _ref4.isCollapsed;\n return css([\"display:flex;flex-direction:column;width:100%;padding:\", \";\"], isCollapsed ? '0px' : '0px 8px');\n});\nvar List = /*#__PURE__*/styled.ul.attrs({\n className: generateClassNames(baseClassName, 'list')\n}).withConfig({\n componentId: \"sc-1riasfx-6\"\n})(function () {\n return css([\"list-style:none;margin:12px 0;padding:0;position:relative;\"]);\n});\nvar Item = /*#__PURE__*/styled.li.attrs({\n className: generateClassNames(baseClassName, 'item')\n}).withConfig({\n componentId: \"sc-1riasfx-7\"\n})(function (_ref5) {\n var palette = _ref5.theme.palette,\n isCollapsed = _ref5.isCollapsed,\n selected = _ref5.selected;\n return css([\"display:\", \";justify-content:flex-start;align-items:center;position:relative;text-decoration:none;width:100%;box-sizing:border-box;text-align:left;padding:13px 16px;transition:background-color 100ms ease-out;margin-bottom:4px;cursor:pointer;&:hover{background-color:\", \";& > *{color:\", \";}}\", \"\"], isCollapsed ? 'none' : 'flex', palette[PColor.BackgroundActive], palette[PColor.AccentStateless], selected && css([\"background-color:\", \";& > *{color:\", \" !important;}\"], palette[PColor.BackgroundActive], palette[PColor.AccentStateless]));\n});\nvar ItemText = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'text')\n}).withConfig({\n componentId: \"sc-1riasfx-8\"\n})(function (_ref6) {\n var _ref6$theme = _ref6.theme,\n palette = _ref6$theme.palette,\n font = _ref6$theme.typography.font,\n fontKey = _ref6.font,\n isCollapsed = _ref6.isCollapsed;\n return css([\"flex:1 1 auto;color:\", \";\", \";transition:color 100ms ease-out;display:\", \";user-select:none;\"], palette[PColor.TextPrimary], font[fontKey || FV.LabelLarge], isCollapsed && 'none');\n});\nvar Icon = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'icon')\n}).withConfig({\n componentId: \"sc-1riasfx-9\"\n})(function (_ref7) {\n var palette = _ref7.theme.palette,\n isCollapsed = _ref7.isCollapsed;\n return css([\"display:flex;flex-shrink:0;color:\", \";margin-right:\", \";transition:color 100ms ease-out;\"], palette[PColor.IconsPrimary], isCollapsed ? '0px' : '12px');\n});\nvar ItemButton = /*#__PURE__*/styled.div.attrs({\n className: generateClassNames(baseClassName, 'item-button')\n}).withConfig({\n componentId: \"sc-1riasfx-10\"\n})(function (_ref8) {\n var palette = _ref8.theme.palette,\n isCollapsed = _ref8.isCollapsed,\n selected = _ref8.selected;\n return css([\"display:flex;justify-content:\", \";align-items:center;border-radius:4px;box-sizing:border-box;text-align:left;padding:\", \";width:\", \";margin-bottom:8px;margin:\", \";transition:background-color 150ms cubic-bezier(0.4,0,0.2,1) 0ms;cursor:pointer;&:hover{background-color:\", \";& > *{color:\", \";}}\", \"\"], isCollapsed ? 'center' : 'flex-start', isCollapsed ? '12px 0px' : '13px 16px', isCollapsed && '56px', isCollapsed && '8px auto', palette[PColor.BackgroundActive], palette[PColor.AccentStateless], selected && css([\"background-color:\", \";& > *{color:\", \";}\"], palette[PColor.BackgroundActive], palette[PColor.AccentStateless]));\n});\nvar CollapsedButton = /*#__PURE__*/styled(ItemButton).attrs({\n className: generateClassNames(baseClassName, 'item-button')\n}).withConfig({\n componentId: \"sc-1riasfx-11\"\n})(function (_ref9) {\n var isCollapsed = _ref9.isCollapsed;\n return css([\"\", \"\"], !isCollapsed && css([\"padding:13px 16px;\"]));\n});\nvar DrawerAccordion = /*#__PURE__*/styled(Accordion).attrs({\n className: generateClassNames(baseClassName, 'accordion')\n}).withConfig({\n componentId: \"sc-1riasfx-12\"\n})(function (_ref10) {\n var _ref10$theme = _ref10.theme,\n palette = _ref10$theme.palette,\n font = _ref10$theme.typography.font,\n selected = _ref10.selected;\n return css([\"\", \"{padding:13px 16px;transition:background-color 100ms ease-out;\", \"{\", \";color:\", \";}&:hover{background-color:\", \";& > *{color:\", \";}}\", \"}\", \"{padding:0px 16px;}\"], AccordionHeaderStyled.Header, AccordionHeaderStyled.Label, font[FV.LabelLargeEmphasis], palette[PColor.TextPrimary], palette[PColor.BackgroundActive], palette[PColor.AccentStateless], selected && css([\"\", \"{color:\", \";}\"], AccordionHeaderStyled.Label, palette[PColor.AccentStateless]), AccordionDetailsStyled.AccordionDetails);\n});\nvar Styled = applyDisplayNames({\n TemporaryDrawer: TemporaryDrawer,\n PersistentDrawer: PersistentDrawer,\n Drawer: Drawer,\n Header: Header,\n Body: Body,\n Footer: Footer,\n List: List,\n Item: Item,\n ItemButton: ItemButton,\n Icon: Icon,\n ItemText: ItemText,\n DrawerAccordion: DrawerAccordion,\n CollapsedButton: CollapsedButton\n});\nexport default Styled;","import { createContext } from 'react';\nvar DrawerContext = /*#__PURE__*/createContext({\n isCollapsed: false,\n size: 20\n});\nif (process.env.NODE_ENV !== 'production') {\n DrawerContext.displayName = 'DrawerContext';\n}\nexport default DrawerContext;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"font\"];\nimport React, { useContext } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { FontVariant } from '../../utils/types/typography/font-variant';\nimport Styled from './drawer.styles';\nimport DrawerContext from './drawer.context';\nvar DrawerItemText = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n font = _ref.font,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed;\n return /*#__PURE__*/React.createElement(Styled.ItemText, _extends({\n font: font,\n isCollapsed: isCollapsed\n }, rest, {\n ref: ref\n }), children);\n});\nDrawerItemText.defaultProps = {};\nDrawerItemText.propTypes = {\n font: PT.oneOf(objectValues(FontVariant))\n};\nexport default DrawerItemText;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"size\"];\nimport React, { useContext } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './drawer.styles';\nimport DrawerContext from './drawer.context';\nvar DrawerItemIcon = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n iconSize = _ref.size,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed,\n size = _useContext.size;\n return /*#__PURE__*/React.createElement(Styled.Icon, _extends({}, rest, {\n isCollapsed: isCollapsed,\n ref: ref\n }), children && typeof children === 'function' ? children({\n size: size || iconSize\n }) : children);\n});\nDrawerItemIcon.defaultProps = {\n size: 20\n};\nDrawerItemIcon.propTypes = {\n size: PT.number,\n children: PT.oneOfType([PT.node, PT.func]).isRequired\n};\nexport default DrawerItemIcon;","export var Variant = {\n Auto: 'auto',\n Temporary: 'temporary',\n Persistent: 'persistent'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"open\", \"iconsSize\", \"collapsed\", \"top\", \"hideBackdrop\", \"disablePortal\", \"collapseButtonLabel\", \"persistentDrawerStyles\", \"temproryDrawerStyles\", \"variant\", \"onClose\", \"onCollapse\", \"onCollapseClick\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useState, useEffect, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport PT from 'prop-types';\nimport ArrowSidebarLeftOutline from '@scaleflex/icons/arrow-sidebar-left-outline';\nimport ArrowSidebarRightOutline from '@scaleflex/icons/arrow-sidebar-right-outline';\nimport { intrinsicComponent, objectValues } from '../../utils/functions';\nimport { useMediaQuery, useTheme } from '../../theme/hooks';\nimport DrawerItemText from './drawer-item-text-component';\nimport DrawerItemIcon from './drawer-item-icon.component';\nimport DrawerContext from './drawer.context';\nimport Backdrop from '../backdrop';\nimport Styled from './drawer.styles';\nimport { Variant } from './types';\nvar Drawer = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n open = _ref.open,\n _ref$iconsSize = _ref.iconsSize,\n iconsSize = _ref$iconsSize === void 0 ? 20 : _ref$iconsSize,\n _ref$collapsed = _ref.collapsed,\n collapsed = _ref$collapsed === void 0 ? false : _ref$collapsed,\n top = _ref.top,\n hideBackdrop = _ref.hideBackdrop,\n disablePortal = _ref.disablePortal,\n _ref$collapseButtonLa = _ref.collapseButtonLabel,\n collapseButtonLabel = _ref$collapseButtonLa === void 0 ? 'Collapse menu' : _ref$collapseButtonLa,\n _ref$persistentDrawer = _ref.persistentDrawerStyles,\n persistentDrawerStyles = _ref$persistentDrawer === void 0 ? {} : _ref$persistentDrawer,\n _ref$temproryDrawerSt = _ref.temproryDrawerStyles,\n temproryDrawerStyles = _ref$temproryDrawerSt === void 0 ? {} : _ref$temproryDrawerSt,\n _ref$variant = _ref.variant,\n variant = _ref$variant === void 0 ? Variant.Auto : _ref$variant,\n onClose = _ref.onClose,\n onCollapse = _ref.onCollapse,\n onCollapseClick = _ref.onCollapseClick,\n rest = _objectWithoutProperties(_ref, _excluded);\n var theme = useTheme();\n var matchDownXl = useMediaQuery(theme.breakpoints.down('xl'));\n var _useState = useState(collapsed),\n _useState2 = _slicedToArray(_useState, 2),\n isCollapsed = _useState2[0],\n setIsCollapsed = _useState2[1];\n var temproryDrawerRef = useRef(null);\n var DrawerIconsSize = useMemo(function () {\n return iconsSize;\n }, [iconsSize]);\n var target = document.querySelector('body');\n useEffect(function () {\n setIsCollapsed(collapsed);\n }, [collapsed]);\n useEffect(function () {\n if (onCollapse) {\n onCollapse(isCollapsed);\n }\n }, [isCollapsed]);\n var handleCollapse = function handleCollapse() {\n var newCollpaseState = !isCollapsed;\n setIsCollapsed(newCollpaseState);\n if (onCollapseClick) {\n onCollapseClick(newCollpaseState);\n }\n };\n var handleClose = function handleClose() {\n if (typeof onClose === 'function') {\n onClose();\n }\n };\n var keyListener = function keyListener(ev) {\n var isTemporaryDrawer = false;\n if (temproryDrawerRef !== null && temproryDrawerRef !== void 0 && temproryDrawerRef.current) {\n var _temproryDrawerRef$cu;\n isTemporaryDrawer = (temproryDrawerRef === null || temproryDrawerRef === void 0 || (_temproryDrawerRef$cu = temproryDrawerRef.current) === null || _temproryDrawerRef$cu === void 0 ? void 0 : _temproryDrawerRef$cu.offsetWidth) > 0;\n }\n if (ev.key === 'Escape' && isTemporaryDrawer) {\n handleClose();\n }\n };\n useEffect(function () {\n document.addEventListener('keydown', keyListener);\n return function () {\n return document.removeEventListener('keydown', keyListener);\n };\n }, []);\n var renderDrawer = function renderDrawer(showCollapsedButton) {\n return /*#__PURE__*/React.createElement(Styled.Drawer, _extends({\n open: open,\n top: top\n }, rest, {\n isCollapsed: showCollapsedButton ? isCollapsed : false,\n ref: ref\n }), children, showCollapsedButton && /*#__PURE__*/React.createElement(Styled.CollapsedButton, {\n onClick: handleCollapse,\n isCollapsed: isCollapsed\n }, /*#__PURE__*/React.createElement(DrawerItemIcon, null, isCollapsed ? function (props) {\n return /*#__PURE__*/React.createElement(ArrowSidebarRightOutline, _extends({}, props, {\n size: iconsSize\n }));\n } : function (props) {\n return /*#__PURE__*/React.createElement(ArrowSidebarLeftOutline, _extends({}, props, {\n size: iconsSize\n }));\n }), /*#__PURE__*/React.createElement(DrawerItemText, null, collapseButtonLabel)));\n };\n var renderBackdrop = function renderBackdrop() {\n return !hideBackdrop && open ? /*#__PURE__*/React.createElement(Backdrop, {\n onClick: onClose\n }) : null;\n };\n var temporaryDrawer = function temporaryDrawer() {\n return disablePortal ? /*#__PURE__*/React.createElement(Styled.TemporaryDrawer, {\n ref: temproryDrawerRef,\n style: _objectSpread({}, temproryDrawerStyles),\n open: open\n }, renderBackdrop(), renderDrawer(false)) : ( /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Styled.TemporaryDrawer, {\n ref: temproryDrawerRef,\n style: _objectSpread({}, temproryDrawerStyles),\n open: open\n }, renderBackdrop(), renderDrawer(false)), target));\n };\n var persistentDrawer = function persistentDrawer() {\n return /*#__PURE__*/React.createElement(Styled.PersistentDrawer, {\n style: _objectSpread({}, persistentDrawerStyles)\n }, renderDrawer(true));\n };\n var getDrawerVariant = function getDrawerVariant() {\n switch (variant) {\n case Variant.Auto:\n return matchDownXl ? temporaryDrawer() : persistentDrawer();\n case Variant.Temporary:\n return temporaryDrawer();\n case Variant.Persistent:\n return persistentDrawer();\n default:\n return matchDownXl ? temporaryDrawer() : persistentDrawer();\n }\n };\n return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n value: {\n isCollapsed: !matchDownXl ? isCollapsed : false,\n size: DrawerIconsSize\n }\n }, getDrawerVariant());\n});\nexport var defaultProps = {\n open: false,\n hideBackdrop: false,\n iconsSize: 20,\n variant: Variant.Auto\n};\nDrawer.defaultProps = defaultProps;\nexport var propTypes = {\n onClose: PT.func.isRequired,\n onCollapse: PT.func,\n onCollapseClick: PT.func,\n children: PT.node.isRequired,\n top: PT.number,\n iconsSize: PT.number,\n open: PT.bool,\n hideBackdrop: PT.bool,\n collapsed: PT.bool,\n disablePortal: PT.bool,\n collapseButtonLabel: PT.string,\n persistentDrawerStyles: PT.object,\n temproryDrawerStyles: PT.object,\n variant: PT.oneOf(objectValues(Variant))\n};\nDrawer.propTypes = propTypes;\nexport default Drawer;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React, { useContext } from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport DrawerContext from './drawer.context';\nimport Styled from './drawer.styles';\nvar DrawerHeader = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed;\n return /*#__PURE__*/React.createElement(Styled.Header, _extends({}, rest, {\n isCollapsed: isCollapsed,\n ref: ref\n }), children);\n});\nDrawerHeader.defaultProps = {};\nDrawerHeader.propTypes = {};\nexport default DrawerHeader;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './drawer.styles';\nvar DrawerBody = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.Body, _extends({}, rest, {\n ref: ref\n }), children);\n});\nDrawerBody.defaultProps = {};\nDrawerBody.propTypes = {};\nexport default DrawerBody;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { intrinsicComponent } from '../../utils/functions';\nimport Styled from './drawer.styles';\nvar DrawerList = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Styled.List, _extends({}, rest, {\n ref: ref\n }), children);\n});\nDrawerList.defaultProps = {};\nDrawerList.propTypes = {};\nexport default DrawerList;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"selected\"];\nimport React, { useContext } from 'react';\nimport PT from 'prop-types';\nimport { intrinsicComponent } from '../../utils/functions';\nimport DrawerContext from './drawer.context';\nimport Styled from './drawer.styles';\nvar DrawerItem = intrinsicComponent(function (_ref, ref) {\n var children = _ref.children,\n selected = _ref.selected,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(DrawerContext),\n isCollapsed = _useContext.isCollapsed;\n return /*#__PURE__*/React.createElement(Styled.Item, _extends({\n selected: selected,\n isCollapsed: isCollapsed\n }, rest, {\n ref: ref\n }), children);\n});\nDrawerItem.defaultProps = {\n selected: false\n};\nDrawerItem.propTypes = {\n selected: PT.bool\n};\nexport default DrawerItem;","import{Input,Label}from\"@scaleflex/ui/core\";import styled from\"styled-components\";import{FontVariant as FV}from\"@scaleflex/ui/utils/types/typography\";var StyledHSVOptions=styled.div.withConfig({componentId:\"sc-1rfxjvn-0\"})([\"display:flex;width:100%;justify-content:space-between;gap:10px;.SfxSlider-root{min-width:100px;}\",\"\"],function(a){var b=a.isPhoneScreen;return b&&\"\\n flex-direction: column;\\n\\n .SfxSlider-root {\\n min-width: 230px;\\n }\\n \"}),StyledSliderContainer=styled.div.withConfig({componentId:\"sc-1rfxjvn-1\"})([\"display:flex;flex-direction:column;\"]),StyledSliderLabel=styled(Label).withConfig({componentId:\"sc-1rfxjvn-2\"})([\"\",\";\"],function(a){var b=a.theme;return b.typography.font[FV.LabelExtraSmallUp]}),StyledSliderWrapper=styled.div.withConfig({componentId:\"sc-1rfxjvn-3\"})([\"display:flex;align-items:center;\"]),StyledSliderInput=styled(Input).withConfig({componentId:\"sc-1rfxjvn-4\"})([\"display:inline-block;width:40px;height:28px;padding:6px 2px;margin-left:10px;border:none;.SfxInput-Base{text-align:center;width:100%;min-width:100%;max-width:100%;}\"]);export{StyledHSVOptions,StyledSliderContainer,StyledSliderLabel,StyledSliderWrapper,StyledSliderInput};","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=-1,DEFAULT_VALUE={brightness:0},MAX_VALUE=1,sliderStyle={width:150,padding:0,margin:0},BrightnessOptions=function(a){var b,c,d=a.t,e=useFinetune(Konva.Filters.Brighten,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({brightness:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_brightness-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_brightness-option-label\"},d(\"brightness\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_brightness-option\",min:MIN_VALUE,step:.05,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.brightness)&&void 0!==b?b:DEFAULT_VALUE.brightness,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.brightness)&&void 0!==c?c:DEFAULT_VALUE.brightness,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default BrightnessOptions;","import{DEFAULT_ZOOM_FACTOR}from\"./constants\";var getZoomFitFactor=function(a,b){return Math.min(a.width/b.width,a.height/b.height)||DEFAULT_ZOOM_FACTOR};export default getZoomFitFactor;","import Custom from\"@scaleflex/icons/custom\";import Ellipse from\"@scaleflex/icons/ellipse\";import Landscape from\"@scaleflex/icons/landscape\";import Portrait from\"@scaleflex/icons/portrait\";import ImageOutline from\"@scaleflex/icons/image-outline\";import{CUSTOM_CROP,ELLIPSE_CROP,ORIGINAL_CROP}from\"../../../utils/constants\";import toPrecisedFloat from\"../../../utils/toPrecisedFloat\";export var DEFAULT_CROP_PRESETS=[{titleKey:\"custom\",ratio:CUSTOM_CROP,icon:Custom,hide:function hide(){var a=0n.width||d.height>n.height?getZoomFitFactor(n,d):DEFAULT_ZOOM_FACTOR}})),c()};return React.createElement(React.Fragment,null,React.createElement(StyledToolsBarItemButtonWrapper,null,React.createElement(StyledToolsBarItemButtonLabel,{className:\"FIE_crop-tool-label FIE_selected-crop-preset-label\",isPhoneScreen:r},g(l||\"cropTool\")),React.createElement(StyledOpenMenuButton,{className:\"FIE_crop-presets-opener-button\",color:\"link-secondary\",size:\"lg\"},b?React.createElement(MoveUpOutline,{size:10}):React.createElement(MoveDownOutline,{size:10}))),React.createElement(Menu,{className:\"FIE_crop-presets-menu\",anchorEl:b,enableOverlay:!0,onClose:c,open:!!b,position:\"top\",popperOptions:{modifiers:[{name:\"offset\",options:{offset:[0,4]}}]},maxHeight:\"100%\"},React.createElement(StyledMenu,null,s.map(function renderPreset(a){var b=a.titleKey,c=a.descriptionKey,d=a.ratio,e=a.width,f=a.height,h=a.groups,i=a.icon,j=a.disableManualResize,l=a.noEffect;return h?React.createElement(CropPresetGroupsList,{key:b,titleKey:b,groups:h,Icon:i,theme:p,onItemSelect:t,t:g,disableManualResize:j}):React.createElement(CropPresetItem,{key:d,ratio:null!==d&&void 0!==d?d:toPrecisedFloat(e/f),titleKey:b,t:g,description:g(c),Icon:i,isActive:(k||ORIGINAL_CROP)===(null!==d&&void 0!==d?d:toPrecisedFloat(e/f))&&!m,theme:p,width:e,height:f,onClick:t,disableManualResize:j,noEffect:l})}))))};CropPresetsOption.defaultProps={anchorEl:null};export default CropPresetsOption;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useState}from\"react\";import{Crop as CropIcon}from\"@scaleflex/icons/crop\";import{useStore}from\"../../../hooks\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";import{StyledToolsBarItemButtonLabel}from\"../../ToolsBar/ToolsBar.styled\";import CropPresetsOption from\"./CropPresetsOption\";var Crop=function(a){var b=a.selectTool,c=a.isSelected,d=useStore(),e=d.config,f=d.t,g=useState(),h=_slicedToArray(g,2),i=h[0],j=h[1];return React.createElement(ToolsBarItemButton,{className:\"FIE_crop-tool\",id:TOOLS_IDS.CROP,Icon:CropIcon,onClick:function selectToolAndShowPresets(a,c){b(a),j(c.currentTarget)},isSelected:c},e[TOOLS_IDS.CROP].noPresets?React.createElement(StyledToolsBarItemButtonLabel,{className:\"FIE_crop-tool-label\"},f(\"cropTool\")):React.createElement(CropPresetsOption,{anchorEl:i,onClose:function closeCropPresets(){j(null)}}))};Crop.defaultProps={isSelected:!1};export default Crop;","import React,{useCallback,useMemo}from\"react\";import{FlipX as FlipXIcon}from\"@scaleflex/icons/flip-x\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{FLIP_DIRECTIONS,TOOLS_IDS}from\"../../../utils/constants\";import{TOGGLE_FLIP}from\"../../../actions\";import{usePhoneScreen,useStore}from\"../../../hooks\";var xFlipReverseSideStyle={transform:\"scaleX(-1)\"},FlipX=function(a){var b=a.selectTool,c=a.isSelected,d=a.t,e=useStore(),f=e.dispatch,g=e.adjustments.isFlippedX,h=usePhoneScreen(320),i=useMemo(function(){return{reverseLabelOfCurrXFlipDir:g?d(\"unFlipX\"):d(\"flipX\"),reverseIconOfCurrXFlipDir:function(){return React.createElement(FlipXIcon,{size:h?20:16,style:g?xFlipReverseSideStyle:void 0})}}},[g]),j=i.reverseLabelOfCurrXFlipDir,k=i.reverseIconOfCurrXFlipDir,l=useCallback(function(){f({type:TOGGLE_FLIP,payload:{direction:FLIP_DIRECTIONS.X}})},[]),m=useCallback(function(a){b(a),l()},[]);return React.createElement(ToolsBarItemButton,{className:\"FIE_flip-x-tool-button\",id:TOOLS_IDS.FLIP_X,label:j,Icon:k,onClick:m,isSelected:c})};FlipX.defaultProps={isSelected:!1};export default FlipX;","import React,{useCallback,useMemo}from\"react\";import{FlipY as FlipYIcon}from\"@scaleflex/icons/flip-y\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{FLIP_DIRECTIONS,TOOLS_IDS}from\"../../../utils/constants\";import{TOGGLE_FLIP}from\"../../../actions\";import{usePhoneScreen,useStore}from\"../../../hooks\";var xFlipReverseSideStyle={transform:\"scaleY(-1)\"},FlipY=function(a){var b=a.selectTool,c=a.isSelected,d=a.t,e=useStore(),f=e.dispatch,g=e.adjustments.isFlippedY,h=usePhoneScreen(320),i=useMemo(function(){return{reverseLabelOfCurrXFlipDir:g?d(\"unFlipY\"):d(\"flipY\"),reverseIconOfCurrXFlipDir:function(){return React.createElement(FlipYIcon,{size:h?20:16,style:g?xFlipReverseSideStyle:void 0})}}},[g]),j=i.reverseLabelOfCurrXFlipDir,k=i.reverseIconOfCurrXFlipDir,l=useCallback(function(){f({type:TOGGLE_FLIP,payload:{direction:FLIP_DIRECTIONS.Y}})},[]),m=useCallback(function(a){b(a),l()},[]);return React.createElement(ToolsBarItemButton,{className:\"FIE_flip-y-tool-button\",id:TOOLS_IDS.FLIP_Y,label:j,Icon:k,onClick:m,isSelected:c})};FlipY.defaultProps={isSelected:!1};export default FlipY;","import React from\"react\";import{RotationLeft as RotateIcon}from\"@scaleflex/icons/rotation-left\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var RotateButton=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_rotate-tool-button\",id:TOOLS_IDS.ROTATE,label:d(\"rotateTool\"),Icon:RotateIcon,onClick:b,isSelected:c})};RotateButton.defaultProps={isSelected:!1};export default RotateButton;","import styled from\"styled-components\";import{IconButton,RotationSlider}from\"@scaleflex/ui/core\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledRotationOptions=styled.div.withConfig({componentId:\"sc-wbx58r-0\"})([\"display:flex;align-items:center;gap:16px;\"]),StyledRotationSlider=styled(RotationSlider).withConfig({componentId:\"sc-wbx58r-1\"})([\".SfxRotationSlider-control{width:1px;height:10px;background-color:\",\";&:before{box-shadow:unset;}}.SfxRotationSlider-mark,.SfxRotationSlider-small-dot-wrapper{padding:0;.SfxRotationSlider-mark-text{top:10px;}.SfxRotationSlider-big-dot{width:4px;height:4px;}.SfxRotationSlider-small-dot{width:1px;height:1px;}}.SfxRotationSlider-list{gap:4px;}\"],function(a){var b=a.theme.palette;return b[PC.IconsSecondary]}),StyledRotateButton=styled(IconButton).withConfig({componentId:\"sc-wbx58r-2\"})([\"\"]);export{StyledRotationOptions,StyledRotationSlider,StyledRotateButton};","import React from\"react\";import RotationLeft from\"@scaleflex/icons/rotation-left\";import RotationRight from\"@scaleflex/icons/rotation-right\";import{Rotate90}from\"@scaleflex/icons\";import{useDebouncedCallback,usePhoneScreen,useStore}from\"../../../hooks\";import{CHANGE_ROTATION,SET_RESIZE}from\"../../../actions\";import restrictNumber from\"../../../utils/restrictNumber\";import getSizeAfterRotation from\"../../../utils/getSizeAfterRotation\";import{TOOLS_IDS}from\"../../../utils/constants\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{StyledRotationOptions,StyledRotationSlider,StyledRotateButton}from\"./Rotate.styled\";var RotateOptions=function(){var a=useStore(),b=a.dispatch,c=a.adjustments.rotation,d=void 0===c?0:c,e=a.resize,f=void 0===e?{}:e,g=a.config,h=g[TOOLS_IDS.ROTATE],i=usePhoneScreen(),j=useDebouncedCallback(function(a,c){var d=restrictNumber(c,-180,180);if(b({type:CHANGE_ROTATION,payload:{rotation:d}}),f.width&&f.height){var e=getSizeAfterRotation(f.width,f.height,d);b({type:SET_RESIZE,payload:{width:e.width,height:e.height}})}},20);return\"buttons\"===h.componentType?React.createElement(React.Fragment,null,React.createElement(ToolsBarItemButton,{className:\"FIE_rotate_button_left\",id:TOOLS_IDS.IMAGE,label:\"-\".concat(h.angle,\"\\xB0\"),Icon:RotationLeft,onClick:function changeRotationButtonNegative(a){var b=d-h.angle;j(a,b)}}),React.createElement(ToolsBarItemButton,{className:\"FIE_rotate_button_right\",id:TOOLS_IDS.IMAGE,label:\"+\".concat(h.angle,\"\\xB0\"),Icon:RotationRight,onClick:function changeRotationButtonPositive(a){var b=d+h.angle;j(a,b)}})):React.createElement(StyledRotationOptions,null,React.createElement(StyledRotationSlider,{className:\"FIE_rotate-slider\",showCurrentMarkText:!0,min:-180,max:180,step:i?h.angle/3:1,value:d,angle:h.angle||90,onChange:j}),React.createElement(StyledRotateButton,{size:\"sm\",color:\"basic\",onClick:function onClick(a){return j(a,d+90)}},React.createElement(Rotate90,{width:15})))};export default RotateOptions;","import React from\"react\";import{Contrast as ContrastIcon}from\"@scaleflex/icons/contrast\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var Contrast=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_contrast-tool-button\",id:TOOLS_IDS.CONTRAST,label:d(\"contrastTool\"),Icon:ContrastIcon,onClick:b,isSelected:c})};Contrast.defaultProps={isSelected:!1};export default Contrast;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=-100,DEFAULT_VALUE={contrast:0},MAX_VALUE=100,sliderStyle={width:150,padding:0,margin:0},ContrastOptions=function(a){var b,c,d=a.t,e=useFinetune(Konva.Filters.Contrast,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({contrast:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_contrast-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_contrast-option-label\"},d(\"contrastTool\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_contrast-option\",min:MIN_VALUE,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.contrast)&&void 0!==b?b:DEFAULT_VALUE.contrast,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.contrast)&&void 0!==c?c:DEFAULT_VALUE.contrast,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default ContrastOptions;","import React from\"react\";import{Saturation as SaturationIcon}from\"@scaleflex/icons/saturation\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var HSV=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_hsv-tool-button\",id:TOOLS_IDS.HSV,label:d(\"hsvTool\"),Icon:SaturationIcon,onClick:b,isSelected:c})};HSV.defaultProps={isSelected:!1};export default HSV;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune,usePhoneScreen}from\"../../../hooks\";import Slider from\"../../common/Slider\";import{StyledHSVOptions,StyledSliderContainer,StyledSliderLabel,StyledSliderInput,StyledSliderWrapper}from\"../tools.styled\";var DEFAULT_VALUE={hue:0,saturation:0,value:0},MAX_VALUE={hue:259,saturation:10,value:2},sliderStyle={padding:0,margin:0},isPhoneScreen=usePhoneScreen(),HSVOptions=function(a){var b,c,d,e,f,g,h=a.t,i=useFinetune(Konva.Filters.HSV,DEFAULT_VALUE),j=_slicedToArray(i,2),k=j[0],l=j[1],m=function(a,b){l(_defineProperty({},a,b>MAX_VALUE[a]?MAX_VALUE[a]:+b))};return React.createElement(StyledHSVOptions,{isPhoneScreen:isPhoneScreen},React.createElement(StyledSliderContainer,{className:\"FIE_hue-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_hue-option-label\"},h(\"hue\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_hue-option\",min:0,step:1,max:259,value:null!==(b=k.hue)&&void 0!==b?b:DEFAULT_VALUE.hue,onChange:function onChange(a){return m(\"hue\",a)},style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=k.hue)&&void 0!==c?c:DEFAULT_VALUE.hue,onChange:function onChange(a){var b=a.target.value;return m(\"hue\",b)}}))),React.createElement(StyledSliderContainer,{className:\"FIE_saturation-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_saturation-option-label\"},h(\"saturation\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_saturation-option\",min:-2,step:.5,max:10,value:null!==(d=k.saturation)&&void 0!==d?d:DEFAULT_VALUE.saturation,onChange:function onChange(a){return m(\"saturation\",a)},style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(e=k.saturation)&&void 0!==e?e:DEFAULT_VALUE.saturation,onChange:function onChange(a){var b=a.target.value;return m(\"saturation\",b)}}))),React.createElement(StyledSliderContainer,{className:\"FIE_value-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_value-option-label\"},h(\"value\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_value-option\",min:-2,step:.1,max:2,value:null!==(f=k.value)&&void 0!==f?f:DEFAULT_VALUE.value,onChange:function onChange(a){return m(\"value\",a)},style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(g=k.value)&&void 0!==g?g:DEFAULT_VALUE.value,onChange:function onChange(a){var b=a.target.value;return m(\"value\",b)}}))))};export default HSVOptions;","import React from\"react\";import{Blur as BlurIcon}from\"@scaleflex/icons/blur\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var Blur=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_blur-tool-button\",id:TOOLS_IDS.BLUR,label:d(\"blurTool\"),Icon:BlurIcon,onClick:b,isSelected:c})};Blur.defaultProps={isSelected:!1};export default Blur;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import Konva from\"konva\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=0,DEFAULT_VALUE={blurRadius:0},MAX_VALUE=100,sliderStyle={width:150,padding:0,margin:0},BlurOptions=function(a){var b,c,d=a.t,e=useFinetune(Konva.Filters.Blur,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({blurRadius:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_blur-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_blur-option-label\"},d(\"blur\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_blur-option\",min:MIN_VALUE,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.blurRadius)&&void 0!==b?b:DEFAULT_VALUE.blurRadius,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.blurRadius)&&void 0!==c?c:DEFAULT_VALUE.blurRadius,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default BlurOptions;","import React from\"react\";import{Temprature as WarmthIcon}from\"@scaleflex/icons/tempreture\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var Warmth=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_warmth-tool-button\",id:TOOLS_IDS.WARMTH,label:d(\"warmthTool\"),Icon:WarmthIcon,onClick:b,isSelected:c})};Warmth.defaultProps={isSelected:!1};export default Warmth;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import{useFinetune}from\"../../../hooks\";import restrictNumber from\"../../../utils/restrictNumber\";import{Warmth as CustomWarmth}from\"../../../custom/finetunes\";import Slider from\"../../common/Slider\";import{StyledSliderContainer,StyledSliderInput,StyledSliderLabel,StyledSliderWrapper}from\"../tools.styled\";var MIN_VALUE=0,DEFAULT_VALUE={warmth:0},MAX_VALUE=200,sliderStyle={width:150,padding:0,margin:0},WarmthOptions=function(a){var b,c,d=a.t,e=useFinetune(CustomWarmth,DEFAULT_VALUE),f=_slicedToArray(e,2),g=f[0],h=f[1],i=function(a){h({warmth:restrictNumber(a,MIN_VALUE,MAX_VALUE)})};return React.createElement(StyledSliderContainer,{className:\"FIE_warmth-option-wrapper\"},React.createElement(StyledSliderLabel,{className:\"FIE_warmth-option-label\"},d(\"warmthTool\")),React.createElement(StyledSliderWrapper,null,React.createElement(Slider,{className:\"FIE_warmth-option\",min:MIN_VALUE,max:MAX_VALUE,width:\"124px\",value:null!==(b=g.warmth)&&void 0!==b?b:DEFAULT_VALUE.warmth,onChange:i,style:sliderStyle}),React.createElement(StyledSliderInput,{value:null!==(c=g.warmth)&&void 0!==c?c:DEFAULT_VALUE.warmth,onChange:function onChange(a){var b=a.target.value;return i(b)}})))};export default WarmthOptions;","import styled,{css}from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledCarouselWrapper=styled.div.withConfig({componentId:\"sc-1nr0bka-0\"})([\"max-width:680px;min-width:150px;position:relative;overflow:hidden;touch-action:pan-y pinch-zoom;\"]),StyledCarousel=styled.ul.withConfig({componentId:\"sc-1nr0bka-1\"})([\"padding:0;margin:0;white-space:nowrap;overflow:hidden;\"]),StyledCarouselItem=styled.li.withConfig({componentId:\"sc-1nr0bka-2\"})([\"padding:4px;display:inline-block;list-style-type:none;user-select:none;\"]),arrowsCommonStyles=css([\"position:absolute;top:0;height:100%;width:60px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1;svg{color:\",\";}\"],function(a){var b=a.theme.palette;return b[PC.IconsSecondary]}),StyledPrevArrowWrapper=styled.div.withConfig({componentId:\"sc-1nr0bka-3\"})([\"\",\" left:0;justify-content:flex-start;background:linear-gradient( 90deg,#ffffff 1.56%,rgba(255,255,255,0.89) 52.4%,rgba(255,255,255,0.532165) 76.04%,rgba(255,255,255,0) 100% );\"],arrowsCommonStyles),StyledNextArrowWrapper=styled.div.withConfig({componentId:\"sc-1nr0bka-4\"})([\"\",\" right:0;justify-content:flex-end;background:linear-gradient( 270deg,#ffffff 1.56%,rgba(255,255,255,0.89) 52.4%,rgba(255,255,255,0.532165) 76.04%,rgba(255,255,255,0) 100% );\"],arrowsCommonStyles);export{StyledCarouselWrapper,StyledCarousel,StyledCarouselItem,StyledPrevArrowWrapper,StyledNextArrowWrapper};","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{Children,useRef,useState,useEffect}from\"react\";import{ArrowLeftOutline,ArrowRightOutline}from\"@scaleflex/icons\";import{useResizeObserver}from\"../../../hooks\";import debounce from\"../../../utils/debounce\";import getScrollOffset from\"../../../utils/getScrollOffset\";import{StyledCarouselWrapper,StyledCarousel,StyledCarouselItem,StyledNextArrowWrapper,StyledPrevArrowWrapper}from\"./Carousel.styled\";var Carousel=function(a){var b=a.children,c=a.style,d=a.className,f=useRef(!1),g=useRef(),h=useResizeObserver(),i=_slicedToArray(h,1),j=i[0],k=useState(!1),l=_slicedToArray(k,2),m=l[0],n=l[1],o=useState(!1),p=_slicedToArray(o,2),q=p[0],r=p[1],s=Children.toArray(b),t=function(){if(g.current){var a=g.current,b=a.scrollWidth,c=a.offsetWidth,d=a.scrollLeft,e=Math.round(b-c),f=Math.round(e-d);n(0j,l=k?MAX_FILTER_PREVIEW_WIDTH:MAX_FILTER_PREVIEW_HEIGHT*j,m=k?MAX_FILTER_PREVIEW_WIDTH/j:MAX_FILTER_PREVIEW_HEIGHT;return React.createElement(StyledFilterItem,{className:\"FIE_filters-item\",onClick:h,\"aria-selected\":e},React.createElement(FilterItemPreview,{className:\"FIE_filters-item-preview\",width:MAX_FILTER_PREVIEW_WIDTH,height:MAX_FILTER_PREVIEW_HEIGHT},React.createElement(Layer,{onTap:h},React.createElement(Image,{image:f,filters:c?[c]:[],width:l,height:m,x:-(l-MAX_FILTER_PREVIEW_WIDTH)/2,y:-(m-MAX_FILTER_PREVIEW_HEIGHT)/2,ref:g}))),React.createElement(FilterItemLabel,{className:\"FIE_filters-item-label\"},b))};FilterItem.defaultProps={filterFn:void 0};export default memo(FilterItem);","import Konva from\"konva\";import*as CustomKonvaFilters from\"../../../custom/filters\";var konvaFilters=Konva.Filters;export var AVAILABLE_FILTERS=[{label:\"Original\",filterFn:null},{label:\"Invert\",filterFn:konvaFilters.Invert},{label:\"Black & White\",filterFn:CustomKonvaFilters.BlackAndWhite},{label:\"Sepia\",filterFn:konvaFilters.Sepia},{label:\"Solarize\",filterFn:konvaFilters.Solarize},{label:\"Clarendon\",filterFn:CustomKonvaFilters.Clarendon},{label:\"Gingham\",filterFn:CustomKonvaFilters.Gingham},{label:\"Moon\",filterFn:CustomKonvaFilters.Moon},{label:\"Lark\",filterFn:CustomKonvaFilters.Lark},{label:\"Reyes\",filterFn:CustomKonvaFilters.Reyes},{label:\"Juno\",filterFn:CustomKonvaFilters.Juno},{label:\"Slumber\",filterFn:CustomKonvaFilters.Slumber},{label:\"Crema\",filterFn:CustomKonvaFilters.Crema},{label:\"Ludwig\",filterFn:CustomKonvaFilters.Ludwig},{label:\"Aden\",filterFn:CustomKonvaFilters.Aden},{label:\"Perpetua\",filterFn:CustomKonvaFilters.Perpetua},{label:\"Amaro\",filterFn:CustomKonvaFilters.Amaro},{label:\"Mayfair\",filterFn:CustomKonvaFilters.Mayfair},{label:\"Rise\",filterFn:CustomKonvaFilters.Rise},{label:\"Hudson\",filterFn:CustomKonvaFilters.Hudson},{label:\"Valencia\",filterFn:CustomKonvaFilters.Valencia},{label:\"X-Pro II\",filterFn:CustomKonvaFilters.XPro2},{label:\"Sierra\",filterFn:CustomKonvaFilters.Sierra},{label:\"Willow\",filterFn:CustomKonvaFilters.Willow},{label:\"Lo-Fi\",filterFn:CustomKonvaFilters.LoFi},{label:\"Inkwell\",filterFn:konvaFilters.Grayscale},{label:\"Hefe\",filterFn:CustomKonvaFilters.Hefe},{label:\"Nashville\",filterFn:CustomKonvaFilters.Nashville},{label:\"Stinson\",filterFn:CustomKonvaFilters.Stinson},{label:\"Vesper\",filterFn:CustomKonvaFilters.Vesper},{label:\"Earlybird\",filterFn:CustomKonvaFilters.Earlybird},{label:\"Brannan\",filterFn:CustomKonvaFilters.Brannan},{label:\"Sutro\",filterFn:CustomKonvaFilters.Sutro},{label:\"Toaster\",filterFn:CustomKonvaFilters.Toaster},{label:\"Walden\",filterFn:CustomKonvaFilters.Walden},{label:\"1977\",filterFn:CustomKonvaFilters.NinteenSeventySeven},{label:\"Kelvin\",filterFn:CustomKonvaFilters.Kelvin},{label:\"Maven\",filterFn:CustomKonvaFilters.Maven},{label:\"Ginza\",filterFn:CustomKonvaFilters.Ginza},{label:\"Skyline\",filterFn:CustomKonvaFilters.Skyline},{label:\"Dogpatch\",filterFn:CustomKonvaFilters.Dogpatch},{label:\"Brooklyn\",filterFn:CustomKonvaFilters.Brooklyn},{label:\"Helena\",filterFn:CustomKonvaFilters.Helena},{label:\"Ashby\",filterFn:CustomKonvaFilters.Ashby},{label:\"Charmes\",filterFn:CustomKonvaFilters.Charmes}];","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React from\"react\";import{useFilter,useStore}from\"../../../hooks\";import Carousel from\"../../common/Carousel\";import FilterItem from\"./FilterItem\";import{AVAILABLE_FILTERS}from\"./Filters.constants\";var style={maxWidth:\"100%\",width:\"100%\"},Filters=function(){var a=useStore(),b=a.originalImage,c=useFilter(),d=_slicedToArray(c,2),e=d[0],f=d[1];return React.createElement(Carousel,{className:\"FIE_filters\",style:style},AVAILABLE_FILTERS.map(function(a){return React.createElement(FilterItem,{key:a.label,filterLabel:a.label,filterFn:a.filterFn,applyFilter:f,isActive:e===a.filterFn,image:b})}))};export default Filters;","import React from\"react\";import{Text as TextIcon}from\"@scaleflex/icons/text\";import ToolsBarItemButton from\"../../ToolsBar/ToolsBarItemButton\";import{TOOLS_IDS}from\"../../../utils/constants\";var TextButton=function(a){var b=a.selectTool,c=a.isSelected,d=a.t;return React.createElement(ToolsBarItemButton,{className:\"FIE_text-tool-button\",id:TOOLS_IDS.TEXT,label:d(\"textTool\"),Icon:TextIcon,onClick:b,isSelected:c})};TextButton.defaultProps={isSelected:!1};export default TextButton;","import styled from\"styled-components\";import Label from\"@scaleflex/ui/core/label\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledOptions=styled.div.withConfig({componentId:\"sc-qvjmv1-0\"})([\"display:flex;align-items:center;justify-content:center;padding:8px 16px;margin-top:4px;gap:8px;flex-wrap:wrap;\",\" svg{color:\",\";}\"],function(a){var b=a.isPhoneScreen;return b&&\"\\n max-width: 315px;\\n padding: 0;\\n \"},function(a){var b=a.theme.palette;return b[PC.IconsPrimary]}),StyledOptionsWrapper=styled.div.withConfig({componentId:\"sc-qvjmv1-1\"})([\"display:flex;flex-wrap:wrap;margin-left:-4px;gap:4px;.FIE_annotation-option-triggerer{padding:6px;}\"]),StyledOptionPopupContent=styled.div.withConfig({componentId:\"sc-qvjmv1-2\"})([\"background:\",\";border-radius:4px;display:flex;flex-direction:column;padding:8px 12px;overflow:visible;\",\" \",\" *{font-family:'Roboto',sans-serif;}\"],function(a){var b=a.theme;return b.palette[\"bg-secondary\"]},function(a){var b=a.position;return b&&\"\\n display: grid;\\n grid-template-columns: repeat(4, auto);\\n padding: 0;\\n margin-top: 8px;\\n box-shadow: 0px 1px 2px \".concat(function(a){var b=a.theme;return b.palette[\"light-shadow\"]},\";\\n \")},function(a){var b=a.disablePadding;return b&&\"\\n padding: 0;\\n \"}),StyledSpacedOptionFields=styled.div.withConfig({componentId:\"sc-qvjmv1-3\"})([\"display:flex;align-items:center;gap:12px;\",\"\"],function(a){var b=a.preventFlex;return b&&\"\\n display: block;\\n\\n label {\\n margin-bottom: 8px;\\n }\\n \"}),StyledTwoColumnsContainer=styled.div.withConfig({componentId:\"sc-qvjmv1-4\"})([\"display:flex;align-items:center;justify-content:space-between;\"]),StyledColumn=styled.div.withConfig({componentId:\"sc-qvjmv1-5\"})([\"&:not(:first-child){margin-left:12px;}\"]),StyledIconWrapper=styled.div.withConfig({componentId:\"sc-qvjmv1-6\"})(function(a){var b=a.theme,c=a.addThinBorder,d=a.secondaryIconColor,e=a.active,f=a.watermarkTool;return\"\\n cursor: pointer;\\n padding: \".concat(f?\"6px\":\"8px 12px\",\";\\n border-radius: 2px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n gap: 6px;\\n\\n svg {\\n vertical-align: middle;\\n margin: 0 auto;\\n }\\n\\n \").concat(c?\"border: 0.5px solid \".concat(b.palette[\"borders-secondary\"],\";\\n padding: 8px 8px;\"):\"\",\";\\n color: \").concat(d?b.palette[PC.IconsSecondary]:\"\",\";\\n\\n \").concat(e&&\"\\n border-radius: 4px;\\n border-color: \".concat(b.palette[PC.AccentStateless],\";\\n background-color: \").concat(b.palette[PC.BackgroundActive],\";\\n\\n * {\\n color: \").concat(b.palette[PC.AccentStateless],\";\\n }\\n \"),\"\\n\\n :hover {\\n background: \").concat(b.palette[\"bg-primary-active\"],\";\\n }\\n \")}),StyledIconLabel=styled(Label).withConfig({componentId:\"sc-qvjmv1-7\"})([\"color:\",\";\"],function(a){var b=a.theme.palette;return b[PC.TextPrimary]});export{StyledTwoColumnsContainer,StyledColumn,StyledIconWrapper,StyledSpacedOptionFields,StyledOptions,StyledOptionsWrapper,StyledOptionPopupContent,StyledIconLabel};","import React from\"react\";import restrictNumber from\"../../../utils/restrictNumber\";import{Label}from\"@scaleflex/ui/core\";import{StyledSpacedOptionFields,StyledIconLabel,StyledOptionPopupContent}from\"./AnnotationOptions.styled\";import Slider from\"../Slider\";var MIN_PERCENTANGE=0,MAX_PERCENTANGE=1,OpacityField=function(a){var b=a.annotation,c=a.updateAnnotation,d=a.t,e=b.opacity,f=Math.round(100*e);return React.createElement(StyledOptionPopupContent,{disablePadding:!0},React.createElement(Label,null,d(\"transparency\")),React.createElement(StyledSpacedOptionFields,null,React.createElement(Slider,{annotation:\"%\",onChange:function changeOpacity(a){c({opacity:restrictNumber(a/100,MIN_PERCENTANGE,MAX_PERCENTANGE)})},value:f,noMargin:!0}),React.createElement(StyledIconLabel,null,\"\".concat(f,\"%\"))))};export default OpacityField;","import{Modal,ModalActions as SfxModalActions}from\"@scaleflex/ui/core\";import styled from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var ColorPickerModal=styled(Modal).withConfig({componentId:\"sc-7tf41j-0\"})([\"max-width:350px;\"]),ColorPickerWrap=styled.div.withConfig({componentId:\"sc-7tf41j-1\"})([\".SfxColorPicker-root{max-width:100%;padding:0;box-shadow:none;border:none;\",\"}.SfxColorPicker-action{display:flex;gap:12px;.SfxColorPicker-select{width:100px;}.SfxInput-root{width:190px !important;}}.SfxColorPicker-icon{color:\",\";}.SfxColorPicker-range-picker,.SfxColorPicker-bar-wrapper{width:100%;}\"],function(a){var b=a.hideModalTitle;return b&&\"padding-top: 12px;\"},function(a){var b=a.theme.palette;return b[PC.IconsPrimary]}),ModalActions=styled(SfxModalActions).withConfig({componentId:\"sc-7tf41j-2\"})([\"gap:12px;padding:24px;.SfxButton-root{flex:1;margin:0;height:40px;}\"]),Styled={ColorPickerModal:ColorPickerModal,ColorPickerWrap:ColorPickerWrap,ModalActions:ModalActions};export default Styled;","import React from\"react\";import{Button,ColorPicker,ModalContent,ModalTitle}from\"@scaleflex/ui/core\";import ColorPickerIcon from\"@scaleflex/icons/color-picker\";import{useStore}from\"../../../hooks\";import Styled from\"./ColorPickerModal.styled\";var modalStyles={zIndex:1301},ColorPickerModal=function(a){var b=a.hideModalTitle,c=a.defaultColor,d=void 0===c?\"\":c,e=a.onChange,f=a.open,g=a.pinnedColors,h=a.onClose,i=a.onApply,j=useStore(),k=j.t;return f?React.createElement(Styled.ColorPickerModal,{onClose:h,open:f,fullWidth:!0,modalStyles:modalStyles},!b&&React.createElement(ModalTitle,{onClose:h,primary:k(\"colorPickerModalTitleLabel\",\"Pick color\"),icon:React.createElement(ColorPickerIcon,{size:29}),iconShadow:!0,variant:\"with-icon\"}),React.createElement(ModalContent,null,React.createElement(Styled.ColorPickerWrap,{hideModalTitle:b},React.createElement(ColorPicker,{onChange:e,pinnedColors:g,defaultColor:d,showTransparentColor:!0}))),React.createElement(Styled.ModalActions,null,React.createElement(Button,{color:\"basic\",onClick:h},k(\"cancel\")),React.createElement(Button,{color:\"primary\",onClick:i},k(\"apply\")))):null};ColorPickerModal.defaultProps={defaultColor:\"\",pinnedColors:[],onChange:function onChange(){},open:!1,hideModalTitle:!1,onClose:function onClose(){},onApply:function onApply(){}};export default ColorPickerModal;","import styled from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledPickerTrigger=styled.div.attrs(function(a){var b=a.$color;return{style:{background:\"rgba(0,0,0,0)\"===b?\"repeating-conic-gradient(#5d6d7e 0% 25%, transparent 0% 50%) 50% / 8px 8px\":b}}}).withConfig({componentId:\"sc-zmv0gj-0\"})([\"background:\",\";border-radius:4px;width:32px;height:32px;border:1px solid \",\";cursor:pointer;box-sizing:border-box;\"],function(a){var b=a.theme;return b.palette[\"icons-primary\"]},function(a){var b=a.theme;return b.palette[PC.BorderPrimaryStateless]});export{StyledPickerTrigger};","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useEffect,useRef,useState}from\"react\";import{useStore}from\"../../../hooks\";import{SET_LATEST_COLOR}from\"../../../actions\";import ColorPickerModal from\"../ColorPickerModal\";import{StyledPickerTrigger}from\"./ColorInput.styled\";var pinnedColorsKey=\"FIE_pinnedColors\",ColorInput=function(a){var b,c=a.onChange,d=a.color,e=a.colorFor,f=useStore(),g=f.selectionsIds,h=void 0===g?[]:g,i=f.config.annotationsCommon,j=void 0===i?{}:i,k=f.dispatch,l=f.latestColors,m=void 0===l?{}:l,n=m[e],o=useState(),p=_slicedToArray(o,2),q=p[0],r=p[1],s=useState(function(){return n||d||j.fill}),t=_slicedToArray(s,2),u=t[0],v=t[1],w=useState(null!==(b=window)&&void 0!==b&&b.localStorage?JSON.parse(localStorage.getItem(pinnedColorsKey)||\"[]\"):[]),x=_slicedToArray(w,2),y=x[0],z=x[1],A=useRef(u),B=function(a){var b;if(null!==(b=window)&&void 0!==b&&b.localStorage){var c=window.localStorage.getItem(pinnedColorsKey);if(JSON.stringify(a)!==c){var d=a.slice(-9);window.localStorage.setItem(pinnedColorsKey,JSON.stringify(d)),z(d)}}},C=function(a){r(q?null:a.currentTarget)};return useEffect(function(){var a=0===h.length&&n||d;v(a),c(a)},[d,h]),React.createElement(React.Fragment,null,React.createElement(StyledPickerTrigger,{className:\"FIE_color-picker-triggerer\",onClick:C,$color:u,onChange:c}),React.createElement(ColorPickerModal,{hideModalTitle:!0,onChange:function changeColor(a,b,d){v(b),c(b),B(d),n!==b&&k({type:SET_LATEST_COLOR,payload:{latestColors:_defineProperty({},e,b)}})},defaultColor:u,pinnedColors:y,open:!!q,onClose:function closePicker(a){c(A.current||u),C(a)},onApply:C}))};ColorInput.defaultProps={color:void 0};export default ColorInput;","import React from\"react\";import restrictNumber from\"../../../utils/restrictNumber\";import ColorInput from\"../ColorInput\";import{StyledSpacedOptionFields}from\"./AnnotationOptions.styled\";import Slider from\"../Slider\";var MIN_PERCENTANGE=0,MAX_PERCENTANGE=100,StrokeFields=function(a){var b=a.annotation,c=a.updateAnnotation,d=b.stroke,e=b.strokeWidth;return React.createElement(StyledSpacedOptionFields,null,React.createElement(Slider,{annotation:\"px\",onChange:function changeStrokeWidth(a){c({strokeWidth:restrictNumber(a,MIN_PERCENTANGE,MAX_PERCENTANGE)})},value:e,noMargin:!0}),React.createElement(ColorInput,{color:d,onChange:function changeStrokeColor(a){c({stroke:a})},colorFor:\"stroke\"}))};export default StrokeFields;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import React from\"react\";import Label from\"@scaleflex/ui/core/label\";import restrictNumber from\"../../../utils/restrictNumber\";import ColorInput from\"../ColorInput\";import{StyledTwoColumnsContainer,StyledColumn,StyledSpacedOptionFields}from\"./AnnotationOptions.styled\";import Slider from\"../Slider\";var ShadowFields=function(a){var b=a.annotation,c=a.updateAnnotation,d=a.t,e=b.shadowOffsetX,f=b.shadowOffsetY,g=b.shadowBlur,h=b.shadowColor,i=b.shadowOpacity,j=function(a,b){var d=2parseFloat(k))){var m=Math.min(10*h.width,10*h.height),o=getSizeAfterRotation(h.width,h.height,n),p=_defineProperty({},f,k?restrictNumber(k,0,m):k),q=\"height\"===f,r=q?\"width\":\"height\",s=null!==(d=c.ratioUnlocked)&&void 0!==d?d:i.ratioUnlocked;if(!s){var t=o.width/o.height;p[r]=q?Math.round(p[f]*t):Math.round(p[f]/t)}if(p[f]!==i[f]||p[r]!==i[r]){if(\"function\"==typeof b)return void b(p);g({type:SET_RESIZE,payload:p});var u=l.width&&l.height&&l||j,v=_objectSpread(_objectSpread({},i),p);g({type:ZOOM_CANVAS,payload:{factor:v.width&&v.height?getZoomFitFactor(u,v):DEFAULT_ZOOM_FACTOR,isAbsoluteZoom:!0}})}}},r=\"undefined\"==typeof i.width&&\"undefined\"==typeof i.height||h.width===i.width&&h.height===i.height,s=getProperDimensions((c.width||c.height)&&c||i,l,j,h,n),t=i.manualChangeDisabled,u=\"undefined\"!=typeof i.width&&!i.width,v=\"undefined\"!=typeof i.height&&!i.height;return React.createElement(StyledResizeWrapper,{className:\"FIE_resize-tool-options\",alignment:e},React.createElement(StyledResizeInput,{className:\"FIE_resize-width-option\",value:u?\"\":s.width,name:\"width\",onChange:t?void 0:q,inputMode:\"numeric\",title:p(\"resizeWidthTitle\"),label:p(\"width\"),inputProps:{type:\"number\"},size:\"sm\",iconEnd:\"px\",placeholder:\"Width\",disabled:t}),React.createElement(StyledRatioLockIcon,{className:\"FIE_resize-ratio-locker\",title:p(\"toggleRatioLockTitle\"),onClick:t?void 0:function toggleRatioLock(){return\"function\"==typeof b?void b({ratioUnlocked:!c.ratioUnlocked}):void g({type:SET_RESIZE,payload:{ratioUnlocked:!i.ratioUnlocked}})},color:\"basic\",size:\"sm\",disabled:t},c.ratioUnlocked||i.ratioUnlocked?React.createElement(UnlockOutline,{size:16,color:o.palette.success}):React.createElement(LockOutline,{size:16,color:o.palette.error})),React.createElement(StyledResizeInput,{className:\"FIE_resize-height-option\",value:v?\"\":s.height,name:\"height\",onChange:t?void 0:q,inputMode:\"numeric\",title:p(\"resizeHeightTitle\"),label:p(\"height\"),inputProps:{type:\"number\"},size:\"sm\",iconEnd:\"px\",placeholder:\"Height\",disabled:t}),!d&&React.createElement(StyledResetButton,{className:\"FIE_resize-reset-button\",size:\"sm\",color:\"basic\",onClick:r||t?void 0:function resetResize(){g({type:SET_RESIZE,payload:{width:void 0,height:void 0,ratioUnlocked:!1}});var a=l.width&&l.height&&l||j;g({type:ZOOM_CANVAS,payload:{factor:getZoomFitFactor(a,a)}})},disabled:r||t},React.createElement(Reset,null)))};Resize.defaultProps={onChange:void 0,currentSize:{},hideResetButton:!1,alignment:\"center\"};export default Resize;","import styled from\"styled-components\";var StyledWatermarkWrapper=styled.div.withConfig({componentId:\"sc-fvaj5j-0\"})([\"display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;overflow:hidden;\",\";\"],function(a){var b=a.noWrap;return b?\"flex-wrap: nowrap;\":\"\"}),StyledControlsWrapper=styled.div.withConfig({componentId:\"sc-fvaj5j-1\"})([\"margin-bottom:8px;\"]),StyledWatermarkGalleryItem=styled.div.withConfig({componentId:\"sc-fvaj5j-2\"})(function(a){var b=a.theme;return\"\\n padding: 6px 4px;\\n border: 1px solid \".concat(b.palette[\"borders-secondary\"],\";\\n width: fit-content;\\n height: 32px;\\n border-radius: 2px;\\n overflow: hidden;\\n cursor: pointer;\\n border-radius: 4px;\\n\\n :hover {\\n background: \").concat(b.palette[\"bg-primary-active\"],\";\\n }\\n\\n &[aria-selected='true'] {\\n background: \").concat(b.palette[\"bg-primary-active\"],\";\\n border-color: \").concat(b.palette[\"accent-primary-active\"],\";\\n }\\n\\n img {\\n max-width: 100%;\\n max-height: 100%;\\n }\\n \")});export{StyledWatermarkWrapper,StyledControlsWrapper,StyledWatermarkGalleryItem};","import React,{useMemo}from\"react\";import{useStore}from\"../../../hooks\";import{TOOLS_IDS,WATERMARK_ANNOTATION_ID}from\"../../../utils/constants\";import Carousel from\"../../common/Carousel\";import{SET_FEEDBACK}from\"../../../actions\";import{StyledWatermarkGalleryItem}from\"./Watermark.styled\";var WatermarksGallery=function(a){var b=a.addImgWatermark,c=a.loadAndSetWatermarkImg,d=a.style,e=useStore(),f=e.config,g=e.annotations,h=e.dispatch,i=e.t,j=useMemo(function(){var a;return null===(a=(g[WATERMARK_ANNOTATION_ID]||{}).image)||void 0===a?void 0:a.src},[g[WATERMARK_ANNOTATION_ID]]),k=function(a){var c=a.currentTarget.children[0];if(c.complete){if(!c.naturalWidth)return void h({type:SET_FEEDBACK,payload:{feedback:{message:i(\"mutualizedFailedToLoadImg\"),duration:2e3}}});b(c)}},l=f[TOOLS_IDS.WATERMARK]||{},m=l.gallery,n=void 0===m?[]:m;return 0===n.length?null:React.createElement(Carousel,{className:\"FIE_watermark-gallery\",style:d},n.map(function(a){var b=(null===a||void 0===a?void 0:a.url)||a,d=(null===a||void 0===a?void 0:a.previewUrl)||b;return React.createElement(StyledWatermarkGalleryItem,{className:\"FIE_watermark-selected-item\",onClick:function onClick(a){return b===d?k(a):c(b)},key:b,\"aria-selected\":b===j},React.createElement(\"img\",{src:d,alt:\"Failed to load.\",crossOrigin:\"Anonymous\",draggable:!1}))}))};WatermarksGallery.defaultProps={style:void 0};export default WatermarksGallery;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useState}from\"react\";import Menu from\"@scaleflex/ui/core/menu\";import Padding from\"@scaleflex/icons/padding\";import restrictNumber from\"../../../utils/restrictNumber\";import{StyledSpacedOptionFields,StyledIconWrapper,StyledOptionPopupContent,StyledIconLabel}from\"../../common/AnnotationOptions/AnnotationOptions.styled\";import Slider from\"../../common/Slider\";import{Label}from\"@scaleflex/ui/core\";var WatermarkPadding=function(a){var b=a.watermark,c=a.saveWatermark,d=a.t,e=useState(null),f=_slicedToArray(e,2),g=f[0],h=f[1],i=b.padding||0;return React.createElement(React.Fragment,null,React.createElement(StyledIconWrapper,{className:\"FIE_watermark-padding-triggerer\",title:d(\"padding\"),onClick:function openOptionPopup(a){h(a.currentTarget)},active:g},React.createElement(Padding,{size:20})),React.createElement(Menu,{className:\"FIE_watermark-padding-popup\",anchorEl:g,open:!!g,onClose:function closeOptionPopup(){h(null)},position:\"top\"},React.createElement(StyledOptionPopupContent,null,React.createElement(Label,null,d(\"padding\")),React.createElement(StyledSpacedOptionFields,null,React.createElement(Slider,{annotation:\"px\",onChange:function updatePadding(a){c({padding:restrictNumber(a,0,100)})},value:i,noMargin:!0}),React.createElement(StyledIconLabel,null,\"\".concat(i,\"px\"))))))};export default WatermarkPadding;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;cr?s*w/c:r*w/b,g=_objectSpread(_objectSpread(_objectSpread({},e.annotationsCommon),e[TOOLS_IDS.IMAGE]),{},{scaleX:d,scaleY:d,padding:1,image:a,width:b,height:c,x:t+r/2-b*d/2,y:u+s/2-c*d/2,id:WATERMARK_ANNOTATION_ID,name:TOOLS_IDS.IMAGE,replaceCurrent:!0});f({type:SET_ANNOTATION,payload:g})},y=function(a){f({type:SET_ANNOTATION,payload:_objectSpread(_objectSpread({},\"function\"==typeof a?a(q):a),{},{id:WATERMARK_ANNOTATION_ID})})},z=function(a){f({type:SET_FEEDBACK,payload:{feedback:{message:a,status:FEEDBACK_STATUSES.WARNING}}})},A=function(a,b){if(a){n(!0);var c=new Image;c.onload=function(){x(c),b&&URL.revokeObjectURL(a),n(!1)},c.onerror=function(){z(g(\"mutualizedFailedToLoadImg\")),b&&URL.revokeObjectURL(a),n(!1)},c.src=a}};useEffect(function(){q&&(f({type:CLEAR_ANNOTATIONS_SELECTIONS}),f({type:SELECT_ANNOTATION,payload:{annotationId:\"watermark\"}}))},[q]),useEffect(function(){q&&(0===d.length||d[0].id!==WATERMARK_ANNOTATION_ID)&&f({type:SELECT_ANNOTATION,payload:{annotationId:\"watermark\"}})},[d]);var B=[(!e.useCloudimage||\"function\"==typeof p.onUploadWatermarkImgClick)&&{key:\"upload-watermark\",label:g(\"uploadWatermark\"),icon:UploadOutline,onClick:function handleUploadWatermarkClick(){if(\"function\"==typeof p.onUploadWatermarkImgClick){var a=p.onUploadWatermarkImgClick(A);return void(a instanceof Promise&&a.then(function(){var a=0b.factor,f={x:(a.x-b.x||0)/b.factor,y:(a.y-b.y||0)/b.factor},g={x:a.x-f.x*a.factor,y:a.y-f.y*a.factor};if(e&&1===b.factor||(g.x=Math.min(0,Math.max(g.x,c*(1-b.factor))),g.y=Math.min(0,Math.max(g.y,d*(1-b.factor)))),1>a.factor){var h=c-c*a.factor,i=d-d*a.factor;g.x+=h/2,g.y+=i/2}return _objectSpread(_objectSpread({},g),{},{factor:a.factor})};export default calculateZoomData;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";import _objectWithoutProperties from\"@babel/runtime/helpers/objectWithoutProperties\";var _excluded=[\"preparedDimensions\"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;cf.x+f.width&&(g.width=f.x+f.width-g.x),g.y+g.height>f.y+f.height&&(g.height=f.y+f.height-g.y),\"number\"==typeof d&&!compareRatios(g.width/g.height,d)){var h=g.height*d,i=g.width/d;toPrecisedFloat(g.y+i)<=f.y+f.height?g.height=i:g.width=h}if((e.minWidth&&g.width<=e.minWidth||e.maxWidth&&g.width>=e.maxWidth)&&(g.width=restrictNumber(g.width,e.minWidth,e.maxWidth),g.x=a.x,g.y=a.y,\"number\"==typeof d&&(g.height=g.width/d)),(e.minHeight&&b.height<=e.minHeight||e.maxHeight&&b.height>=e.maxHeight)&&(g.height=restrictNumber(g.height,e.minHeight,e.maxHeight),g.x=a.x,g.y=a.y,\"number\"==typeof d&&(g.width=g.height*d)),\"string\"==typeof e.lockCropAreaAt){var j=getPositionByPlaceLabel(e.lockCropAreaAt,f,g),k=j.x,l=j.y;g.x=k,g.y=l}return g};","import _extends from\"@babel/runtime/helpers/extends\";import _defineProperty from\"@babel/runtime/helpers/defineProperty\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c=n.width&&j.height>=n.height;n.width&&n.height&&(df.scaledBy?f.scaledBy:1,J=_objectSpread(_objectSpread({},f),{},{width:f.width/I,height:f.height/I});F=boundResizing(J,_objectSpread(_objectSpread({},J),{},{x:0,y:0}),_objectSpread(_objectSpread({},J),{},{abstractX:0,abstractY:0}),!(A||B)&&C(),v)}else F=j;var K=F,L=K.x,M=void 0===L?0:L,x=K.y,N=void 0===x?0:x,y=K.width,O=K.height,P={x:k?f.width-M-y:M,y:l?f.height-N-O:N,ref:q,fill:\"#FFFFFF\",scaleX:1,scaleY:1,globalCompositeOperation:\"destination-out\",onDragEnd:w?void 0:H,onDragMove:w?void 0:function limitDragging(a){var b=a.target;b.setAttrs(boundDragging(b.attrs,t.current))},onTransformEnd:w?void 0:H,draggable:!w};return React.createElement(React.Fragment,null,React.createElement(Image,{image:e,x:k?f.width:0,y:l?f.height:0,width:f.width,height:f.height,filters:[Konva.Filters.Blur,Konva.Filters.Brighten],blurRadius:10,brightness:-.3,scaleX:k?-1:1,scaleY:l?-1:1,ref:s}),B?React.createElement(Ellipse,_extends({},P,{radiusX:y/2,radiusY:O/2,offset:{x:-y/2,y:-O/2}})):React.createElement(Rect,_extends({},P,{width:j.noEffect?0:y,height:j.noEffect?0:O})),j.noEffect&&React.createElement(TextNode,{name:\"Text\",id:\"no-preview-text-node\",text:p(\"cropItemNoEffect\"),x:f.width/2-noEffectTextDimensions.width/2,y:f.height/2-noEffectTextDimensions.height/2,fontSize:20,fill:\"#ffffff\",stroke:\"#ff0000\",strokeWidth:.2,shadowColor:\"#ff0000\",shadowBlur:10,annotationEvents:{},align:\"center\",width:noEffectTextDimensions.width,height:noEffectTextDimensions.height}),React.createElement(Transformer,{centeredScaling:!1,flipEnabled:!1,rotateEnabled:!1,nodes:q.current?[q.current]:[],anchorSize:14,anchorCornerRadius:7,enabledAnchors:G,ignoreStroke:!1,anchorStroke:c.palette[\"accent-primary\"],anchorFill:c.palette[\"access-primary\"],anchorStrokeWidth:2,borderStroke:c.palette[\"accent-primary\"],borderStrokeWidth:2,borderDash:[4],keepRatio:!A||!B,ref:r,boundBoxFunc:function boundBoxFunc(a,b){return boundResizing(a,b,t.current,!(A||B)&&C(),v)}}))};export default CropTransformer;","import React,{useMemo}from\"react\";import{Transformer}from\"react-konva\";import{NODES_TRANSFORMER_ID,POINTER_ICONS,TOOLS_IDS}from\"../../../utils/constants\";import{useStore}from\"../../../hooks\";import{CHANGE_POINTER_ICON,ENABLE_TEXT_CONTENT_EDIT}from\"../../../actions\";var NodesTransformer=function(){var a,b=useStore(),c=b.selectionsIds,d=void 0===c?[]:c,e=b.theme,f=b.designLayer,g=b.dispatch,h=b.config.useCloudimage,i=useMemo(function(){return null!==f&&void 0!==f&&f.findOne?d.map(function(a){return f.findOne(\"#\".concat(a))}).filter(Boolean):[]},[d]),j=function(){1===i.length&&i[0].name()===TOOLS_IDS.TEXT&&g({type:ENABLE_TEXT_CONTENT_EDIT,payload:{textIdOfEditableContent:i[0].id()}})},k=h?[\"top-left\",\"bottom-left\",\"top-right\",\"bottom-right\"]:void 0;return React.createElement(Transformer,{id:NODES_TRANSFORMER_ID,centeredScaling:!1,rotationSnaps:[0,45,90,135,180,225,270,315],nodes:i,rotateAnchorOffset:30,anchorSize:14,anchorCornerRadius:7,padding:1===i.length?null!==(a=i[0].attrs.padding)&&void 0!==a?a:1:1,ignoreStroke:!1,anchorStroke:e.palette[\"accent-primary\"],anchorFill:e.palette[\"access-primary\"],anchorStrokeWidth:2,borderStroke:e.palette[\"accent-primary\"],borderStrokeWidth:2,borderDash:[4],rotateEnabled:!h,onMouseOver:function changePointerIconToMove(){g({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS.MOVE}})},onMouseLeave:function changePointerIconToDraw(){g({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS.DRAW}})},onDblClick:j,onDblTap:j,enabledAnchors:k,flipEnabled:!h,shouldOverdrawWholeArea:!0})};export default NodesTransformer;","import React from\"react\";import{Layer}from\"react-konva\";import{useStore}from\"../../../hooks\";import{TOOLS_IDS,TRANSFORMERS_LAYER_ID}from\"../../../utils/constants\";import CropTransformer from\"./CropTransformer\";import NodesTransformer from\"./NodesTransformer\";var TransformersLayer=function(){var a=useStore(),b=a.toolId,c=a.shownImageDimensions;return React.createElement(Layer,{id:TRANSFORMERS_LAYER_ID,x:c.abstractX||0,y:c.abstractY||0},React.createElement(NodesTransformer,null),b===TOOLS_IDS.CROP&&React.createElement(CropTransformer,null))};export default TransformersLayer;","import styled from\"styled-components\";var StyledNodeControls=styled.div.withConfig({componentId:\"sc-1tst9ex-0\"})(function(a){var b=a.theme,c=a.top,d=a.left;return\"\\n position: absolute;\\n z-index: 1;\\n background: \".concat(b.palette[\"bg-secondary\"],\";\\n border-radius: 2px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0px 1px 2px \").concat(b.palette[\"light-shadow\"],\";\\n top: \").concat((c||0)+8,\"px;\\n left: \").concat((d||0)+4,\"px;\\n transform: translateX(-50%);\\n height: 32px;\\n\")});export{StyledNodeControls};","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useEffect,useMemo,useState}from\"react\";import IconButton from\"@scaleflex/ui/core/icon-button\";import DeleteOutline from\"@scaleflex/icons/delete-outline\";import Duplicate from\"@scaleflex/icons/duplicate\";import{useStore}from\"../../hooks\";import{DUPLICATE_ANNOTATIONS,REMOVE_ANNOTATIONS}from\"../../actions\";import{NODES_TRANSFORMER_ID,WATERMARK_ANNOTATION_ID}from\"../../utils/constants\";import debounce from\"../../utils/debounce\";import{StyledNodeControls}from\"./NodeControls.styled\";var NodeControls=function(){var a=useStore(),b=a.selectionsIds,c=void 0===b?[]:b,d=a.designLayer,e=a.annotations,f=a.dispatch,g=useState({left:0,top:0}),h=_slicedToArray(g,2),i=h[0],j=h[1],k=useMemo(function(){var a;return null===d||void 0===d||null===(a=d.getStage())||void 0===a?void 0:a.findOne(\"#\".concat(NODES_TRANSFORMER_ID))},[d]),l=c.length,m=debounce(function(){k&&j({left:(k.x()+k.width()/2)*k.scaleX(),top:(k.y()+k.height())*k.scaleY()})},0);if(useEffect(function(){m()},[c,k,e]),0===l||!k)return null;return React.createElement(StyledNodeControls,{className:\"FIE_annotation-controls-overlay\",left:i.left,top:i.top},c[0]!==WATERMARK_ANNOTATION_ID&&React.createElement(IconButton,{color:\"basic\",size:\"sm\",onClick:function duplicateSelectedNodes(){f({type:DUPLICATE_ANNOTATIONS,payload:{annotationsIds:c}})}},React.createElement(Duplicate,null)),React.createElement(IconButton,{color:\"basic\",size:\"sm\",onClick:function removeSelectedNodes(){f({type:REMOVE_ANNOTATIONS,payload:{annotationsIds:c}})}},React.createElement(DeleteOutline,null)))};export default NodeControls;","import _defineProperty from\"@babel/runtime/helpers/defineProperty\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;ct),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useMemo(function(){return{cursor:g===POINTER_ICONS.DEFAULT&&h===TABS_IDS.ANNOTATE?POINTER_ICONS.DRAW:g}},[h,g]),A=function(a){f({type:ZOOM_CANVAS,payload:a})},B=useCallback(function(a){var b,c;a.evt.preventDefault(),null===(b=(c=a.currentTarget).container)||void 0===b||b.call(c).focus(),a.target instanceof Konva.Stage&&0t&&u&&(a.preventDefault(),y(!0),f({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS.DRAG}}))},E=function(a){\"Space\"===a.code&&(a.preventDefault(),C())},F=function(){c.current&&c.current.container().focus()};useEffect(function(){f({type:CHANGE_POINTER_ICON,payload:{pointerCssIcon:POINTER_ICONS[x?\"DRAG\":\"DEFAULT\"]}})},[x]),useEffect(function(){y(h!==TABS_IDS.ANNOTATE&&h!==TABS_IDS.WATERMARK&&p.factor>t);var a;return c.current&&(a=c.current.container(),a.addEventListener(\"mouseenter\",F),a.addEventListener(\"keydown\",D),a.addEventListener(\"keyup\",E)),function(){a&&(a.removeEventListener(\"mouseenter\",F),a.removeEventListener(\"keydown\",D),a.removeEventListener(\"keyup\",E))}},[h,p.factor,t]);var G=l*(u&&p.factor||t);return React.createElement(StyledCanvasNode,{className:\"FIE_canvas-node\",tabIndex:-1,ref:c,width:j,height:k,scaleX:G,scaleY:G,x:u&&p.x||null,y:u&&p.y||null,zoomFactor:u&&p.factor||t,onWheel:u?function handleZoom(a){a.evt.preventDefault();var b=(p.factor||t)+a.evt.deltaY*-ZOOM_DELTA_TO_SCALE_CONVERT_FACTOR,c=a.currentTarget.getPointerPosition();A(_objectSpread(_objectSpread({},c),{},{factor:b}))}:void 0,onTap:B,onClick:B,onTouchMove:u?function(a){return zoomOnTouchesMove(a,A)}:void 0,onDragStart:function preventDraggingIfMultiTouches(a){var b;1<(null===(b=a.evt.touches)||void 0===b?void 0:b.length)&&y(!1)},onTouchEnd:u?function endTouchesZoomingEnablePanning(){endTouchesZooming(C)}:void 0,dragBoundFunc:function dragBoundFunc(a){var b=Math.min(0,Math.max(a.x,j*(1-p.factor))),c=Math.min(0,Math.max(a.y,k*(1-p.factor)));return{x:b,y:c}},draggable:u&&x,onDragEnd:function handleCanvasDragEnd(a){a.currentTarget.draggable()&&\"stage\"===a.target.nodeType.toLowerCase()&&u&&x&&A({factor:p.factor,x:a.target.x(),y:a.target.y(),preparedDimensions:!0})},style:z},b)};export default memo(CanvasNode);","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useCallback,useEffect,useRef}from\"react\";import{DesignLayer,TransformersLayer}from\"../Layers\";import{AppProviderOverridenValue}from\"../../context\";import{SET_CANVAS_SIZE}from\"../../actions\";import{useResizeObserver,useStore}from\"../../hooks\";import NodeControls from\"../NodeControls\";import CanvasNode from\"./CanvasNode\";import{CanvasContainer,StyledOrignalImage}from\"./MainCanvas.styled\";var MainCanvas=function(){var a=useResizeObserver(),b=_slicedToArray(a,1),c=b[0],d=useStore(),e=useRef(null),f=useCallback(function(a){var b=a.width,c=a.height;d.dispatch({type:SET_CANVAS_SIZE,payload:{canvasWidth:b,canvasHeight:c}})},[]);return useEffect(function(){c(e.current,f)},[]),React.createElement(CanvasContainer,{className:\"FIE_canvas-container\",ref:e},!d.textIdOfEditableContent&&React.createElement(NodeControls,null),d.isShowOriginalImage&&React.createElement(StyledOrignalImage,{className:\"FIE_original-image-compare\",src:d.originalImage.src}),React.createElement(CanvasNode,null,React.createElement(AppProviderOverridenValue,{overridingValue:d},React.createElement(DesignLayer,null),React.createElement(TransformersLayer,null))))};export default MainCanvas;","import styled from\"styled-components\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";var StyledSeparator=styled.div.withConfig({componentId:\"sc-etsyb6-0\"})([\"display:inline-block;height:\",\";width:\",\";border-radius:1px;background:\",\";\"],function(a){return a.height},function(a){return a.width},function(a){var b=a.theme.palette;return b[PC.BordersSecondary]});export{StyledSeparator};","import React from\"react\";import{StyledSeparator}from\"./Separator.styled\";var Separator=function(a){var b=a.height,c=a.width;return React.createElement(StyledSeparator,{height:b,width:c})};Separator.defaultProps={height:\"24px\",width:\"1px\"};export default Separator;","import styled from\"styled-components\";import Button from\"@scaleflex/ui/core/button\";import IconButton from\"@scaleflex/ui/core/icon-button\";import Label from\"@scaleflex/ui/core/label\";import{CrossButton,InputGroup,SelectGroup}from\"@scaleflex/ui/core\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";import{FontVariant as FV}from\"@scaleflex/ui/utils/types/typography\";var StyledTopbar=styled.div.withConfig({componentId:\"sc-21g986-0\"})([\"padding:16px;box-sizing:border-box;position:relative;width:100%;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;border-bottom:1px solid \",\";[data-phone='true'] &{padding:6px 6px 4px 6px;\",\"}\"],function(a){var b=a.theme.palette;return b[PC.BordersSecondary]},function(a){var b=a.isPhoneScreen;return b&&\"\\n padding: 12px 12px 0px;\\n gap: 12px;\\n \"}),StyledMainButtonsWrapper=styled.div.withConfig({componentId:\"sc-21g986-1\"})([\"display:flex;align-items:center;order:1;\"]),StyledControlButtonsWrapper=styled.div.withConfig({componentId:\"sc-21g986-2\"})([\"display:flex;align-items:center;order:3;gap:4px;\"]),StyledHistoryButton=styled(IconButton).withConfig({componentId:\"sc-21g986-3\"})([\"margin:\",\";svg{color:\",\";}\"],function(a){var b=a.margin;return null!==b&&void 0!==b?b:\"0 4px\"},function(a){var b=a.theme.palette,c=a.disabled;return c?b[PC.IconsMuted]:b[PC.IconsPrimary]}),StyledZoomingWrapper=styled.div.withConfig({componentId:\"sc-21g986-4\"})([\"display:flex;align-items:center;gap:2px;\"]),StyledDimensionsLabel=styled(Label).withConfig({componentId:\"sc-21g986-5\"})([\"flex-shrink:0;color:\",\";\",\";\"],function(a){var b=a.theme.palette;return b[PC.TextPlaceholder]},function(a){var b=a.theme.typography;return b.font[FV.LabelMedium]}),StyledSmallButton=styled(IconButton).withConfig({componentId:\"sc-21g986-6\"})([\"padding:8px;svg{color:\",\";}\"],function(a){var b=a.theme.palette,c=a.showBackButton;return c?b[PC.IconsPrimary]:b[PC.IconsMuted]}),StyledFlexCenterAlignedContainer=styled.div.withConfig({componentId:\"sc-21g986-7\"})([\"width:\",\";height:32px;display:block;width:100%;order:4;\",\";@media (min-width:761px){display:flex;align-items:center;justify-content:center;width:fit-content;order:2;}\"],function(a){var b=a.showBackButton;return b?\"318px\":\"384px\"},function(a){var b=a.reverseDirection;return b?\"flex-direction: row-reverse\":\"\"}),StyledZoomPercentageLabel=styled(Label).withConfig({componentId:\"sc-21g986-8\"})([\"cursor:pointer;color:\",\";\",\";\"],function(a){var b=a.theme.palette;return b[PC.TextPrimary]},function(a){var b=a.theme.typography;return b.font[FV.InputMd]}),StyledBackButtonLabel=styled.span.withConfig({componentId:\"sc-21g986-9\"})([\"\",\";\"],function(a){var b=a.theme.typography;return b.font[FV.ButtonMdEmphasis]}),StyledCloseButton=styled(CrossButton).withConfig({componentId:\"sc-21g986-10\"})([\"padding:8px;z-index:111;\"]),StyledSaveButton=styled(Button).withConfig({componentId:\"sc-21g986-11\"})([\"padding:4px 12px;\"]),StyledFileNameInput=styled(InputGroup).withConfig({componentId:\"sc-21g986-12\"})([\"\"]),StyledFileExtensionSelect=styled(SelectGroup).withConfig({componentId:\"sc-21g986-13\"})([\"margin-top:16px;\"]),StyledQualityWrapper=styled.div.withConfig({componentId:\"sc-21g986-14\"})([\"width:100%;margin-top:16px;\"]),StyledResizeOnSave=styled.div.withConfig({componentId:\"sc-21g986-15\"})([\"margin-top:16px;width:100%;\"]),StyledResizeOnSaveLabel=styled(Label).withConfig({componentId:\"sc-21g986-16\"})([\"margin-bottom:4px;\"]),StyledHistoryButtons=styled.div.withConfig({componentId:\"sc-21g986-17\"})([\"display:flex;gap:6px;\"]),StyledImageOptionsButtons=styled.div.withConfig({componentId:\"sc-21g986-18\"})([\"display:flex;gap:12px;justify-content:\",\";\"],function(a){var b=a.isPhoneScreen;return b?\"space-between\":\"center\"}),StyledMenuIconButton=styled(IconButton).withConfig({componentId:\"sc-21g986-19\"})([\"@media (min-width:761px){display:none;}\"]),StyledDimensionsButtons=styled.div.withConfig({componentId:\"sc-21g986-20\"})([\"display:flex;gap:12px;align-items:center;\"]);export{StyledTopbar,StyledFlexCenterAlignedContainer,StyledHistoryButton,StyledZoomingWrapper,StyledSmallButton,StyledZoomPercentageLabel,StyledBackButtonLabel,StyledCloseButton,StyledSaveButton,StyledFileNameInput,StyledFileExtensionSelect,StyledQualityWrapper,StyledResizeOnSave,StyledDimensionsLabel,StyledMainButtonsWrapper,StyledControlButtonsWrapper,StyledHistoryButtons,StyledImageOptionsButtons,StyledMenuIconButton,StyledDimensionsButtons,StyledResizeOnSaveLabel};","import styled,{css}from\"styled-components\";import modalTitle from\"@scaleflex/ui/core/modal-title\";import{Modal,ModalActions}from\"@scaleflex/ui/core\";import{Color as PC}from\"@scaleflex/ui/utils/types/palette\";import{FontVariant as FV}from\"@scaleflex/ui/utils/types/typography\";var StyledModal=styled(Modal).withConfig({componentId:\"sc-kpjpf5-0\"})([\"width:\",\";max-width:unset;\"],function(a){var b=a.width;return b||\"300px\"}),StyledModalTitle=styled(modalTitle).withConfig({componentId:\"sc-kpjpf5-1\"})(function(a){var b=a.theme,c=a.isWarning;return css([\"padding-bottom:0;.SfxModalTitle-Icon{background-color:\",\";}.SfxModalTitle-LabelPrimary{margin-bottom:24px;\",\";}.SfxModalTitle-LabelSecondary{\",\";text-align:center;}\"],c&&b.palette[PC.Orange_0_1_Overlay],b.typography.font[FV.TitleH3],b.typography.font[FV.TextLarge])}),StyledModalActions=styled(ModalActions).withConfig({componentId:\"sc-kpjpf5-2\"})([\"gap:12px;padding:24px;.SfxButton-root{flex:1;margin:0;height:40px;}\"]);export{StyledModal,StyledModalTitle,StyledModalActions};","import React from\"react\";import{Button,ModalContent}from\"@scaleflex/ui/core\";import{StyledModal,StyledModalTitle,StyledModalActions}from\"./Modal.styled\";var Modal=function(a){var b=a.title,c=a.hint,d=a.Icon,f=a.onDone,g=a.onCancel,h=a.doneLabel,i=a.cancelLabel,j=a.isOpened,k=a.doneButtonStyle,l=a.doneButtonColor,m=void 0===l?\"basic\":l,n=a.cancelButtonColor,o=void 0===n?\"basic\":n,p=a.children,q=a.areButtonsDisabled,r=a.zIndex,s=a.className,t=a.width,u=a.isWarning;return React.createElement(StyledModal,{className:s,open:j,onClose:g,style:{zIndex:r},onKeyUp:function onKeyUp(a){\"Enter\"===a.key&&f(a)},width:t},React.createElement(StyledModalTitle,{icon:React.createElement(d,{size:25}),iconShadow:!0,isWarning:u,onClose:g,primary:b,secondary:c,variant:\"with-icon\"}),p&&React.createElement(ModalContent,null,p),React.createElement(StyledModalActions,{align:\"center\"},React.createElement(Button,{color:o,onClick:g,size:\"md\",disabled:q},i),React.createElement(Button,{color:m,onClick:f,size:\"md\",warning:u,style:k,disabled:q},h)))};Modal.defaultProps={hint:\"\",isOpened:!1,doneLabel:\"Yes\",cancelLabel:\"No\",doneButtonStyle:void 0,doneButtonColor:\"basic\",cancelButtonColor:\"basic\",children:void 0,areButtonsDisabled:!1,zIndex:void 0,className:void 0,width:\"\",isWarning:!1};export default Modal;","import _slicedToArray from\"@babel/runtime/helpers/slicedToArray\";import React,{useState,useCallback}from\"react\";import{Warning}from\"@scaleflex/icons\";import{useStore}from\"../../hooks\";import{RESET}from\"../../actions\";import Modal from\"../common/Modal\";import{CLOSING_REASONS}from\"../../utils/constants\";var ConfirmationModal=function(a){var b=a.children,c=a.isReset,d=useStore(),e=d.t,f=d.theme,g=d.config,h=d.dispatch,i=d.isResetted,j=d.haveNotSavedChanges,k=d.config.onClose,l=useState(!1),m=_slicedToArray(l,2),n=m[0],o=m[1];if(\"function\"!=typeof k&&!c)return React.createElement(\"span\",null);var p=function(){o(!1)},q=useCallback(function(){h({type:RESET,payload:{config:g}}),p()},[g]),r=function(){c||(k(CLOSING_REASONS.CLOSE_BUTTON,j),q())};return React.createElement(React.Fragment,null,React.cloneElement(b,{onClick:!(void 0!==i)||i?r:function openModal(){o(!0)}}),n&&React.createElement(Modal,{title:c?e(\"warning\"):e(\"discardChanges\"),hint:c?e(\"changesLoseWarningHint\"):e(\"discardChangesWarningHint\"),isOpened:n,onCancel:p,onDone:c?q:r,Icon:function WarningIcon(){return React.createElement(Warning,{color:f.palette.warning,size:25})},doneLabel:e(\"confirm\"),doneButtonColor:\"warning-primary\",cancelLabel:e(\"cancel\"),width:\"400px\",isWarning:!0}))};ConfirmationModal.defaultProps={isReset:!1};export default ConfirmationModal;","import React from\"react\";import CrossOutline from\"@scaleflex/icons/cross-outline\";import{useStore}from\"../../hooks\";import Separator from\"../common/Separator\";import{StyledCloseButton}from\"./Topbar.styled\";import ConfirmationModal from\"./ConfirmationModal\";var CloseButton=function(){var a=useStore(),b=a.config.onClose;return\"function\"==typeof b?React.createElement(React.Fragment,null,React.createElement(Separator,null),React.createElement(ConfirmationModal,null,React.createElement(StyledCloseButton,{className:\"FIE_topbar-close-button\",color:\"basic\",size:\"md\"},React.createElement(CrossOutline,null)))):null};export default CloseButton;","import{DEFAULT_SAVE_QUALITY}from\"./constants\";var getDefaultSaveQuality=function(a){return 0>=a||1 svg:not([color]){color:\",\"}:disabled,[aria-disabled=\\\"true\\\"]{cursor:not-allowed;}&::-webkit-scrollbar{width:4px;height:4px;}&::-webkit-scrollbar-track{background:rgba(203,211,218,0.35);}&::-webkit-scrollbar-thumb{background:rgba(203,211,218,1);border-radius:10px;}}\"],ROOT_CONTAINER_CLASS_NAME,ROOT_CONTAINER_CLASS_NAME,function(a){var b=a.theme;return b.palette[\"icons-primary\"]});export{FontsFaces,OverrideDefaultStyles};","import React,{useEffect,memo}from\"react\";import ThemeProvider from\"@scaleflex/ui/theme\";import App from\"../App\";import{AppProvider}from\"../../context\";import defaultConfig from\"../../context/defaultConfig\";import deepMerge from\"../../utils/deepMerge\";import assignFinetuneNamesToKonva from\"../../utils/assignFinetuneNamesToKonva\";import{FontsFaces,OverrideDefaultStyles}from\"./globalStyles\";var AssemblyPoint=function(a){var b=a.source,c=a.useCloudimage,d=a.cloudimage;if(!b||\"string\"!=typeof b&&!(b instanceof HTMLImageElement))throw new Error(\"`source` property is required either a string of image url or a HTMLImageElement for the image that will be edited.\");if(c){var e,f;if(null!==d&&void 0!==d&&null!==(e=d.imageSealing)&&void 0!==e&&e.enable&&!(null!==d&&void 0!==d&&null!==(f=d.imageSealing)&&void 0!==f&&f.salt))throw new Error(\"`salt` property of imageSealing object is required in cloudimage mode as long as `imageSealing` is enabled.\")}useEffect(function(){assignFinetuneNamesToKonva()},[]);var g=deepMerge(defaultConfig,a);return React.createElement(React.StrictMode,null,React.createElement(ThemeProvider,{theme:g.theme},React.createElement(FontsFaces,null),React.createElement(OverrideDefaultStyles,null),React.createElement(AppProvider,{config:g},React.createElement(App,null))))};AssemblyPoint.defaultProps={useCloudimage:!1,cloudimage:{}};export default memo(AssemblyPoint);","import _typeof from\"@babel/runtime/helpers/typeof\";import _classCallCheck from\"@babel/runtime/helpers/classCallCheck\";import _createClass from\"@babel/runtime/helpers/createClass\";import _defineProperty from\"@babel/runtime/helpers/defineProperty\";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;carguments.length?b:c;throw new TypeError(\"Private element is not present on this object\")}import{createElement}from\"react\";import{createRoot}from\"react-dom/client\";import AssemblyPoint,{TOOLS,TABS}from\"react-filerobot-image-editor\";import deepMerge from\"react-filerobot-image-editor/lib/utils/deepMerge\";var _root=new WeakMap,_getCurrentImgDataFnRef=new WeakMap,_updateStateFnRef=new WeakMap,FilerobotImageEditor=function(){function a(b){var c=1i.map(i=>d[i]); -import{ac as Lt,F as dr,c as md,V as ut,j as je,a7 as xn,W as Ea,R as Ye,ad as Ot,ae as Pr,a3 as zt,af as La,ag as pr,i as Qe,w as Dt,n as gd,q as $c,r as vd,C as On,u as Ia,o as Vc,ai as ks,aj as yd,U as fr,Q as Ma,ak as kn,a5 as Ji,a6 as Qi,al as bd,am as wd,an as xd,ao as kd,ap as _d,aq as Cd,ab as br,ar as _s,as as Sd,at as Hc,T as Ad,aa as N,X as it,au as Td,Y as Cs,av as Od,$ as eo,aw as Dd,ax as Ed,ay as to,G as Ld,I as Id,az as Md,p as jd,K as Pd,S as Fd,aA as Nd}from"./previewUtils-B8MVMkXI.chunk.mjs";import Uc from"./NcActionButton-CAlaHBIk.chunk.mjs";import{N as Dn,c as zd,d as Bd,b as Wc,e as Rd,f as $d}from"./NcIconSvgWrapper-Bui9PhAS-40hkHiO1.chunk.mjs";import{r as ce,S as qc,G as ct,N as En,l as Re,i as St,t as Vd,a as J,b as Yc,c as Hd,d as Gc,e as Ud,f as Wd,g as qd,h as Yd,j as Gd,k as Zd,m as Zc,C as Kd,n as Ss,o as Fr,p as Uo,q as Xd,s as yt,v as Jd,w as Kc,x as Qd,y as ep,z as tp,A as np,B as rp,D as ip,E as op,F as Xc,H as ap,I as sp,J as lp,K as cp,L as up,M as hp,O as ja,P as Jc,Q as dp,R as pp,T as fp,U as Qc,V as mp,W as gp,X as vp,Y as yp,Z as bp,_ as wp,$ as xp,a0 as kp,a1 as _p,a2 as eu,a3 as tu,a4 as Cp,a5 as Sp,a6 as Ap,a7 as Tp,a8 as As,a9 as Op,aa as Dp,ab as Ep,ac as Lp,ad as Ip,ae as Mp,af as jp,ag as Pp,ah as Ts,ai as Fp,aj as Np,ak as zp,al as Bp,am as Rp,an as $p,ao as Vp,ap as Hp,aq as Up,ar as wr}from"./NcModal-D51sfqoj.chunk.mjs";import{n as ge}from"./_plugin-vue2_normalizer-DU4iP6Vu-UEw9p-J1.chunk.mjs";import nu from"./NcActionLink-DDQUkWaO.chunk.mjs";import{A as ru}from"./actionText-BMig9Egt-DrBqWVOB.chunk.mjs";const Bc="viewer",Rc="6.0.0";function Wp(){if(typeof globalThis.firstDay<"u")return globalThis.firstDay;const e=new Intl.Locale(Lt()),n=e.getWeekInfo?.()??e.weekInfo;return n?n.firstDay%7:1}function qp(){if(typeof globalThis.dayNames<"u")return globalThis.dayNames;const e=Lt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"long"})]}function Yp(){if(typeof globalThis.dayNamesShort<"u")return globalThis.dayNamesShort;const e=Lt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"short"})]}function Gp(){if(typeof globalThis.dayNamesMin<"u")return globalThis.dayNamesMin;const e=Lt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"narrow"})]}function Zp(){if(typeof globalThis.monthNames<"u")return globalThis.monthNames;const e=Lt();return[new Date(1970,0).toLocaleDateString(e,{month:"long"}),new Date(1970,1).toLocaleDateString(e,{month:"long"}),new Date(1970,2).toLocaleDateString(e,{month:"long"}),new Date(1970,3).toLocaleDateString(e,{month:"long"}),new Date(1970,4).toLocaleDateString(e,{month:"long"}),new Date(1970,5).toLocaleDateString(e,{month:"long"}),new Date(1970,6).toLocaleDateString(e,{month:"long"}),new Date(1970,7).toLocaleDateString(e,{month:"long"}),new Date(1970,8).toLocaleDateString(e,{month:"long"}),new Date(1970,9).toLocaleDateString(e,{month:"long"}),new Date(1970,10).toLocaleDateString(e,{month:"long"}),new Date(1970,11).toLocaleDateString(e,{month:"long"})]}function Kp(){if(typeof globalThis.monthNamesShort<"u")return globalThis.monthNamesShort;const e=Lt();return[new Date(1970,0).toLocaleDateString(e,{month:"short"}),new Date(1970,1).toLocaleDateString(e,{month:"short"}),new Date(1970,2).toLocaleDateString(e,{month:"short"}),new Date(1970,3).toLocaleDateString(e,{month:"short"}),new Date(1970,4).toLocaleDateString(e,{month:"short"}),new Date(1970,5).toLocaleDateString(e,{month:"short"}),new Date(1970,6).toLocaleDateString(e,{month:"short"}),new Date(1970,7).toLocaleDateString(e,{month:"short"}),new Date(1970,8).toLocaleDateString(e,{month:"short"}),new Date(1970,9).toLocaleDateString(e,{month:"short"}),new Date(1970,10).toLocaleDateString(e,{month:"short"}),new Date(1970,11).toLocaleDateString(e,{month:"short"})]}function xr(e,n,r){e.$set(e.$data._asyncComputed[n],"state",r),e.$set(e.$data._asyncComputed[n],"updating",r==="updating"),e.$set(e.$data._asyncComputed[n],"error",r==="error"),e.$set(e.$data._asyncComputed[n],"success",r==="success")}function Xp(e){return typeof e=="function"?e:e.get}function Wo(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Pa(e){return Wo(e,"lazy")&&e.lazy}function Jp(e,n){return e[Fa+n]}var Fa="async_computed$lazy_active$",or="async_computed$lazy_data$";function Qp(e,n,r){e[Fa+n]=!1,e[or+n]=r}function ef(e){return{get:function(){return this[Fa+e]=!0,this[or+e]},set:function(n){this[or+e]=n}}}function tf(e,n,r){e[or+n]=r}function nf(e,n){return e[or+n]}var rf=function(e){return function(){var n=this;return e.watch.forEach(function(r){var i=r.split(".");if(i.length===1)n[r];else try{var o=n;i.forEach(function(a){o=o[a]})}catch(a){throw console.error("AsyncComputed: bad path: ",r),a}}),e.get.call(this)}},of=function(e){return function(){return e.watch.call(this),e.get.call(this)}};function af(e){if(typeof e.watch=="function")return of(e);if(Array.isArray(e.watch))return e.watch.forEach(function(n){if(typeof n!="string")throw new Error("AsyncComputed: watch elemnts must be strings")}),rf(e);throw Error("AsyncComputed: watch should be function or an array")}var iu=typeof Symbol=="function"?Symbol("did-not-update"):{},sf=function(e,n){return function(){return e.shouldUpdate.call(this)?n.call(this):iu}},lf=function(e){return iu===e},ou="_async_computed$",Pi={install:function(e,n){n=n||{},e.config.optionMergeStrategies.asyncComputed=e.config.optionMergeStrategies.computed,e.mixin({data:function(){return{_asyncComputed:{}}},computed:{$asyncComputed:function(){return this.$data._asyncComputed}},beforeCreate:function(){var r=this.$options.asyncComputed||{};if(Object.keys(r).length){for(var i in r){var o=hf(i,r[i]);this.$options.computed[ou+i]=o}this.$options.data=uf(this.$options,n)}},created:function(){for(var r in this.$options.asyncComputed||{}){var i=this.$options.asyncComputed[r],o=au.call(this,i,n);Pa(i)?tf(this,r,o):this[r]=o}for(var a in this.$options.asyncComputed||{})cf(this,a,n,e)}})}};function cf(e,n,r,i){var o=0,a=function(s){var c=++o;lf(s)||((!s||!s.then)&&(s=Promise.resolve(s)),xr(e,n,"updating"),s.then(function(l){c===o&&(xr(e,n,"success"),e[n]=l)}).catch(function(l){if(c===o&&(xr(e,n,"error"),i.set(e.$data._asyncComputed[n],"exception",l),r.errorHandler!==!1)){var u=r.errorHandler===void 0?console.error.bind(console,"Error evaluating async computed property:"):r.errorHandler;r.useRawError?u(l,e,l.stack):u(l.stack)}}))};i.set(e.$data._asyncComputed,n,{exception:null,update:function(){e._isDestroyed||a(Xp(e.$options.asyncComputed[n]).apply(e))}}),xr(e,n,"updating"),e.$watch(ou+n,a,{immediate:!0})}function uf(e,n){var r=e.data,i=e.asyncComputed||{};return function(o){var a=(typeof r=="function"?r.call(this,o):r)||{};for(var s in i){var c=this.$options.asyncComputed[s],l=au.call(this,c,n);Pa(c)?(Qp(a,s,l),this.$options.computed[s]=ef(s)):a[s]=l}return a}}function hf(e,n){if(typeof n=="function")return n;var r=n.get;if(Wo(n,"watch")&&(r=af(n)),Wo(n,"shouldUpdate")&&(r=sf(n,r)),Pa(n)){var i=r;r=function(){return Jp(this,e)?i.call(this):nf(this,e)}}return r}function au(e,n){var r=null;return"default"in e?r=e.default:"default"in n&&(r=n.default),typeof r=="function"?r.call(this):r}typeof window<"u"&&window.Vue&&window.Vue.use(Pi);const df={name:"PlayCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var pf=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon play-circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},ff=[],mf=dr(df,pf,ff,!1,null,null);const gf=mf.exports;ce();function on(e,n,r=!1){const i=md().proxy;return r&&i.$props[e]===void 0&&i.$props.modelValue===void 0&&ut.util.warn(`Missing required prop: "modelValue" or old "${e}"`),je({get(){return i.$props[e]!==void 0?i.$props[e]:i.$props.modelValue},set(o){i.$emit("update:modelValue",o),i.$emit("update:model-value",o),i.$emit(n,o)}})}const vf=["date","datetime-local","month","time","week"],yf={name:"NcDateTimePickerNative",inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{value:{type:Date,default:void 0},modelValue:{type:Date,default:null},id:{type:String,default:()=>"date-time-picker-"+ct(),validator:e=>e.trim()!==""},type:{type:String,default:"date",validate:e=>vf.includes(e)},label:{type:String,default:"Please choose a date"},min:{type:[Boolean,Date],default:null},max:{type:[Boolean,Date],default:null},hideLabel:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["input","update:modelValue","update:model-value"],setup(){return{model:on("value","input")}},computed:{formattedValue(){return this.formatValue(this.model)},formattedMin(){return this.min?this.formatValue(this.min):!1},formattedMax(){return this.max?this.formatValue(this.max):!1},listeners(){return{...this.$listeners,input:e=>{if(isNaN(e.target.valueAsNumber))this.model=null;else if(this.type==="time"){const n=e.target.value;if(this.model===""){const{yyyy:r,MM:i,dd:o}=this.getReadableDate(new Date);this.model=new Date(`${r}-${i}-${o}T${n}`)}else{const{yyyy:r,MM:i,dd:o}=this.getReadableDate(this.model);this.model=new Date(`${r}-${i}-${o}T${n}`)}}else if(this.type==="month"){const n=(new Date(e.target.value).getMonth()+1).toString().padStart(2,"0");if(this.model===""){const{yyyy:r,dd:i,hh:o,mm:a}=this.getReadableDate(new Date);this.model=new Date(`${r}-${n}-${i}T${o}:${a}`)}else{const{yyyy:r,dd:i,hh:o,mm:a}=this.getReadableDate(this.model);this.model=new Date(`${r}-${n}-${i}T${o}:${a}`)}}else{const n=new Date(e.target.valueAsNumber).getTimezoneOffset()*1e3*60,r=e.target.valueAsNumber+n;this.model=new Date(r)}}}}},methods:{getReadableDate(e){if(e instanceof Date){const n=e.getFullYear().toString().padStart(4,"0"),r=(e.getMonth()+1).toString().padStart(2,"0"),i=e.getDate().toString().padStart(2,"0"),o=e.getHours().toString().padStart(2,"0"),a=e.getMinutes().toString().padStart(2,"0");return{yyyy:n,MM:r,dd:i,hh:o,mm:a}}},formatValue(e){if(e instanceof Date){const{yyyy:n,MM:r,dd:i,hh:o,mm:a}=this.getReadableDate(e);if(this.type==="datetime-local")return`${n}-${r}-${i}T${o}:${a}`;if(this.type==="date")return`${n}-${r}-${i}`;if(this.type==="month")return`${n}-${r}`;if(this.type==="time")return`${o}:${a}`;if(this.type==="week"){const s=new Date(n,0,1),c=Math.floor((e-s)/(1440*60*1e3)),l=Math.ceil(c/7);return`${n}-W${l}`}}else return""}}};var bf=function(){var e=this,n=e._self._c;return n("div",{staticClass:"native-datetime-picker"},[n("label",{staticClass:"native-datetime-picker--label",class:{"hidden-visually":e.hideLabel},attrs:{for:e.id}},[e._v(" "+e._s(e.label)+" ")]),n("input",e._g(e._b({staticClass:"native-datetime-picker--input",class:e.inputClass,attrs:{id:e.id,type:e.type,min:e.formattedMin,max:e.formattedMax},domProps:{value:e.formattedValue}},"input",e.$attrs,!1),e.listeners))])},wf=[],xf=ge(yf,bf,wf,!1,null,"6c1feae8");const kf=xf.exports;qc(kf);const _f={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Cf=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon alert-circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},Sf=[],Af=ge(_f,Cf,Sf,!1,null,null);const Tf=Af.exports,Of={name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Df=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon check-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},Ef=[],Lf=ge(Of,Df,Ef,!1,null,null);const If=Lf.exports,Mf={name:"NcInputField",components:{NcButton:En,AlertCircle:Tf,Check:If},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{value:{type:[String,Number],default:void 0},modelValue:{type:[String,Number],default:void 0},type:{type:String,default:"text",validator:e=>["text","password","email","tel","url","search","number"].includes(e)},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:""},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:""},disabled:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["update:value","update:modelValue","update:model-value","trailing-button-click"],setup(){const e=on("value","update:value",!0);return{isLegacy32:St,model:e}},computed:{computedId(){return this.$attrs.id&&this.$attrs.id!==""?this.$attrs.id:this.inputName},inputName(){return"input"+ct()},hasTrailingIcon(){return this.success},computedPlaceholder(){if(this.placeholder)return this.placeholder;if(this.label)return St?this.label:""},isValidLabel(){const e=this.label||this.labelOutside;return e||Re.warn("You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation."),e},ariaDescribedby(){const e=[];return this.helperText.length>0&&e.push(`${this.inputName}-helper-text`),this.$attrs["aria-describedby"]&&e.push(this.$attrs["aria-describedby"]),e.join(" ")||null}},methods:{focus(){this.$refs.input.focus()},select(){this.$refs.input.select()},handleInput(e){const n=this.type==="number"&&typeof this.model=="number"?parseFloat(e.target.value,10):e.target.value;this.model=n},handleTrailingButtonClick(e){this.$emit("trailing-button-click",e)}}};var jf=function(){var e=this,n=e._self._c;return n("div",{staticClass:"input-field",class:{"input-field--disabled":e.disabled,"input-field--error":e.error,"input-field--label-outside":e.labelOutside||!e.isValidLabel,"input-field--leading-icon":!!e.$scopedSlots.icon||!!e.$scopedSlots.default||!!e.$slots.default,"input-field--success":e.success,"input-field--trailing-icon":e.showTrailingButton||e.hasTrailingIcon,"input-field--pill":e.pill,"input-field--legacy":e.isLegacy32}},[n("div",{staticClass:"input-field__main-wrapper"},[n("input",e._g(e._b({ref:"input",staticClass:"input-field__input",class:[e.inputClass,{"input-field__input--success":e.success,"input-field__input--error":e.error}],attrs:{id:e.computedId,type:e.type,disabled:e.disabled,placeholder:e.computedPlaceholder,"aria-describedby":e.ariaDescribedby,"aria-live":"polite"},domProps:{value:e.model?.toString()},on:{input:e.handleInput}},"input",e.$attrs,!1),e.$listeners)),!e.labelOutside&&e.isValidLabel?n("label",{staticClass:"input-field__label",attrs:{for:e.computedId}},[e._v(" "+e._s(e.label)+" ")]):e._e(),n("div",{directives:[{name:"show",rawName:"v-show",value:!!e.$scopedSlots.icon||!!e.$scopedSlots.default||!!e.$slots.default,expression:"!!$scopedSlots.icon || !!$scopedSlots.default || !!$slots.default"}],staticClass:"input-field__icon input-field__icon--leading"},[e._t("icon",function(){return[e._t("default")]})],2),e.showTrailingButton?n("NcButton",{staticClass:"input-field__trailing-button",attrs:{"aria-label":e.trailingButtonLabel,disabled:e.disabled,variant:"tertiary-no-background"},on:{click:e.handleTrailingButtonClick},scopedSlots:e._u([{key:"icon",fn:function(){return[e._t("trailing-button-icon")]},proxy:!0}],null,!0)}):e.success||e.error?n("div",{staticClass:"input-field__icon input-field__icon--trailing"},[e.success?n("Check",{staticStyle:{color:"var(--color-success-text)"},attrs:{size:20}}):e.error?n("AlertCircle",{staticStyle:{color:"var(--color-error-text)"},attrs:{size:20}}):e._e()],1):e._e()],1),e.helperText.length>0?n("p",{staticClass:"input-field__helper-text-message",class:{"input-field__helper-text-message--error":e.error,"input-field__helper-text-message--success":e.success},attrs:{id:`${e.inputName}-helper-text`}},[e.success?n("Check",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e.error?n("AlertCircle",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e._e(),e._v(" "+e._s(e.helperText)+" ")],1):e._e()])},Pf=[],Ff=ge(Mf,jf,Pf,!1,null,"17c3f609");const kr=Ff.exports;ce(Vd),xn("core","capabilities",{}).password_policy,new Set(Object.keys(kr.props)),{...kr.props},Ea(async function(e){try{const{data:n}=await Ye.post(Ot("apps/password_policy/api/v1/validate"),{password:e});if(this.isValid=n.ocs.data.passed,n.ocs.data.passed){this.internalHelpMessage=J("Password is secure"),this.$emit("valid");return}this.internalHelpMessage=n.ocs.data.reason,this.$emit("invalid")}catch(n){Re.error("Password policy returned an error",n)}},500),ce(Hd,Yc),new Set(Object.keys(kr.props)),{...kr.props},ce(Gc),Pr(()=>zt(()=>Promise.resolve().then(()=>x5),void 0,import.meta.url)),Pr(()=>zt(()=>Promise.resolve().then(()=>Py),void 0,import.meta.url)),Pr(()=>zt(()=>Promise.resolve().then(()=>k5),void 0,import.meta.url)),J("Submit");const Nf={name:"NcActionRouter",mixins:[ru],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}},props:{to:{type:[String,Object],required:!0},exact:{type:Boolean,default:!1}}};var zf=function(){var e=this,n=e._self._c;return n("li",{staticClass:"action",attrs:{role:e.isInSemanticMenu&&"presentation"}},[n("RouterLink",{staticClass:"action-router focusable",attrs:{to:e.to,"aria-label":e.ariaLabel,exact:e.exact,title:e.title,rel:"nofollow noreferrer noopener",role:e.isInSemanticMenu&&"menuitem"},nativeOn:{click:function(r){return e.onClick.apply(null,arguments)}}},[e._t("icon",function(){return[n("span",{staticClass:"action-router__icon",class:[e.isIconUrl?"action-router__icon--url":e.icon],style:{backgroundImage:e.isIconUrl?`url(${e.icon})`:null},attrs:{"aria-hidden":"true"}})]}),e.name?n("span",{staticClass:"action-router__longtext-wrapper"},[n("strong",{staticClass:"action-router__name"},[e._v(" "+e._s(e.name)+" ")]),n("br"),n("span",{staticClass:"action-router__longtext",domProps:{textContent:e._s(e.text)}})]):e.isLongText?n("span",{staticClass:"action-router__longtext",domProps:{textContent:e._s(e.text)}}):n("span",{staticClass:"action-router__text"},[e._v(e._s(e.text))]),e._e()],2)],1)},Bf=[],Rf=ge(Nf,zf,Bf,!1,null,"4dae1ff7");const su=Rf.exports,$f={name:"NcActionText",mixins:[ru],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}}};var Vf=function(){var e=this,n=e._self._c;return n("li",{staticClass:"action",attrs:{role:e.isInSemanticMenu&&"presentation"}},[n("span",{staticClass:"action-text",on:{click:e.onClick}},[e._t("icon",function(){return[e.icon!==""?n("span",{staticClass:"action-text__icon",class:[e.isIconUrl?"action-text__icon--url":e.icon],style:{backgroundImage:e.isIconUrl?`url(${e.icon})`:null},attrs:{"aria-hidden":"true"}}):e._e()]}),e.name?n("span",{staticClass:"action-text__longtext-wrapper"},[n("strong",{staticClass:"action-text__name"},[e._v(" "+e._s(e.name)+" ")]),n("span",{staticClass:"action-text__longtext",domProps:{textContent:e._s(e.text)}})]):e.isLongText?n("span",{staticClass:"action-text__longtext",domProps:{textContent:e._s(e.text)}}):n("span",{staticClass:"action-text__text"},[e._v(e._s(e.text))]),e._e()],2)])},Hf=[],Uf=ge($f,Vf,Hf,!1,null,"2fe7eb92");const Wf=Uf.exports;let qf="missing-app-name";try{qf=Bc}catch{Re.error("The `@nextcloud/vue` library was used without setting / replacing the `appName`.")}let Yf="";try{Yf=Rc}catch{Re.error("The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.")}ce(Ud),La("nextcloud").persist().build(),pr().theming?.name,window.OCP?.Accessibility?.disableKeyboardShortcuts?.(),ce(Wd),window.OCP?.Accessibility?.disableKeyboardShortcuts?.();const Gf={name:"ChevronDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Zf=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon chevron-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},Kf=[],Xf=ge(Gf,Zf,Kf,!1,null,null);const Jf=Xf.exports;ce(qd);const Qf={name:"NcLoadingIcon",props:{size:{type:Number,default:20},appearance:{type:String,validator(e){return["auto","light","dark"].includes(e)},default:"auto"},name:{type:String,default:""}},computed:{colors(){const e=["#777","#CCC"];return this.appearance==="light"?e:this.appearance==="dark"?e.reverse():["var(--color-loading-light)","var(--color-loading-dark)"]}}};var e0=function(){var e=this,n=e._self._c;return n("span",{staticClass:"material-design-icon loading-icon",attrs:{"aria-label":e.name,role:"img"}},[n("svg",{attrs:{width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{fill:e.colors[0],d:"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z"}}),n("path",{attrs:{fill:e.colors[1],d:"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z"}},[e.name?n("title",[e._v(e._s(e.name))]):e._e()])])])},t0=[],n0=ge(Qf,e0,t0,!1,null,"94ff8098");const mr=n0.exports;ce(Yd),ce(Gd,Yc),ce(Zc,Zd);J("Search …"),ut.util.warn;const lu=Xd?window:void 0;function Nn(e){var n;const r=yt(e);return(n=r?.$el)!=null?n:r}function Nr(...e){let n,r,i,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([r,i,o]=e,n=lu):[n,r,i,o]=e,!n)return Fr;Array.isArray(r)||(r=[r]),Array.isArray(i)||(i=[i]);const a=[],s=()=>{a.forEach(h=>h()),a.length=0},c=(h,d,f,p)=>(h.addEventListener(d,f,p),()=>h.removeEventListener(d,f,p)),l=Dt(()=>[Nn(n),yt(o)],([h,d])=>{if(s(),!h)return;const f=Jd(d)?{...d}:d;a.push(...r.flatMap(p=>i.map(v=>c(h,p,v,f))))},{immediate:!0,flush:"post"}),u=()=>{l(),s()};return Kc(u),u}let Os=!1;function Ds(e,n,r={}){const{window:i=lu,ignore:o=[],capture:a=!0,detectIframe:s=!1}=r;if(!i)return Fr;Uo&&!Os&&(Os=!0,Array.from(i.document.body.children).forEach(v=>v.addEventListener("click",Fr)),i.document.documentElement.addEventListener("click",Fr));let c=!0;const l=v=>yt(o).some(y=>{if(typeof y=="string")return Array.from(i.document.querySelectorAll(y)).some(b=>b===v.target||v.composedPath().includes(b));{const b=Nn(y);return b&&(v.target===b||v.composedPath().includes(b))}});function u(v){const y=yt(v);return y&&y.$.subTree.shapeFlag===16}function h(v,y){const b=yt(v),w=b.$.subTree&&b.$.subTree.children;return w==null||!Array.isArray(w)?!1:w.some(_=>_.el===y.target||y.composedPath().includes(_.el))}const d=v=>{const y=Nn(e);if(v.target!=null&&!(!(y instanceof Element)&&u(e)&&h(e,v))&&!(!y||y===v.target||v.composedPath().includes(y))){if(v.detail===0&&(c=!l(v)),!c){c=!0;return}n(v)}};let f=!1;const p=[Nr(i,"click",v=>{f||(f=!0,setTimeout(()=>{f=!1},0),d(v))},{passive:!0,capture:a}),Nr(i,"pointerdown",v=>{const y=Nn(e);c=!l(v)&&!!(y&&!v.composedPath().includes(y))},{passive:!0}),s&&Nr(i,"blur",v=>{setTimeout(()=>{var y;const b=Nn(e);((y=i.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!b?.contains(i.document.activeElement)&&n(v)},0)})].filter(Boolean);return()=>p.forEach(v=>v())}const r0={[Ss.mounted](e,n){const r=!n.modifiers.bubble;if(typeof n.value=="function")e.__onClickOutside_stop=Ds(e,n.value,{capture:r});else{const[i,o]=n.value;e.__onClickOutside_stop=Ds(e,i,Object.assign({capture:r},o))}},[Ss.unmounted](e){e.__onClickOutside_stop()}};function no(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function cu(e){const n=window.getComputedStyle(e);if(n.overflowX==="scroll"||n.overflowY==="scroll"||n.overflowX==="auto"&&e.clientWidth1?!0:(n.preventDefault&&n.preventDefault(),!1)}const ro=new WeakMap;function o0(e,n=!1){const r=Qe(n);let i=null,o="";Dt(Qd(e),c=>{const l=no(yt(c));if(l){const u=l;if(ro.get(u)||ro.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(o=u.style.overflow),u.style.overflow==="hidden")return r.value=!0;if(r.value)return u.style.overflow="hidden"}},{immediate:!0});const a=()=>{const c=no(yt(e));!c||r.value||(Uo&&(i=Nr(c,"touchmove",l=>{i0(l)},{passive:!1})),c.style.overflow="hidden",r.value=!0)},s=()=>{const c=no(yt(e));!c||!r.value||(Uo&&i?.(),c.style.overflow=o,ro.delete(c),r.value=!1)};return Kc(s),je({get(){return r.value},set(c){c?a():s()}})}function a0(){let e=!1;const n=Qe(!1);return(r,i)=>{if(n.value=i.value,e)return;e=!0;const o=o0(r,i.value);Dt(n,a=>o.value=a)}}a0();var qo={exports:{}},s0=qo.exports,Es;function l0(){return Es||(Es=1,(function(e){(function(n){if(typeof r!="function"){var r=function(v){return v};r.nonNative=!0}const i=r("plaintext"),o=r("html"),a=r("comment"),s=/<(\w*)>/g,c=/<\/?([^\s\/>]+)/;function l(v,y,b){v=v||"",y=y||[],b=b||"";let w=h(y,b);return d(v,w)}function u(v,y){v=v||[],y=y||"";let b=h(v,y);return function(w){return d(w||"",b)}}l.init_streaming_mode=u;function h(v,y){return v=f(v),{allowable_tags:v,tag_replacement:y,state:i,tag_buffer:"",depth:0,in_quote_char:""}}function d(v,y){if(typeof v!="string")throw new TypeError("'html' parameter must be a string");let b=y.allowable_tags,w=y.tag_replacement,_=y.state,L=y.tag_buffer,P=y.depth,V=y.in_quote_char,D="";for(let H=0,M=v.length;H":if(V)break;if(P){P--;break}V="",_=i,L+=">",b.has(p(L))?D+=L:D+=w,L="";break;case'"':case"'":$===V?V="":V=V||$,L+=$;break;case"-":L==="i.map(i=>d[i]); +import{ac as Lt,F as dr,c as md,V as ut,j as je,a7 as xn,W as Ea,R as Ye,ad as Ot,ae as Pr,a3 as zt,af as La,ag as pr,i as Qe,w as Dt,n as gd,q as $c,r as vd,C as On,u as Ia,o as Vc,ai as ks,aj as yd,U as fr,Q as Ma,ak as kn,a5 as Ji,a6 as Qi,al as bd,am as wd,an as xd,ao as kd,ap as _d,aq as Cd,ab as br,ar as _s,as as Sd,at as Hc,T as Ad,aa as N,X as it,au as Td,Y as Cs,av as Od,$ as eo,aw as Dd,ax as Ed,ay as to,G as Ld,I as Id,az as Md,p as jd,K as Pd,S as Fd,aA as Nd}from"./previewUtils-B8MVMkXI.chunk.mjs";import Uc from"./NcActionButton-CAlaHBIk.chunk.mjs";import{N as Dn,c as zd,d as Bd,b as Wc,e as Rd,f as $d}from"./NcIconSvgWrapper-Bui9PhAS-40hkHiO1.chunk.mjs";import{r as ce,S as qc,G as ct,N as En,l as Re,i as St,t as Vd,a as J,b as Yc,c as Hd,d as Gc,e as Ud,f as Wd,g as qd,h as Yd,j as Gd,k as Zd,m as Zc,C as Kd,n as Ss,o as Fr,p as Uo,q as Xd,s as yt,v as Jd,w as Kc,x as Qd,y as ep,z as tp,A as np,B as rp,D as ip,E as op,F as Xc,H as ap,I as sp,J as lp,K as cp,L as up,M as hp,O as ja,P as Jc,Q as dp,R as pp,T as fp,U as Qc,V as mp,W as gp,X as vp,Y as yp,Z as bp,_ as wp,$ as xp,a0 as kp,a1 as _p,a2 as eu,a3 as tu,a4 as Cp,a5 as Sp,a6 as Ap,a7 as Tp,a8 as As,a9 as Op,aa as Dp,ab as Ep,ac as Lp,ad as Ip,ae as Mp,af as jp,ag as Pp,ah as Ts,ai as Fp,aj as Np,ak as zp,al as Bp,am as Rp,an as $p,ao as Vp,ap as Hp,aq as Up,ar as wr}from"./NcModal-D51sfqoj.chunk.mjs";import{n as ge}from"./_plugin-vue2_normalizer-DU4iP6Vu-UEw9p-J1.chunk.mjs";import nu from"./NcActionLink-DDQUkWaO.chunk.mjs";import{A as ru}from"./actionText-BMig9Egt-DrBqWVOB.chunk.mjs";const Bc="viewer",Rc="6.0.0";function Wp(){if(typeof globalThis.firstDay<"u")return globalThis.firstDay;const e=new Intl.Locale(Lt()),n=e.getWeekInfo?.()??e.weekInfo;return n?n.firstDay%7:1}function qp(){if(typeof globalThis.dayNames<"u")return globalThis.dayNames;const e=Lt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"long"})]}function Yp(){if(typeof globalThis.dayNamesShort<"u")return globalThis.dayNamesShort;const e=Lt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"short"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"short"})]}function Gp(){if(typeof globalThis.dayNamesMin<"u")return globalThis.dayNamesMin;const e=Lt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"narrow"})]}function Zp(){if(typeof globalThis.monthNames<"u")return globalThis.monthNames;const e=Lt();return[new Date(1970,0).toLocaleDateString(e,{month:"long"}),new Date(1970,1).toLocaleDateString(e,{month:"long"}),new Date(1970,2).toLocaleDateString(e,{month:"long"}),new Date(1970,3).toLocaleDateString(e,{month:"long"}),new Date(1970,4).toLocaleDateString(e,{month:"long"}),new Date(1970,5).toLocaleDateString(e,{month:"long"}),new Date(1970,6).toLocaleDateString(e,{month:"long"}),new Date(1970,7).toLocaleDateString(e,{month:"long"}),new Date(1970,8).toLocaleDateString(e,{month:"long"}),new Date(1970,9).toLocaleDateString(e,{month:"long"}),new Date(1970,10).toLocaleDateString(e,{month:"long"}),new Date(1970,11).toLocaleDateString(e,{month:"long"})]}function Kp(){if(typeof globalThis.monthNamesShort<"u")return globalThis.monthNamesShort;const e=Lt();return[new Date(1970,0).toLocaleDateString(e,{month:"short"}),new Date(1970,1).toLocaleDateString(e,{month:"short"}),new Date(1970,2).toLocaleDateString(e,{month:"short"}),new Date(1970,3).toLocaleDateString(e,{month:"short"}),new Date(1970,4).toLocaleDateString(e,{month:"short"}),new Date(1970,5).toLocaleDateString(e,{month:"short"}),new Date(1970,6).toLocaleDateString(e,{month:"short"}),new Date(1970,7).toLocaleDateString(e,{month:"short"}),new Date(1970,8).toLocaleDateString(e,{month:"short"}),new Date(1970,9).toLocaleDateString(e,{month:"short"}),new Date(1970,10).toLocaleDateString(e,{month:"short"}),new Date(1970,11).toLocaleDateString(e,{month:"short"})]}function xr(e,n,r){e.$set(e.$data._asyncComputed[n],"state",r),e.$set(e.$data._asyncComputed[n],"updating",r==="updating"),e.$set(e.$data._asyncComputed[n],"error",r==="error"),e.$set(e.$data._asyncComputed[n],"success",r==="success")}function Xp(e){return typeof e=="function"?e:e.get}function Wo(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Pa(e){return Wo(e,"lazy")&&e.lazy}function Jp(e,n){return e[Fa+n]}var Fa="async_computed$lazy_active$",or="async_computed$lazy_data$";function Qp(e,n,r){e[Fa+n]=!1,e[or+n]=r}function ef(e){return{get:function(){return this[Fa+e]=!0,this[or+e]},set:function(n){this[or+e]=n}}}function tf(e,n,r){e[or+n]=r}function nf(e,n){return e[or+n]}var rf=function(e){return function(){var n=this;return e.watch.forEach(function(r){var i=r.split(".");if(i.length===1)n[r];else try{var o=n;i.forEach(function(a){o=o[a]})}catch(a){throw console.error("AsyncComputed: bad path: ",r),a}}),e.get.call(this)}},of=function(e){return function(){return e.watch.call(this),e.get.call(this)}};function af(e){if(typeof e.watch=="function")return of(e);if(Array.isArray(e.watch))return e.watch.forEach(function(n){if(typeof n!="string")throw new Error("AsyncComputed: watch elemnts must be strings")}),rf(e);throw Error("AsyncComputed: watch should be function or an array")}var iu=typeof Symbol=="function"?Symbol("did-not-update"):{},sf=function(e,n){return function(){return e.shouldUpdate.call(this)?n.call(this):iu}},lf=function(e){return iu===e},ou="_async_computed$",Pi={install:function(e,n){n=n||{},e.config.optionMergeStrategies.asyncComputed=e.config.optionMergeStrategies.computed,e.mixin({data:function(){return{_asyncComputed:{}}},computed:{$asyncComputed:function(){return this.$data._asyncComputed}},beforeCreate:function(){var r=this.$options.asyncComputed||{};if(Object.keys(r).length){for(var i in r){var o=hf(i,r[i]);this.$options.computed[ou+i]=o}this.$options.data=uf(this.$options,n)}},created:function(){for(var r in this.$options.asyncComputed||{}){var i=this.$options.asyncComputed[r],o=au.call(this,i,n);Pa(i)?tf(this,r,o):this[r]=o}for(var a in this.$options.asyncComputed||{})cf(this,a,n,e)}})}};function cf(e,n,r,i){var o=0,a=function(s){var c=++o;lf(s)||((!s||!s.then)&&(s=Promise.resolve(s)),xr(e,n,"updating"),s.then(function(l){c===o&&(xr(e,n,"success"),e[n]=l)}).catch(function(l){if(c===o&&(xr(e,n,"error"),i.set(e.$data._asyncComputed[n],"exception",l),r.errorHandler!==!1)){var u=r.errorHandler===void 0?console.error.bind(console,"Error evaluating async computed property:"):r.errorHandler;r.useRawError?u(l,e,l.stack):u(l.stack)}}))};i.set(e.$data._asyncComputed,n,{exception:null,update:function(){e._isDestroyed||a(Xp(e.$options.asyncComputed[n]).apply(e))}}),xr(e,n,"updating"),e.$watch(ou+n,a,{immediate:!0})}function uf(e,n){var r=e.data,i=e.asyncComputed||{};return function(o){var a=(typeof r=="function"?r.call(this,o):r)||{};for(var s in i){var c=this.$options.asyncComputed[s],l=au.call(this,c,n);Pa(c)?(Qp(a,s,l),this.$options.computed[s]=ef(s)):a[s]=l}return a}}function hf(e,n){if(typeof n=="function")return n;var r=n.get;if(Wo(n,"watch")&&(r=af(n)),Wo(n,"shouldUpdate")&&(r=sf(n,r)),Pa(n)){var i=r;r=function(){return Jp(this,e)?i.call(this):nf(this,e)}}return r}function au(e,n){var r=null;return"default"in e?r=e.default:"default"in n&&(r=n.default),typeof r=="function"?r.call(this):r}typeof window<"u"&&window.Vue&&window.Vue.use(Pi);const df={name:"PlayCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var pf=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon play-circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e(),n("path",{attrs:{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z"}})])])},ff=[],mf=dr(df,pf,ff,!1,null,null);const gf=mf.exports;ce();function on(e,n,r=!1){const i=md().proxy;return r&&i.$props[e]===void 0&&i.$props.modelValue===void 0&&ut.util.warn(`Missing required prop: "modelValue" or old "${e}"`),je({get(){return i.$props[e]!==void 0?i.$props[e]:i.$props.modelValue},set(o){i.$emit("update:modelValue",o),i.$emit("update:model-value",o),i.$emit(n,o)}})}const vf=["date","datetime-local","month","time","week"],yf={name:"NcDateTimePickerNative",inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{value:{type:Date,default:void 0},modelValue:{type:Date,default:null},id:{type:String,default:()=>"date-time-picker-"+ct(),validator:e=>e.trim()!==""},type:{type:String,default:"date",validate:e=>vf.includes(e)},label:{type:String,default:"Please choose a date"},min:{type:[Boolean,Date],default:null},max:{type:[Boolean,Date],default:null},hideLabel:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["input","update:modelValue","update:model-value"],setup(){return{model:on("value","input")}},computed:{formattedValue(){return this.formatValue(this.model)},formattedMin(){return this.min?this.formatValue(this.min):!1},formattedMax(){return this.max?this.formatValue(this.max):!1},listeners(){return{...this.$listeners,input:e=>{if(isNaN(e.target.valueAsNumber))this.model=null;else if(this.type==="time"){const n=e.target.value;if(this.model===""){const{yyyy:r,MM:i,dd:o}=this.getReadableDate(new Date);this.model=new Date(`${r}-${i}-${o}T${n}`)}else{const{yyyy:r,MM:i,dd:o}=this.getReadableDate(this.model);this.model=new Date(`${r}-${i}-${o}T${n}`)}}else if(this.type==="month"){const n=(new Date(e.target.value).getMonth()+1).toString().padStart(2,"0");if(this.model===""){const{yyyy:r,dd:i,hh:o,mm:a}=this.getReadableDate(new Date);this.model=new Date(`${r}-${n}-${i}T${o}:${a}`)}else{const{yyyy:r,dd:i,hh:o,mm:a}=this.getReadableDate(this.model);this.model=new Date(`${r}-${n}-${i}T${o}:${a}`)}}else{const n=new Date(e.target.valueAsNumber).getTimezoneOffset()*1e3*60,r=e.target.valueAsNumber+n;this.model=new Date(r)}}}}},methods:{getReadableDate(e){if(e instanceof Date){const n=e.getFullYear().toString().padStart(4,"0"),r=(e.getMonth()+1).toString().padStart(2,"0"),i=e.getDate().toString().padStart(2,"0"),o=e.getHours().toString().padStart(2,"0"),a=e.getMinutes().toString().padStart(2,"0");return{yyyy:n,MM:r,dd:i,hh:o,mm:a}}},formatValue(e){if(e instanceof Date){const{yyyy:n,MM:r,dd:i,hh:o,mm:a}=this.getReadableDate(e);if(this.type==="datetime-local")return`${n}-${r}-${i}T${o}:${a}`;if(this.type==="date")return`${n}-${r}-${i}`;if(this.type==="month")return`${n}-${r}`;if(this.type==="time")return`${o}:${a}`;if(this.type==="week"){const s=new Date(n,0,1),c=Math.floor((e-s)/(1440*60*1e3)),l=Math.ceil(c/7);return`${n}-W${l}`}}else return""}}};var bf=function(){var e=this,n=e._self._c;return n("div",{staticClass:"native-datetime-picker"},[n("label",{staticClass:"native-datetime-picker--label",class:{"hidden-visually":e.hideLabel},attrs:{for:e.id}},[e._v(" "+e._s(e.label)+" ")]),n("input",e._g(e._b({staticClass:"native-datetime-picker--input",class:e.inputClass,attrs:{id:e.id,type:e.type,min:e.formattedMin,max:e.formattedMax},domProps:{value:e.formattedValue}},"input",e.$attrs,!1),e.listeners))])},wf=[],xf=ge(yf,bf,wf,!1,null,"6c1feae8");const kf=xf.exports;qc(kf);const _f={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Cf=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon alert-circle-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},Sf=[],Af=ge(_f,Cf,Sf,!1,null,null);const Tf=Af.exports,Of={name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Df=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon check-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},Ef=[],Lf=ge(Of,Df,Ef,!1,null,null);const If=Lf.exports,Mf={name:"NcInputField",components:{NcButton:En,AlertCircle:Tf,Check:If},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{value:{type:[String,Number],default:void 0},modelValue:{type:[String,Number],default:void 0},type:{type:String,default:"text",validator:e=>["text","password","email","tel","url","search","number"].includes(e)},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:""},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:""},disabled:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["update:value","update:modelValue","update:model-value","trailing-button-click"],setup(){const e=on("value","update:value",!0);return{isLegacy32:St,model:e}},computed:{computedId(){return this.$attrs.id&&this.$attrs.id!==""?this.$attrs.id:this.inputName},inputName(){return"input"+ct()},hasTrailingIcon(){return this.success},computedPlaceholder(){if(this.placeholder)return this.placeholder;if(this.label)return St?this.label:""},isValidLabel(){const e=this.label||this.labelOutside;return e||Re.warn("You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation."),e},ariaDescribedby(){const e=[];return this.helperText.length>0&&e.push(`${this.inputName}-helper-text`),this.$attrs["aria-describedby"]&&e.push(this.$attrs["aria-describedby"]),e.join(" ")||null}},methods:{focus(){this.$refs.input.focus()},select(){this.$refs.input.select()},handleInput(e){const n=this.type==="number"&&typeof this.model=="number"?parseFloat(e.target.value,10):e.target.value;this.model=n},handleTrailingButtonClick(e){this.$emit("trailing-button-click",e)}}};var jf=function(){var e=this,n=e._self._c;return n("div",{staticClass:"input-field",class:{"input-field--disabled":e.disabled,"input-field--error":e.error,"input-field--label-outside":e.labelOutside||!e.isValidLabel,"input-field--leading-icon":!!e.$scopedSlots.icon||!!e.$scopedSlots.default||!!e.$slots.default,"input-field--success":e.success,"input-field--trailing-icon":e.showTrailingButton||e.hasTrailingIcon,"input-field--pill":e.pill,"input-field--legacy":e.isLegacy32}},[n("div",{staticClass:"input-field__main-wrapper"},[n("input",e._g(e._b({ref:"input",staticClass:"input-field__input",class:[e.inputClass,{"input-field__input--success":e.success,"input-field__input--error":e.error}],attrs:{id:e.computedId,type:e.type,disabled:e.disabled,placeholder:e.computedPlaceholder,"aria-describedby":e.ariaDescribedby,"aria-live":"polite"},domProps:{value:e.model?.toString()},on:{input:e.handleInput}},"input",e.$attrs,!1),e.$listeners)),!e.labelOutside&&e.isValidLabel?n("label",{staticClass:"input-field__label",attrs:{for:e.computedId}},[e._v(" "+e._s(e.label)+" ")]):e._e(),n("div",{directives:[{name:"show",rawName:"v-show",value:!!e.$scopedSlots.icon||!!e.$scopedSlots.default||!!e.$slots.default,expression:"!!$scopedSlots.icon || !!$scopedSlots.default || !!$slots.default"}],staticClass:"input-field__icon input-field__icon--leading"},[e._t("icon",function(){return[e._t("default")]})],2),e.showTrailingButton?n("NcButton",{staticClass:"input-field__trailing-button",attrs:{"aria-label":e.trailingButtonLabel,disabled:e.disabled,variant:"tertiary-no-background"},on:{click:e.handleTrailingButtonClick},scopedSlots:e._u([{key:"icon",fn:function(){return[e._t("trailing-button-icon")]},proxy:!0}],null,!0)}):e.success||e.error?n("div",{staticClass:"input-field__icon input-field__icon--trailing"},[e.success?n("Check",{staticStyle:{color:"var(--color-success-text)"},attrs:{size:20}}):e.error?n("AlertCircle",{staticStyle:{color:"var(--color-error-text)"},attrs:{size:20}}):e._e()],1):e._e()],1),e.helperText.length>0?n("p",{staticClass:"input-field__helper-text-message",class:{"input-field__helper-text-message--error":e.error,"input-field__helper-text-message--success":e.success},attrs:{id:`${e.inputName}-helper-text`}},[e.success?n("Check",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e.error?n("AlertCircle",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):e._e(),e._v(" "+e._s(e.helperText)+" ")],1):e._e()])},Pf=[],Ff=ge(Mf,jf,Pf,!1,null,"17c3f609");const kr=Ff.exports;ce(Vd),xn("core","capabilities",{}).password_policy,new Set(Object.keys(kr.props)),{...kr.props},Ea(async function(e){try{const{data:n}=await Ye.post(Ot("apps/password_policy/api/v1/validate"),{password:e});if(this.isValid=n.ocs.data.passed,n.ocs.data.passed){this.internalHelpMessage=J("Password is secure"),this.$emit("valid");return}this.internalHelpMessage=n.ocs.data.reason,this.$emit("invalid")}catch(n){Re.error("Password policy returned an error",n)}},500),ce(Hd,Yc),new Set(Object.keys(kr.props)),{...kr.props},ce(Gc),Pr(()=>zt(()=>Promise.resolve().then(()=>x5),void 0,import.meta.url)),Pr(()=>zt(()=>Promise.resolve().then(()=>Py),void 0,import.meta.url)),Pr(()=>zt(()=>Promise.resolve().then(()=>k5),void 0,import.meta.url)),J("Submit");const Nf={name:"NcActionRouter",mixins:[ru],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}},props:{to:{type:[String,Object],required:!0},exact:{type:Boolean,default:!1}}};var zf=function(){var e=this,n=e._self._c;return n("li",{staticClass:"action",attrs:{role:e.isInSemanticMenu&&"presentation"}},[n("RouterLink",{staticClass:"action-router focusable",attrs:{to:e.to,"aria-label":e.ariaLabel,exact:e.exact,title:e.title,rel:"nofollow noreferrer noopener",role:e.isInSemanticMenu&&"menuitem"},nativeOn:{click:function(r){return e.onClick.apply(null,arguments)}}},[e._t("icon",function(){return[n("span",{staticClass:"action-router__icon",class:[e.isIconUrl?"action-router__icon--url":e.icon],style:{backgroundImage:e.isIconUrl?`url(${e.icon})`:null},attrs:{"aria-hidden":"true"}})]}),e.name?n("span",{staticClass:"action-router__longtext-wrapper"},[n("strong",{staticClass:"action-router__name"},[e._v(" "+e._s(e.name)+" ")]),n("br"),n("span",{staticClass:"action-router__longtext",domProps:{textContent:e._s(e.text)}})]):e.isLongText?n("span",{staticClass:"action-router__longtext",domProps:{textContent:e._s(e.text)}}):n("span",{staticClass:"action-router__text"},[e._v(e._s(e.text))]),e._e()],2)],1)},Bf=[],Rf=ge(Nf,zf,Bf,!1,null,"4dae1ff7");const su=Rf.exports,$f={name:"NcActionText",mixins:[ru],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}}};var Vf=function(){var e=this,n=e._self._c;return n("li",{staticClass:"action",attrs:{role:e.isInSemanticMenu&&"presentation"}},[n("span",{staticClass:"action-text",on:{click:e.onClick}},[e._t("icon",function(){return[e.icon!==""?n("span",{staticClass:"action-text__icon",class:[e.isIconUrl?"action-text__icon--url":e.icon],style:{backgroundImage:e.isIconUrl?`url(${e.icon})`:null},attrs:{"aria-hidden":"true"}}):e._e()]}),e.name?n("span",{staticClass:"action-text__longtext-wrapper"},[n("strong",{staticClass:"action-text__name"},[e._v(" "+e._s(e.name)+" ")]),n("span",{staticClass:"action-text__longtext",domProps:{textContent:e._s(e.text)}})]):e.isLongText?n("span",{staticClass:"action-text__longtext",domProps:{textContent:e._s(e.text)}}):n("span",{staticClass:"action-text__text"},[e._v(e._s(e.text))]),e._e()],2)])},Hf=[],Uf=ge($f,Vf,Hf,!1,null,"2fe7eb92");const Wf=Uf.exports;let qf="missing-app-name";try{qf=Bc}catch{Re.error("The `@nextcloud/vue` library was used without setting / replacing the `appName`.")}let Yf="";try{Yf=Rc}catch{Re.error("The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.")}ce(Ud),La("nextcloud").persist().build(),pr().theming?.name,window.OCP?.Accessibility?.disableKeyboardShortcuts?.(),ce(Wd),window.OCP?.Accessibility?.disableKeyboardShortcuts?.();const Gf={name:"ChevronDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Zf=function(){var e=this,n=e._self._c;return n("span",e._b({staticClass:"material-design-icon chevron-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(r){return e.$emit("click",r)}}},"span",e.$attrs,!1),[n("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{d:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"}},[e.title?n("title",[e._v(e._s(e.title))]):e._e()])])])},Kf=[],Xf=ge(Gf,Zf,Kf,!1,null,null);const Jf=Xf.exports;ce(qd);const Qf={name:"NcLoadingIcon",props:{size:{type:Number,default:20},appearance:{type:String,validator(e){return["auto","light","dark"].includes(e)},default:"auto"},name:{type:String,default:""}},computed:{colors(){const e=["#777","#CCC"];return this.appearance==="light"?e:this.appearance==="dark"?e.reverse():["var(--color-loading-light)","var(--color-loading-dark)"]}}};var e0=function(){var e=this,n=e._self._c;return n("span",{staticClass:"material-design-icon loading-icon",attrs:{"aria-label":e.name,role:"img"}},[n("svg",{attrs:{width:e.size,height:e.size,viewBox:"0 0 24 24"}},[n("path",{attrs:{fill:e.colors[0],d:"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z"}}),n("path",{attrs:{fill:e.colors[1],d:"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z"}},[e.name?n("title",[e._v(e._s(e.name))]):e._e()])])])},t0=[],n0=ge(Qf,e0,t0,!1,null,"94ff8098");const mr=n0.exports;ce(Yd),ce(Gd,Yc),ce(Zc,Zd);J("Search …"),ut.util.warn;const lu=Xd?window:void 0;function Nn(e){var n;const r=yt(e);return(n=r?.$el)!=null?n:r}function Nr(...e){let n,r,i,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([r,i,o]=e,n=lu):[n,r,i,o]=e,!n)return Fr;Array.isArray(r)||(r=[r]),Array.isArray(i)||(i=[i]);const a=[],s=()=>{a.forEach(h=>h()),a.length=0},c=(h,d,f,p)=>(h.addEventListener(d,f,p),()=>h.removeEventListener(d,f,p)),l=Dt(()=>[Nn(n),yt(o)],([h,d])=>{if(s(),!h)return;const f=Jd(d)?{...d}:d;a.push(...r.flatMap(p=>i.map(v=>c(h,p,v,f))))},{immediate:!0,flush:"post"}),u=()=>{l(),s()};return Kc(u),u}let Os=!1;function Ds(e,n,r={}){const{window:i=lu,ignore:o=[],capture:a=!0,detectIframe:s=!1}=r;if(!i)return Fr;Uo&&!Os&&(Os=!0,Array.from(i.document.body.children).forEach(v=>v.addEventListener("click",Fr)),i.document.documentElement.addEventListener("click",Fr));let c=!0;const l=v=>yt(o).some(y=>{if(typeof y=="string")return Array.from(i.document.querySelectorAll(y)).some(b=>b===v.target||v.composedPath().includes(b));{const b=Nn(y);return b&&(v.target===b||v.composedPath().includes(b))}});function u(v){const y=yt(v);return y&&y.$.subTree.shapeFlag===16}function h(v,y){const b=yt(v),w=b.$.subTree&&b.$.subTree.children;return w==null||!Array.isArray(w)?!1:w.some(_=>_.el===y.target||y.composedPath().includes(_.el))}const d=v=>{const y=Nn(e);if(v.target!=null&&!(!(y instanceof Element)&&u(e)&&h(e,v))&&!(!y||y===v.target||v.composedPath().includes(y))){if(v.detail===0&&(c=!l(v)),!c){c=!0;return}n(v)}};let f=!1;const p=[Nr(i,"click",v=>{f||(f=!0,setTimeout(()=>{f=!1},0),d(v))},{passive:!0,capture:a}),Nr(i,"pointerdown",v=>{const y=Nn(e);c=!l(v)&&!!(y&&!v.composedPath().includes(y))},{passive:!0}),s&&Nr(i,"blur",v=>{setTimeout(()=>{var y;const b=Nn(e);((y=i.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!b?.contains(i.document.activeElement)&&n(v)},0)})].filter(Boolean);return()=>p.forEach(v=>v())}const r0={[Ss.mounted](e,n){const r=!n.modifiers.bubble;if(typeof n.value=="function")e.__onClickOutside_stop=Ds(e,n.value,{capture:r});else{const[i,o]=n.value;e.__onClickOutside_stop=Ds(e,i,Object.assign({capture:r},o))}},[Ss.unmounted](e){e.__onClickOutside_stop()}};function no(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function cu(e){const n=window.getComputedStyle(e);if(n.overflowX==="scroll"||n.overflowY==="scroll"||n.overflowX==="auto"&&e.clientWidth1?!0:(n.preventDefault&&n.preventDefault(),!1)}const ro=new WeakMap;function o0(e,n=!1){const r=Qe(n);let i=null,o="";Dt(Qd(e),c=>{const l=no(yt(c));if(l){const u=l;if(ro.get(u)||ro.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(o=u.style.overflow),u.style.overflow==="hidden")return r.value=!0;if(r.value)return u.style.overflow="hidden"}},{immediate:!0});const a=()=>{const c=no(yt(e));!c||r.value||(Uo&&(i=Nr(c,"touchmove",l=>{i0(l)},{passive:!1})),c.style.overflow="hidden",r.value=!0)},s=()=>{const c=no(yt(e));!c||!r.value||(Uo&&i?.(),c.style.overflow=o,ro.delete(c),r.value=!1)};return Kc(s),je({get(){return r.value},set(c){c?a():s()}})}function a0(){let e=!1;const n=Qe(!1);return(r,i)=>{if(n.value=i.value,e)return;e=!0;const o=o0(r,i.value);Dt(n,a=>o.value=a)}}a0();var qo={exports:{}},s0=qo.exports,Es;function l0(){return Es||(Es=1,(function(e){(function(n){if(typeof r!="function"){var r=function(v){return v};r.nonNative=!0}const i=r("plaintext"),o=r("html"),a=r("comment"),s=/<(\w*)>/g,c=/<\/?([^\s\/>]+)/;function l(v,y,b){v=v||"",y=y||[],b=b||"";let w=h(y,b);return d(v,w)}function u(v,y){v=v||[],y=y||"";let b=h(v,y);return function(w){return d(w||"",b)}}l.init_streaming_mode=u;function h(v,y){return v=f(v),{allowable_tags:v,tag_replacement:y,state:i,tag_buffer:"",depth:0,in_quote_char:""}}function d(v,y){if(typeof v!="string")throw new TypeError("'html' parameter must be a string");let b=y.allowable_tags,w=y.tag_replacement,_=y.state,L=y.tag_buffer,P=y.depth,V=y.in_quote_char,D="";for(let H=0,M=v.length;H":if(V)break;if(P){P--;break}V="",_=i,L+=">",b.has(p(L))?D+=L:D+=w,L="";break;case'"':case"'":$===V?V="":V=V||$,L+=$;break;case"-":L===""?(L.slice(-2)=="--"&&(_=i),L=""):L+=$)}return y.state=_,y.tag_buffer=L,y.depth=P,y.in_quote_char=V,D}function f(v){let y=new Set;if(typeof v=="string"){let b;for(;b=s.exec(v);)y.add(b[1])}else!r.nonNative&&typeof v[r.iterator]=="function"?y=new Set(v):typeof v.forEach=="function"&&v.forEach(y.add,y);return y}function p(v){let y=c.exec(v);return y?y[1].toLowerCase():null}e.exports?e.exports=l:n.striptags=l})(s0)})(qo)),qo.exports}l0();function Zr(e=document.body){const n=window.getComputedStyle(e).getPropertyValue("--background-invert-if-dark");return n!==void 0?n==="invert(100%)":!1}Zr();const c0=Symbol.for("nc:theme:enforced");function u0(e){const n=je(()=>yt(e)??document.body),r=Qe(Zr(n.value)),i=tp();function o(){r.value=Zr(n.value)}return np(n,o,{attributes:!0}),Dt(n,o),Dt(i,o,{immediate:!0}),vd(r)}const h0=ep(()=>u0());function d0(){const e=h0(),n=$c(c0,void 0);return je(()=>n?.value?n.value==="dark":e.value)}ce(rp),J("Settings"),ce(ip),ce(op),ce(Xc);let p0="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",f0=(e=21)=>{let n="",r=e|0;for(;r-- >0;)n+=p0[Math.random()*64|0];return n};function zr(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?zr=function(n){return typeof n}:zr=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},zr(e)}var uu={selector:"vue-portal-target-".concat(f0())},m0=function(e){return uu.selector=e},io=typeof window<"u"&&(typeof document>"u"?"undefined":zr(document))!==void 0,g0=ut.extend({abstract:!0,name:"PortalOutlet",props:["nodes","tag"],data:function(e){return{updatedNodes:e.nodes}},render:function(e){var n=this.updatedNodes&&this.updatedNodes();return n?n.length===1&&!n[0].text?n:e(this.tag||"DIV",n):e()},destroyed:function(){var e=this.$el;e&&e.parentNode.removeChild(e)}}),v0=ut.extend({name:"VueSimplePortal",props:{disabled:{type:Boolean},prepend:{type:Boolean},selector:{type:String,default:function(){return"#".concat(uu.selector)}},tag:{type:String,default:"DIV"}},render:function(e){if(this.disabled){var n=this.$scopedSlots&&this.$scopedSlots.default();return n?n.length<2&&!n[0].text?n:e(this.tag,n):e()}return e()},created:function(){this.getTargetEl()||this.insertTargetEl()},updated:function(){var e=this;this.$nextTick(function(){!e.disabled&&e.slotFn!==e.$scopedSlots.default&&(e.container.updatedNodes=e.$scopedSlots.default),e.slotFn=e.$scopedSlots.default})},beforeDestroy:function(){this.unmount()},watch:{disabled:{immediate:!0,handler:function(e){e?this.unmount():this.$nextTick(this.mount)}}},methods:{getTargetEl:function(){if(io)return document.querySelector(this.selector)},insertTargetEl:function(){if(io){var e=document.querySelector("body"),n=document.createElement(this.tag);n.id=this.selector.substring(1),e.appendChild(n)}},mount:function(){if(io){var e=this.getTargetEl(),n=document.createElement("DIV");this.prepend&&e.firstChild?e.insertBefore(n,e.firstChild):e.appendChild(n),this.container=new g0({el:n,parent:this,propsData:{tag:this.tag,nodes:this.$scopedSlots.default}})}},unmount:function(){this.container&&(this.container.$destroy(),delete this.container)}}});function y0(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.component(n.name||"portal",v0),n.defaultSelector&&m0(n.defaultSelector)}typeof window<"u"&&window.Vue&&window.Vue===ut&&ut.use(y0);const b0=` @@ -1024,5 +1024,5 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho font-weight: 400; src: url('${to("viewer","css/fonts/pt-serif-regular.woff2")}') format('woff2'); } - `)),document.head.appendChild(e)},async mounted(){const e=(await zt(async()=>{const{default:n}=await import("./index-CggvRhHb.chunk.mjs");return{default:n}},__vite__mapDeps([13,1,2]),import.meta.url)).default;jr=e.TABS,Nc=e.TOOLS,this.imageEditor=new e(this.$refs.editor,this.config),this.imageEditor.render(),window.addEventListener("keydown",this.handleKeydown,!0),this.observer=new MutationObserver(n=>{n.forEach(r=>{r.type==="childList"&&r.addedNodes.forEach(i=>{(i.classList?.contains("FIE_root")||i.classList?.contains("SfxModal-Wrapper"))&&eo("viewer:trapElements:changed",i)})})}),this.observer.observe(document.body,{childList:!0,subtree:!0})},beforeDestroy(){this.imageEditor&&this.imageEditor.terminate(),this.observer.disconnect(),window.removeEventListener("keydown",this.handleKeydown,!0)},methods:{onClose(){window.removeEventListener("keydown",this.handleKeydown,!0),this.$emit("close")},async fileExists(e){try{return await Ye.head(e,{validateStatus:n=>n===200||n===404}),(await Ye.head(e)).status===200}catch(n){if(n.response?.status===404)return!1;throw n}},async onSave({fullName:e,imageCanvas:n,mimeType:r,quality:i}){const{origin:o,pathname:a}=new URL(this.src),s=o+Zt.join(Zt.dirname(a),e);it.debug("Saving image...",{putUrl:s,src:this.src,fullName:e});const c=await this.fileExists(s);if(it.debug("File exists",{fileExists:c}),c){it.debug("File exists, showing confirmation dialog");try{const l=e===Zt.basename(this.src)?t("viewer","You are about to overwrite the original file. Are you sure you want to continue?"):t("viewer","A file with this name already exists. Do you want to overwrite it?");if(!await Td({name:t("viewer","Confirm overwrite"),text:l,labelConfirm:t("viewer","Overwrite"),labelReject:t("viewer","Cancel")})){it.debug("User cancelled overwrite");return}}catch(l){it.error("Error showing confirmation dialog",{error:l}),Cs(t("viewer","An error occurred while trying to confirm the file overwrite."));return}}r=r.replace("jpg","jpeg"),i=Math.max(Math.min(i,1),0)||1;try{const l=await new Promise(h=>n.toBlob(h,r,i)),u=await Ye.put(s,new File([l],e));if(it.info("Edited image saved!",{response:u}),Od(t("viewer","Image saved")),s!==this.src){const h=parseInt(u?.headers?.["oc-fileid"]?.split("oc")[0])||null;if(eo("editor:file:created",s),h){const d=window.OCP.Files.Router.params;d.fileId=h,window.OCP.Files.Router.goToRoute(null,d,window.OCP.Files.Router.query)}}else{this.$emit("updated");const h=await Dd(o,decodeURI(a)),d=new Ed({id:Number.parseInt(this.fileid),source:this.src,mtime:new Date(h.lastmod),...h,attributes:{...h,...h.props}});eo("files:node:updated",d)}}catch(l){it.error("Error saving image",{error:l}),Cs(t("viewer","Error saving image"))}},handleKeydown(e){e.key!=="Enter"&&e.stopImmediatePropagation(),e.key==="Escape"&&(e.preventDefault(),document.querySelector(".FIE_topbar-close-button").click()),e.ctrlKey&&e.key==="s"&&(e.preventDefault(),document.querySelector(".FIE_topbar-save-button").click()),e.ctrlKey&&e.key==="z"&&(e.preventDefault(),document.querySelector(".FIE_topbar-undo-button").click())}}};var VC=function(){var e=this,n=e._self._c;return n("div",[n("div",e._b({ref:"editor",staticClass:"viewer__image-editor"},"div",e.themeDataAttr,!1))])},HC=[],UC=dr($C,VC,HC,!1,null,"999a3a72");const WC=UC.exports,qC=["jpg","jpeg","png"],YC=new RegExp(`\\.(${qC.join("|")})$`,"i");function GC(e,n){return n.find(r=>r.fileid===e)}function ZC(e,n){return n.find(r=>r.filename!==e.filename&&r.basename.startsWith(e.name)&&YC.test(r.basename))}async function ys(e){const n=await Ld().getFileContents(`${Id()}${e}`,{details:!0});return URL.createObjectURL(new Blob([n.data],{type:n.headers["content-type"]}))}ut.use(Pi);const KC={name:"Images",components:{ImageEditor:WC,PlayCircleOutline:gf,NcLoadingIcon:mr},props:{editing:{type:Boolean,default:!1}},data(){return{dragging:!1,shiftX:0,shiftY:0,zoomRatio:1,fallback:!1,livePhotoCanBePlayed:!1,zooming:!1,pinchDistance:0,pinchStartZoomRatio:1,pointerCache:[]}},computed:{src(){return this.source??this.davPath},zoomHeight(){return Math.round(this.height*this.zoomRatio)},zoomWidth(){return Math.round(this.width*this.zoomRatio)},alt(){return this.basename},imgStyle(){return this.zoomRatio===1?{height:this.zoomHeight+"px",width:this.zoomWidth+"px"}:{marginTop:Math.round(this.shiftY*2)+"px",marginLeft:Math.round(this.shiftX*2)+"px",height:this.zoomHeight+"px",width:this.zoomWidth+"px"}},livePhoto(){if(this.metadataFilesLivePhoto!==void 0)return GC(this.metadataFilesLivePhoto,this.fileList)},livePhotoSrc(){return this.livePhoto?.source??this.livePhotoDavPath},livePhotoDavPath(){return this.livePhoto?Pd({filename:this.livePhoto.filename,basename:this.livePhoto.basename}):null}},asyncComputed:{data(){return this.mime==="image/svg+xml"?this.getBase64FromImage():this.mime==="image/gif"?this.src:this.source&&!this.hasPreview&&!this.previewUrl?this.fallback?ys(this.filename):this.source:this.fallback?this.src:this.previewPath}},watch:{active(e,n){e===!0&&n===!1?(this.resetZoom(),window.addEventListener("pointerout",this.pointerUp)):e===!1&&window.removeEventListener("pointerout",this.pointerUp)}},methods:{updateImgSize(){this.$refs.image?(this.naturalHeight=this.$refs.image.naturalHeight,this.naturalWidth=this.$refs.image.naturalWidth):this.$refs.video&&(this.naturalHeight=this.$refs.video.videoHeight,this.naturalWidth=this.$refs.video.videoWidth),this.updateHeightWidth(),this.doneLoading()},async getBase64FromImage(){const e=await Ye.get(this.src),n=jd.sanitize(e.data);return`data:${this.mime};base64,${btoa(unescape(encodeURIComponent(n)))}`},updateShift(e,n,r){const i=this.width*r-this.width,o=this.height*r-this.height;this.shiftX=Math.min(Math.max(e,-i/2),i/2),this.shiftY=Math.min(Math.max(n,-o/2),o/2)},updateZoomAndShift(e,n,r){if(!this.canZoom)return;const i=this.$refs.image??this.$refs.video,o=e-i.getBoundingClientRect().x-this.width*this.zoomRatio/2,a=n-i.getBoundingClientRect().y-this.height*this.zoomRatio/2,s=o/(this.width*this.zoomRatio),c=a/(this.height*this.zoomRatio),l=this.width*r-this.width*this.zoomRatio,u=this.height*r-this.height*this.zoomRatio,h=this.shiftX-s*l,d=this.shiftY-c*u;this.updateShift(h,d,r),this.zoomRatio=r},distanceBetweenTouches(){const e=this.pointerCache[0],n=this.pointerCache[1],r=n.x-e.x,i=n.y-e.y;return Math.sqrt(r*r+i*i)},updateZoom(e){if(!this.canZoom)return;const n=e.deltaY<0?Math.min(this.zoomRatio*1.1,5):Math.max(this.zoomRatio/1.1,1);if(n===1)return this.resetZoom();this.disableSwipe(),this.updateZoomAndShift(e.clientX,e.clientY,n)},resetZoom(){this.enableSwipe(),this.zoomRatio=1,this.shiftX=0,this.shiftY=0},pointerDown(e){this.pointerCache.push({pointerId:e.pointerId,x:e.clientX,y:e.clientY}),this.pointerCache.length===1&&(this.dragX=e.clientX,this.dragY=e.clientY,this.dragging=!0),this.pointerCache.length===2&&(this.pinchDistance=this.distanceBetweenTouches(),this.pinchStartZoomRatio=this.zoomRatio,this.zooming=!0,this.disableSwipe())},pointerUp(e){const n=this.pointerCache.findIndex(r=>r.pointerId===e.pointerId);this.pointerCache.splice(n,1),this.dragging=!1,this.zooming=!1},pointerMove(e){if(this.canZoom){if(this.pointerCache.length>0){const n=this.pointerCache.findIndex(r=>r.pointerId===e.pointerId);n>=0&&(this.pointerCache[n].x=e.clientX,this.pointerCache[n].y=e.clientY)}if(this.pointerCache.length===1&&this.dragging&&!this.zooming&&this.zoomRatio>1){const{clientX:n,clientY:r}=e,i=this.shiftX+(n-this.dragX),o=this.shiftY+(r-this.dragY);this.updateShift(i,o,this.zoomRatio),this.dragX=n,this.dragY=r}if(this.pointerCache.length===2&&this.zooming){const n=this.distanceBetweenTouches(),r=Math.min(Math.max(this.pinchStartZoomRatio*(n/this.pinchDistance),1),5),i=this.pointerCache[0],o=this.pointerCache[1],a=(i.x+o.x)/2,s=(i.y+o.y)/2;this.updateZoomAndShift(a,s,r)}}},onDblclick(){this.canZoom&&(this.zoomRatio>1?this.resetZoom():this.zoomRatio=1.3)},onClose(){this.$emit("update:editing",!1)},onFail(){this.fallback||(console.error(`Loading of file preview ${Md(this.src)} failed, falling back to original file`),this.fallback=!0)},doneLoadingLivePhoto(){this.livePhotoCanBePlayed=!0,this.doneLoading()},playLivePhoto(){this.livePhotoCanBePlayed&&this.$refs.video.play()},stopLivePhoto(){this.$refs.video.load()},t:N}};var XC=function(){var e=this,n=e._self._c;return n("div",{staticClass:"image_container"},[e.editing?n("ImageEditor",{attrs:{mime:e.mime,src:e.src,fileid:e.fileid},on:{close:e.onClose}}):e.data!==null?[e.livePhotoCanBePlayed?e._e():n("img",{ref:"image",class:{dragging:e.dragging,loaded:e.loaded,zoomed:e.zoomRatio>1},style:e.imgStyle,attrs:{alt:e.alt,src:e.data},on:{"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},load:e.updateImgSize,wheel:function(r){return r.stopPropagation(),r.preventDefault(),e.updateZoom.apply(null,arguments)},dblclick:function(r){return r.preventDefault(),e.onDblclick.apply(null,arguments)},pointerdown:function(r){return r.preventDefault(),e.pointerDown.apply(null,arguments)},pointerup:function(r){return r.preventDefault(),e.pointerUp.apply(null,arguments)},pointermove:function(r){return r.preventDefault(),e.pointerMove.apply(null,arguments)}}}),e.livePhoto?[n("video",{directives:[{name:"show",rawName:"v-show",value:e.livePhotoCanBePlayed,expression:"livePhotoCanBePlayed"}],ref:"video",class:{dragging:e.dragging,loaded:e.loaded,zoomed:e.zoomRatio>1},style:e.imgStyle,attrs:{playsinline:!0,poster:e.data,src:e.livePhotoSrc,preload:"metadata"},on:{canplaythrough:e.doneLoadingLivePhoto,loadedmetadata:e.updateImgSize,wheel:function(r){return r.stopPropagation(),r.preventDefault(),e.updateZoom.apply(null,arguments)},"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},dblclick:function(r){return r.preventDefault(),e.onDblclick.apply(null,arguments)},pointerdown:function(r){return r.preventDefault(),e.pointerDown.apply(null,arguments)},pointerup:function(r){return r.preventDefault(),e.pointerUp.apply(null,arguments)},pointermove:function(r){return r.preventDefault(),e.pointerMove.apply(null,arguments)},ended:e.stopLivePhoto}}),e.width!==0?n("button",{staticClass:"live-photo_play_button",style:{left:`calc(50% - ${e.width/2}px)`},attrs:{disabled:!e.livePhotoCanBePlayed,"aria-description":e.t("viewer","Play the live photo")},on:{click:e.playLivePhoto,pointerenter:e.playLivePhoto,focus:e.playLivePhoto,pointerleave:e.stopLivePhoto,blur:e.stopLivePhoto}},[e.livePhotoCanBePlayed?n("PlayCircleOutline"):n("NcLoadingIcon"),e._v(" "+e._s(e.t("viewer","LIVE"))+" ")],1):e._e()]:e._e()]:e._e()],2)},JC=[],QC=dr(KC,XC,JC,!1,null,"38b7dcaa");const e5=QC.exports,t5=xn(Bc,"enabled_preview_providers",[]),ld=["image/heic","image/heif","image/tiff","image/x-xbitmap","image/emf"],n5=["image/apng","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"],r5=()=>ld.filter(e=>t5.findIndex(n=>{const r=new RegExp(n.replace(/^\/|\/$/g,""),"i");return e.match(r)})>-1),cd=r5(),zc=ld.filter(e=>!cd.includes(e));zc.length>0&&it.warn("Some mimes were ignored because they are not enabled in the server previews config",{ignoredMimes:zc});const i5={id:"images",group:"media",mimes:[...n5,...cd],component:e5},ud={restart:N("viewer","Restart"),rewind:N("viewer","Rewind {seektime}s"),play:N("viewer","Play"),pause:N("viewer","Pause"),fastForward:N("viewer","Forward {seektime}s"),seek:N("viewer","Seek"),seekLabel:N("viewer","{currentTime} of {duration}"),played:N("viewer","Played"),buffered:N("viewer","Buffered"),currentTime:N("viewer","Current time"),duration:N("viewer","Duration"),volume:N("viewer","Volume"),mute:N("viewer","Mute"),unmute:N("viewer","Unmute"),enableCaptions:N("viewer","Enable captions"),disableCaptions:N("viewer","Disable captions"),download:N("viewer","Download"),enterFullscreen:N("viewer","Enter fullscreen"),exitFullscreen:N("viewer","Exit fullscreen"),frameTitle:N("viewer","Player for {title}"),captions:N("viewer","Captions"),settings:N("viewer","Settings"),pip:N("viewer","PIP"),menuBack:N("viewer","Go back to previous menu"),speed:N("viewer","Speed"),normal:N("viewer","Normal"),quality:N("viewer","Quality"),loop:N("viewer","Loop"),start:N("viewer","Start"),end:N("viewer","End"),all:N("viewer","All"),reset:N("viewer","Reset"),disabled:N("viewer","Disabled"),enabled:N("viewer","Enabled"),advertisement:N("viewer","Ad")};function hd(e){const n=new Intl.NumberFormat(Lt()),r=i=>i===1?N("viewer","Normal"):`${n.format(i)}×`;e.querySelectorAll('.plyr__menu__container [id$="-speed"] [role="menuitemradio"]').forEach(i=>{const o=Number.parseFloat(i.value);if(Number.isNaN(o))return;const a=i.querySelector("span");a&&(a.textContent=r(o))}),e.querySelectorAll(".plyr__menu__value").forEach(i=>{const o=/^(\d+(?:\.\d+)?)×$/.exec((i.textContent??"").trim());o&&(i.textContent=`${n.format(Number.parseFloat(o[1]))}×`)})}const o5=()=>zt(()=>import("./index.esm-DWWsYwJ5.chunk.mjs"),[],import.meta.url),a5=Hc("viewer","blank.mp4");ut.use(Pi);const s5={name:"Videos",components:{VuePlyr:o5},data(){return{isFullscreenButtonVisible:!1,fallback:!1,speedListenerBound:!1}},computed:{livePhotoPath(){const e=ZC(this,this.fileList);if(e!==void 0)return Fd(e)},player(){return this.$refs.plyr.player},options(){return{autoplay:this.active===!0,blankVideo:a5,controls:["play-large","play","progress","current-time","mute","volume","captions","settings","fullscreen"],loadSprite:!1,i18n:ud,fullscreen:{iosNative:!0}}}},asyncComputed:{async url(){return this.fallback?ys(this.filename):this.src}},watch:{active(e,n){e===!0&&n===!1?this.player.play():e===!1&&n===!0&&this.player.pause()}},updated(){const e=this.$el.querySelectorAll(".plyr__controls__item");!e||!e.length||([...e].forEach(n=>{n.getAttribute("data-plyr")==="fullscreen"&&n.addEventListener("click",this.hideHeaderAndFooter),n?.addEventListener&&(n.addEventListener("mouseenter",this.disableSwipe),n.addEventListener("mouseleave",this.enableSwipe))}),!this.speedListenerBound&&this.$refs.plyr?.player&&(this.$refs.plyr.player.on("ratechange",this.localizeSpeed),this.speedListenerBound=!0),this.localizeSpeed())},beforeDestroy(){it.debug("Closing video stream",{filename:this.filename}),this.$refs.video?.pause?.(),this.player.stop(),this.player.destroy()},methods:{localizeSpeed(){this.$nextTick(()=>hd(this.$el))},hideHeaderAndFooter(){this.isFullscreenButtonVisible=!this.isFullscreenButtonVisible,this.isFullscreenButtonVisible?(document.body.querySelector("main").classList.add("viewer__hidden-fullscreen"),document.body.querySelector("footer").classList.add("viewer__hidden-fullscreen")):(document.body.querySelector("main").classList.remove("viewer__hidden-fullscreen"),document.body.querySelector("footer").classList.remove("viewer__hidden-fullscreen"))},updateVideoSize(){this.naturalHeight=this.$refs.video?.videoHeight,this.naturalWidth=this.$refs.video?.videoWidth,this.updateHeightWidth()},donePlaying(){this.$refs.video.autoplay=!1,this.$refs.video.load()},onLoadedMetadata(){this.updateVideoSize(),this.active||this.player.stop()},onFail(){this.fallback||(console.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`),this.fallback=!0)}}};var l5=function(){var e=this,n=e._self._c;return e.url?n("div",[n("VuePlyr",{ref:"plyr",style:{height:e.height+"px",width:e.width+"px"},attrs:{options:e.options}},[n("video",{ref:"video",attrs:{autoplay:e.active?!0:null,playsinline:!0,poster:e.livePhotoPath,src:e.url,preload:"metadata"},on:{"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},ended:e.donePlaying,canplay:e.doneLoading,loadedmetadata:e.onLoadedMetadata}},[e._v(" "+e._s(e.t("viewer","Your browser does not support videos."))+" ")])])],1):e._e()},c5=[],u5=dr(s5,l5,c5,!1,null,"d885ce9a");const h5=u5.exports,d5={id:"videos",group:"media",mimes:["video/mpeg","video/ogg","video/webm","video/mp4","video/x-m4v","video/x-flv","video/quicktime"],mimesAliases:{"video/x-matroska":"video/webm"},component:h5},p5=()=>zt(()=>import("./index.esm-DWWsYwJ5.chunk.mjs"),[],import.meta.url);ut.use(Pi);const f5={name:"Audios",components:{VuePlyr:p5},data(){return{fallback:!1,speedListenerBound:!1}},computed:{player(){return this.$refs.plyr.player},options(){return{autoplay:this.active===!0,blankVideo:"/blank.aac",controls:["play-large","play","progress","current-time","mute","volume","settings"],loadSprite:!1,i18n:ud}}},asyncComputed:{async url(){return this.fallback?ys(this.filename):this.src}},watch:{active(e,n){e===!0&&n===!1?this.player.play():e===!1&&n===!0&&this.player.pause()}},updated(){const e=this.$el.querySelectorAll(".plyr__controls__item");!e||!e.length||([...e].forEach(n=>{n?.addEventListener&&(n.addEventListener("mouseenter",this.disableSwipe),n.addEventListener("mouseleave",this.enableSwipe))}),!this.speedListenerBound&&this.$refs.plyr?.player&&(this.$refs.plyr.player.on("ratechange",this.localizeSpeed),this.speedListenerBound=!0),this.localizeSpeed())},beforeDestroy(){it.debug("Closing audio stream",{filename:this.filename}),this.$refs.audio.pause(),this.player.stop(),this.player.destroy()},methods:{localizeSpeed(){this.$nextTick(()=>hd(this.$el))},donePlaying(){this.$refs.audio.autoplay=!1,this.$refs.audio.load()},onFail(){this.fallback||(console.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`),this.fallback=!0)}}};var m5=function(){var e=this,n=e._self._c;return e.url?n("div",[n("VuePlyr",{ref:"plyr",attrs:{options:e.options}},[n("audio",{ref:"audio",attrs:{autoplay:e.active,src:e.url,preload:"metadata"},on:{"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},ended:e.donePlaying,canplay:e.doneLoading}},[e._v(" "+e._s(e.t("viewer","Your browser does not support audio."))+" ")])])],1):e._e()},g5=[],v5=dr(f5,m5,g5,!1,null,"692a118e");const y5=v5.exports,b5={id:"audios",group:"media",mimes:["audio/aac","audio/aacp","audio/flac","audio/mp4","audio/mpeg","audio/ogg","audio/vorbis","audio/wav","audio/webm"],component:y5};class w5{_state;_mimetypes;_mimetypesCompare;constructor(){this._mimetypes=[],this._mimetypesCompare=[],this._state={},this._state.file="",this._state.fileInfo=null,this._state.compareFileInfo=null,this._state.files=[],this._state.enableSidebar=!0,this._state.el=null,this._state.loadMore=()=>[],this._state.onPrev=()=>{},this._state.onNext=()=>{},this._state.onClose=()=>{},this._state.canLoop=!0,this._state.handlers=[],this._state.overrideHandlerId=null,this.registerHandler(i5),this.registerHandler(d5),this.registerHandler(b5),it.debug("OCA.Viewer initialized")}get availableHandlers(){return this._state.handlers}registerHandler(n){const r=this.validateHandler(n);if(r){it.error("Could not register handler",{error:r,handler:n});return}n.downloadCallback||(n.downloadCallback=()=>{}),this._state.handlers.push(n);const i=[...n.mimes,...Object.keys(n.mimesAliases||{})];this._mimetypes.push.apply(this._mimetypes,i),n?.canCompare===!0&&this._mimetypesCompare.push.apply(this._mimetypesCompare,i)}validateHandler({id:n,mimes:r,mimesAliases:i,component:o}){if(!n||n.trim()===""||typeof n!="string")return"The handler doesn't have a valid id";if(this._state.handlers.find(a=>a.id===n))return"The handler is already registered";if(!(r&&Array.isArray(r))&&!i)return"Handler needs a valid mime array or mimesAliases";if(!o||typeof o!="object"&&typeof o!="function")return"The handler doesn't have a valid component"}get file(){return this._state.file}get fileInfo(){return this._state.fileInfo}get compareFileInfo(){return this._state.compareFileInfo}get files(){return this._state.files}get enableSidebar(){return this._state.enableSidebar}get el(){return this._state.el}get mimetypes(){return this._mimetypes}get mimetypesCompare(){return this._mimetypesCompare}get loadMore(){return this._state.loadMore}get onPrev(){return this._state.onPrev}get onNext(){return this._state.onNext}get onClose(){return this._state.onClose}get canLoop(){return this._state.canLoop}get overrideHandlerId(){return this._state.overrideHandlerId}setRootElement(n=null){if(this._state.file)throw new Error("Please set root element before calling Viewer.open().");this._state.el=n}open({path:n,fileInfo:r,list:i=[],enableSidebar:o=!0,loadMore:a=()=>[],canLoop:s=!0,onPrev:c=()=>{},onNext:l=()=>{},onClose:u=()=>{}}={}){if(typeof arguments[0]=="string")throw new Error("Opening the viewer with a single string parameter is deprecated. Please use a destructuring object instead",`OCA.Viewer.open({ path: '${n}' })`);if(!n&&!r)throw new Error("Viewer needs either an URL or path to open. None given");if(n&&!n.startsWith("/"))throw new Error("Please use an absolute path");if(!Array.isArray(i))throw new Error("The files list must be an array");if(typeof a!="function")throw new Error("The loadMore method must be a function");n?this._state.file=n:this._state.fileInfo=r,this._state.el||(this._state.files=i,this._state.enableSidebar=o,this._state.loadMore=a,this._state.onPrev=c,this._state.onNext=l,this._state.onClose=u,this._state.canLoop=s)}openWith(n,r={}){this._state.overrideHandlerId=n,this.open(r)}compare(n,r){this.open({fileInfo:n}),this._state.compareFileInfo=r}close(){this._state.file="",this._state.fileInfo=null,this._state.files=[],this._state.enableSidebar=!0,this._state.canLoop=!0,this._state.loadMore=()=>[],this._state.overrideHandlerId=null}}Nd(),window.OCA=window.OCA??{},window.OCA.Viewer=new w5,window.OCA.Viewer.version=Rc,window._oca_viewer_handlers&&window._oca_viewer_handlers.forEach(e=>{window.OCA.Viewer.availableHandlers.some(n=>n.id===e.id)||window.OCA.Viewer.registerHandler(e)});const x5=Object.freeze(Object.defineProperty({__proto__:null,default:o1},Symbol.toStringTag,{value:"Module"})),k5=Object.freeze(Object.defineProperty({__proto__:null,default:qa},Symbol.toStringTag,{value:"Module"}));export{Yu as a,Wa as c,cr as v}; + `)),document.head.appendChild(e)},async mounted(){const e=(await zt(async()=>{const{default:n}=await import("./index-De-0ARML.chunk.mjs");return{default:n}},__vite__mapDeps([13,1,2]),import.meta.url)).default;jr=e.TABS,Nc=e.TOOLS,this.imageEditor=new e(this.$refs.editor,this.config),this.imageEditor.render(),window.addEventListener("keydown",this.handleKeydown,!0),this.observer=new MutationObserver(n=>{n.forEach(r=>{r.type==="childList"&&r.addedNodes.forEach(i=>{(i.classList?.contains("FIE_root")||i.classList?.contains("SfxModal-Wrapper"))&&eo("viewer:trapElements:changed",i)})})}),this.observer.observe(document.body,{childList:!0,subtree:!0})},beforeDestroy(){this.imageEditor&&this.imageEditor.terminate(),this.observer.disconnect(),window.removeEventListener("keydown",this.handleKeydown,!0)},methods:{onClose(){window.removeEventListener("keydown",this.handleKeydown,!0),this.$emit("close")},async fileExists(e){try{return await Ye.head(e,{validateStatus:n=>n===200||n===404}),(await Ye.head(e)).status===200}catch(n){if(n.response?.status===404)return!1;throw n}},async onSave({fullName:e,imageCanvas:n,mimeType:r,quality:i}){const{origin:o,pathname:a}=new URL(this.src),s=o+Zt.join(Zt.dirname(a),e);it.debug("Saving image...",{putUrl:s,src:this.src,fullName:e});const c=await this.fileExists(s);if(it.debug("File exists",{fileExists:c}),c){it.debug("File exists, showing confirmation dialog");try{const l=e===Zt.basename(this.src)?t("viewer","You are about to overwrite the original file. Are you sure you want to continue?"):t("viewer","A file with this name already exists. Do you want to overwrite it?");if(!await Td({name:t("viewer","Confirm overwrite"),text:l,labelConfirm:t("viewer","Overwrite"),labelReject:t("viewer","Cancel")})){it.debug("User cancelled overwrite");return}}catch(l){it.error("Error showing confirmation dialog",{error:l}),Cs(t("viewer","An error occurred while trying to confirm the file overwrite."));return}}r=r.replace("jpg","jpeg"),i=Math.max(Math.min(i,1),0)||1;try{const l=await new Promise(h=>n.toBlob(h,r,i)),u=await Ye.put(s,new File([l],e));if(it.info("Edited image saved!",{response:u}),Od(t("viewer","Image saved")),s!==this.src){const h=parseInt(u?.headers?.["oc-fileid"]?.split("oc")[0])||null;if(eo("editor:file:created",s),h){const d=window.OCP.Files.Router.params;d.fileId=h,window.OCP.Files.Router.goToRoute(null,d,window.OCP.Files.Router.query)}}else{this.$emit("updated");const h=await Dd(o,decodeURI(a)),d=new Ed({id:Number.parseInt(this.fileid),source:this.src,mtime:new Date(h.lastmod),...h,attributes:{...h,...h.props}});eo("files:node:updated",d)}}catch(l){it.error("Error saving image",{error:l}),Cs(t("viewer","Error saving image"))}},handleKeydown(e){e.key!=="Enter"&&e.stopImmediatePropagation(),e.key==="Escape"&&(e.preventDefault(),document.querySelector(".FIE_topbar-close-button").click()),e.ctrlKey&&e.key==="s"&&(e.preventDefault(),document.querySelector(".FIE_topbar-save-button").click()),e.ctrlKey&&e.key==="z"&&(e.preventDefault(),document.querySelector(".FIE_topbar-undo-button").click())}}};var VC=function(){var e=this,n=e._self._c;return n("div",[n("div",e._b({ref:"editor",staticClass:"viewer__image-editor"},"div",e.themeDataAttr,!1))])},HC=[],UC=dr($C,VC,HC,!1,null,"999a3a72");const WC=UC.exports,qC=["jpg","jpeg","png"],YC=new RegExp(`\\.(${qC.join("|")})$`,"i");function GC(e,n){return n.find(r=>r.fileid===e)}function ZC(e,n){return n.find(r=>r.filename!==e.filename&&r.basename.startsWith(e.name)&&YC.test(r.basename))}async function ys(e){const n=await Ld().getFileContents(`${Id()}${e}`,{details:!0});return URL.createObjectURL(new Blob([n.data],{type:n.headers["content-type"]}))}ut.use(Pi);const KC={name:"Images",components:{ImageEditor:WC,PlayCircleOutline:gf,NcLoadingIcon:mr},props:{editing:{type:Boolean,default:!1}},data(){return{dragging:!1,shiftX:0,shiftY:0,zoomRatio:1,fallback:!1,livePhotoCanBePlayed:!1,zooming:!1,pinchDistance:0,pinchStartZoomRatio:1,pointerCache:[]}},computed:{src(){return this.source??this.davPath},zoomHeight(){return Math.round(this.height*this.zoomRatio)},zoomWidth(){return Math.round(this.width*this.zoomRatio)},alt(){return this.basename},imgStyle(){return this.zoomRatio===1?{height:this.zoomHeight+"px",width:this.zoomWidth+"px"}:{marginTop:Math.round(this.shiftY*2)+"px",marginLeft:Math.round(this.shiftX*2)+"px",height:this.zoomHeight+"px",width:this.zoomWidth+"px"}},livePhoto(){if(this.metadataFilesLivePhoto!==void 0)return GC(this.metadataFilesLivePhoto,this.fileList)},livePhotoSrc(){return this.livePhoto?.source??this.livePhotoDavPath},livePhotoDavPath(){return this.livePhoto?Pd({filename:this.livePhoto.filename,basename:this.livePhoto.basename}):null}},asyncComputed:{data(){return this.mime==="image/svg+xml"?this.getBase64FromImage():this.mime==="image/gif"?this.src:this.source&&!this.hasPreview&&!this.previewUrl?this.fallback?ys(this.filename):this.source:this.fallback?this.src:this.previewPath}},watch:{active(e,n){e===!0&&n===!1?(this.resetZoom(),window.addEventListener("pointerout",this.pointerUp)):e===!1&&window.removeEventListener("pointerout",this.pointerUp)}},methods:{updateImgSize(){this.$refs.image?(this.naturalHeight=this.$refs.image.naturalHeight,this.naturalWidth=this.$refs.image.naturalWidth):this.$refs.video&&(this.naturalHeight=this.$refs.video.videoHeight,this.naturalWidth=this.$refs.video.videoWidth),this.updateHeightWidth(),this.doneLoading()},async getBase64FromImage(){const e=await Ye.get(this.src),n=jd.sanitize(e.data);return`data:${this.mime};base64,${btoa(unescape(encodeURIComponent(n)))}`},updateShift(e,n,r){const i=this.width*r-this.width,o=this.height*r-this.height;this.shiftX=Math.min(Math.max(e,-i/2),i/2),this.shiftY=Math.min(Math.max(n,-o/2),o/2)},updateZoomAndShift(e,n,r){if(!this.canZoom)return;const i=this.$refs.image??this.$refs.video,o=e-i.getBoundingClientRect().x-this.width*this.zoomRatio/2,a=n-i.getBoundingClientRect().y-this.height*this.zoomRatio/2,s=o/(this.width*this.zoomRatio),c=a/(this.height*this.zoomRatio),l=this.width*r-this.width*this.zoomRatio,u=this.height*r-this.height*this.zoomRatio,h=this.shiftX-s*l,d=this.shiftY-c*u;this.updateShift(h,d,r),this.zoomRatio=r},distanceBetweenTouches(){const e=this.pointerCache[0],n=this.pointerCache[1],r=n.x-e.x,i=n.y-e.y;return Math.sqrt(r*r+i*i)},updateZoom(e){if(!this.canZoom)return;const n=e.deltaY<0?Math.min(this.zoomRatio*1.1,5):Math.max(this.zoomRatio/1.1,1);if(n===1)return this.resetZoom();this.disableSwipe(),this.updateZoomAndShift(e.clientX,e.clientY,n)},resetZoom(){this.enableSwipe(),this.zoomRatio=1,this.shiftX=0,this.shiftY=0},pointerDown(e){this.pointerCache.push({pointerId:e.pointerId,x:e.clientX,y:e.clientY}),this.pointerCache.length===1&&(this.dragX=e.clientX,this.dragY=e.clientY,this.dragging=!0),this.pointerCache.length===2&&(this.pinchDistance=this.distanceBetweenTouches(),this.pinchStartZoomRatio=this.zoomRatio,this.zooming=!0,this.disableSwipe())},pointerUp(e){const n=this.pointerCache.findIndex(r=>r.pointerId===e.pointerId);this.pointerCache.splice(n,1),this.dragging=!1,this.zooming=!1},pointerMove(e){if(this.canZoom){if(this.pointerCache.length>0){const n=this.pointerCache.findIndex(r=>r.pointerId===e.pointerId);n>=0&&(this.pointerCache[n].x=e.clientX,this.pointerCache[n].y=e.clientY)}if(this.pointerCache.length===1&&this.dragging&&!this.zooming&&this.zoomRatio>1){const{clientX:n,clientY:r}=e,i=this.shiftX+(n-this.dragX),o=this.shiftY+(r-this.dragY);this.updateShift(i,o,this.zoomRatio),this.dragX=n,this.dragY=r}if(this.pointerCache.length===2&&this.zooming){const n=this.distanceBetweenTouches(),r=Math.min(Math.max(this.pinchStartZoomRatio*(n/this.pinchDistance),1),5),i=this.pointerCache[0],o=this.pointerCache[1],a=(i.x+o.x)/2,s=(i.y+o.y)/2;this.updateZoomAndShift(a,s,r)}}},onDblclick(){this.canZoom&&(this.zoomRatio>1?this.resetZoom():this.zoomRatio=1.3)},onClose(){this.$emit("update:editing",!1)},onFail(){this.fallback||(console.error(`Loading of file preview ${Md(this.src)} failed, falling back to original file`),this.fallback=!0)},doneLoadingLivePhoto(){this.livePhotoCanBePlayed=!0,this.doneLoading()},playLivePhoto(){this.livePhotoCanBePlayed&&this.$refs.video.play()},stopLivePhoto(){this.$refs.video.load()},t:N}};var XC=function(){var e=this,n=e._self._c;return n("div",{staticClass:"image_container"},[e.editing?n("ImageEditor",{attrs:{mime:e.mime,src:e.src,fileid:e.fileid},on:{close:e.onClose}}):e.data!==null?[e.livePhotoCanBePlayed?e._e():n("img",{ref:"image",class:{dragging:e.dragging,loaded:e.loaded,zoomed:e.zoomRatio>1},style:e.imgStyle,attrs:{alt:e.alt,src:e.data},on:{"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},load:e.updateImgSize,wheel:function(r){return r.stopPropagation(),r.preventDefault(),e.updateZoom.apply(null,arguments)},dblclick:function(r){return r.preventDefault(),e.onDblclick.apply(null,arguments)},pointerdown:function(r){return r.preventDefault(),e.pointerDown.apply(null,arguments)},pointerup:function(r){return r.preventDefault(),e.pointerUp.apply(null,arguments)},pointermove:function(r){return r.preventDefault(),e.pointerMove.apply(null,arguments)}}}),e.livePhoto?[n("video",{directives:[{name:"show",rawName:"v-show",value:e.livePhotoCanBePlayed,expression:"livePhotoCanBePlayed"}],ref:"video",class:{dragging:e.dragging,loaded:e.loaded,zoomed:e.zoomRatio>1},style:e.imgStyle,attrs:{playsinline:!0,poster:e.data,src:e.livePhotoSrc,preload:"metadata"},on:{canplaythrough:e.doneLoadingLivePhoto,loadedmetadata:e.updateImgSize,wheel:function(r){return r.stopPropagation(),r.preventDefault(),e.updateZoom.apply(null,arguments)},"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},dblclick:function(r){return r.preventDefault(),e.onDblclick.apply(null,arguments)},pointerdown:function(r){return r.preventDefault(),e.pointerDown.apply(null,arguments)},pointerup:function(r){return r.preventDefault(),e.pointerUp.apply(null,arguments)},pointermove:function(r){return r.preventDefault(),e.pointerMove.apply(null,arguments)},ended:e.stopLivePhoto}}),e.width!==0?n("button",{staticClass:"live-photo_play_button",style:{left:`calc(50% - ${e.width/2}px)`},attrs:{disabled:!e.livePhotoCanBePlayed,"aria-description":e.t("viewer","Play the live photo")},on:{click:e.playLivePhoto,pointerenter:e.playLivePhoto,focus:e.playLivePhoto,pointerleave:e.stopLivePhoto,blur:e.stopLivePhoto}},[e.livePhotoCanBePlayed?n("PlayCircleOutline"):n("NcLoadingIcon"),e._v(" "+e._s(e.t("viewer","LIVE"))+" ")],1):e._e()]:e._e()]:e._e()],2)},JC=[],QC=dr(KC,XC,JC,!1,null,"38b7dcaa");const e5=QC.exports,t5=xn(Bc,"enabled_preview_providers",[]),ld=["image/heic","image/heif","image/tiff","image/x-xbitmap","image/emf"],n5=["image/apng","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"],r5=()=>ld.filter(e=>t5.findIndex(n=>{const r=new RegExp(n.replace(/^\/|\/$/g,""),"i");return e.match(r)})>-1),cd=r5(),zc=ld.filter(e=>!cd.includes(e));zc.length>0&&it.warn("Some mimes were ignored because they are not enabled in the server previews config",{ignoredMimes:zc});const i5={id:"images",group:"media",mimes:[...n5,...cd],component:e5},ud={restart:N("viewer","Restart"),rewind:N("viewer","Rewind {seektime}s"),play:N("viewer","Play"),pause:N("viewer","Pause"),fastForward:N("viewer","Forward {seektime}s"),seek:N("viewer","Seek"),seekLabel:N("viewer","{currentTime} of {duration}"),played:N("viewer","Played"),buffered:N("viewer","Buffered"),currentTime:N("viewer","Current time"),duration:N("viewer","Duration"),volume:N("viewer","Volume"),mute:N("viewer","Mute"),unmute:N("viewer","Unmute"),enableCaptions:N("viewer","Enable captions"),disableCaptions:N("viewer","Disable captions"),download:N("viewer","Download"),enterFullscreen:N("viewer","Enter fullscreen"),exitFullscreen:N("viewer","Exit fullscreen"),frameTitle:N("viewer","Player for {title}"),captions:N("viewer","Captions"),settings:N("viewer","Settings"),pip:N("viewer","PIP"),menuBack:N("viewer","Go back to previous menu"),speed:N("viewer","Speed"),normal:N("viewer","Normal"),quality:N("viewer","Quality"),loop:N("viewer","Loop"),start:N("viewer","Start"),end:N("viewer","End"),all:N("viewer","All"),reset:N("viewer","Reset"),disabled:N("viewer","Disabled"),enabled:N("viewer","Enabled"),advertisement:N("viewer","Ad")};function hd(e){const n=new Intl.NumberFormat(Lt()),r=i=>i===1?N("viewer","Normal"):`${n.format(i)}×`;e.querySelectorAll('.plyr__menu__container [id$="-speed"] [role="menuitemradio"]').forEach(i=>{const o=Number.parseFloat(i.value);if(Number.isNaN(o))return;const a=i.querySelector("span");a&&(a.textContent=r(o))}),e.querySelectorAll(".plyr__menu__value").forEach(i=>{const o=/^(\d+(?:\.\d+)?)×$/.exec((i.textContent??"").trim());o&&(i.textContent=`${n.format(Number.parseFloat(o[1]))}×`)})}const o5=()=>zt(()=>import("./index.esm-DWWsYwJ5.chunk.mjs"),[],import.meta.url),a5=Hc("viewer","blank.mp4");ut.use(Pi);const s5={name:"Videos",components:{VuePlyr:o5},data(){return{isFullscreenButtonVisible:!1,fallback:!1,speedListenerBound:!1}},computed:{livePhotoPath(){const e=ZC(this,this.fileList);if(e!==void 0)return Fd(e)},player(){return this.$refs.plyr.player},options(){return{autoplay:this.active===!0,blankVideo:a5,controls:["play-large","play","progress","current-time","mute","volume","captions","settings","fullscreen"],loadSprite:!1,i18n:ud,fullscreen:{iosNative:!0}}}},asyncComputed:{async url(){return this.fallback?ys(this.filename):this.src}},watch:{active(e,n){e===!0&&n===!1?this.player.play():e===!1&&n===!0&&this.player.pause()}},updated(){const e=this.$el.querySelectorAll(".plyr__controls__item");!e||!e.length||([...e].forEach(n=>{n.getAttribute("data-plyr")==="fullscreen"&&n.addEventListener("click",this.hideHeaderAndFooter),n?.addEventListener&&(n.addEventListener("mouseenter",this.disableSwipe),n.addEventListener("mouseleave",this.enableSwipe))}),!this.speedListenerBound&&this.$refs.plyr?.player&&(this.$refs.plyr.player.on("ratechange",this.localizeSpeed),this.speedListenerBound=!0),this.localizeSpeed())},beforeDestroy(){it.debug("Closing video stream",{filename:this.filename}),this.$refs.video?.pause?.(),this.player.stop(),this.player.destroy()},methods:{localizeSpeed(){this.$nextTick(()=>hd(this.$el))},hideHeaderAndFooter(){this.isFullscreenButtonVisible=!this.isFullscreenButtonVisible,this.isFullscreenButtonVisible?(document.body.querySelector("main").classList.add("viewer__hidden-fullscreen"),document.body.querySelector("footer").classList.add("viewer__hidden-fullscreen")):(document.body.querySelector("main").classList.remove("viewer__hidden-fullscreen"),document.body.querySelector("footer").classList.remove("viewer__hidden-fullscreen"))},updateVideoSize(){this.naturalHeight=this.$refs.video?.videoHeight,this.naturalWidth=this.$refs.video?.videoWidth,this.updateHeightWidth()},donePlaying(){this.$refs.video.autoplay=!1,this.$refs.video.load()},onLoadedMetadata(){this.updateVideoSize(),this.active||this.player.stop()},onFail(){this.fallback||(console.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`),this.fallback=!0)}}};var l5=function(){var e=this,n=e._self._c;return e.url?n("div",[n("VuePlyr",{ref:"plyr",style:{height:e.height+"px",width:e.width+"px"},attrs:{options:e.options}},[n("video",{ref:"video",attrs:{autoplay:e.active?!0:null,playsinline:!0,poster:e.livePhotoPath,src:e.url,preload:"metadata"},on:{"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},ended:e.donePlaying,canplay:e.doneLoading,loadedmetadata:e.onLoadedMetadata}},[e._v(" "+e._s(e.t("viewer","Your browser does not support videos."))+" ")])])],1):e._e()},c5=[],u5=dr(s5,l5,c5,!1,null,"d885ce9a");const h5=u5.exports,d5={id:"videos",group:"media",mimes:["video/mpeg","video/ogg","video/webm","video/mp4","video/x-m4v","video/x-flv","video/quicktime"],mimesAliases:{"video/x-matroska":"video/webm"},component:h5},p5=()=>zt(()=>import("./index.esm-DWWsYwJ5.chunk.mjs"),[],import.meta.url);ut.use(Pi);const f5={name:"Audios",components:{VuePlyr:p5},data(){return{fallback:!1,speedListenerBound:!1}},computed:{player(){return this.$refs.plyr.player},options(){return{autoplay:this.active===!0,blankVideo:"/blank.aac",controls:["play-large","play","progress","current-time","mute","volume","settings"],loadSprite:!1,i18n:ud}}},asyncComputed:{async url(){return this.fallback?ys(this.filename):this.src}},watch:{active(e,n){e===!0&&n===!1?this.player.play():e===!1&&n===!0&&this.player.pause()}},updated(){const e=this.$el.querySelectorAll(".plyr__controls__item");!e||!e.length||([...e].forEach(n=>{n?.addEventListener&&(n.addEventListener("mouseenter",this.disableSwipe),n.addEventListener("mouseleave",this.enableSwipe))}),!this.speedListenerBound&&this.$refs.plyr?.player&&(this.$refs.plyr.player.on("ratechange",this.localizeSpeed),this.speedListenerBound=!0),this.localizeSpeed())},beforeDestroy(){it.debug("Closing audio stream",{filename:this.filename}),this.$refs.audio.pause(),this.player.stop(),this.player.destroy()},methods:{localizeSpeed(){this.$nextTick(()=>hd(this.$el))},donePlaying(){this.$refs.audio.autoplay=!1,this.$refs.audio.load()},onFail(){this.fallback||(console.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`),this.fallback=!0)}}};var m5=function(){var e=this,n=e._self._c;return e.url?n("div",[n("VuePlyr",{ref:"plyr",attrs:{options:e.options}},[n("audio",{ref:"audio",attrs:{autoplay:e.active,src:e.url,preload:"metadata"},on:{"~!error":function(r){return r.preventDefault(),r.stopPropagation(),e.onFail.apply(null,arguments)},ended:e.donePlaying,canplay:e.doneLoading}},[e._v(" "+e._s(e.t("viewer","Your browser does not support audio."))+" ")])])],1):e._e()},g5=[],v5=dr(f5,m5,g5,!1,null,"692a118e");const y5=v5.exports,b5={id:"audios",group:"media",mimes:["audio/aac","audio/aacp","audio/flac","audio/mp4","audio/mpeg","audio/ogg","audio/vorbis","audio/wav","audio/webm"],component:y5};class w5{_state;_mimetypes;_mimetypesCompare;constructor(){this._mimetypes=[],this._mimetypesCompare=[],this._state={},this._state.file="",this._state.fileInfo=null,this._state.compareFileInfo=null,this._state.files=[],this._state.enableSidebar=!0,this._state.el=null,this._state.loadMore=()=>[],this._state.onPrev=()=>{},this._state.onNext=()=>{},this._state.onClose=()=>{},this._state.canLoop=!0,this._state.handlers=[],this._state.overrideHandlerId=null,this.registerHandler(i5),this.registerHandler(d5),this.registerHandler(b5),it.debug("OCA.Viewer initialized")}get availableHandlers(){return this._state.handlers}registerHandler(n){const r=this.validateHandler(n);if(r){it.error("Could not register handler",{error:r,handler:n});return}n.downloadCallback||(n.downloadCallback=()=>{}),this._state.handlers.push(n);const i=[...n.mimes,...Object.keys(n.mimesAliases||{})];this._mimetypes.push.apply(this._mimetypes,i),n?.canCompare===!0&&this._mimetypesCompare.push.apply(this._mimetypesCompare,i)}validateHandler({id:n,mimes:r,mimesAliases:i,component:o}){if(!n||n.trim()===""||typeof n!="string")return"The handler doesn't have a valid id";if(this._state.handlers.find(a=>a.id===n))return"The handler is already registered";if(!(r&&Array.isArray(r))&&!i)return"Handler needs a valid mime array or mimesAliases";if(!o||typeof o!="object"&&typeof o!="function")return"The handler doesn't have a valid component"}get file(){return this._state.file}get fileInfo(){return this._state.fileInfo}get compareFileInfo(){return this._state.compareFileInfo}get files(){return this._state.files}get enableSidebar(){return this._state.enableSidebar}get el(){return this._state.el}get mimetypes(){return this._mimetypes}get mimetypesCompare(){return this._mimetypesCompare}get loadMore(){return this._state.loadMore}get onPrev(){return this._state.onPrev}get onNext(){return this._state.onNext}get onClose(){return this._state.onClose}get canLoop(){return this._state.canLoop}get overrideHandlerId(){return this._state.overrideHandlerId}setRootElement(n=null){if(this._state.file)throw new Error("Please set root element before calling Viewer.open().");this._state.el=n}open({path:n,fileInfo:r,list:i=[],enableSidebar:o=!0,loadMore:a=()=>[],canLoop:s=!0,onPrev:c=()=>{},onNext:l=()=>{},onClose:u=()=>{}}={}){if(typeof arguments[0]=="string")throw new Error("Opening the viewer with a single string parameter is deprecated. Please use a destructuring object instead",`OCA.Viewer.open({ path: '${n}' })`);if(!n&&!r)throw new Error("Viewer needs either an URL or path to open. None given");if(n&&!n.startsWith("/"))throw new Error("Please use an absolute path");if(!Array.isArray(i))throw new Error("The files list must be an array");if(typeof a!="function")throw new Error("The loadMore method must be a function");n?this._state.file=n:this._state.fileInfo=r,this._state.el||(this._state.files=i,this._state.enableSidebar=o,this._state.loadMore=a,this._state.onPrev=c,this._state.onNext=l,this._state.onClose=u,this._state.canLoop=s)}openWith(n,r={}){this._state.overrideHandlerId=n,this.open(r)}compare(n,r){this.open({fileInfo:n}),this._state.compareFileInfo=r}close(){this._state.file="",this._state.fileInfo=null,this._state.files=[],this._state.enableSidebar=!0,this._state.canLoop=!0,this._state.loadMore=()=>[],this._state.overrideHandlerId=null}}Nd(),window.OCA=window.OCA??{},window.OCA.Viewer=new w5,window.OCA.Viewer.version=Rc,window._oca_viewer_handlers&&window._oca_viewer_handlers.forEach(e=>{window.OCA.Viewer.availableHandlers.some(n=>n.id===e.id)||window.OCA.Viewer.registerHandler(e)});const x5=Object.freeze(Object.defineProperty({__proto__:null,default:o1},Symbol.toStringTag,{value:"Module"})),k5=Object.freeze(Object.defineProperty({__proto__:null,default:qa},Symbol.toStringTag,{value:"Module"}));export{Yu as a,Wa as c,cr as v}; //# sourceMappingURL=viewer-init.mjs.map diff --git a/js/viewer-init.mjs.license b/js/viewer-init.mjs.license index dfd34d470..b911d5d2f 100644 --- a/js/viewer-init.mjs.license +++ b/js/viewer-init.mjs.license @@ -292,7 +292,7 @@ This file is generated from multiple sources. Included packages: - version: 0.14.10 - license: MIT - vue-material-design-icons - - version: 5.3.1 + - version: 5.3.2 - license: MIT - vue-router - version: 3.6.5 diff --git a/js/viewer-init.mjs.map b/js/viewer-init.mjs.map index 396a1b20c..b8f31463d 100644 --- a/js/viewer-init.mjs.map +++ b/js/viewer-init.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["getFirstDay","intl","getCanonicalLocale","weekInfo","getDayNames","locale","getDayNamesShort","getDayNamesMin","getMonthNames","getMonthNamesShort","setAsyncState","vm","stateObject","state","getterOnly","fn","hasOwnProperty","object","property","isComputedLazy","item","isLazyActive","key","lazyActivePrefix","lazyDataPrefix","initLazy","data","value","makeLazyComputed","silentSetLazy","silentGetLazy","getGetterWatchedByArray","computedAsyncProperty","_this","splittedByDot","start","part","error","getGetterWatchedByFunction","getWatchedGetter","DidNotUpdate","getGetterWithShouldUpdate","asyncProprety","currentGetter","shouldNotUpdate","prefix","AsyncComputed","Vue","pluginOptions","asyncComputed","getter","getterFn","initDataWithAsyncComputed","generateDefault","_key","handleAsyncComputedPropetyChanges","promiseId","watcher","newPromise","thisPromise","err","handler","options","optionData","nonLazy","defaultValue","_sfc_main","register","useModelMigration","oldModelName","oldModelEvent","required","getCurrentInstance","computed","inputDateTypes","GenRandomId","id","name","$event","time","yyyy","MM","dd","hh","mm","timezoneOffsetSeconds","inputDateWithTimezone","startDate","daysSinceBeginningOfYear","weekNumber","_sfc_render","_vm","_c","_sfc_staticRenderFns","__component__","normalizeComponent","NcDateTimePickerNative","ScopeComponent","AlertCircle","Check","NcButton","model","isLegacy32","isValidLabel","logger","ariaDescribedby","event","newValue","NcInputField","t29","loadState","debounce","password","axios","generateOcsUrl","t","e","t18","t53","t51","defineAsyncComponent","__vitePreload","NcColorPicker","NcDateTimePicker$1","NcSelect","ActionTextMixin","NcActionRouter","NcActionText","realAppName","appName","realAppVersion","appVersion","t27","getBuilder","getCapabilities","t20","ChevronDown","t14","colors","NcLoadingIcon","t21","t23","t16","t45","defaultWindow","isClient","unrefElement","elRef","_a","plain","toValue","useEventListener","args","target","events","listeners","noop","cleanups","cleanup","el","listener","options2","stopWatch","watch","optionsClone","isObject","stop","tryOnScopeDispose","_iOSWorkaround","onClickOutside","window","ignore","capture","detectIframe","isIOS","shouldListen","shouldIgnore","target2","hasMultipleRoots","checkMultipleRoots","children","child","isProcessingClick","vOnClickOutside","directiveHooks","binding","resolveElement","checkOverflowScroll","ele","style","parent","preventDefault","rawEvent","_target","elInitialOverflow","useScrollLock","element","initialState","isLocked","ref","stopTouchMoveListener","initialOverflow","toRef","lock","unlock","v","onScrollLock","isMounted","global","Symbol","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","html","allowable_tags","tag_replacement","context","init_context","striptags_internal","init_striptags_stream","parse_allowable_tags","tag_buffer","depth","in_quote_char","output","idx","length","char","normalize_tag","tag_set","match","module","this","checkIfDarkTheme","backgroundInvertIfDark","INJECTION_KEY_THEME","useIsDarkThemeElement","isDarkTheme","isDarkSystemTheme","usePreferredDark","updateIsDarkTheme","useMutationObserver","readonly","useInternalIsDarkTheme","createSharedComposable","useIsDarkTheme","enforcedTheme","inject","t49","t33","t50","t31","urlAlphabet","nanoid","size","i","_typeof","obj","config","setSelector","selector","isBrowser","TargetContainer","h","nodes","Portal","disabled","targetEl","install","_Vue","svg","defineComponent","__props","props","useCssVars","_setup","color","cx","NcIconSvgWrapper","iconToggleSwitch","style0","__cssModules","_sfc_injectStyles","ctx","NcIconToggleSwitch","INSIDE_RADIO_GROUP_KEY","useInsideRadioGroup","_sfc_main$6","_sfc_render$6","_sfc_staticRenderFns$6","__component__$6","CheckboxBlankOutline","_sfc_main$5","_sfc_render$5","_sfc_staticRenderFns$5","__component__$5","CheckboxMarked","_sfc_main$4","_sfc_render$4","_sfc_staticRenderFns$4","__component__$4","MinusBox","_sfc_main$3","_sfc_render$3","_sfc_staticRenderFns$3","__component__$3","RadioboxBlank","_sfc_main$2","_sfc_render$2","_sfc_staticRenderFns$2","__component__$2","RadioboxMarked","TYPE_CHECKBOX","TYPE_RADIO","TYPE_SWITCH","TYPE_BUTTON","_sfc_main$1","type","_sfc_render$1","_sfc_staticRenderFns$1","__component__$1","NcCheckboxContent","__default__","radioGroup","internalType","onMounted","internalModelValue","n","__injectCSSVars__","__setup__","NcCheckboxRadioSwitch","encodedTlds","encodedUtlds","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","groups","addToGroups","flags","k","group","flagsForToken","result","c","State","token","input","nextState","regex","exactOnly","inputs","next","regexp","len","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","CR","LF","EMOJI_VARIATION","EMOJI_JOINER","OBJECT_REPLACEMENT","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Asciinumeric","Alphanumeric","Word","UWord","Nl","Cr","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","sch","run$1","str","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","operator","isCallable","option","val","MultiToken","truncate","formatted","protocol","href","formattedHref","tagName","content","attributes","className","rel","attrs","eventListeners","createTokenClass","Token","p","Email","Text","Url","makeState","arg","init$1","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","escapeText","text","escapeAttr","attributesToString","attr","linkifyStr","createElementId","NcEmptyContent","t15","u","node","convert","test","ok","castFactory","anyFactory","propertiesFactory","typeFactory","tests","checks","any","parameters","check","checkAsRecord","all","nodeAsRecord","testFunction","looksLikeANode","empty","CONTINUE","EXIT","SKIP","visitParents","tree","visitor","reverse","is","step","factory","parents","visit","subresult","offset","grandparents","toResult","nodeAsParent","decorateExternal","externalLink","externalLink_decorated","NcRichTextExternalLink","URL_PATTERN","URL_PATTERN_AUTOLINK","remarkAutolink","autolink","useMarkdown","useExtendedMarkdown","ancestors","ancestor","parsed","parseUrl","x","list","textAfter","textBefore","lastChar","joinedText","getRoute","router","url","removePrefix","removePrefixes","prefixes","acc","isAbsoluteURL","isNonHttpLink","getBaseUrl","relativeUrl","relativeRouterBase","getRootUrl","potentialRouterPath","route","getEnabledContactsMenuActions","entry","action","base64map","crypt","b","bytes","hex","base64","triplet","j","imod4","cryptModule","charenc","charenc_1","isBuffer_1","isBuffer","isSlowBuffer","require$$0","utf8","require$$1","require$$2","bin","md5","message","m","d","FF","GG","HH","II","aa","bb","cc","s","md5Module","digestbytes","t4","Color","r","g","toHex","int","calculateStepIncrement","steps","color1","color2","mixPalette","palette","increment","COLOR_RED","COLOR_YELLOW","COLOR_BLUE","COLOR_BLACK","COLOR_WHITE","defaultPalette","generatePalette","palette1","palette2","palette3","usernameToColor","username","hash","finalPalette","hashToInt","hash2","maximum","finalInt","getAvatarUrl","user","guestUrl","themeUrl","generateUrl","awayLegacySvg","awaySvg","busySvg","dndLegacySvg","dndSvg","invisibleLegacySvg","invisibleSvg","onlineLegacySvg","onlineSvg","t54","t12","getUserStatusText","status","matchSvg","NcUserStatusIcon","t11","userStatus","userId","capabilities","getCurrentUser","icon","browserStorage","getUserHasAvatar","flag","setUserHasAvatar","DotsHorizontalIcon","NcActions","NcPopover","NcProfileHoverCardDK5YkGF0","isLegacy35","initials","filteredChars","filtered","actions","NcActionLink","NcActionButton","escape","emojiIcon","shown","subscribe","unsubscribe","avatarUrl","srcset","userHasAvatar","img","NcAvatar","has","Events","EE","once","addListener","emitter","evt","clearEvent","EventEmitter","names","handlers","l","ee","a1","a2","a3","a4","a5","TimeoutError","AbortError","getDOMException","errorMessage","getAbortedReason","signal","reason","pTimeout","promise","milliseconds","fallback","customTimers","timer","abortHandler","cancelablePromise","resolve","reject","timeoutError","lowerBound","array","comparator","count","it","PriorityQueue","#queue","priority","PQueue","#carryoverConcurrencyCount","#isIntervalIgnored","#intervalCount","#intervalCap","#interval","#intervalEnd","#intervalId","#timeoutId","#queueClass","#pending","#concurrency","#isPaused","#throwOnTimeout","#idAssigner","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPaused","now","delay","canInitializeInterval","job","#processQueue","newConcurrency","#throwOnAbort","_resolve","function_","operation","functions","#onEvent","limit","filter","_","O","f","y","FindRanges","search","ranges","currentIndex","range","validRanges","mergedRanges","chunks","currentRange","chunk","NcHighlight","NcEllipsisedOption","margin","defaultSize","margin2","EMAIL_NOTATION","NcListItemIcon","t17","t38","VueSelect","allProps","mixin","optionLabel","createElement","Close","noDrop","open","map","clickableArea","gridBaseLine","avatarSize","dropdownMenu","component","width","addClass","togglePlacementClass","placement","updatePosition","computePosition","flip","shift","limitShift","autoUpdate","label","vueSelectKeys","searchString","selectedOption","spinner","t28","t7","w","S","C","F","A","E","M","L","P","R","G","U","N","H","D","V","q","B","T","J","I","$","W","z","X","Y","K","Z","Q","te","ne","t2","emit","currentColor","modelOpen","useVModel","HEX_REGEX","advanced","normalizedPalette","handleConfirm","hideCallback","toggleColor","pickCustomColor","getContrastColor","calculateLuma","red","green","blue","hexToRGB","mdiArrowLeft","mdiCheck","mdiCloseCircleOutline","mdiDotsHorizontal","Chrome","slotProps","t30","t35","t3","isDate","toDate","isValidDate","startOfWeek","firstDayOfWeek","date","day","diff","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","firstDateOfFirstWeek","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","REGEX_FORMAT","pad","sign","getOffset","formatTimezone","delimeter","absOffset","hours","minutes","meridiem","isLowercase","word","formatFlags","meridiemFunc","format","formatStr","defaultLocale","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread","source","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","callback","func","escapeStringRegExp","matchWordRegExp","localeKey","matchWordCallback","cent","matchMeridiem","defaultIsPM","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","to24hour","getFullInputArray","backupDate","backupArr","useBackup","createDate","ms","createUTCDate","_len","makeParser","dateString","mark","parseTo","parser","parse","_options$locale","_locale","_options$backupDate","parseResult","month","millisecond","weekday","week","inputArray","firstDate","parsedDate","_extends","_objectSpread2","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_unsupportedIterableToArray","minLen","_arrayLikeToArray","_extends$1","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","mergeFn","helper","isValidRangeDate","isValidDates","dates","getValidDate","backup","startOfYear","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","_i2","setMonth","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","assignTime","pick","res","prop","mergeDeep","unwrapExports","createCommonjsModule","en","exports","_default","en$1","lang","locales","isLocal","getLocale","rafThrottle","isRunning","getPopupElementSize","originalDisplay","originalVisibility","styles","height","getRelativePosition","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","dw","dh","getScrollParent","until","scroll","script","_this2","relativeElement","popup","appendToBody","_this$_popupRect","_getRelativePosition","template","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_h","__vue_staticRenderFns__","__vue_inject_styles__","__vue_component__","__vue_render__$1","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_component__$1","__vue_render__$2","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_component__$2","__vue_render__$3","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_component__$3","script$1","__vue_script__$1","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_component__$4","script$2","_this$getLocale","yearFormat","monthBeforeYear","_this$getLocale$month","monthFormat","yearLabel","monthLabel","days","panel","cell","_index$split$map","_index$split$map2","row","col","fmt","__vue_script__$2","__vue_render__$5","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_component__$5","script$3","monthsLocale","months","__vue_script__$3","__vue_render__$6","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_component__$6","script$4","last","firstYear","years","__vue_script__$4","__vue_render__$7","__vue_staticRenderFns__$7","__vue_inject_styles__$7","__vue_component__$7","CalendarPanel","panels","calendarDate","oldCalendar","oldPanel","_date","_date2","cellDate","notCurrentMonth","classes","_cellDate","_cellDate2","end","active","innerCalendar","CalendarRange","calendars","_this$innerValue","startValue","endValue","adjustIndex","gap","_calendars","calendarLeft","calendarRight","yearDiff","monthDiff","min","max","currentDates","classnames","inRange","_range$map","_range$map2","calendarRange","on","prefixClass","scrollBarWidth","getScrollbarWidth","outer","inner","script$5","wrap","heightPercentage","scrollHeight","scrollTop","offsetTop","clientY","clientHeight","__vue_script__$5","__vue_render__$8","__vue_staticRenderFns__$8","__vue_inject_styles__$8","__vue_component__$8","padNumber","generateOptions","scrollTo","to","duration","difference","tick","script$6","cols","num","_this3","_this4","_this5","elements","scrollElement","currentTarget","colIndex","cellIndex","__vue_script__$6","__vue_render__$9","__vue_staticRenderFns__$9","__vue_inject_styles__$9","__vue_component__$9","parseOption","values","scrollTo$1","script$7","startMinutes","endMinutes","stepMinutes","timeMinutes","__vue_script__$7","__vue_render__$a","__vue_staticRenderFns__$a","__vue_inject_styles__$a","__vue_component__$a","script$8","titleFormat","defaultProps","minHour","maxHour","__vue_script__$8","__vue_render__$b","__vue_staticRenderFns__$b","__vue_inject_styles__$b","__vue_component__$b","TimeRange","_this$value","defaultValues","DatetimePanel","datetime","calendarProps","timeProps","DatetimeRange","datetimes","componentMap","componentRangeMap","DatePicker","types","close","disabledDate","disabledTime","nextDates","keyCode","slotFn","calendarIcon","Component","_class","inline","sidedar","t46","formatTimezoneId","timezoneId","getTimezones","tz","formattedAdditionalTimezones","timezones","filterBy","terms","term","$$v","NcTimezonePicker","CalendarBlank","Web","t40","formatMap","firstThursday","yearStart","slot","scope","NcDateTimePicker","se","ie","re","oe","t6","t37","t44","t41","t22","DELAY","useCopy","isCopied","mdiContentCopy","altText","copy","t8","major","emptyOptions","toString","settings","includeImageAlt","includeHtml","one","VOID","PRIMITIVE","ARRAY","OBJECT","DATE","REGEXP","MAP","SET","ERROR","BIGINT","env","deserializer","as","out","unpair","set","buffer","deserialize","serialized","EMPTY","typeOf","asString","shouldSkip","TYPE","serializer","strict","json","pair","spread","entries","serialize","lossy","structuredClone$1","convertElement","tagNameFactory","looksLikeAnElement","ABSOLUTE_URL_REGEX","WINDOWS_PATH_REGEX","isAbsoluteUrl","stringify","testOrVisitor","visitorOrReverse","maybeReverse","overload","defaultProtocols","defaultRel","rehypeExternalLinks","protocols","contentRaw","createIfNeeded","relRaw","properties","structuredClone","Schema","normal","space","merge","definitions","normalize","Info","attribute","powers","boolean","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","DefinedInfo","mask","own","create","definition","info","xlink","xml","caseSensitiveTransform","caseInsensitiveTransform","xmlns","aria","valid","dash","cap","find","schema","Type","rest","camelcase","dashes","kebab","$0","hastToReact","htmlBase","svgBase","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","inlineStyleParser","lineno","column","lines","position","Position","msg","comments","rules","comment","pos","declaration","ret","trim","declarations","decls","decl","StyleToObject","iterator","hasIterator","styleToObjectModule","webNamespaces","toH","react","vue","vd","vdom","head","transform","hyperscript","parentSchema","addAttribute","subprop","commas","spaces","parseStyle","styleToObject","$1","error_","convert_1","matchesFactory","convertAll","results","matches","unistUtilVisitParents","unistUtilVisit","hastCssPropertyMap","hastUtilTableCellStyle","hastName","cssName","appendStyle","prevStyle","nextStyle","thing","tableElements","rehypeReact","fixTableCellAlign","compiler","tableCellStyle","escapeStringRegexp","string","findAndReplace","ignored","pairs","toPairs","pairIndex","grandparent","siblings","replace","change","matchObject","tupleOrList","tuple","toExpression","toFunction","newlineToBreak","remarkBreaks","decodeNamedCharacterReference","characterReference","character","splice","remove","items","chunkStart","push","combineExtensions","extensions","syntaxExtension","extension","hook","right","code","constructs","existing","before","decodeNumericCharacterReference","base","normalizeIdentifier","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","normalizeUri","skip","factorySpace","effects","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","previous","lineStart","document","initializeDocument","containerConstruct","tokenizeContainer","self","continued","childFlow","childToken","lineStartOffset","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","point","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","endOfFile","stream","seen","nok","classifyCharacter","resolveAll","called","attention","resolveAllAttention","tokenizeAttention","openingSequence","closingSequence","use","nextEvents","movePoint","attentionMarkers","marker","inside","after","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","blockQuote","tokenizeBlockQuoteContinuation","exit","tokenizeBlockQuoteStart","contStart","contBefore","characterEscape","tokenizeCharacterEscape","tokenizeCharacterReference","nonLazyContinuation","tokenizeNonLazyContinuation","codeFenced","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","startBefore","beforeSequenceClose","sequenceClose","sequenceCloseAfter","codeIndented","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","codeText","resolveCodeText","tokenizeCodeText","tailExitIndex","headEnterIndex","enter","between","SpliceBuffer","initial","deleteCount","removed","chunkedPush","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","slice","resolveContent","tokenizeContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","begin","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","resolveHeadingAtx","tokenizeHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","htmlFlow","resolveToHtmlFlow","tokenizeHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","continuation","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationAfter","continuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","resolveAllLabelEnd","resolveToLabelEnd","tokenizeLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","newEvents","media","labelStart","defined","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","sequence","tokenizeListContinuation","tokenizeListEnd","tokenizeListStart","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","kind","atMarker","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","resolveToSetextUnderline","tokenizeSetextUnderline","heading","paragraph","flow","initializeFlow","atBlankEnding","afterConstruct","resolver","createResolver","initializeFactory","field","resolveAllLineSuffixes","initializeText","notText","extraResolver","resolveAllText","bufferIndex","tabs","contentInitial","flowInitial","insideSpan","resolveText","disable","createTokenizer","initialize","from","columnStart","resolveAllConstructs","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","consume","defineSkip","sliceSerialize","sliceStream","write","main","addResult","expandTabs","serializeChunks","sliceChunks","_bufferIndex","_index","line","accountForPotentialSkip","chunkIndex","go","fields","construct","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startIndex","startBufferIndex","endIndex","endBufferIndex","view","atTab","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","encoding","endPosition","characterEscapeOrReference","decodeString","decode","$2","stringifyPosition","fromMarkdown","opener","link","onenterdata","codeFlow","emphasis","hardBreak","image","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","strong","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","compile","resume","listStack","prepareList","defaultOnError","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","and","errorHandler","onExitError","referenceType","fragment","combined","remarkParse","doc","blockquote","language","strikethrough","footnoteReference","clobberPrefix","safeId","counter","reuseCounter","sup","revert","subtype","suffix","contents","imageReference","inlineCode","linkReference","loose","listLoose","listItemLoose","root","pointEnd","pointStart","table","rows","firstRow","tableContent","body","tableRow","align","cells","alignValue","tableCell","tab","trimLines","trimLine","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","footer","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","tailTail","createState","definitionById","footnoteById","footnoteCounts","defaultHandlers","applyData","patch","handle","shallow","defaultUnknownHandler","trimMarkdownSpaceStart","hName","hChildren","hProperties","toHast","foot","remarkRehype","destination","file","hastTree","squeezeParagraphs","remarkUnlinkProtocols","proto","bail","hasOwn","toStr","defineProperty","gOPD","isArray","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","extend","src","copyIsArray","clone","deep","prototype","trough","fns","pipeline","middlewareIndex","middelware","middleware","wrapped","fnExpectsCallback","done","exception","then","VFileMessage","causeOrReason","optionsOrParentOrPlace","origin","legacyCause","minpath","basename","dirname","extname","join","path","assertPath","seenNonSlash","firstNonSlashEnd","extnameIndex","unmatchedSlash","startPart","startDot","preDotState","segments","joined","absolute","normalizeString","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","minproc","cwd","isUrl","fileUrlOrPath","urlToPath","getPathFromURLPosix","pathname","third","order","VFile","isUint8Array","assertNonEmpty","assertPart","stem","CallableInstance","apply","Processor","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","looksLikeAValue","complete","assertDone","assertNode","transformers","outputTree","resultingTree","attachers","namespace","addPlugin","addList","addPreset","add","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","frozen","asyncName","looksLikeAVFile","encodeReserveRE","encodeReserveReplacer","commaRE","encode","resolveQuery","query","extraQuery","_parseQuery","parseQuery","parsedQuery","castQueryParamValue","param","parts","stringifyQuery","val2","trailingSlashRE","createRoute","record","location","redirectedFrom","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bKey","bVal","isIncludedRoute","queryIncludes","handleRouteEntered","instance","cbs","i$1","View","cache","inactive","vnodeData","cachedData","cachedComponent","fillPropsinData","matched","vnode","configProps","propsToPass","resolveProps","resolvePath","relative","append","firstChar","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","partial","repeat","optional","delimiter","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","attachKeys","regexpToRegexp","arrayToRegexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","params","routeMsg","filler","normalizeLocation","params$1","rawPath","parsedPath","basePath","toTypes","eventTypes","Link","this$1$1","globalActiveClass","globalExactActiveClass","activeClassFallback","exactActiveClassFallback","activeClass","exactActiveClass","compareTarget","ariaCurrentValue","guardEvent","scopedSlot","findAnchor","aData","handler$1","event$1","aAttrs","isDef","registerInstance","callVal","strats","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","compileRouteRegex","childMatchAs","aliases","alias","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","redirect","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","behavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","supportsPushState","ua","pushState","history","replaceState","NavigationFailureType","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","cb","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","resolvedDef","isESModule","comp","flatten","hasSymbol","History","normalizeBase","errorCb","onComplete","onAbort","prev","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","updated","deactivated","activated","extractLeaveGuards","extractUpdateHooks","enterGuards","extractEnterGuards","cleanupListener","baseEl","extractGuards","records","bind","guards","guard","extractGuard","bindGuard","bindEnterGuard","HTML5History","getLocation","expectScroll","supportsScroll","handleRoutingEvent","fromRoute","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","mode","prototypeAccessors","app","handleInitialScroll","routeOrError","setupListeners","registerHook","fullPath","createHref","onDestroy","registerWidget","propsWithDefaults","renderWidget","richObjectType","richObject","accessible","interactive","destroyWidget","isWidgetRegistered","hasInteractiveView","hasFullWidth","isResizable","t24","IDLE_TIMEOUT","RESIZE_KEYBOARD_STEP","widgetId","isVisible","widgetRoot","customWidget","useElementSize","customWidgetHeight","useIntersectionObserver","nextTick","lineClamp","RouterLink","widget","widgetEl","computedStyle","parsedMin","parsedMax","delta","deltaY","NcReferenceWidget","response","isPublic","getSharingToken","reference","NcReferenceList","ccount","code2","index2","list2","replace2","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","transformGfmAutolinkLiterals","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolink","exitLiteralAutolinkEmail","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","gfmAutolinkLiteralToMarkdown","findUrl","findEmail","domain2","path2","isCorrectDomain","splitUrl","atext","trailExec","trail2","closingParenIndex","openingParens","closingParens","email","footnoteReferencePeek","gfmFootnoteFromMarkdown","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","enterFootnoteCall","enterFootnoteCallString","exitFootnoteDefinition","exitFootnoteDefinitionLabelString","exitFootnoteCall","exitFootnoteCallString","gfmFootnoteToMarkdown","footnoteDefinition","tracker","exit2","subexit","map$2","blank","constructsWithoutStrikethrough","handleDelete","peekDelete","gfmStrikethroughFromMarkdown","enterStrikethrough","exitStrikethrough","gfmStrikethroughToMarkdown","markdownTable","stringLength","defaultStringLength","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","row2","sizes2","columnIndex2","columnIndex","toAlignment","sizes","map$1","patternInScope","listInScope","none","_1","longestStreak","substring","expected","formatCodeAsIndented","checkFence","code$1","exit3","value2","checkQuote","quote","checkEmphasis","encodeCharacterReference","encodeInfo","outside","outsideKind","insideKind","emphasisPeek","betweenHead","betweenTail","formatHeadingAsSetext","literalWithBreak","node2","rank","subexit2","htmlPeek","imagePeek","imageReferencePeek","alt","inlineCodePeek","expression","formatLinkAsAutolink","linkPeek","linkReferencePeek","text2","checkBullet","checkBulletOther","bullet","bulletOther","checkBulletOrdered","checkRule","bulletCurrent","useDifferentMarker","firstListItem","checkListItemIndent","listItemIndent","map2","phrasing","checkStrong","strongPeek","text$1","checkRuleRepetition","repetition","gfmTableFromMarkdown","enterTable","enterCell","enterRow","exitCodeText","exitTable","gfmTableToMarkdown","padding","alignDelimiters","around","inlineCodeWithTable","handleTable","handleTableCell","handleTableRow","serializeData","handleTableAsData","handleTableRowAsData","matrix","gfmTaskListItemFromMarkdown","exitCheck","exitParagraphWithTaskListItem","gfmTaskListItemToMarkdown","listItemWithTaskListItem","firstParaghraph","sibling","checkable","checkbox","gfmFromMarkdown","gfmToMarkdown","wwwPrefix","tokenizeWwwPrefix","tokenizeDomain","tokenizePath","trail","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","gfmAutolinkLiteral","ok2","dot","gfmAtext","previousUnbalanced","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","constructs2","indent","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","call","replacement","callStart","callData","callEscape","labelAtMarker","whitespaceAfter","gfmStrikethrough","single","tokenizeStrikethrough","resolveAllStrikethrough","previous2","EditMap","addImpl","vecs","editMap","at","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","currentTable","currentBody","currentCell","flushTableEnd","flushCell","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","side","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","NcRichTextCopyButton","remarkPlaceholder","ast","placeholders","prepareTextNode","isCodeNode","remarkStripCode","remarkUnescape","LINK_PROTOCOLS","rehypeHighlight","importRehypeHighlightLibrary","argumentId","argument","renderedMarkdown","remark2rehype","rehype2react","tag","nestedNode","inputNode","labelParts","nestedNodeIndex","inputComponent","placeholder","processor","NcRichText","AccountIcon","BriefcaseIcon","ClockIcon","MapMarkerIcon","PencilIcon","t1","PROFILE_CACHE_TTL_MS","inflight","getCachedProfile","setCachedProfile","ttlMs","fetchProfileCached","fetcher","cached","loading","profileData","isMobile","useIsSmallMobile","isCurrentUser","settingsUrl","resolvedActions","localTimeLabel","formatProfileLocalTime","primaryAction","otherActions","primaryActionButtonProps","emptyProfileMessage","avatarUserStatus","timeZone","shifted","isIconUrl","otherActionComponent","otherActionProps","loadProfile","isOpen","hasPreloadedUserStatus","ensureUserStatus","fetchUserStatus","profile","NcProfileHoverCard","t39","t43","t10","predicate","thisArg","CustomEvent$1","registerCustomPickerElement","t9","imagePath","t42","t48","t25","t32","t13","t19","t34","t0","t47","t26","t52","normalizeStringPosix","_format","sep","pathObject","dir","posix","resolvedAbsolute","process","isAbsolute","trailingSeparator","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","toCode","hasRoot","matchedSlash","ext","extIdx","pathBrowserify","translations","TABS","TOOLS","theme","styleElement","linkTo","FilerobotImageEditor","__vite_default__","mutations","mutation","fullName","imageCanvas","mimeType","quality","putUrl","fileExists","showConfirmation","showError","blob","showSuccess","fileId","newParams","updatedFile","rawStat","Node","livePictureExt","livePictureExtRegex","findLivePhotoPeerFromFileId","peerFileId","fileList","findLivePhotoPeerFromName","referenceFile","comparedFile","preloadMedia","filename","getClient","getRootPath","ImageEditor","PlayCircleOutline","getDavPath","old","sanitized","DOMPurify","newShiftX","newShiftY","newZoomRatio","maxShiftX","maxShiftY","stableX","stableY","scrollX","scrollY","scrollPercX","scrollPercY","growX","growY","diffX","diffY","cachedEv","clientX","newDistance","translate","enabledPreviewProviders","previewSupportedMimes","browserSupportedMimes","filterEnabledMimes","mimeRegex","enabledMimes","ignoredMimes","Images","plyrTranslations","localizeSpeedLabels","formatter","speedLabel","badge","VuePlyr","blankVideo","peerFile","getPreviewIfAny","plyrControls","control","Videos","Audios","Viewer","handledMimes","mimes","mimesAliases","fileInfo","enableSidebar","loadMore","canLoop","onPrev","onNext","onClose","handlerId","compareFileInfo","registerViewerAction","ViewerService"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246],"sources":["../node_modules/@nextcloud/l10n/dist/index.mjs","../node_modules/vue-async-computed/dist/vue-async-computed.esm.js","../node_modules/vue-material-design-icons/PlayCircleOutline.vue","../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-C3eUBbt4.mjs","../node_modules/@nextcloud/vue/dist/chunks/useModelMigration-EhAWvqDD.mjs","../node_modules/@nextcloud/vue/dist/Components/NcDateTimePickerNative.mjs","../node_modules/@nextcloud/vue/dist/chunks/AlertCircleOutline-DBxbepLy.mjs","../node_modules/@nextcloud/vue/dist/chunks/Check-BkThHPH7.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputField-Cym5GuvB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcPasswordField-2woxTjbl.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextField-CQp8XS4C.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionInput-CMLDgnF_.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionRouter.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionText.mjs","../node_modules/@nextcloud/vue/dist/chunks/appName-qk1L3dsY.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppContent-7ziLICwJ.mjs","../node_modules/@nextcloud/vue/dist/Composables/useHotKey.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationToggle-DQZ2LWw4.mjs","../node_modules/@nextcloud/vue/dist/chunks/ChevronDown-DFQfzh63.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-44rhjqEA.mjs","../node_modules/@nextcloud/vue/dist/Components/NcLoadingIcon.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-Dg-2s6bP.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-DIO0S2TU.mjs","../node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","../node_modules/@vueuse/components/index.mjs","../node_modules/striptags/src/striptags.js","../node_modules/@nextcloud/vue/dist/Functions/isDarkTheme.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-wIEKSp2G.mjs","../node_modules/@nextcloud/vue/dist/Composables/useIsDarkTheme.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-3jZKd9et.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDialogButton-D5yuDtSF.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-JB67n8yt.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-BpUlnEbQ.mjs","../node_modules/nanoid/non-secure/index.js","../node_modules/@linusborg/vue-simple-portal/dist/index.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcIconToggleSwitch-B19dt_oD.mjs","../node_modules/@nextcloud/vue/dist/chunks/useNcRadioGroup-D6llQmAl.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCheckboxRadioSwitch-BAjRm8PQ.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/linkify-string/dist/linkify-string.mjs","../node_modules/@nextcloud/vue/dist/chunks/createElementId-DhjFt1I9.mjs","../node_modules/@nextcloud/vue/dist/Components/NcEmptyContent.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-B2F66PCc.mjs","../node_modules/unist-builder/lib/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/@nextcloud/vue/dist/chunks/autolink-COrOqbJu.mjs","../node_modules/@nextcloud/vue/dist/Functions/contactsMenu.mjs","../node_modules/crypt/crypt.js","../node_modules/charenc/charenc.js","../node_modules/is-buffer/index.js","../node_modules/md5/md5.js","../node_modules/@nextcloud/vue/dist/chunks/colors-B_oqiKWY.mjs","../node_modules/@nextcloud/vue/dist/Functions/usernameToColor.mjs","../node_modules/@nextcloud/vue/dist/chunks/getAvatarUrl-BGOeDmNO.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcUserStatusIcon-gpl3yJFX.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAvatar-C1ty7wsG.mjs","../node_modules/eventemitter3/index.js","../node_modules/p-timeout/index.js","../node_modules/p-queue/dist/lower-bound.js","../node_modules/p-queue/dist/priority-queue.js","../node_modules/p-queue/dist/index.js","../node_modules/@nextcloud/vue/dist/Functions/preloadImage.mjs","../node_modules/@nextcloud/vue-select/dist/vue-select.js","../node_modules/@nextcloud/vue/dist/chunks/index-CxTT94_h.mjs","../node_modules/@nextcloud/vue/dist/Components/NcEllipsisedOption.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-DIecVacf.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelect-CxHfXvZV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-75D50pZU.mjs","../node_modules/vue-color/dist/vue-color.min.js","../node_modules/@nextcloud/vue/dist/chunks/NcColorPicker-BwqjqV32.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcContent-nvVwz9xO.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-d_eqooRR.mjs","../node_modules/@nextcloud/vue/dist/Composables/useFormatDateTime.mjs","../node_modules/date-format-parse/es/util.js","../node_modules/date-format-parse/es/locale/en.js","../node_modules/date-format-parse/es/format.js","../node_modules/date-format-parse/es/parse.js","../node_modules/vue2-datepicker/index.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcTimezonePicker-BfSjyBxq.mjs","../node_modules/@nextcloud/vue/dist/Components/NcDateTimePicker.mjs","../node_modules/emoji-mart-vue-fast/dist/emoji-mart.js","../node_modules/@nextcloud/vue/dist/chunks/emoji-Dtn2mDf7.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcEmojiPicker-C_88_f6x.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-Dg6UqMN1.mjs","../node_modules/@nextcloud/vue/dist/chunks/useCopy-C-jNoLry.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-D86qGvDb.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-BACQoMeA.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItem-DFrhF-DU.mjs","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/hast-util-is-element/lib/index.js","../node_modules/is-absolute-url/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/rehype-external-links/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/property-information/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/inline-style-parser/index.js","../node_modules/style-to-object/index.js","../node_modules/web-namespaces/index.js","../node_modules/hast-to-hyperscript/lib/index.js","../node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is/convert.js","../node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents/index.js","../node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit/index.js","../node_modules/@mapbox/hast-util-table-cell-style/index.js","../node_modules/hast-util-whitespace/index.js","../node_modules/rehype-react/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-newline-to-break/lib/index.js","../node_modules/remark-breaks/lib/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/unist-util-position/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/mdast-squeeze-paragraphs/lib/index.js","../node_modules/remark-unlink-protocols/lib/index.js","../node_modules/bail/index.js","../node_modules/extend/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/vue-router/dist/vue-router.esm.js","../node_modules/@nextcloud/vue/dist/chunks/widgets-XxirL-2f.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcReferenceWidget-CMq5QVka.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRichText-K2ZjNIbK.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProfileHoverCard-DK5YkGF0.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-D7zYeXBH.mjs","../node_modules/tributejs/dist/tribute.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-BKygMHvP.mjs","../node_modules/@nextcloud/vue/dist/chunks/customPickerElements-CYpmyl0b.mjs","../node_modules/@nextcloud/vue/dist/chunks/referencePickerModal-P_15xB7f.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRichContenteditable-rJPX28V6.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectTags-BWTTPN2O.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-D2jOjPs4.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsInputText-Cc7cCwNm.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSection-D9qxzYDc.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-DzzNyHN_.mjs","../node_modules/@nextcloud/vue/dist/Directives/Tooltip.mjs","../node_modules/path-browserify/index.js","../src/models/editorTranslations.js","../src/components/ImageEditor.vue","../src/utils/livePhotoUtils.ts","../src/services/mediaPreloader.ts","../src/components/Images.vue","../src/models/images.js","../src/utils/plyrTranslations.ts","../src/components/Videos.vue","../src/models/videos.js","../src/components/Audios.vue","../src/models/audios.js","../src/services/Viewer.js","../src/init.ts"],"sourcesContent":["import { g as getCanonicalLocale, a as getLanguage } from \"./chunks/translation-DoG5ZELJ.mjs\";\nimport { b, e, i, l, d, r, c, s, t, t as t2, d as d2, u } from \"./chunks/translation-DoG5ZELJ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction getFirstDay() {\n if (typeof globalThis.firstDay !== \"undefined\") {\n return globalThis.firstDay;\n }\n const intl = new Intl.Locale(getCanonicalLocale());\n const weekInfo = intl.getWeekInfo?.() ?? intl.weekInfo;\n if (weekInfo) {\n return weekInfo.firstDay % 7;\n }\n return 1;\n}\nfunction getDayNames() {\n if (typeof globalThis.dayNames !== \"undefined\") {\n return globalThis.dayNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"long\" })\n ];\n}\nfunction getDayNamesShort() {\n if (typeof globalThis.dayNamesShort !== \"undefined\") {\n return globalThis.dayNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"short\" })\n ];\n}\nfunction getDayNamesMin() {\n if (typeof globalThis.dayNamesMin !== \"undefined\") {\n return globalThis.dayNamesMin;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"narrow\" })\n ];\n}\nfunction getMonthNames() {\n if (typeof globalThis.monthNames !== \"undefined\") {\n return globalThis.monthNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"long\" })\n ];\n}\nfunction getMonthNamesShort() {\n if (typeof globalThis.monthNamesShort !== \"undefined\") {\n return globalThis.monthNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"short\" })\n ];\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction formatRelativeTime(timestamp = Date.now(), opts = {}) {\n const options = {\n ignoreSeconds: false,\n language: getLanguage(),\n relativeTime: \"long\",\n ...opts\n };\n const date = new Date(timestamp);\n const formatter = new Intl.RelativeTimeFormat([options.language, getLanguage()], { numeric: \"auto\", style: options.relativeTime });\n const diff = date.getTime() - Date.now();\n const seconds = diff / 1e3;\n if (Math.abs(seconds) < 59.5) {\n return options.ignoreSeconds || formatter.format(Math.round(seconds), \"second\");\n }\n const minutes = seconds / 60;\n if (Math.abs(minutes) <= 59) {\n return formatter.format(Math.round(minutes), \"minute\");\n }\n const hours = minutes / 60;\n if (Math.abs(hours) < 23.5) {\n return formatter.format(Math.round(hours), \"hour\");\n }\n const days = hours / 24;\n if (Math.abs(days) < 6.5) {\n return formatter.format(Math.round(days), \"day\");\n }\n if (Math.abs(days) < 27.5) {\n const weeks = days / 7;\n return formatter.format(Math.round(weeks), \"week\");\n }\n const months = days / 30;\n const format = Math.abs(months) < 11 ? { month: options.relativeTime, day: \"numeric\" } : { year: options.relativeTime === \"narrow\" ? \"2-digit\" : \"numeric\", month: options.relativeTime };\n const dateTimeFormatter = new Intl.DateTimeFormat([options.language, getLanguage()], format);\n return dateTimeFormatter.format(date);\n}\nexport {\n formatRelativeTime,\n getCanonicalLocale,\n getDayNames,\n getDayNamesMin,\n getDayNamesShort,\n getFirstDay,\n getLanguage,\n b as getLocale,\n getMonthNames,\n getMonthNamesShort,\n e as getPlural,\n i as isRTL,\n l as loadTranslations,\n d as n,\n r as register,\n c as setLanguage,\n s as setLocale,\n t,\n t2 as translate,\n d2 as translatePlural,\n u as unregister\n};\n//# sourceMappingURL=index.mjs.map\n","function setAsyncState(vm, stateObject, state) {\n vm.$set(vm.$data._asyncComputed[stateObject], 'state', state);\n vm.$set(vm.$data._asyncComputed[stateObject], 'updating', state === 'updating');\n vm.$set(vm.$data._asyncComputed[stateObject], 'error', state === 'error');\n vm.$set(vm.$data._asyncComputed[stateObject], 'success', state === 'success');\n}\n\nfunction getterOnly(fn) {\n if (typeof fn === 'function') return fn;\n\n return fn.get;\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction isComputedLazy(item) {\n return hasOwnProperty(item, 'lazy') && item.lazy;\n}\n\nfunction isLazyActive(vm, key) {\n return vm[lazyActivePrefix + key];\n}\n\nvar lazyActivePrefix = 'async_computed$lazy_active$',\n lazyDataPrefix = 'async_computed$lazy_data$';\n\nfunction initLazy(data, key, value) {\n data[lazyActivePrefix + key] = false;\n data[lazyDataPrefix + key] = value;\n}\n\nfunction makeLazyComputed(key) {\n return {\n get: function get() {\n this[lazyActivePrefix + key] = true;\n return this[lazyDataPrefix + key];\n },\n set: function set(value) {\n this[lazyDataPrefix + key] = value;\n }\n };\n}\n\nfunction silentSetLazy(vm, key, value) {\n vm[lazyDataPrefix + key] = value;\n}\nfunction silentGetLazy(vm, key) {\n return vm[lazyDataPrefix + key];\n}\n\nvar getGetterWatchedByArray = function getGetterWatchedByArray(computedAsyncProperty) {\n return function getter() {\n var _this = this;\n\n computedAsyncProperty.watch.forEach(function (key) {\n // Check if nested key is watched.\n var splittedByDot = key.split('.');\n if (splittedByDot.length === 1) {\n // If not, just access it.\n // eslint-disable-next-line no-unused-expressions\n _this[key];\n } else {\n // Access the nested propety.\n try {\n var start = _this;\n splittedByDot.forEach(function (part) {\n start = start[part];\n });\n } catch (error) {\n console.error('AsyncComputed: bad path: ', key);\n throw error;\n }\n }\n });\n return computedAsyncProperty.get.call(this);\n };\n};\n\nvar getGetterWatchedByFunction = function getGetterWatchedByFunction(computedAsyncProperty) {\n return function getter() {\n computedAsyncProperty.watch.call(this);\n return computedAsyncProperty.get.call(this);\n };\n};\n\nfunction getWatchedGetter(computedAsyncProperty) {\n if (typeof computedAsyncProperty.watch === 'function') {\n return getGetterWatchedByFunction(computedAsyncProperty);\n } else if (Array.isArray(computedAsyncProperty.watch)) {\n computedAsyncProperty.watch.forEach(function (key) {\n if (typeof key !== 'string') {\n throw new Error('AsyncComputed: watch elemnts must be strings');\n }\n });\n return getGetterWatchedByArray(computedAsyncProperty);\n } else {\n throw Error('AsyncComputed: watch should be function or an array');\n }\n}\n\nvar DidNotUpdate = typeof Symbol === 'function' ? Symbol('did-not-update') : {};\n\nvar getGetterWithShouldUpdate = function getGetterWithShouldUpdate(asyncProprety, currentGetter) {\n return function getter() {\n return asyncProprety.shouldUpdate.call(this) ? currentGetter.call(this) : DidNotUpdate;\n };\n};\n\nvar shouldNotUpdate = function shouldNotUpdate(value) {\n return DidNotUpdate === value;\n};\n\nvar prefix = '_async_computed$';\n\nvar AsyncComputed = {\n install: function install(Vue, pluginOptions) {\n pluginOptions = pluginOptions || {};\n\n Vue.config.optionMergeStrategies.asyncComputed = Vue.config.optionMergeStrategies.computed;\n\n Vue.mixin({\n data: function data() {\n return {\n _asyncComputed: {}\n };\n },\n\n computed: {\n $asyncComputed: function $asyncComputed() {\n return this.$data._asyncComputed;\n }\n },\n beforeCreate: function beforeCreate() {\n var asyncComputed = this.$options.asyncComputed || {};\n\n if (!Object.keys(asyncComputed).length) return;\n\n for (var key in asyncComputed) {\n var getter = getterFn(key, asyncComputed[key]);\n this.$options.computed[prefix + key] = getter;\n }\n\n this.$options.data = initDataWithAsyncComputed(this.$options, pluginOptions);\n },\n created: function created() {\n for (var key in this.$options.asyncComputed || {}) {\n var item = this.$options.asyncComputed[key],\n value = generateDefault.call(this, item, pluginOptions);\n if (isComputedLazy(item)) {\n silentSetLazy(this, key, value);\n } else {\n this[key] = value;\n }\n }\n\n for (var _key in this.$options.asyncComputed || {}) {\n handleAsyncComputedPropetyChanges(this, _key, pluginOptions, Vue);\n }\n }\n });\n }\n};\n\nfunction handleAsyncComputedPropetyChanges(vm, key, pluginOptions, Vue) {\n var promiseId = 0;\n var watcher = function watcher(newPromise) {\n var thisPromise = ++promiseId;\n\n if (shouldNotUpdate(newPromise)) return;\n\n if (!newPromise || !newPromise.then) {\n newPromise = Promise.resolve(newPromise);\n }\n setAsyncState(vm, key, 'updating');\n\n newPromise.then(function (value) {\n if (thisPromise !== promiseId) return;\n setAsyncState(vm, key, 'success');\n vm[key] = value;\n }).catch(function (err) {\n if (thisPromise !== promiseId) return;\n\n setAsyncState(vm, key, 'error');\n Vue.set(vm.$data._asyncComputed[key], 'exception', err);\n if (pluginOptions.errorHandler === false) return;\n\n var handler = pluginOptions.errorHandler === undefined ? console.error.bind(console, 'Error evaluating async computed property:') : pluginOptions.errorHandler;\n\n if (pluginOptions.useRawError) {\n handler(err, vm, err.stack);\n } else {\n handler(err.stack);\n }\n });\n };\n Vue.set(vm.$data._asyncComputed, key, {\n exception: null,\n update: function update() {\n if (!vm._isDestroyed) {\n watcher(getterOnly(vm.$options.asyncComputed[key]).apply(vm));\n }\n }\n });\n setAsyncState(vm, key, 'updating');\n vm.$watch(prefix + key, watcher, { immediate: true });\n}\n\nfunction initDataWithAsyncComputed(options, pluginOptions) {\n var optionData = options.data;\n var asyncComputed = options.asyncComputed || {};\n\n return function vueAsyncComputedInjectedDataFn(vm) {\n var data = (typeof optionData === 'function' ? optionData.call(this, vm) : optionData) || {};\n for (var key in asyncComputed) {\n var item = this.$options.asyncComputed[key];\n\n var value = generateDefault.call(this, item, pluginOptions);\n if (isComputedLazy(item)) {\n initLazy(data, key, value);\n this.$options.computed[key] = makeLazyComputed(key);\n } else {\n data[key] = value;\n }\n }\n return data;\n };\n}\n\nfunction getterFn(key, fn) {\n if (typeof fn === 'function') return fn;\n\n var getter = fn.get;\n\n if (hasOwnProperty(fn, 'watch')) {\n getter = getWatchedGetter(fn);\n }\n\n if (hasOwnProperty(fn, 'shouldUpdate')) {\n getter = getGetterWithShouldUpdate(fn, getter);\n }\n\n if (isComputedLazy(fn)) {\n var nonLazy = getter;\n getter = function lazyGetter() {\n if (isLazyActive(this, key)) {\n return nonLazy.call(this);\n } else {\n return silentGetLazy(this, key);\n }\n };\n }\n return getter;\n}\n\nfunction generateDefault(fn, pluginOptions) {\n var defaultValue = null;\n\n if ('default' in fn) {\n defaultValue = fn.default;\n } else if ('default' in pluginOptions) {\n defaultValue = pluginOptions.default;\n }\n\n if (typeof defaultValue === 'function') {\n return defaultValue.call(this);\n } else {\n return defaultValue;\n }\n}\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.Vue) {\n // Auto install in dist mode\n window.Vue.use(AsyncComputed);\n}\n\nexport default AsyncComputed;\n","\n \n \n {{ title }}\n \n \n \n\n\n","import '../assets/NcActionButtonGroup-DqR0weTf.css';\nimport { defineComponent } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: `nc-action-button-group-${GenRandomId()}`\n };\n },\n methods: {\n t\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"li\", { staticClass: \"nc-button-group-base\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_vm.name ? _c(\"div\", { attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _c(\"ul\", { staticClass: \"nc-button-group-content\", attrs: { \"role\": \"group\", \"aria-labelledby\": _vm.name ? _vm.labelId : void 0 } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"d5482fd6\"\n);\nconst NcActionButtonGroup = __component__.exports;\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-C3eUBbt4.mjs.map\n","import Vue, { getCurrentInstance, computed } from \"vue\";\nfunction useModelMigration(oldModelName, oldModelEvent, required = false) {\n const vm = getCurrentInstance().proxy;\n if (required && vm.$props[oldModelName] === void 0 && vm.$props.modelValue === void 0) {\n Vue.util.warn(`Missing required prop: \"modelValue\" or old \"${oldModelName}\"`);\n }\n const model = computed({\n get() {\n if (vm.$props[oldModelName] !== void 0) {\n return vm.$props[oldModelName];\n }\n return vm.$props.modelValue;\n },\n set(value) {\n vm.$emit(\"update:modelValue\", value);\n vm.$emit(\"update:model-value\", value);\n vm.$emit(oldModelEvent, value);\n }\n });\n return model;\n}\nexport {\n useModelMigration as u\n};\n//# sourceMappingURL=useModelMigration-EhAWvqDD.mjs.map\n","import '../assets/NcDateTimePickerNative-ZqMiOh_m.css';\nimport { u as useModelMigration } from \"../chunks/useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-Df3JYkxQ.mjs\";\nconst inputDateTypes = [\"date\", \"datetime-local\", \"month\", \"time\", \"week\"];\nconst _sfc_main = {\n name: \"NcDateTimePickerNative\",\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: Date,\n default: void 0\n },\n /**\n * The date is – like the `Date` object in JavaScript – tied to UTC.\n * The selected time zone does not have an influence of the selected time and date value.\n * You have to translate the time yourself when you want to factor in time zones.\n * Pass null to clear the input field.\n */\n modelValue: {\n type: Date,\n default: null\n },\n /**\n * id attribute of the input field\n */\n id: {\n type: String,\n default: () => \"date-time-picker-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * type attribute of the input field\n * default type: String\n * The type of the input element, it can be `date`, `datetime-local`, `month`, `time`, `week`\n */\n type: {\n type: String,\n default: \"date\",\n validate: (name) => inputDateTypes.includes(name)\n },\n /**\n * text inside the label element\n * default type: String\n */\n label: {\n type: String,\n default: \"Please choose a date\"\n },\n /**\n * min attribute of the input field\n * default type: null\n */\n min: {\n type: [Boolean, Date],\n default: null\n },\n /**\n * max attribute of the input field\n * default type: null\n */\n max: {\n type: [Boolean, Date],\n default: null\n },\n /**\n * Flag to hide the label\n * default type: String\n * The hidden input label for accessibility purposes.\n */\n hideLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcDateTimePickerNative in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /**\n * Emitted when the input value changes\n *\n * @return {Date} new chosen Date()\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n computed: {\n formattedValue() {\n return this.formatValue(this.model);\n },\n formattedMin() {\n if (this.min) {\n return this.formatValue(this.min);\n }\n return false;\n },\n formattedMax() {\n if (this.max) {\n return this.formatValue(this.max);\n }\n return false;\n },\n listeners() {\n return {\n ...this.$listeners,\n /**\n * Handle the input event\n *\n * @param {InputEvent} $event input event payloads\n */\n input: ($event) => {\n if (isNaN($event.target.valueAsNumber)) {\n this.model = null;\n } else if (this.type === \"time\") {\n const time = $event.target.value;\n if (this.model === \"\") {\n const { yyyy, MM, dd } = this.getReadableDate(/* @__PURE__ */ new Date());\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else {\n const { yyyy, MM, dd } = this.getReadableDate(this.model);\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n }\n } else if (this.type === \"month\") {\n const MM = (new Date($event.target.value).getMonth() + 1).toString().padStart(2, \"0\");\n if (this.model === \"\") {\n const { yyyy, dd, hh, mm } = this.getReadableDate(/* @__PURE__ */ new Date());\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const { yyyy, dd, hh, mm } = this.getReadableDate(this.model);\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n }\n } else {\n const timezoneOffsetSeconds = new Date($event.target.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = $event.target.valueAsNumber + timezoneOffsetSeconds;\n this.model = new Date(inputDateWithTimezone);\n }\n }\n };\n }\n },\n methods: {\n /**\n * Returns Object with string values of a Date\n *\n * @param {Date} value The selected value\n * @return {object|undefined}\n */\n getReadableDate(value) {\n if (value instanceof Date) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n },\n /**\n * Returns preformatted value for the input field\n *\n * @param {Date} value The selected value\n * @return {string|undefined}\n */\n formatValue(value) {\n if (value instanceof Date) {\n const { yyyy, MM, dd, hh, mm } = this.getReadableDate(value);\n if (this.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (this.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (this.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (this.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (this.type === \"week\") {\n const startDate = new Date(yyyy, 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value - startDate) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n } else {\n return \"\";\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"native-datetime-picker\" }, [_c(\"label\", { staticClass: \"native-datetime-picker--label\", class: { \"hidden-visually\": _vm.hideLabel }, attrs: { \"for\": _vm.id } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]), _c(\"input\", _vm._g(_vm._b({ staticClass: \"native-datetime-picker--input\", class: _vm.inputClass, attrs: { \"id\": _vm.id, \"type\": _vm.type, \"min\": _vm.formattedMin, \"max\": _vm.formattedMax }, domProps: { \"value\": _vm.formattedValue } }, \"input\", _vm.$attrs, false), _vm.listeners))]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"6c1feae8\"\n);\nconst NcDateTimePickerNative = __component__.exports;\nScopeComponent(NcDateTimePickerNative);\nexport {\n NcDateTimePickerNative as default\n};\n//# sourceMappingURL=NcDateTimePickerNative.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"AlertCircleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-circle-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst AlertCircle = __component__.exports;\nexport {\n AlertCircle as A\n};\n//# sourceMappingURL=AlertCircleOutline-DBxbepLy.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon check-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst Check = __component__.exports;\nexport {\n Check as C\n};\n//# sourceMappingURL=Check-BkThHPH7.mjs.map\n","import '../assets/NcInputField-KvlF4emB.css';\nimport { A as AlertCircle } from \"./AlertCircleOutline-DBxbepLy.mjs\";\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcInputField\",\n components: {\n NcButton,\n AlertCircle,\n Check\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The value of the input field\n * If type is 'number' and a number is passed as value than the type of `update:modelValue` will also be 'number'\n */\n modelValue: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The type of the input element\n */\n type: {\n type: String,\n default: \"text\",\n validator: (value) => [\n \"text\",\n \"password\",\n \"email\",\n \"tel\",\n \"url\",\n \"search\",\n \"number\"\n ].includes(value)\n },\n /**\n * The input label, always provide one for accessibility purposes.\n * This will also be used as a placeholder unless the placeholder\n * prop is populated with a different string.\n *\n * Note: If the background color is not `--color-main-background` consider using an external label instead (see `labelOutside`).\n */\n label: {\n type: String,\n default: void 0\n },\n /**\n * Pass in true if you want to use an external label. This is useful\n * if you need a label that looks different from the one provided by\n * this component\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * The placeholder of the input. This defaults as the string that's\n * passed into the label prop. In order to remove the placeholder,\n * pass in an empty string.\n */\n placeholder: {\n type: String,\n default: void 0\n },\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n default: false\n },\n /**\n * Label of the trailing button\n *\n * Required when showTrailingButton is set\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Toggles the success state of the component. Adds a checkmark icon.\n * this cannot be used together with canClear.\n */\n success: {\n type: Boolean,\n default: false\n },\n /**\n * Toggles the error state of the component. Adds an error icon.\n * this cannot be used together with canClear.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * Additional helper text message\n *\n * This will be displayed beneath the input field. In case the field is\n * also marked as having an error, the text will be displayed in red.\n */\n helperText: {\n type: String,\n default: \"\"\n },\n /**\n * Disable the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Specifies whether the input should have a pill form.\n * By default, input has rounded corners.\n */\n pill: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcInputField in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"trailing-button-click\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n isLegacy32,\n model\n };\n },\n computed: {\n computedId() {\n return this.$attrs.id && this.$attrs.id !== \"\" ? this.$attrs.id : this.inputName;\n },\n inputName() {\n return \"input\" + GenRandomId();\n },\n hasTrailingIcon() {\n return this.success;\n },\n computedPlaceholder() {\n if (this.placeholder) {\n return this.placeholder;\n }\n if (this.label) {\n return isLegacy32 ? this.label : \"\";\n }\n return void 0;\n },\n isValidLabel() {\n const isValidLabel = this.label || this.labelOutside;\n if (!isValidLabel) {\n logger.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel;\n },\n ariaDescribedby() {\n const ariaDescribedby = [];\n if (this.helperText.length > 0) {\n ariaDescribedby.push(`${this.inputName}-helper-text`);\n }\n if (this.$attrs[\"aria-describedby\"]) {\n ariaDescribedby.push(this.$attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby.join(\" \") || null;\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.input.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.input.select();\n },\n handleInput(event) {\n const newValue = this.type === \"number\" && typeof this.model === \"number\" ? parseFloat(event.target.value, 10) : event.target.value;\n this.model = newValue;\n },\n handleTrailingButtonClick(event) {\n this.$emit(\"trailing-button-click\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"input-field\", class: {\n \"input-field--disabled\": _vm.disabled,\n \"input-field--error\": _vm.error,\n \"input-field--label-outside\": _vm.labelOutside || !_vm.isValidLabel,\n \"input-field--leading-icon\": !!_vm.$scopedSlots.icon || !!_vm.$scopedSlots.default || !!_vm.$slots.default,\n \"input-field--success\": _vm.success,\n \"input-field--trailing-icon\": _vm.showTrailingButton || _vm.hasTrailingIcon,\n \"input-field--pill\": _vm.pill,\n \"input-field--legacy\": _vm.isLegacy32\n } }, [_c(\"div\", { staticClass: \"input-field__main-wrapper\" }, [_c(\"input\", _vm._g(_vm._b({ ref: \"input\", staticClass: \"input-field__input\", class: [\n _vm.inputClass,\n {\n \"input-field__input--success\": _vm.success,\n \"input-field__input--error\": _vm.error\n }\n ], attrs: { \"id\": _vm.computedId, \"type\": _vm.type, \"disabled\": _vm.disabled, \"placeholder\": _vm.computedPlaceholder, \"aria-describedby\": _vm.ariaDescribedby, \"aria-live\": \"polite\" }, domProps: { \"value\": _vm.model?.toString() }, on: { \"input\": _vm.handleInput } }, \"input\", _vm.$attrs, false), _vm.$listeners)), !_vm.labelOutside && _vm.isValidLabel ? _c(\"label\", { staticClass: \"input-field__label\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !!_vm.$scopedSlots.icon || !!_vm.$scopedSlots.default || !!_vm.$slots.default, expression: \"!!$scopedSlots.icon || !!$scopedSlots.default || !!$slots.default\" }], staticClass: \"input-field__icon input-field__icon--leading\" }, [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })], 2), _vm.showTrailingButton ? _c(\"NcButton\", { staticClass: \"input-field__trailing-button\", attrs: { \"aria-label\": _vm.trailingButtonLabel, \"disabled\": _vm.disabled, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.handleTrailingButtonClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"trailing-button-icon\")];\n }, proxy: true }], null, true) }) : _vm.success || _vm.error ? _c(\"div\", { staticClass: \"input-field__icon input-field__icon--trailing\" }, [_vm.success ? _c(\"Check\", { staticStyle: { \"color\": \"var(--color-success-text)\" }, attrs: { \"size\": 20 } }) : _vm.error ? _c(\"AlertCircle\", { staticStyle: { \"color\": \"var(--color-error-text)\" }, attrs: { \"size\": 20 } }) : _vm._e()], 1) : _vm._e()], 1), _vm.helperText.length > 0 ? _c(\"p\", { staticClass: \"input-field__helper-text-message\", class: {\n \"input-field__helper-text-message--error\": _vm.error,\n \"input-field__helper-text-message--success\": _vm.success\n }, attrs: { \"id\": `${_vm.inputName}-helper-text` } }, [_vm.success ? _c(\"Check\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm.error ? _c(\"AlertCircle\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm._e(), _vm._v(\" \" + _vm._s(_vm.helperText) + \" \")], 1) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"17c3f609\"\n);\nconst NcInputField = __component__.exports;\nexport {\n NcInputField as N\n};\n//# sourceMappingURL=NcInputField-Cym5GuvB.mjs.map\n","import '../assets/NcPasswordField-vrT0oftw.css';\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { useVModel } from \"@vueuse/core\";\nimport debounce from \"debounce\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcInputField } from \"./NcInputField-Cym5GuvB.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, G as t29, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _sfc_main$2 = {\n name: \"EyeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon eye-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconEye = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"EyeOffIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon eye-off-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconEyeOff = __component__$1.exports;\nregister(t29);\nconst passwordPolicy = loadState(\"core\", \"capabilities\", {}).password_policy || null;\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcPasswordField\",\n components: {\n NcInputField,\n IconEye,\n IconEyeOff\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n // Redefined props\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Removed NcInputField props, defined only by this component\n */\n trailingButtonLabel: void 0,\n // Custom props\n /**\n * Check if the user entered a valid password using the password_policy\n * app if available.\n *\n * Warning: this doesn't replace server side checking and will do nothing\n * if the password_policy app is disabled.\n */\n checkPasswordStrength: {\n type: Boolean,\n default: false\n },\n /**\n * The minlength property defines the minimum number of characters\n * (as UTF-16 code units) the user can enter\n */\n minlength: {\n type: Number,\n default: void 0\n },\n /**\n * The maxlength property defines the maximum number of characters\n * (as UTF-16 code units) the user can enter\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Render as input[type=text] that looks like password field.\n * Allows to avoid unwanted password-specific browser behavior,\n * such as save or generate password prompt.\n * Useful for secret token fields.\n * Note: autocomplete=\"off\" is ignored by browsers.\n */\n asText: {\n type: Boolean,\n default: false\n },\n /**\n * Visibility of the password.\n * If this is set to `true` then the password will be shown to the user (input type will be set to `text`).\n */\n visible: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"valid\",\n \"invalid\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Triggers when the value inside the password field is\n * updated.\n *\n * @property {string} The new value\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * Updated visibility of the password\n *\n * @property {boolean} visible the new visibility state\n */\n \"update:visible\"\n ],\n setup(props, { emit }) {\n const model = useModelMigration(\"value\", \"update:value\");\n const visibility = useVModel(props, \"visible\", emit, { passive: true });\n return {\n t,\n model,\n visibility\n };\n },\n data() {\n return {\n internalHelpMessage: \"\",\n isValid: null\n };\n },\n computed: {\n computedError() {\n return this.error || this.isValid === false;\n },\n computedSuccess() {\n return this.success || this.isValid === true;\n },\n computedHelperText() {\n if (this.helperText.length > 0) {\n return this.helperText;\n }\n return this.internalHelpMessage;\n },\n rules() {\n const { minlength } = this;\n return {\n minlength: minlength ?? (this.checkPasswordStrength ? passwordPolicy?.minLength : void 0)\n };\n },\n trailingButtonLabelPassword() {\n return this.visibility ? t(\"Hide password\") : t(\"Show password\");\n },\n propsAndAttrsToForward() {\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)))\n };\n }\n },\n watch: {\n model(newValue) {\n this.isValid = void 0;\n this.internalHelpMessage = \"\";\n if (newValue && this.checkPasswordStrength) {\n this.checkPassword(newValue);\n }\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n },\n handleInput(event) {\n this.model = event.target.value;\n },\n toggleVisibility() {\n this.visibility = !this.visibility;\n },\n checkPassword: debounce(async function(password) {\n try {\n const { data } = await axios.post(generateOcsUrl(\"apps/password_policy/api/v1/validate\"), { password });\n this.isValid = data.ocs.data.passed;\n if (data.ocs.data.passed) {\n this.internalHelpMessage = t(\"Password is secure\");\n this.$emit(\"valid\");\n return;\n }\n this.internalHelpMessage = data.ocs.data.reason;\n this.$emit(\"invalid\");\n } catch (e) {\n logger.error(\"Password policy returned an error\", e);\n }\n }, 500)\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", attrs: { \"type\": _vm.visibility || _vm.asText ? \"text\" : \"password\", \"trailing-button-label\": _vm.trailingButtonLabelPassword, \"helper-text\": _vm.computedHelperText, \"error\": _vm.computedError, \"success\": _vm.computedSuccess, \"minlength\": _vm.rules.minlength, \"input-class\": { \"password-field__input--secure-text\": !_vm.visibility && _vm.asText } }, on: { \"trailing-button-click\": _vm.toggleVisibility, \"input\": _vm.handleInput }, scopedSlots: _vm._u([!!_vm.$scopedSlots.icon || !!_vm.$slots.default || !!_vm.$scopedSlots.default ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })];\n }, proxy: true } : null, { key: \"trailing-button-icon\", fn: function() {\n return [_vm.visibility ? _c(\"IconEyeOff\", { attrs: { \"size\": 18 } }) : _c(\"IconEye\", { attrs: { \"size\": 18 } })];\n }, proxy: true }], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"0800cef1\"\n);\nconst NcPasswordField = __component__.exports;\nexport {\n NcPasswordField as N\n};\n//# sourceMappingURL=NcPasswordField-2woxTjbl.mjs.map\n","import { b as mdiUndo, c as mdiClose, d as mdiArrowRight } from \"./mdi-DkJglNiS.mjs\";\nimport { N as NcInputField } from \"./NcInputField-Cym5GuvB.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, b as t53, c as t18, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t18, t53);\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcTextField\",\n components: {\n NcIconSvgWrapper,\n NcInputField\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n /**\n * The `aria-label` to set on the trailing button\n * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n *\n * @default 'Clear text'|'Save changes'|'Undo changes'\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n // Custom props\n /**\n * Specifies which material design icon should be used for the trailing\n * button.\n *\n * The `'arrowRight'` value is deprecated and will be removed in the next major version.\n * Use `'arrowEnd'` instead.\n *\n * @type {'close'|'arrowEnd'|'arrowRight'|'undo'}\n */\n trailingButtonIcon: {\n type: String,\n default: \"close\",\n validator: (value) => [\n \"close\",\n \"arrowEnd\",\n \"arrowRight\",\n \"undo\"\n ].includes(value)\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n mdiArrowRight,\n mdiClose,\n mdiUndo\n };\n },\n computed: {\n /**\n * Is the trailing button icon directional.\n * Meaning the icon needs to be flipped on RTL text flow.\n */\n isArrow() {\n return this.trailingButtonIcon === \"arrowEnd\" || this.trailingButtonIcon === \"arrowRight\";\n },\n propsAndAttrsToForward() {\n const predefinedLabels = {\n arrowEnd: t(\"Save changes\"),\n arrowRight: t(\"Save changes\"),\n close: t(\"Clear text\"),\n undo: t(\"Undo changes\")\n };\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key))),\n // Adjust aria-label for predefined trailing buttons\n trailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon]\n };\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", scopedSlots: _vm._u([!!_vm.$scopedSlots.icon || !!_vm.$slots.default || !!_vm.$scopedSlots.default ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })];\n }, proxy: true } : null, _vm.type !== \"search\" ? { key: \"trailing-button-icon\", fn: function() {\n return [_vm.isArrow ? _c(\"NcIconSvgWrapper\", { attrs: { \"directional\": \"\", \"path\": _vm.mdiArrowRight } }) : _c(\"NcIconSvgWrapper\", { attrs: { \"path\": _vm.trailingButtonIcon === \"undo\" ? _vm.mdiUndo : _vm.mdiClose } })];\n }, proxy: true } : null], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTextField = __component__.exports;\nexport {\n NcTextField as N\n};\n//# sourceMappingURL=NcTextField-CQp8XS4C.mjs.map\n","import '../assets/NcActionInput-ESkvZDNh.css';\nimport { defineAsyncComponent } from \"vue\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, j as t51, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-DqVa7c7G.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport NcDateTimePickerNative from \"../Components/NcDateTimePickerNative.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-2woxTjbl.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CQp8XS4C.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t51);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../Components/NcColorPicker.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../Components/NcDateTimePicker.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../Components/NcSelect.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].indexOf(type) > -1;\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Date, Number, Array],\n default: void 0\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n * otherwise root element will inherit incorrect aria-hidden.\n */\n ariaHidden: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: null\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n }\n },\n emits: [\n \"input\",\n \"submit\",\n \"change\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n * ! DatetimePicker only send the value\n *\n * @type {string|Date}\n */\n \"update:modelValue\",\n /** Same as `update:modelValue` but with a different event name */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target ? event.target.value : event;\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled } }, [_c(\"span\", { staticClass: \"action-input\", class: {\n \"action-input-picker--disabled\": _vm.disabled,\n \"action-input--visible-label\": _vm.labelOutside && _vm.label\n }, on: { \"mouseleave\": _vm.onLeave } }, [_c(\"span\", { staticClass: \"action-input__icon-wrapper\" }, [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"action-input__icon\", class: [_vm.isIconUrl ? \"action-input__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } })];\n })], 2), _c(\"form\", { ref: \"form\", staticClass: \"action-input__form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"action-input__container\" }, [_vm.label && _vm.labelOutside && !_vm.isNativePicker ? _c(\"label\", { staticClass: \"action-input__text-label\", class: { \"action-input__text-label--hidden\": !_vm.labelOutside }, attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"action-input__input-container\" }, [_vm.datePickerType ? _c(\"NcDateTimePicker\", _vm._b({ ref: \"datetimepicker\", staticClass: \"action-input__datetimepicker\", staticStyle: { \"z-index\": \"99999999999\" }, attrs: { \"value\": _vm.model, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"type\": _vm.datePickerType, \"input-class\": [\"mx-input\", { focusable: _vm.isFocusable }] }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcDateTimePicker\", _vm.$attrs, false)) : _vm.isNativePicker ? _c(\"NcDateTimePickerNative\", _vm._b({ staticClass: \"action-input__datetimepicker\", attrs: { \"id\": _vm.idNativeDateTimePicker, \"value\": _vm.model, \"label\": _vm.label, \"type\": _vm.nativeDatePickerType, \"input-class\": { focusable: _vm.isFocusable } }, on: { \"update:model-value\": function($event) {\n _vm.model = $event;\n }, \"change\": function($event) {\n return _vm.$emit(\"change\", $event);\n } } }, \"NcDateTimePickerNative\", _vm.$attrs, false)) : _vm.isMultiselectType ? _c(\"NcSelect\", _vm._g(_vm._b({ staticClass: \"action-input__multi\", attrs: { \"value\": _vm.model, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"append-to-body\": _vm.$attrs.appendToBody || _vm.$attrs[\"append-to-body\"] || false, \"input-class\": { focusable: _vm.isFocusable } } }, \"NcSelect\", _vm.$attrs, false), _vm.$listeners)) : _vm.type === \"password\" ? _c(\"NcPasswordField\", _vm._g(_vm._b({ attrs: { \"id\": _vm.inputId, \"value\": _vm.model, \"label\": _vm.label, \"label-outside\": !_vm.label || _vm.labelOutside, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"input-class\": { focusable: _vm.isFocusable }, \"show-trailing-button\": _vm.showTrailingButton && !_vm.disabled }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcPasswordField\", _vm.$attrs, false), _vm.$listeners)) : _vm.type === \"color\" ? _c(\"div\", { staticClass: \"action-input__container\" }, [_vm.label && _vm.type === \"color\" ? _c(\"label\", { staticClass: \"action-input__text-label\", class: { \"action-input__text-label--hidden\": !_vm.labelOutside }, attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"action-input__input-container\" }, [_c(\"NcColorPicker\", _vm._g(_vm._b({ staticClass: \"colorpicker__trigger\", attrs: { \"id\": \"inputId\", \"value\": _vm.model }, on: { \"update:model-value\": _vm.onInput, \"submit\": function($event) {\n return _vm.$refs.form.requestSubmit();\n } } }, \"NcColorPicker\", _vm.$attrs, false), _vm.$listeners), [_c(\"button\", { staticClass: \"colorpicker__preview\", class: { focusable: _vm.isFocusable }, style: { \"background-color\": _vm.model } })])], 1)]) : _c(\"NcTextField\", _vm._g(_vm._b({ attrs: { \"id\": _vm.inputId, \"value\": _vm.model, \"label\": _vm.label, \"label-outside\": !_vm.label || _vm.labelOutside, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"input-class\": { focusable: _vm.isFocusable }, \"type\": _vm.type, \"trailing-button-icon\": \"arrowRight\", \"trailing-button-label\": _vm.trailingButtonLabel, \"show-trailing-button\": _vm.showTrailingButton && !_vm.disabled }, on: { \"trailing-button-click\": function($event) {\n return _vm.$refs.form.requestSubmit();\n }, \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcTextField\", _vm.$attrs, false), _vm.$listeners))], 1)])])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7f2f2ad1\"\n);\nconst NcActionInput = __component__.exports;\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-CMLDgnF_.mjs.map\n","import '../assets/NcActionRouter-CyyaRzft.css';\nimport { A as ActionTextMixin } from \"../chunks/actionText-BMig9Egt.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionRouter\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n props: {\n /**\n * router-link to prop [https://router.vuejs.org/api/#to](https://router.vuejs.org/api/#to)\n */\n to: {\n type: [String, Object],\n required: true\n },\n /**\n * router-link exact prop [https://router.vuejs.org/api/#exact](https://router.vuejs.org/api/#exact)\n */\n exact: {\n type: Boolean,\n default: false\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"RouterLink\", { staticClass: \"action-router focusable\", attrs: { \"to\": _vm.to, \"aria-label\": _vm.ariaLabel, \"exact\": _vm.exact, \"title\": _vm.title, \"rel\": \"nofollow noreferrer noopener\", \"role\": _vm.isInSemanticMenu && \"menuitem\" }, nativeOn: { \"click\": function($event) {\n return _vm.onClick.apply(null, arguments);\n } } }, [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"action-router__icon\", class: [_vm.isIconUrl ? \"action-router__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } })];\n }), _vm.name ? _c(\"span\", { staticClass: \"action-router__longtext-wrapper\" }, [_c(\"strong\", { staticClass: \"action-router__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _c(\"br\"), _c(\"span\", { staticClass: \"action-router__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } })]) : _vm.isLongText ? _c(\"span\", { staticClass: \"action-router__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } }) : _c(\"span\", { staticClass: \"action-router__text\" }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"4dae1ff7\"\n);\nconst NcActionRouter = __component__.exports;\nexport {\n NcActionRouter as default\n};\n//# sourceMappingURL=NcActionRouter.mjs.map\n","import '../assets/NcActionText-BMO_HKvg.css';\nimport { A as ActionTextMixin } from \"../chunks/actionText-BMig9Egt.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionText\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"span\", { staticClass: \"action-text\", on: { \"click\": _vm.onClick } }, [_vm._t(\"icon\", function() {\n return [_vm.icon !== \"\" ? _c(\"span\", { staticClass: \"action-text__icon\", class: [_vm.isIconUrl ? \"action-text__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } }) : _vm._e()];\n }), _vm.name ? _c(\"span\", { staticClass: \"action-text__longtext-wrapper\" }, [_c(\"strong\", { staticClass: \"action-text__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _c(\"span\", { staticClass: \"action-text__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } })]) : _vm.isLongText ? _c(\"span\", { staticClass: \"action-text__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } }) : _c(\"span\", { staticClass: \"action-text__text\" }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"2fe7eb92\"\n);\nconst NcActionText = __component__.exports;\nexport {\n NcActionText as default\n};\n//# sourceMappingURL=NcActionText.mjs.map\n","import { loadState } from \"@nextcloud/initial-state\";\nimport { inject } from \"vue\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction once(func) {\n let wasCalled = false;\n let result;\n return (...args) => {\n if (!wasCalled) {\n wasCalled = true;\n result = func(...args);\n }\n return result;\n };\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nlet realAppName = \"missing-app-name\";\ntry {\n realAppName = appName;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appName`.\");\n}\nconst APP_NAME = realAppName;\nlet realAppVersion = \"\";\ntry {\n realAppVersion = appVersion;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.\");\n}\nconst APP_VERSION = realAppVersion;\nfunction useAppName() {\n return inject(\"appName\", APP_NAME);\n}\nconst useLocalizedAppName = once(() => {\n const apps = loadState(\"core\", \"apps\", []);\n const realAppName2 = useAppName();\n return apps.find(({ id }) => id === realAppName2)?.name ?? realAppName2;\n});\nexport {\n APP_VERSION as A,\n useAppName as a,\n useLocalizedAppName as u\n};\n//# sourceMappingURL=appName-qk1L3dsY.mjs.map\n","import '../assets/NcAppContent-DyFYmhvX.css';\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { useSwipe } from \"@vueuse/core\";\nimport { Splitpanes, Pane } from \"splitpanes\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, H as t27, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useLocalizedAppName, a as useAppName } from \"./appName-qk1L3dsY.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"splitpanes/dist/splitpanes.css\";\nregister(t27);\nconst _sfc_main$1 = {\n name: \"NcAppContentDetailsToggle\",\n components: {\n ArrowRight,\n ArrowLeft,\n NcButton\n },\n setup() {\n return {\n isRtl,\n isMobile: useIsMobile()\n };\n },\n computed: {\n title() {\n return t(\"Go back to the list\");\n }\n },\n watch: {\n isMobile: function() {\n this.toggleAppNavigationButton(this.isMobile);\n }\n },\n mounted() {\n this.toggleAppNavigationButton(this.isMobile);\n },\n beforeDestroy() {\n if (this.isMobile) {\n this.toggleAppNavigationButton(false);\n }\n },\n methods: {\n toggleAppNavigationButton(hide = true) {\n const appNavigationToggle = document.querySelector(\".app-navigation .app-navigation-toggle\");\n if (appNavigationToggle) {\n appNavigationToggle.style.display = hide ? \"none\" : null;\n if (hide === true) {\n emit(\"toggle-navigation\", { open: false });\n }\n }\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcButton\", { staticClass: \"app-details-toggle\", class: { \"app-details-toggle--mobile\": _vm.isMobile }, attrs: { \"aria-label\": _vm.title, \"title\": _vm.title, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.isRtl ? _c(\"ArrowLeft\", { attrs: { \"size\": 20 } }) : _c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"d0b1a8bc\"\n);\nconst NcAppContentDetailsToggle = __component__$1.exports;\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nconst instanceName = getCapabilities().theming?.name ?? \"Nextcloud\";\nconst _sfc_main = {\n name: \"NcAppContent\",\n components: {\n NcAppContentDetailsToggle,\n Pane,\n Splitpanes\n },\n props: {\n /**\n * Allows to disable the control by swipe of the app navigation open state\n *\n * @deprecated will be removed with the next version - use `disableSwipe` instead\n */\n allowSwipeNavigation: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Allows to disable the control by swipe of the app navigation open state.\n */\n disableSwipe: {\n type: Boolean,\n default: false\n },\n /**\n * Allows you to set the default width of the resizable list in % on vertical-split\n * or respectively the default height on horizontal-split.\n *\n * Must be between `listMinWidth` and `listMaxWidth`.\n */\n listSize: {\n type: Number,\n default: 20\n },\n /**\n * Allows you to set the minimum width of the list column in % on vertical-split\n * or respectively the minimum height on horizontal-split.\n */\n listMinWidth: {\n type: Number,\n default: 15\n },\n /**\n * Allows you to set the maximum width of the list column in % on vertical-split\n * or respectively the maximum height on horizontal-split.\n */\n listMaxWidth: {\n type: Number,\n default: 40\n },\n /**\n * Specify the config key for the pane config sizes\n * Default is the global var appName if you use the webpack-vue-config\n */\n paneConfigKey: {\n type: String,\n default: \"\"\n },\n /**\n * When in mobile view, only the list or the details are shown.\n *\n * If you provide a list, you need to provide a variable\n * that will be set to true by the user when an element of\n * the list gets selected. The details will then show a back\n * arrow to return to the list that will update this prop to false.\n */\n showDetails: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Content layout used when there is a list together with content:\n * - `vertical-split` - a 2-column layout with list and default content separated vertically\n * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n * On mobile screen `no-split` layout is forced.\n */\n layout: {\n type: String,\n default: \"vertical-split\",\n validator(value) {\n return [\"no-split\", \"vertical-split\", \"horizontal-split\"].includes(value);\n }\n },\n /**\n * Specify the `

` page heading\n */\n pageHeading: {\n type: String,\n default: null\n },\n /**\n * Allow setting the page's ``\n *\n * If a page heading is set it defaults to `{pageHeading} - {appName} - {instanceName}` e.g. `Favorites - Files - MyPersonalCloud`.\n * When the page heading and the app name is the same only one is used, e.g. `Files - Files - MyPersonalCloud` is shown as `Files - MyPersonalCloud`.\n * When setting the prop then the following format will be used: `{pageTitle} - {instanceName}`\n */\n pageTitle: {\n type: String,\n default: null\n }\n },\n emits: [\n \"update:showDetails\",\n \"resize-list\",\n \"resize:list\"\n ],\n setup() {\n return {\n appName: useAppName(),\n localizedAppName: useLocalizedAppName(),\n isMobile: useIsMobile(),\n isRtl\n };\n },\n data() {\n return {\n contentHeight: 0,\n swiping: {},\n listPaneSize: this.restorePaneConfig()\n };\n },\n computed: {\n paneConfigID() {\n if (this.paneConfigKey !== \"\") {\n return `pane-list-size-${this.paneConfigKey}`;\n }\n try {\n return `pane-list-size-${this.appName}`;\n } catch {\n logger.info(\"[NcAppContent]: falling back to global nextcloud pane config\");\n return \"pane-list-size-nextcloud\";\n }\n },\n detailsPaneSize() {\n if (this.listPaneSize) {\n return 100 - this.listPaneSize;\n }\n return this.paneDefaults.details.size;\n },\n paneDefaults() {\n return {\n list: {\n size: this.listSize,\n min: this.listMinWidth,\n max: this.listMaxWidth\n },\n // set the inverse values of the details column\n // based on the provided (or default) values of the list column\n details: {\n size: 100 - this.listSize,\n min: 100 - this.listMaxWidth,\n max: 100 - this.listMinWidth\n }\n };\n },\n realPageTitle() {\n const entries = /* @__PURE__ */ new Set();\n if (this.pageTitle) {\n for (const part of this.pageTitle.split(\" - \")) {\n entries.add(part);\n }\n } else if (this.pageHeading) {\n for (const part of this.pageHeading.split(\" - \")) {\n entries.add(part);\n }\n if (entries.size > 0) {\n entries.add(this.localizedAppName);\n }\n } else {\n return null;\n }\n entries.add(instanceName);\n return [...entries.values()].join(\" - \");\n }\n },\n watch: {\n realPageTitle: {\n immediate: true,\n handler() {\n if (this.realPageTitle !== null) {\n document.title = this.realPageTitle;\n }\n }\n },\n paneConfigKey: {\n immediate: true,\n handler() {\n this.restorePaneConfig();\n }\n }\n },\n mounted() {\n if (this.allowSwipeNavigation && !this.disableSwipe) {\n this.swiping = useSwipe(this.$el, {\n onSwipeEnd: this.handleSwipe\n });\n }\n this.restorePaneConfig();\n },\n methods: {\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n */\n handleSwipe(e, direction) {\n const minSwipeX = 70;\n const touchZone = 300;\n if (Math.abs(this.swiping.lengthX) > minSwipeX) {\n if (this.swiping.coordsStart.x < touchZone / 2 && direction === \"right\") {\n emit(\"toggle-navigation\", {\n open: true\n });\n } else if (this.swiping.coordsStart.x < touchZone * 1.5 && direction === \"left\") {\n emit(\"toggle-navigation\", {\n open: false\n });\n }\n }\n },\n handlePaneResize(event) {\n const listPaneSize = parseInt(event[0].size, 10);\n browserStorage.setItem(this.paneConfigID, JSON.stringify(listPaneSize));\n this.listPaneSize = listPaneSize;\n this.$emit(\"resize:list\", { size: listPaneSize });\n this.$emit(\"resize-list\", { size: listPaneSize });\n logger.debug(\"AppContent pane config\", { size: listPaneSize });\n },\n // browserStorage is not reactive, we need to update this manually\n restorePaneConfig() {\n const listPaneSize = parseInt(browserStorage.getItem(this.paneConfigID), 10);\n if (!isNaN(listPaneSize) && listPaneSize !== this.listPaneSize) {\n logger.debug(\"AppContent pane config\", listPaneSize);\n this.listPaneSize = listPaneSize;\n return listPaneSize;\n }\n },\n /**\n * The user clicked the back arrow from the details view\n */\n hideDetails() {\n this.$emit(\"update:showDetails\", false);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"main\", { staticClass: \"app-content no-snapper\", class: { \"app-content--has-list\": !!_vm.$scopedSlots.list }, attrs: { \"id\": \"app-content-vue\" } }, [_vm.pageHeading ? _c(\"h1\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(_vm.pageHeading) + \" \")]) : _vm._e(), !!_vm.$scopedSlots.list ? [_vm.isMobile || _vm.layout === \"no-split\" ? _c(\"div\", { staticClass: \"app-content-wrapper app-content-wrapper--no-split\", class: {\n \"app-content-wrapper--show-details\": _vm.showDetails,\n \"app-content-wrapper--show-list\": !_vm.showDetails,\n \"app-content-wrapper--mobile\": _vm.isMobile\n } }, [_vm.showDetails ? _c(\"NcAppContentDetailsToggle\", { nativeOn: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.hideDetails.apply(null, arguments);\n } } }) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.showDetails, expression: \"!showDetails\" }], staticClass: \"app-content-wrapper__list\" }, [_vm._t(\"list\")], 2), _vm.showDetails ? _vm._t(\"default\") : _vm._e()], 2) : _vm.layout === \"vertical-split\" || _vm.layout === \"horizontal-split\" ? _c(\"div\", { staticClass: \"app-content-wrapper\" }, [_c(\"Splitpanes\", { staticClass: \"default-theme\", class: {\n \"splitpanes--horizontal\": _vm.layout === \"horizontal-split\",\n \"splitpanes--vertical\": _vm.layout === \"vertical-split\"\n }, attrs: { \"horizontal\": _vm.layout === \"horizontal-split\", \"rtl\": _vm.isRtl }, on: { \"resized\": _vm.handlePaneResize } }, [_c(\"Pane\", { staticClass: \"splitpanes__pane-list\", attrs: { \"size\": _vm.listPaneSize || _vm.paneDefaults.list.size, \"min-size\": _vm.paneDefaults.list.min, \"max-size\": _vm.paneDefaults.list.max } }, [_vm._t(\"list\")], 2), _c(\"Pane\", { staticClass: \"splitpanes__pane-details\", attrs: { \"size\": _vm.detailsPaneSize, \"min-size\": _vm.paneDefaults.details.min, \"max-size\": _vm.paneDefaults.details.max } }, [_vm._t(\"default\")], 2)], 1)], 1) : _vm._e()] : _vm._e(), !_vm.$scopedSlots.list ? _vm._t(\"default\") : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"42ca73dd\"\n);\nconst NcAppContent = __component__.exports;\nexport {\n NcAppContent as N\n};\n//# sourceMappingURL=NcAppContent-7ziLICwJ.mjs.map\n","import { onKeyStroke } from \"@vueuse/core\";\nimport { i as isMac } from \"../chunks/platform-CC2ecGvV.mjs\";\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst derivedKeysRegex = /^[a-zA-Z0-9]$/;\nconst nonAsciiPrintableRegex = /^[^\\x20-\\x7F]$/;\nfunction shouldIgnoreEvent(event) {\n if (!(event.target instanceof HTMLElement) || event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement || event.target.isContentEditable) {\n return true;\n }\n return Array.from(document.getElementsByClassName(\"modal-mask\")).filter((el) => el.checkVisibility()).length > 0;\n}\nfunction eventHandler(callback, options) {\n return (event) => {\n const ctrlKeyPressed = isMac ? event.metaKey : event.ctrlKey;\n if (ctrlKeyPressed !== Boolean(options.ctrl)) {\n return;\n } else if (event.altKey !== Boolean(options.alt)) {\n return;\n } else if (options.shift !== void 0 && event.shiftKey !== Boolean(options.shift)) {\n return;\n } else if (shouldIgnoreEvent(event)) {\n return;\n }\n if (options.prevent) {\n event.preventDefault();\n }\n if (options.stop) {\n event.stopPropagation();\n }\n callback(event);\n };\n}\nfunction useHotKey(keysOrFilter, callback = () => {\n}, options = {}) {\n if (disableKeyboardShortcuts) {\n return () => {\n };\n }\n const validateKeyEvent = (event, key) => {\n if (event.key === key) {\n return true;\n }\n if (options.caseSensitive) {\n const isKeyInLowerCase = key === key.toLowerCase();\n const isEventKeyInLowerCase = event.key === event.key.toLowerCase();\n if (isKeyInLowerCase !== isEventKeyInLowerCase) {\n return false;\n }\n }\n if (derivedKeysRegex.test(key) && nonAsciiPrintableRegex.test(event.key)) {\n return event.code.replace(/^(?:Key|Digit|Numpad)/, \"\") === key.toUpperCase();\n }\n return event.key.toLowerCase() === key.toLowerCase();\n };\n const keyFilter = (event) => {\n if (typeof keysOrFilter === \"function\") {\n return keysOrFilter(event);\n } else if (typeof keysOrFilter === \"string\") {\n return validateKeyEvent(event, keysOrFilter);\n } else if (Array.isArray(keysOrFilter)) {\n return keysOrFilter.some((key) => validateKeyEvent(event, key));\n } else {\n return true;\n }\n };\n const stopKeyDown = onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keydown\",\n dedupe: true,\n passive: !options.prevent\n });\n const stopKeyUp = options.push ? onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keyup\",\n passive: !options.prevent\n }) : () => {\n };\n return () => {\n stopKeyDown();\n stopKeyUp();\n };\n}\nexport {\n useHotKey\n};\n//# sourceMappingURL=useHotKey.mjs.map\n","import '../assets/NcAppNavigationToggle-D1K2TRZ-.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { D as DockRight } from \"./DockRight-B0D52yCO.mjs\";\nimport { r as register, E as t20, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nconst _sfc_main$1 = {\n name: \"DockLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon dock-left-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 18H9V6H20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst DockLeft = __component__$1.exports;\nregister(t20);\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst _sfc_main = {\n name: \"NcAppNavigationToggle\",\n components: {\n DockLeft,\n DockRight,\n NcButton\n },\n props: {\n /**\n * Tracks whether the toggle has been clicked or not.\n * If it has been clicked, emits a boolean indicating its opened status\n */\n open: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"update:open\"],\n setup() {\n return {\n isRtl,\n disableKeyboardShortcuts\n };\n },\n computed: {\n label() {\n return this.open ? t(\"Close navigation\") : t(\"Open navigation {shortcut}\", { shortcut: disableKeyboardShortcuts ? \"\" : \"[n]\" }).trim();\n }\n },\n methods: {\n /**\n * Once the toggle has been clicked, emits the toggle status\n * so parent components can gauge the status of the navigation button\n */\n toggleNavigation() {\n this.$emit(\"update:open\", !this.open);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-toggle-wrapper\" }, [_c(\"NcButton\", { staticClass: \"app-navigation-toggle\", attrs: { \"aria-controls\": \"app-navigation-vue\", \"aria-expanded\": _vm.open ? \"true\" : \"false\", \"aria-keyshortcuts\": _vm.disableKeyboardShortcuts ? \"\" : \"n\", \"aria-label\": _vm.label, \"title\": _vm.label, \"variant\": \"tertiary\" }, on: { \"click\": _vm.toggleNavigation }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.isRtl ? _c(\"DockRight\", { attrs: { \"size\": 20 } }) : _c(\"DockLeft\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"d28016dd\"\n);\nconst NcAppNavigationToggle = __component__.exports;\nexport {\n NcAppNavigationToggle as N\n};\n//# sourceMappingURL=NcAppNavigationToggle-DQZ2LWw4.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"ChevronDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon chevron-down-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst ChevronDown = __component__.exports;\nexport {\n ChevronDown as C\n};\n//# sourceMappingURL=ChevronDown-DFQfzh63.mjs.map\n","import '../assets/NcInputConfirmCancel-DRZviUxz.css';\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { r as register, s as t14, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t14);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n NcButton,\n ArrowRight,\n Close\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n value: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"input\",\n \"confirm\",\n \"cancel\"\n ],\n setup() {\n return { isLegacy34 };\n },\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.value;\n },\n set(newValue) {\n this.$emit(\"input\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-input-confirm\", class: { \"app-navigation-input-confirm--legacy\": _vm.isLegacy34 } }, [_c(\"form\", { on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.confirm.apply(null, arguments);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.cancel.apply(null, arguments);\n }, \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.valueModel, expression: \"valueModel\" }], ref: \"input\", staticClass: \"app-navigation-input-confirm__input\", attrs: { \"type\": \"text\", \"placeholder\": _vm.placeholder }, domProps: { \"value\": _vm.valueModel }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.valueModel = $event.target.value;\n } } }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.labelConfirm, \"type\": \"submit\", \"variant\": \"primary\" }, on: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.confirm.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.labelCancel, \"type\": \"reset\", \"variant\": _vm.primary ? \"primary\" : \"tertiary\" }, on: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.cancel.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) })], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"f9a3bb35\"\n);\nconst NcInputConfirmCancel = __component__.exports;\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-44rhjqEA.mjs.map\n","import '../assets/NcLoadingIcon-C7S2_wmi.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcLoadingIcon\",\n props: {\n /**\n * Specify the size of the loading icon.\n */\n size: {\n type: Number,\n default: 20\n },\n /**\n * The appearance of the loading icon.\n * 'auto' adjusts to the Nextcloud color scheme,\n * 'light' and 'dark' are static.\n */\n appearance: {\n type: String,\n validator(value) {\n return [\"auto\", \"light\", \"dark\"].includes(value);\n },\n default: \"auto\"\n },\n /**\n * Specify what is loading.\n */\n name: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n colors() {\n const colors = [\"#777\", \"#CCC\"];\n if (this.appearance === \"light\") {\n return colors;\n } else if (this.appearance === \"dark\") {\n return colors.reverse();\n }\n return [\"var(--color-loading-light)\", \"var(--color-loading-dark)\"];\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"material-design-icon loading-icon\", attrs: { \"aria-label\": _vm.name, \"role\": \"img\" } }, [_c(\"svg\", { attrs: { \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"fill\": _vm.colors[0], \"d\": \"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z\" } }), _c(\"path\", { attrs: { \"fill\": _vm.colors[1], \"d\": \"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z\" } }, [_vm.name ? _c(\"title\", [_vm._v(_vm._s(_vm.name))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"94ff8098\"\n);\nconst NcLoadingIcon = __component__.exports;\nexport {\n NcLoadingIcon as default\n};\n//# sourceMappingURL=NcLoadingIcon.mjs.map\n","import '../assets/NcAppNavigationItem-D4T7UQqz.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-C7Dy9Bph.mjs\";\nimport { r as register, S as t21, a as t, b as t53, T as t23 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-44rhjqEA.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pencil-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst Pencil = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon undo-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst Undo = __component__$2.exports;\nregister(t21);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n setup() {\n return { isLegacy34 };\n },\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcButton\", { staticClass: \"icon-collapse\", class: {\n \"icon-collapse--active\": _vm.active,\n \"icon-collapse--open\": _vm.open\n }, attrs: { \"aria-label\": _vm.labelButton, \"variant\": _vm.active && _vm.isLegacy34 ? \"tertiary-on-primary\" : \"tertiary\" }, on: { \"click\": _vm.onClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.open ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"3c547cb0\"\n);\nconst NcAppNavigationIconCollapsible = __component__$1.exports;\nregister(t23, t53);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => \"app-navigation-item-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `<router-link />` that points to that route.\n * By leaving this blank, the root element will be a `<li>`.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Pass in `true` if you want the matching behaviour to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile(),\n isLegacy34\n };\n },\n data() {\n return {\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false,\n actionsBoundariesElement: void 0\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n hasUtils() {\n if (this.$scopedSlots.actions || this.$scopedSlots.counter || this.editable || this.undo) {\n return true;\n }\n return false;\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Does this item have children and is collapsing allowed via the prop?\n *\n * @return {boolean} True, if the item can be collapsed\n */\n isCollapsible() {\n return this.allowCollapse && !!this.$scopedSlots.default;\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"app-navigation-entry-wrapper\", class: {\n \"app-navigation-entry--opened\": _vm.opened,\n \"app-navigation-entry--pinned\": _vm.pinned,\n \"app-navigation-entry--collapsible\": _vm.isCollapsible()\n }, attrs: { \"id\": _vm.id } }, [_c(_vm.isRouterLink ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.isRouterLink ? true : false, \"to\": _vm.to, \"exact\": _vm.isRouterLink ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"div\", { staticClass: \"app-navigation-entry\", class: {\n \"app-navigation-entry--editing\": _vm.editingActive,\n \"app-navigation-entry--deleted\": _vm.undo,\n \"app-navigation-entry--legacy\": _vm.isLegacy34,\n active: _vm.to && isActive || _vm.active\n } }, [!_vm.undo ? _c(\"a\", { staticClass: \"app-navigation-entry-link\", attrs: { \"aria-current\": _vm.active || _vm.to && isActive ? \"page\" : void 0, \"aria-description\": _vm.ariaDescription, \"aria-expanded\": _vm.$scopedSlots.default ? _vm.opened.toString() : void 0, \"href\": _vm.href || routerLinkHref || \"#\", \"target\": _vm.isExternal(_vm.href) ? \"_blank\" : void 0, \"title\": _vm.title || _vm.name }, on: { \"blur\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"focus\": _vm.handleFocus, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.handleTab.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"app-navigation-entry-icon\", class: { [_vm.icon]: _vm.icon } }, [_vm.loading ? _c(\"NcLoadingIcon\") : _vm._t(\"icon\", null, { \"active\": _vm.active || _vm.to && isActive })], 2), !_vm.editingActive ? _c(\"span\", { staticClass: \"app-navigation-entry__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _vm.editingActive ? _c(\"div\", { staticClass: \"editingContainer\" }, [_c(\"NcInputConfirmCancel\", { ref: \"editingInput\", attrs: { \"placeholder\": _vm.editPlaceholder !== \"\" ? _vm.editPlaceholder : _vm.name, \"primary\": _vm.to && isActive || _vm.active }, on: { \"cancel\": _vm.cancelEditing, \"confirm\": _vm.handleEditingDone }, model: { value: _vm.editingValue, callback: function($$v) {\n _vm.editingValue = $$v;\n }, expression: \"editingValue\" } })], 1) : _vm._e()]) : _vm._e(), _vm.undo ? _c(\"div\", { staticClass: \"app-navigation-entry__deleted\" }, [_c(\"div\", { staticClass: \"app-navigation-entry__deleted-description\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])]) : _vm._e(), _vm.hasUtils && !_vm.editingActive ? _c(\"div\", { staticClass: \"app-navigation-entry__utils\", class: { \"app-navigation-entry__utils--display-actions\": _vm.forceDisplayActions || _vm.menuOpenLocalValue || _vm.menuOpen } }, [_vm.$scopedSlots.counter ? _c(\"div\", { staticClass: \"app-navigation-entry__counter-wrapper\" }, [_vm._t(\"counter\")], 2) : _vm._e(), _vm.$scopedSlots.actions || _vm.editable && !_vm.editingActive || _vm.undo ? _c(\"NcActions\", { ref: \"actions\", staticClass: \"app-navigation-entry__actions\", attrs: { \"inline\": _vm.inlineActions, \"container\": \"#app-navigation-vue\", \"boundaries-element\": _vm.actionsBoundariesElement, \"placement\": _vm.menuPlacement, \"open\": _vm.menuOpen, \"type\": \"tertiary\", \"force-menu\": _vm.forceMenu, \"default-icon\": _vm.menuIcon }, on: { \"update:open\": _vm.onMenuToggle }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"menu-icon\")];\n }, proxy: true }], null, true) }, [_vm.editable && !_vm.editingActive ? _c(\"NcActionButton\", { attrs: { \"aria-label\": _vm.editButtonAriaLabel }, on: { \"click\": _vm.handleEdit }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Pencil\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.editLabel) + \" \")]) : _vm._e(), _vm.undo ? _c(\"NcActionButton\", { attrs: { \"aria-label\": _vm.undoButtonAriaLabel }, on: { \"click\": _vm.handleUndo }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Undo\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1) : _vm._e(), _vm.isCollapsible() ? _c(\"NcAppNavigationIconCollapsible\", { attrs: { \"active\": _vm.to && isActive || _vm.active, \"open\": _vm.opened }, on: { \"click\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.toggleCollapse.apply(null, arguments);\n } } }) : _vm._e(), _vm._t(\"extra\")], 2)];\n } }], null, true) }), _vm.canHaveChildren && _vm.$scopedSlots.default ? _c(\"ul\", { staticClass: \"app-navigation-entry__children\" }, [_vm._t(\"default\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"bcb47ab4\"\n);\nconst NcAppNavigationItem = __component__.exports;\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-Dg-2s6bP.mjs.map\n","import '../assets/NcAppNavigationSearch-DWhTZbjb.css';\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { useSlots, ref, watch, nextTick } from \"vue\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { N as NcInputField } from \"./NcInputField-Cym5GuvB.mjs\";\nimport { r as register, p as t45, q as t16, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t16, t45);\nconst __default__ = {\n name: \"NcAppNavigationSearch\",\n model: {\n event: \"update:modelValue\",\n prop: \"modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ Object.assign(__default__, {\n props: {\n /**\n * Current search input\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit }) {\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainer = ref();\n const hasActions = () => !!slots.actions;\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n });\n watch(showActions, (show) => {\n window.clearTimeout(timeoutId.value);\n if (show) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !show;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n emit(\"update:modelValue\", \"\");\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainer.value.querySelector(\"button\")?.focus());\n }\n }\n return { __sfc: true, emit, slots, inputElement, inputHasFocus, transitionTimeout, actionsContainer, hasActions, showActions, timeoutId, hideActions, onCloseSearch, IconClose: Close, NcInputField, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"app-navigation-search\", class: {\n \"app-navigation-search--has-actions\": _setup.hasActions()\n } }, [_c(_setup.NcInputField, { ref: \"inputElement\", staticClass: \"app-navigation-search__input\", attrs: { \"aria-label\": _vm.label, \"label-outside\": \"\", \"placeholder\": _vm.placeholder ?? _vm.label, \"show-trailing-button\": \"\", \"trailing-button-label\": _setup.t(\"Clear search\"), \"type\": \"search\", \"value\": _vm.modelValue }, on: { \"update:value\": function($event) {\n return _vm.$emit(\"update:modelValue\", $event);\n }, \"trailing-button-click\": _setup.onCloseSearch }, scopedSlots: _vm._u([{ key: \"trailing-button-icon\", fn: function() {\n return [_c(_setup.IconClose, { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _setup.hasActions() ? _c(\"div\", { ref: \"actionsContainer\", staticClass: \"app-navigation-search__actions\", class: {\n \"app-navigation-search__actions--hidden\": !_setup.showActions,\n \"hidden-visually\": _setup.hideActions\n } }, [_vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"df568544\"\n);\nconst NcAppNavigationSearch = __component__.exports;\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-DIO0S2TU.mjs.map\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useClipboard, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark as usePreferredDark$1, usePreferredLanguages, usePreferredReducedMotion, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';\nimport { defineComponent, ref, h, watch, computed, reactive, getCurrentInstance, onMounted, isVue2, watchEffect, shallowRef, nextTick, toRefs } from 'vue-demi';\nimport { isClient, toValue, noop, isObject, tryOnScopeDispose, isIOS, directiveHooks, pausableWatch, tryOnMounted, toRef, useToggle, notNullish, promiseTimeout, until, useDebounceFn, useThrottleFn, tryOnUnmounted } from '@vueuse/shared';\n\nconst OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnClickOutside\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onClickOutside$1(target, (e) => {\n emit(\"trigger\", e);\n }, props.options);\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst defaultWindow = isClient ? window : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst vOnClickOutside = {\n [directiveHooks.mounted](el, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === \"function\") {\n el.__onClickOutside_stop = onClickOutside(el, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n el.__onClickOutside_stop = onClickOutside(el, handler, Object.assign({ capture }, options));\n }\n },\n [directiveHooks.unmounted](el) {\n el.__onClickOutside_stop();\n }\n};\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\n\nconst vOnKeyStroke = {\n [directiveHooks.mounted](el, binding) {\n var _a, _b;\n const keys = (_b = (_a = binding.arg) == null ? void 0 : _a.split(\",\")) != null ? _b : true;\n if (typeof binding.value === \"function\") {\n onKeyStroke(keys, binding.value, {\n target: el\n });\n } else {\n const [handler, options] = binding.value;\n onKeyStroke(keys, handler, {\n target: el,\n ...options\n });\n }\n }\n};\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst OnLongPress = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnLongPress\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onLongPress(\n target,\n (e) => {\n emit(\"trigger\", e);\n },\n props.options\n );\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst vOnLongPress = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n onLongPress(el, binding.value, { modifiers: binding.modifiers });\n else\n onLongPress(el, ...binding.value);\n }\n};\n\nconst UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseActiveElement\",\n setup(props, { slots }) {\n const data = reactive({\n element: useActiveElement()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBattery = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBattery\",\n setup(props, { slots }) {\n const data = reactive(useBattery(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBrowserLocation\",\n setup(props, { slots }) {\n const data = reactive(useBrowserLocation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseClipboard = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseClipboard\",\n props: [\n \"source\",\n \"read\",\n \"navigator\",\n \"copiedDuring\",\n \"legacy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useClipboard(props));\n return () => {\n var _a;\n return (_a = slots.default) == null ? void 0 : _a.call(slots, data);\n };\n }\n});\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, isVue2 ? void 0 : instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update);\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(key);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nconst UseColorMode = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseColorMode\",\n props: [\"selector\", \"attribute\", \"modes\", \"onChanged\", \"storageKey\", \"storage\", \"emitAuto\"],\n setup(props, { slots }) {\n const mode = useColorMode(props);\n const data = reactive({\n mode,\n system: mode.system,\n store: mode.store\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDark\",\n props: [\"selector\", \"attribute\", \"valueDark\", \"valueLight\", \"onChanged\", \"storageKey\", \"storage\"],\n setup(props, { slots }) {\n const isDark = useDark(props);\n const data = reactive({\n isDark,\n toggleDark: useToggle(isDark)\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceMotion\",\n setup(props, { slots }) {\n const data = reactive(useDeviceMotion());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceOrientation\",\n setup(props, { slots }) {\n const data = reactive(useDeviceOrientation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicePixelRatio\",\n setup(props, { slots }) {\n const data = reactive({\n pixelRatio: useDevicePixelRatio()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicesList\",\n props: [\"onUpdated\", \"requestPermissions\", \"constraints\"],\n setup(props, { slots }) {\n const data = reactive(useDevicesList(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDocumentVisibility\",\n setup(props, { slots }) {\n const data = reactive({\n visibility: useDocumentVisibility()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDraggable = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDraggable\",\n props: [\n \"storageKey\",\n \"storageType\",\n \"initialValue\",\n \"exact\",\n \"preventDefault\",\n \"stopPropagation\",\n \"pointerTypes\",\n \"as\",\n \"handle\",\n \"axis\",\n \"onStart\",\n \"onMove\",\n \"onEnd\",\n \"disabled\",\n \"buttons\",\n \"containerElement\"\n ],\n setup(props, { slots }) {\n const target = ref();\n const handle = computed(() => {\n var _a;\n return (_a = props.handle) != null ? _a : target.value;\n });\n const containerElement = computed(() => {\n var _a;\n return (_a = props.containerElement) != null ? _a : void 0;\n });\n const disabled = computed(() => !!props.disabled);\n const storageValue = props.storageKey && useStorage$1(\n props.storageKey,\n toValue(props.initialValue) || { x: 0, y: 0 },\n isClient$1 ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0\n );\n const initialValue = storageValue || props.initialValue || { x: 0, y: 0 };\n const onEnd = (position, event) => {\n var _a;\n (_a = props.onEnd) == null ? void 0 : _a.call(props, position, event);\n if (!storageValue)\n return;\n storageValue.value.x = position.x;\n storageValue.value.y = position.y;\n };\n const data = reactive(useDraggable(target, {\n ...props,\n handle,\n initialValue,\n onEnd,\n disabled,\n containerElement\n }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));\n };\n }\n});\n\nconst UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementBounding\",\n props: [\"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementBounding(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nconst vElementHover = {\n [directiveHooks.mounted](el, binding) {\n const value = binding.value;\n if (typeof value === \"function\") {\n const isHovered = useElementHover(el);\n watch(isHovered, (v) => value(v));\n } else {\n const [handler, options] = value;\n const isHovered = useElementHover(el, options);\n watch(isHovered, (v) => handler(v));\n }\n }\n};\n\nconst UseElementSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementSize\",\n props: [\"width\", \"height\", \"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementSize$1(target, { width: props.width, height: props.height }, { box: props.box }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nconst vElementSize = {\n [directiveHooks.mounted](el, binding) {\n var _a;\n const handler = typeof binding.value === \"function\" ? binding.value : (_a = binding.value) == null ? void 0 : _a[0];\n const options = typeof binding.value === \"function\" ? [] : binding.value.slice(1);\n const { width, height } = useElementSize(el, ...options);\n watch([width, height], ([width2, height2]) => handler({ width: width2, height: height2 }));\n }\n};\n\nconst UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementVisibility\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive({\n isVisible: useElementVisibility$1(target)\n });\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold\n }\n );\n return elementIsVisible;\n}\n\nconst vElementVisibility = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const isVisible = useElementVisibility(el);\n watch(isVisible, (v) => handler(v), { immediate: true });\n } else {\n const [handler, options] = binding.value;\n const isVisible = useElementVisibility(el, options);\n watch(isVisible, (v) => handler(v), { immediate: true });\n }\n }\n};\n\nconst UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseEyeDropper\",\n props: {\n sRGBHex: String\n },\n setup(props, { slots }) {\n const data = reactive(useEyeDropper());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseFullscreen\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useFullscreen(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseGeolocation\",\n props: [\"enableHighAccuracy\", \"maximumAge\", \"timeout\", \"navigator\"],\n setup(props, { slots }) {\n const data = reactive(useGeolocation(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseIdle = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseIdle\",\n props: [\"timeout\", \"events\", \"listenForVisibilityChange\", \"initialState\"],\n setup(props, { slots }) {\n const data = reactive(useIdle(props.timeout, props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst UseImage = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseImage\",\n props: [\n \"src\",\n \"srcset\",\n \"sizes\",\n \"as\",\n \"alt\",\n \"class\",\n \"loading\",\n \"crossorigin\",\n \"referrerPolicy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useImage(props));\n return () => {\n if (data.isLoading && slots.loading)\n return slots.loading(data);\n else if (data.error && slots.error)\n return slots.error(data.error);\n if (slots.default)\n return slots.default(data);\n return h(props.as || \"img\", props);\n };\n }\n});\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst vInfiniteScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useInfiniteScroll(el, binding.value);\n else\n useInfiniteScroll(el, ...binding.value);\n }\n};\n\nconst vIntersectionObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useIntersectionObserver(el, binding.value);\n else\n useIntersectionObserver(el, ...binding.value);\n }\n};\n\nconst UseMouse = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouse\",\n props: [\"touch\", \"resetOnTouchEnds\", \"initialValue\"],\n setup(props, { slots }) {\n const data = reactive(useMouse(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouseElement\",\n props: [\"handleOutside\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMouseInElement(target, props));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMousePressed\",\n props: [\"touch\", \"initialValue\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMousePressed({ ...props, target }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseNetwork = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNetwork\",\n setup(props, { slots }) {\n const data = reactive(useNetwork());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseNow = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNow\",\n props: [\"interval\"],\n setup(props, { slots }) {\n const data = reactive(useNow({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseObjectUrl\",\n props: [\n \"object\"\n ],\n setup(props, { slots }) {\n const object = toRef(props, \"object\");\n const url = useObjectUrl(object);\n return () => {\n if (slots.default && url.value)\n return slots.default(url);\n };\n }\n});\n\nconst UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOffsetPagination\",\n props: [\n \"total\",\n \"page\",\n \"pageSize\",\n \"onPageChange\",\n \"onPageSizeChange\",\n \"onPageCountChange\"\n ],\n emits: [\n \"page-change\",\n \"page-size-change\",\n \"page-count-change\"\n ],\n setup(props, { slots, emit }) {\n const data = reactive(useOffsetPagination({\n ...props,\n onPageChange(...args) {\n var _a;\n (_a = props.onPageChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-change\", ...args);\n },\n onPageSizeChange(...args) {\n var _a;\n (_a = props.onPageSizeChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-size-change\", ...args);\n },\n onPageCountChange(...args) {\n var _a;\n (_a = props.onPageCountChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-count-change\", ...args);\n }\n }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseOnline = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOnline\",\n setup(props, { slots }) {\n const data = reactive({\n isOnline: useOnline()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePageLeave\",\n setup(props, { slots }) {\n const data = reactive({\n isLeft: usePageLeave()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePointer = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePointer\",\n props: [\n \"pointerTypes\",\n \"initialValue\",\n \"target\"\n ],\n setup(props, { slots }) {\n const el = ref(null);\n const data = reactive(usePointer({\n ...props,\n target: props.target === \"self\" ? el : defaultWindow\n }));\n return () => {\n if (slots.default)\n return slots.default(data, { ref: el });\n };\n }\n});\n\nconst UsePointerLock = /* #__PURE__ */ defineComponent({\n name: \"UsePointerLock\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(usePointerLock(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredColorScheme\",\n setup(props, { slots }) {\n const data = reactive({\n colorScheme: usePreferredColorScheme()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredContrast\",\n setup(props, { slots }) {\n const data = reactive({\n contrast: usePreferredContrast()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredDark\",\n setup(props, { slots }) {\n const data = reactive({\n prefersDark: usePreferredDark$1()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredLanguages\",\n setup(props, { slots }) {\n const data = reactive({\n languages: usePreferredLanguages()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredReducedMotion\",\n setup(props, { slots }) {\n const data = reactive({\n motion: usePreferredReducedMotion()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst vResizeObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useResizeObserver(el, binding.value);\n else\n useResizeObserver(el, ...binding.value);\n }\n};\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n const raw_prop = toValue(prop);\n if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) {\n if (val == null)\n elRef.value.style.removeProperty(raw_prop);\n else\n elRef.value.style.setProperty(raw_prop, val);\n }\n }\n );\n return variable;\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nconst UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseScreenSafeArea\",\n props: {\n top: Boolean,\n right: Boolean,\n bottom: Boolean,\n left: Boolean\n },\n setup(props, { slots }) {\n const {\n top,\n right,\n bottom,\n left\n } = useScreenSafeArea();\n return () => {\n if (slots.default) {\n return h(\"div\", {\n style: {\n paddingTop: props.top ? top.value : \"\",\n paddingRight: props.right ? right.value : \"\",\n paddingBottom: props.bottom ? bottom.value : \"\",\n paddingLeft: props.left ? left.value : \"\",\n boxSizing: \"border-box\",\n maxHeight: \"100vh\",\n maxWidth: \"100vw\",\n overflow: \"auto\"\n }\n }, slots.default());\n }\n };\n }\n});\n\nconst vScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const state = useScroll(el, {\n onScroll() {\n handler(state);\n },\n onStop() {\n handler(state);\n }\n });\n } else {\n const [handler, options] = binding.value;\n const state = useScroll(el, {\n ...options,\n onScroll(e) {\n var _a;\n (_a = options.onScroll) == null ? void 0 : _a.call(options, e);\n handler(state);\n },\n onStop(e) {\n var _a;\n (_a = options.onStop) == null ? void 0 : _a.call(options, e);\n handler(state);\n }\n });\n }\n }\n};\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction onScrollLock() {\n let isMounted = false;\n const state = ref(false);\n return (el, binding) => {\n state.value = binding.value;\n if (isMounted)\n return;\n isMounted = true;\n const isLocked = useScrollLock(el, binding.value);\n watch(state, (v) => isLocked.value = v);\n };\n}\nconst vScrollLock = onScrollLock();\n\nconst UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimeAgo\",\n props: [\"time\", \"updateInterval\", \"max\", \"fullDateFormatter\", \"messages\", \"showSecond\"],\n setup(props, { slots }) {\n const data = reactive(useTimeAgo(() => props.time, { ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimestamp\",\n props: [\"immediate\", \"interval\", \"offset\"],\n setup(props, { slots }) {\n const data = reactive(useTimestamp({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseVirtualList\",\n props: [\n \"list\",\n \"options\",\n \"height\"\n ],\n setup(props, { slots, expose }) {\n const { list: listRef } = toRefs(props);\n const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n expose({ scrollTo });\n if (containerProps.style && typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style))\n containerProps.style.height = props.height || \"300px\";\n return () => h(\"div\", { ...containerProps }, [\n h(\"div\", { ...wrapperProps.value }, list.value.map((item) => h(\"div\", { style: { overflow: \"hidden\", height: item.height } }, slots.default ? slots.default(item) : \"Please set content!\")))\n ]);\n }\n});\n\nconst UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowFocus\",\n setup(props, { slots }) {\n const data = reactive({\n focused: useWindowFocus()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowSize\",\n props: [\"initialWidth\", \"initialHeight\"],\n setup(props, { slots }) {\n const data = reactive(useWindowSize(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseClipboard, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vResizeObserver, vScroll, vScrollLock };\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '<!-') {\n state = STATE_COMMENT;\n }\n\n tag_buffer += char;\n break;\n\n case ' ':\n case '\\n':\n if (tag_buffer === '<') {\n state = STATE_PLAINTEXT;\n output += '< ';\n tag_buffer = '';\n\n break;\n }\n\n tag_buffer += char;\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n\n else if (state === STATE_COMMENT) {\n switch (char) {\n case '>':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","function checkIfDarkTheme(el = document.body) {\n const backgroundInvertIfDark = window.getComputedStyle(el).getPropertyValue(\"--background-invert-if-dark\");\n if (backgroundInvertIfDark !== void 0) {\n return backgroundInvertIfDark === \"invert(100%)\";\n }\n return false;\n}\nconst isDarkTheme = checkIfDarkTheme();\nexport {\n checkIfDarkTheme,\n isDarkTheme\n};\n//# sourceMappingURL=isDarkTheme.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INJECTION_KEY_THEME = /* @__PURE__ */ Symbol.for(\"nc:theme:enforced\");\nexport {\n INJECTION_KEY_THEME as I\n};\n//# sourceMappingURL=constants-wIEKSp2G.mjs.map\n","import { createSharedComposable, toValue, usePreferredDark, useMutationObserver } from \"@vueuse/core\";\nimport { computed, ref, watch, readonly, inject } from \"vue\";\nimport { checkIfDarkTheme } from \"../Functions/isDarkTheme.mjs\";\nimport { I as INJECTION_KEY_THEME } from \"../chunks/constants-wIEKSp2G.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction useIsDarkThemeElement(el) {\n const element = computed(() => toValue(el) ?? document.body);\n const isDarkTheme = ref(checkIfDarkTheme(element.value));\n const isDarkSystemTheme = usePreferredDark();\n function updateIsDarkTheme() {\n isDarkTheme.value = checkIfDarkTheme(element.value);\n }\n useMutationObserver(element, updateIsDarkTheme, { attributes: true });\n watch(element, updateIsDarkTheme);\n watch(isDarkSystemTheme, updateIsDarkTheme, { immediate: true });\n return readonly(isDarkTheme);\n}\nconst useInternalIsDarkTheme = createSharedComposable(() => useIsDarkThemeElement());\nfunction useIsDarkTheme() {\n const isDarkTheme = useInternalIsDarkTheme();\n const enforcedTheme = inject(INJECTION_KEY_THEME, void 0);\n return computed(() => {\n if (enforcedTheme?.value) {\n return enforcedTheme.value === \"dark\";\n }\n return isDarkTheme.value;\n });\n}\nexport {\n useIsDarkTheme,\n useIsDarkThemeElement\n};\n//# sourceMappingURL=useIsDarkTheme.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcAppNavigationSettings-DGkLlCyq.css';\nimport { k as mdiCogOutline, l as mdiCog } from \"./mdi-DkJglNiS.mjs\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { r as register, o as t49, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport clickOutsideOptions from \"../Mixins/clickOutsideOptions.mjs\";\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"vue\";\nimport \"../Composables/useIsDarkTheme.mjs\";\nimport \"@nextcloud/router\";\nimport \"../Functions/isDarkTheme.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/capabilities\";\nimport \"./logger-D3RVzcfQ.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nregister(t49);\nconst _sfc_main = {\n directives: {\n ClickOutside: vOnClickOutside\n },\n components: {\n NcButton,\n NcIconSvgWrapper\n },\n mixins: [\n clickOutsideOptions\n ],\n props: {\n /**\n * Text of the button\n *\n * @default 'Settings'\n */\n name: {\n type: String,\n required: false,\n default: t(\"Settings\")\n }\n },\n setup() {\n const contentId = GenRandomId();\n return {\n contentId,\n isLegacy32,\n mdiCog,\n mdiCogOutline\n };\n },\n data() {\n return {\n open: false\n };\n },\n computed: {\n clickOutsideConfig() {\n return [\n this.closeMenu,\n this.clickOutsideOptions\n ];\n }\n },\n methods: {\n closeMenu() {\n this.open = false;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: _vm.clickOutsideConfig, expression: \"clickOutsideConfig\" }], class: { open: _vm.open }, attrs: { \"id\": \"app-settings\" } }, [_c(\"div\", { attrs: { \"id\": \"app-settings__header\" } }, [_c(\"NcButton\", { staticClass: \"settings-button\", attrs: { \"aria-controls\": _vm.contentId, \"aria-expanded\": _vm.open ? \"true\" : \"false\", \"alignment\": \"start\", \"variant\": \"tertiary\", \"wide\": \"\" }, on: { \"click\": function($event) {\n _vm.open = !_vm.open;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { staticClass: \"settings-button__icon\", attrs: { \"path\": _vm.isLegacy32 ? _vm.mdiCog : _vm.mdiCogOutline } })];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1), _c(\"Transition\", { attrs: { \"name\": \"slide-up\" } }, [_c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.open, expression: \"open\" }], attrs: { \"id\": _vm.contentId } }, [_vm._t(\"default\")], 2)])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"ddd7d69d\"\n);\nconst NcAppNavigationSettings = __component__.exports;\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-3jZKd9et.mjs.map\n","import { ref } from \"vue\";\nimport { r as register, e as t33, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t33);\nconst _sfc_main = {\n __name: \"NcDialogButton\",\n props: {\n /**\n * The function that will be called when the button is pressed.\n * If the function returns `false` the click is ignored and the dialog will not be closed,\n * which is the default behavior of \"reset\"-buttons.\n *\n * @type {() => unknown|false|Promise<unknown|false>}\n */\n callback: {\n type: Function,\n required: false,\n default: () => {\n }\n },\n /**\n * The label of the button\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Optional inline SVG icon for the button\n */\n icon: {\n type: String,\n required: false,\n default: void 0\n },\n /**\n * The button type, see NcButton.\n *\n * @deprecated The usage for setting the color variant is deprecated and will be removed with v9.\n * @type {'button'|'submit'|'reset'|'primary'|'secondary'|'error'|'warning'|'success'}\n */\n type: {\n type: String,\n required: false,\n default: \"secondary\",\n validator: (type) => typeof type === \"string\" && [\"button\", \"submit\", \"reset\", \"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(type)\n },\n /**\n * See `nativeType` of `NcButton`.\n *\n * @deprecated use `type` instead - will removed with v9\n */\n nativeType: {\n type: String,\n required: false,\n default: \"button\",\n validator(value) {\n return [\"submit\", \"reset\", \"button\"].includes(value);\n }\n },\n /**\n * If the button should be shown as disabled\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * The button variant, see NcButton.\n *\n * @type {'primary'|'secondary'|'tertiary'|'error'|'warning'|'success'}\n * @since 8.24.0\n */\n variant: {\n type: String,\n required: false,\n default: \"secondary\",\n validator: (type) => typeof type === \"string\" && [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(type)\n }\n },\n emits: [\"click\"],\n setup(__props, { emit }) {\n const props = __props;\n const isLoading = ref(false);\n async function handleClick(e) {\n if (isLoading.value) {\n return;\n }\n isLoading.value = true;\n try {\n const fallback = props.nativeType === \"reset\" ? false : void 0;\n const result = await props.callback?.() ?? fallback;\n if (result !== false) {\n emit(\"click\", e, result);\n }\n } finally {\n isLoading.value = false;\n }\n }\n return { __sfc: true, props, emit, isLoading, handleClick, t, NcButton, NcIconSvgWrapper, NcLoadingIcon };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcButton, { attrs: { \"aria-label\": _vm.label, \"disabled\": _vm.disabled, \"type\": _vm.type, \"native-type\": _vm.nativeType, \"variant\": _vm.variant }, on: { \"click\": _setup.handleClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_setup.isLoading ? _c(_setup.NcLoadingIcon, { attrs: {\n \"name\": _setup.t(\"Loading …\")\n /* TRANSLATORS: The button is in a loading state*/\n } }) : _vm.icon !== void 0 ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": _vm.icon } }) : _vm._e()];\n })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcDialogButton = __component__.exports;\nexport {\n NcDialogButton as N\n};\n//# sourceMappingURL=NcDialogButton-D5yuDtSF.mjs.map\n","import '../assets/NcAppSettingsDialog-Cu7QAD8V.css';\nimport Vue, { defineComponent, inject, provide, ref, shallowRef, computed, onBeforeUnmount } from \"vue\";\nimport { useVModel, toRef } from \"@vueuse/core\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-DoGsI2_6.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-qk1L3dsY.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, N as t50, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialogVersion\",\n setup(__props) {\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const localizedAppName = useLocalizedAppName();\n return { __sfc: true, legacy, localizedAppName, APP_VERSION };\n }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_3gUpl\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_z65Mt\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_-HOSG\",\n appSettingsDialogVersion,\n appSettingsDialogVersion__legacy\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: [_vm.$style.appSettingsDialogVersion, { [_vm.$style.appSettingsDialogVersion__legacy]: _setup.legacy }] }, [_vm._v(\" \" + _vm._s(_setup.localizedAppName) + \" \" + _vm._s(_setup.APP_VERSION) + \" \")]);\n};\nvar _sfc_staticRenderFns$1 = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAppSettingsDialogVersion = __component__$1.exports;\nregister(t50);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: {\n open: { type: Boolean },\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: true },\n noVersion: { type: Boolean, default: false }\n },\n emits: [\"update:open\"],\n setup(__props, { emit }) {\n const props = __props;\n const open = useVModel(props, \"open\", emit, { passive: true });\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScroller = ref();\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = shallowRef([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScroller.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n Vue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return { __sfc: true, props, emit, open, settingsScroller, isMobile, selectedSection, linkClicked, registeredSections, hasNavigation, hasNavigationIcons, unfocusNavigationItem, sectionsOrderMap, handleSettingsNavigationClick, handleCloseModal, handleScroll, registerSection, unregisterSection, NcDialog, NcVNodes, NcAppSettingsDialogVersion, t, isLegacy34 };\n }\n});\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _setup.open ? _c(_setup.NcDialog, { staticClass: \"app-settings\", class: { \"app-settings--legacy\": _setup.isLegacy34 }, attrs: { \"content-classes\": [\"app-settings__content\", { \"app-settings__non-legacy\": !_vm.legacy }], \"navigation-classes\": \"app-settings__navigation\", \"additional-trap-elements\": _vm.additionalTrapElements, \"container\": _vm.container, \"close-on-click-outside\": \"\", \"navigation-aria-label\": _setup.t(\"Settings navigation\"), \"size\": \"large\", \"name\": _vm.name }, on: { \"update:open\": _setup.handleCloseModal }, scopedSlots: _vm._u([_setup.hasNavigation ? { key: \"navigation\", fn: function({ isCollapsed }) {\n return [!_setup.isLegacy34 ? _c(\"div\", { staticClass: \"app-settings__title\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), !isCollapsed ? _c(\"ul\", { staticClass: \"navigation-list\" }, _vm._l(_setup.registeredSections, function(section) {\n return _c(\"li\", { key: section.id }, [_c(\"a\", { staticClass: \"navigation-list__link\", class: {\n \"navigation-list__link--active\": section.id === _setup.selectedSection,\n \"navigation-list__link--icon\": _setup.hasNavigationIcons\n }, attrs: { \"aria-current\": `${section.id === _setup.selectedSection}`, \"href\": `#settings-section_${section.id}`, \"tabindex\": \"0\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _setup.handleSettingsNavigationClick(section.id);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _setup.handleSettingsNavigationClick(section.id);\n } } }, [_setup.hasNavigationIcons ? _c(\"div\", { staticClass: \"navigation-list__link-icon\" }, [section.icon ? _c(_setup.NcVNodes, { attrs: { \"vnodes\": section.icon } }) : _vm._e()], 1) : _vm._e(), _c(\"span\", { staticClass: \"navigation-list__link-text\" }, [_vm._v(\" \" + _vm._s(section.name) + \" \")])])]);\n }), 0) : _vm._e()];\n } } : null], null, true) }, [_c(\"div\", { ref: \"settingsScroller\", on: { \"scroll\": _setup.handleScroll } }, [_vm._t(\"default\"), !_vm.noVersion ? _c(_setup.NcAppSettingsDialogVersion) : _vm._e()], 2)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"1b265bb0\"\n);\nconst NcAppSettingsDialog = __component__.exports;\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-JB67n8yt.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-D-FcvAWd.css';\nimport { defineComponent } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-CsGyNFSh.mjs\";\nimport { r as register, z as t31, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return { __sfc: true, NcAppSettingsSection, t };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_mXEx-\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_wB7uY\",\n appSettingsSectionShortcuts\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcAppSettingsSection, { attrs: { \"id\": \"keyboard-shortcuts\", \"name\": _setup.t(\"Keyboard shortcuts\") } }, [_c(\"div\", { class: _vm.$style.appSettingsSectionShortcuts }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAppSettingsShortcutsSection = __component__.exports;\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-BpUlnEbQ.mjs.map\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nexport { nanoid, customAlphabet }\n","\n/**\n * vue-simple-portal\n * version: 0.1.5,\n * (c) Thorsten Lünborg, 2021 - present\n * LICENCE: Apache-2.0\n * http://github.com/linusborg/vue-simple-portal\n*/\nimport Vue from 'vue';\nimport { nanoid } from 'nanoid/non-secure';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar config = {\n selector: \"vue-portal-target-\".concat(nanoid())\n};\nvar setSelector = function setSelector(selector) {\n return config.selector = selector;\n};\nvar isBrowser = typeof window !== 'undefined' && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== undefined;\n\nvar TargetContainer = Vue.extend({\n // as an abstract component, it doesn't appear in\n // the $parent chain of components.\n // which means the next parent of any component rendered inside of this oen\n // will be the parent from which is was sent\n // @ts-expect-error\n abstract: true,\n name: 'PortalOutlet',\n props: ['nodes', 'tag'],\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n render: function render(h) {\n var nodes = this.updatedNodes && this.updatedNodes();\n if (!nodes) return h();\n return nodes.length === 1 && !nodes[0].text ? nodes : h(this.tag || 'DIV', nodes);\n },\n destroyed: function destroyed() {\n var el = this.$el;\n el && el.parentNode.removeChild(el);\n }\n});\n\nvar Portal = Vue.extend({\n name: 'VueSimplePortal',\n props: {\n disabled: {\n type: Boolean\n },\n prepend: {\n type: Boolean\n },\n selector: {\n type: String,\n default: function _default() {\n return \"#\".concat(config.selector);\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n }\n },\n render: function render(h) {\n if (this.disabled) {\n var nodes = this.$scopedSlots && this.$scopedSlots.default();\n if (!nodes) return h();\n return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag, nodes);\n }\n\n return h();\n },\n created: function created() {\n if (!this.getTargetEl()) {\n this.insertTargetEl();\n }\n },\n updated: function updated() {\n var _this = this;\n\n // We only update the target container component\n // if the scoped slot function is a fresh one\n // The new slot syntax (since Vue 2.6) can cache unchanged slot functions\n // and we want to respect that here.\n this.$nextTick(function () {\n if (!_this.disabled && _this.slotFn !== _this.$scopedSlots.default) {\n _this.container.updatedNodes = _this.$scopedSlots.default;\n }\n\n _this.slotFn = _this.$scopedSlots.default;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unmount();\n },\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmount() : this.$nextTick(this.mount);\n }\n }\n },\n methods: {\n // This returns the element into which the content should be mounted.\n getTargetEl: function getTargetEl() {\n if (!isBrowser) return;\n return document.querySelector(this.selector);\n },\n insertTargetEl: function insertTargetEl() {\n if (!isBrowser) return;\n var parent = document.querySelector('body');\n var child = document.createElement(this.tag);\n child.id = this.selector.substring(1);\n parent.appendChild(child);\n },\n mount: function mount() {\n if (!isBrowser) return;\n var targetEl = this.getTargetEl();\n var el = document.createElement('DIV');\n\n if (this.prepend && targetEl.firstChild) {\n targetEl.insertBefore(el, targetEl.firstChild);\n } else {\n targetEl.appendChild(el);\n }\n\n this.container = new TargetContainer({\n el: el,\n parent: this,\n propsData: {\n tag: this.tag,\n nodes: this.$scopedSlots.default\n }\n });\n },\n unmount: function unmount() {\n if (this.container) {\n this.container.$destroy();\n delete this.container;\n }\n }\n }\n});\n\nfunction install(_Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _Vue.component(options.name || 'portal', Portal);\n\n if (options.defaultSelector) {\n setSelector(options.defaultSelector);\n }\n}\n\nif (typeof window !== 'undefined' && window.Vue && window.Vue === Vue) {\n // plugin was inlcuded directly in a browser\n Vue.use(install);\n}\n\nexport default install;\nexport { Portal, config, setSelector };\n","import '../assets/NcIconToggleSwitch-DO_sv5_o.css';\nimport { defineComponent, useCssVars, computed } from \"vue\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst svg = `<svg\n\txmlns=\"http://www.w3.org/2000/svg\"\n\tviewBox=\"0 0 24 12\">\n\t<path d=\"M17,1H7A5,5 0 0,0 2,6 5,5 0 0,0 7,11H17A5,5 0 0,0 22,6 5,5 0 0,0 17,1Z\" />\n\t<circle\n\t\tcy=\"6\"\n\t\tr=\"3\"\n\t\tfill=\"var(--color-main-background)\" />\n</svg>`;\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcIconToggleSwitch\",\n props: {\n checked: { type: Boolean },\n size: { default: 34 },\n inline: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n useCssVars((_vm, _setup) => ({\n \"2d1b8583\": _setup.color,\n \"78386a55\": _setup.cx\n }));\n const color = computed(() => props.checked ? \"var(--color-primary-element)\" : \"var(--color-text-maxcontrast)\");\n const cx = computed(() => props.checked ? \"calc(17 / 24 * 100%)\" : \"calc(7 / 24 * 100%)\");\n return { __sfc: true, svg, props, color, cx, NcIconSvgWrapper };\n }\n});\nconst iconToggleSwitch = \"_iconToggleSwitch_NggOU\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_Tdewt\",\n iconToggleSwitch\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcIconSvgWrapper, { class: _vm.$style.iconToggleSwitch, attrs: { \"svg\": _setup.svg, \"size\": _vm.size, \"inline\": _vm.inline } });\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcIconToggleSwitch = __component__.exports;\nexport {\n NcIconToggleSwitch as N\n};\n//# sourceMappingURL=NcIconToggleSwitch-B19dt_oD.mjs.map\n","import { inject } from \"vue\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INSIDE_RADIO_GROUP_KEY = /* @__PURE__ */ Symbol.for(\"insideRadioGroup\");\nfunction useInsideRadioGroup() {\n return inject(INSIDE_RADIO_GROUP_KEY, void 0);\n}\nexport {\n INSIDE_RADIO_GROUP_KEY as I,\n useInsideRadioGroup as u\n};\n//# sourceMappingURL=useNcRadioGroup-D6llQmAl.mjs.map\n","import '../assets/NcCheckboxRadioSwitch-DCSWiHVq.css';\nimport { computed, onMounted, useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcIconToggleSwitch } from \"./NcIconToggleSwitch-B19dt_oD.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, J as n, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u as useInsideRadioGroup } from \"./useNcRadioGroup-D6llQmAl.mjs\";\nconst _sfc_main$6 = {\n name: \"CheckboxBlankOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-blank-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst CheckboxBlankOutline = __component__$6.exports;\nconst _sfc_main$5 = {\n name: \"CheckboxMarkedIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$5 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-marked-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n null\n);\nconst CheckboxMarked = __component__$5.exports;\nconst _sfc_main$4 = {\n name: \"MinusBoxIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon minus-box-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst MinusBox = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"RadioboxBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon radiobox-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst RadioboxBlank = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"RadioboxMarkedIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon radiobox-marked-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst RadioboxMarked = __component__$2.exports;\nconst TYPE_CHECKBOX = \"checkbox\";\nconst TYPE_RADIO = \"radio\";\nconst TYPE_SWITCH = \"switch\";\nconst TYPE_BUTTON = \"button\";\nconst _sfc_main$1 = {\n name: \"NcCheckboxContent\",\n components: {\n NcLoadingIcon,\n NcIconToggleSwitch\n },\n props: {\n /**\n * Class for the icon element\n */\n iconClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Class for the text element\n */\n textClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Type of the input. checkbox, radio, switch, or button.\n *\n * Only use button when used in a `tablist` container and the\n * `tab` role is set.\n *\n * @type {'checkbox'|'radio'|'switch'|'button'}\n */\n type: {\n type: String,\n default: \"checkbox\",\n validator: (type) => [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_SWITCH,\n TYPE_BUTTON\n ].includes(type)\n },\n /**\n * Toggle the alternative button style\n */\n buttonVariant: {\n type: Boolean,\n default: false\n },\n /**\n * True if the entry is checked\n */\n isChecked: {\n type: Boolean,\n default: false\n },\n /**\n * Indeterminate state\n */\n indeterminate: {\n type: Boolean,\n default: false\n },\n /**\n * Loading state\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Icon size\n */\n iconSize: {\n type: Number,\n default: 24\n },\n /**\n * Label id attribute\n */\n labelId: {\n type: String,\n required: true\n },\n /**\n * Description id attribute\n */\n descriptionId: {\n type: String,\n required: true\n }\n },\n computed: {\n isButtonType() {\n return this.type === TYPE_BUTTON;\n },\n isSwitchType() {\n return this.type === TYPE_SWITCH;\n },\n /**\n * Returns the proper Material icon depending on the select case\n *\n * @return {object}\n */\n checkboxRadioIconElement() {\n if (this.type === TYPE_RADIO) {\n if (this.isChecked) {\n return RadioboxMarked;\n }\n return RadioboxBlank;\n }\n if (this.indeterminate) {\n return MinusBox;\n }\n if (this.isChecked) {\n return CheckboxMarked;\n }\n return CheckboxBlankOutline;\n }\n }\n};\nvar _sfc_render$1 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"checkbox-content\", class: {\n [\"checkbox-content-\" + _vm.type]: true,\n \"checkbox-content--button-variant\": _vm.buttonVariant,\n \"checkbox-content--has-text\": !!_vm.$slots.default\n } }, [_c(\"span\", { staticClass: \"checkbox-content__icon\", class: {\n \"checkbox-content__icon--checked\": _vm.isChecked,\n [_vm.iconClass]: true\n }, attrs: { \"aria-hidden\": true, \"inert\": \"\" } }, [_vm._t(\"icon\", function() {\n return [_vm.loading ? _c(\"NcLoadingIcon\") : _vm.isSwitchType ? _c(\"NcIconToggleSwitch\", { attrs: { \"checked\": _vm.isChecked, \"size\": _vm.iconSize, \"inline\": \"\" } }) : !_vm.buttonVariant ? _c(_vm.checkboxRadioIconElement, { tag: \"component\", attrs: { \"size\": _vm.iconSize } }) : _vm._e()];\n }, { \"checked\": _vm.isChecked, \"loading\": _vm.loading })], 2), _vm.$slots.default || _vm.$slots.description ? _c(\"span\", { staticClass: \"checkbox-content__wrapper\" }, [_vm.$slots.default ? _c(\"span\", { staticClass: \"checkbox-content__text\", class: _vm.textClass, attrs: { \"id\": _vm.labelId } }, [_vm._t(\"default\")], 2) : _vm._e(), !_vm.isButtonType && _vm.$slots.description ? _c(\"span\", { staticClass: \"checkbox-content__description\", attrs: { \"id\": _vm.descriptionId } }, [_vm._t(\"description\")], 2) : _vm._e()]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"dc2e9d6a\"\n);\nconst NcCheckboxContent = __component__$1.exports;\nregister();\nconst __default__ = {\n name: \"NcCheckboxRadioSwitch\",\n components: {\n NcCheckboxContent\n },\n // We need to pass attributes to the input element\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Unique id attribute of the input\n */\n id: {\n type: String,\n default: () => \"checkbox-radio-switch-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Unique id attribute of the wrapper element\n */\n wrapperId: {\n type: String,\n default: null\n },\n /**\n * Input name. Required for radio, optional for checkbox, and ignored\n * for button.\n */\n name: {\n type: String,\n default: null\n },\n /**\n * Required if no text is set.\n * The aria-label is forwarded to the input or button.\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Type of the input. checkbox, radio, switch, or button.\n *\n * Only use button when used in a `tablist` container and the\n * `tab` role is set.\n *\n * @type {'checkbox'|'radio'|'switch'|'button'}\n */\n type: {\n type: String,\n default: \"checkbox\",\n validator: (type) => [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_SWITCH,\n TYPE_BUTTON\n ].includes(type)\n },\n /**\n * Toggle the alternative button style\n *\n * @deprecated - Use `NcRadioGroup` instead\n */\n buttonVariant: {\n type: Boolean,\n default: false\n },\n /**\n * Are the elements are all direct siblings?\n * If so they will be grouped horizontally or vertically\n *\n * @type {'no'|'horizontal'|'vertical'}\n * @deprecated - Use `NcRadioGroup` instead\n */\n buttonVariantGrouped: {\n type: String,\n default: \"no\",\n validator: (v) => [\"no\", \"vertical\", \"horizontal\"].includes(v)\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n checked: {\n type: [Boolean, Array, String],\n default: void 0\n },\n /**\n * Checkbox value\n */\n modelValue: {\n type: [Boolean, Array, String],\n default: false\n },\n /**\n * Value to be synced on check\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Disabled state\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Indeterminate state\n */\n indeterminate: {\n type: Boolean,\n default: false\n },\n /**\n * Required state\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Loading state\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Wrapping element tag\n *\n * When `type` is set to `button` this will be ignored\n *\n * Defaults to `span`\n */\n wrapperElement: {\n type: String,\n default: null\n },\n /**\n * Description\n *\n * This is unsupported when using button has type\n */\n description: {\n type: String,\n default: null\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:checked\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup(props) {\n const radioGroup = useInsideRadioGroup();\n const internalType = computed(() => radioGroup?.value ? TYPE_RADIO : props.type);\n onMounted(() => radioGroup?.value.register(false));\n const model = useModelMigration(\"checked\", \"update:checked\");\n const internalModelValue = computed({\n get() {\n if (radioGroup?.value) {\n return radioGroup.value.modelValue;\n }\n return model.value;\n },\n set(value) {\n if (radioGroup?.value) {\n radioGroup.value.onUpdate(value);\n } else {\n model.value = value;\n }\n }\n });\n return {\n internalType,\n internalModelValue,\n labelId: GenRandomId(),\n descriptionId: GenRandomId()\n };\n },\n computed: {\n dataAttrs() {\n return Object.fromEntries(Object.entries(this.$attrs).filter(([key]) => key.startsWith(\"data-\")));\n },\n nonDataAttrs() {\n return Object.fromEntries(Object.entries(this.$attrs).filter(([key]) => !key.startsWith(\"data-\")));\n },\n isButtonType() {\n return this.internalType === TYPE_BUTTON;\n },\n computedWrapperElement() {\n if (this.isButtonType) {\n return \"button\";\n }\n if (this.wrapperElement !== null) {\n return this.wrapperElement;\n }\n return \"span\";\n },\n listeners() {\n if (this.isButtonType) {\n return {\n click: this.onToggle\n };\n }\n return {\n change: this.onToggle\n };\n },\n iconSize() {\n return this.internalType === TYPE_SWITCH ? 36 : 24;\n },\n cssIconSize() {\n return this.iconSize + \"px\";\n },\n cssIconHeight() {\n return this.internalType === TYPE_SWITCH ? \"16px\" : this.cssIconSize;\n },\n /**\n * Return the input type.\n * Switch is not an official type\n *\n * @return {string}\n */\n inputType() {\n const nativeTypes = [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_BUTTON\n ];\n if (nativeTypes.includes(this.internalType)) {\n return this.internalType;\n }\n return TYPE_CHECKBOX;\n },\n /**\n * ARIA role for the input. A switch renders as a native checkbox, so it\n * needs an explicit `switch` role to be announced correctly.\n *\n * @return {string|undefined}\n */\n inputRole() {\n return this.internalType === TYPE_SWITCH ? \"switch\" : void 0;\n },\n /**\n * Check if that entry is checked\n * If value is defined, we use that as the checked value\n * If not, we expect true/false in checked state\n *\n * @return {boolean}\n */\n isChecked() {\n if (this.value !== null) {\n if (Array.isArray(this.internalModelValue)) {\n return [...this.internalModelValue].indexOf(this.value) > -1;\n }\n return this.internalModelValue === this.value;\n }\n return this.internalModelValue === true;\n },\n hasIndeterminate() {\n return [\n TYPE_CHECKBOX,\n TYPE_RADIO\n ].includes(this.inputType);\n }\n },\n mounted() {\n if (this.name && this.internalType === TYPE_CHECKBOX) {\n if (!Array.isArray(this.internalModelValue)) {\n throw new Error(\"When using groups of checkboxes, the updated value will be an array.\");\n }\n }\n if (this.name && this.internalType === TYPE_SWITCH) {\n throw new Error(\"Switches are not made to be used for data sets. Please use checkboxes instead.\");\n }\n if (typeof this.internalModelValue !== \"boolean\" && this.internalType === TYPE_SWITCH) {\n throw new Error(\"Switches can only be used with boolean as modelValue prop.\");\n }\n },\n methods: {\n t,\n n,\n onToggle(event) {\n if (this.disabled || event.target.tagName.toLowerCase() === \"a\") {\n return;\n }\n if (this.internalType === TYPE_RADIO) {\n this.internalModelValue = this.value;\n return;\n }\n if (this.internalType === TYPE_SWITCH) {\n this.internalModelValue = !this.isChecked;\n return;\n }\n if (typeof this.internalModelValue === \"boolean\") {\n this.internalModelValue = !this.internalModelValue;\n return;\n }\n if (this.isChecked) {\n this.internalModelValue = this.internalModelValue.filter((v) => v !== this.value);\n } else {\n this.internalModelValue = [...this.internalModelValue, this.value];\n }\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"739f019a\": _vm.cssIconSize,\n \"16409f00\": _vm.cssIconHeight\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.computedWrapperElement, _vm._g(_vm._b({ tag: \"component\", staticClass: \"checkbox-radio-switch\", class: {\n [\"checkbox-radio-switch-\" + _vm.internalType]: _vm.internalType,\n \"checkbox-radio-switch--checked\": _vm.isChecked,\n \"checkbox-radio-switch--disabled\": _vm.disabled,\n \"checkbox-radio-switch--indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : false,\n \"checkbox-radio-switch--button-variant\": _vm.buttonVariant,\n \"checkbox-radio-switch--button-variant-v-grouped\": _vm.buttonVariant && _vm.buttonVariantGrouped === \"vertical\",\n \"checkbox-radio-switch--button-variant-h-grouped\": _vm.buttonVariant && _vm.buttonVariantGrouped === \"horizontal\",\n \"button-vue\": _vm.isButtonType\n }, attrs: { \"id\": _vm.wrapperId, \"aria-label\": _vm.isButtonType && _vm.ariaLabel ? _vm.ariaLabel : void 0, \"type\": _vm.isButtonType ? \"button\" : null } }, \"component\", _vm.isButtonType ? _vm.$attrs : _vm.dataAttrs, false), _vm.isButtonType ? _vm.listeners : null), [!_vm.isButtonType ? _c(\"input\", _vm._g(_vm._b({ staticClass: \"checkbox-radio-switch__input\", attrs: { \"id\": _vm.id, \"aria-labelledby\": !_vm.isButtonType && !_vm.ariaLabel ? _vm.labelId : null, \"aria-describedby\": !_vm.isButtonType && (_vm.description || _vm.$slots.description) ? _vm.descriptionId : _vm.nonDataAttrs[\"aria-describedby\"], \"aria-label\": _vm.ariaLabel || void 0, \"disabled\": _vm.disabled, \"type\": _vm.inputType, \"role\": _vm.inputRole, \"required\": _vm.required, \"name\": _vm.name }, domProps: { \"value\": _vm.value, \"checked\": _vm.isChecked, \"indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : null } }, \"input\", _vm.nonDataAttrs, false), _vm.listeners)) : _vm._e(), _c(\"NcCheckboxContent\", { staticClass: \"checkbox-radio-switch__content\", attrs: { \"id\": !_vm.isButtonType ? `${_vm.id}-label` : void 0, \"icon-class\": \"checkbox-radio-switch__icon\", \"text-class\": \"checkbox-radio-switch__text\", \"type\": _vm.internalType, \"indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : false, \"button-variant\": _vm.buttonVariant, \"is-checked\": _vm.isChecked, \"loading\": _vm.loading, \"label-id\": _vm.labelId, \"description-id\": _vm.descriptionId, \"icon-size\": _vm.iconSize }, nativeOn: { \"click\": function($event) {\n return _vm.onToggle.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\")];\n }, proxy: true }, _vm.$slots.description || _vm.description ? { key: \"description\", fn: function() {\n return [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })];\n }, proxy: true } : null], null, true) }, [_vm._t(\"default\")], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"8cf5299e\"\n);\nconst NcCheckboxRadioSwitch = __component__.exports;\nexport {\n NcCheckboxRadioSwitch as N\n};\n//# sourceMappingURL=NcCheckboxRadioSwitch-BAjRm8PQ.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // URL that begins with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting, UrlOpenSyms);\n\n // Closing bracket component. This character WILL be included in the URL.\n // Must come after qsNonAccepting (which includes all close-bracket tokens)\n // so that CLOSE -> Url wins over CLOSE -> UrlOpenSyms.\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import { Options, tokenize } from 'linkifyjs';\n\n/**\n\tConvert strings of text into linkable HTML text\n*/\nfunction escapeText(text) {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction escapeAttr(href) {\n return href.replace(/\"/g, '"');\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n let val = attributes[attr] + '';\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(' ');\n}\nfunction defaultRender({\n tagName,\n attributes,\n content\n}) {\n return `<${tagName} ${attributesToString(attributes)}>${escapeText(content)}</${tagName}>`;\n}\n\n/**\n * Convert a plan text string to an HTML string with links. Expects that the\n * given strings does not contain any HTML entities. Use the linkify-html\n * interface if you need to parse HTML entities.\n *\n * @param {string} str string to linkify\n * @param {import('linkifyjs').Opts} [opts] overridable options\n * @returns {string}\n */\nfunction linkifyStr(str, opts = {}) {\n opts = new Options(opts, defaultRender);\n const tokens = tokenize(str);\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.t === 'nl' && opts.get('nl2br')) {\n result.push('<br>\\n');\n } else if (!token.isLink || !opts.check(token)) {\n result.push(escapeText(token.toString()));\n } else {\n result.push(opts.render(token));\n }\n }\n return result.join('');\n}\nif (!String.prototype.linkify) {\n Object.defineProperty(String.prototype, 'linkify', {\n writable: false,\n value: function linkify(options) {\n return linkifyStr(this, options);\n }\n });\n}\n\nexport { linkifyStr as default };\n","window._nc_vue_element_id = window._nc_vue_element_id ?? 0;\nfunction createElementId() {\n return `nc-vue-${window._nc_vue_element_id++}`;\n}\nexport {\n createElementId as c\n};\n//# sourceMappingURL=createElementId-DhjFt1I9.mjs.map\n","import '../assets/NcEmptyContent-DAR2ze6H.css';\nimport { c as createElementId } from \"../chunks/createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcEmptyContent\",\n props: {\n /**\n * A header message about an empty content shown\n *\n * @example 'No comments'\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Desription of the empty content\n *\n * @example 'No comments yet, start the conversation!'\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n setup() {\n return {\n nameId: createElementId()\n };\n },\n computed: {\n hasName() {\n return this.name !== \"\" || this.$slots.name;\n },\n /**\n * Check if a description is given as either property or slot\n */\n hasDescription() {\n return this.description !== \"\" || this.$slots.description?.[0];\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"empty-content\", attrs: { \"aria-labelledby\": _vm.nameId, \"role\": \"note\" } }, [_vm.$slots.icon ? _c(\"div\", { staticClass: \"empty-content__icon\", attrs: { \"aria-hidden\": \"true\" } }, [_vm._t(\"icon\")], 2) : _vm._e(), _vm.hasName ? _c(\"div\", { staticClass: \"empty-content__name\", attrs: { \"id\": _vm.nameId } }, [_vm._t(\"name\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.name) + \" \")];\n })], 2) : _vm._e(), _vm.hasDescription ? _c(\"p\", { staticClass: \"empty-content__description\" }, [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })], 2) : _vm._e(), _vm.$slots.action ? _c(\"div\", { staticClass: \"empty-content__action\" }, [_vm._t(\"action\")], 2) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"53618902\"\n);\nconst NcEmptyContent = __component__.exports;\nexport {\n NcEmptyContent as default\n};\n//# sourceMappingURL=NcEmptyContent.mjs.map\n","import '../assets/NcAppSidebar-DPorFaqk.css';\nimport { Portal } from \"@linusborg/vue-simple-portal\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport Vue, { ref, provide } from \"vue\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { D as DockRight } from \"./DockRight-B0D52yCO.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-BAjRm8PQ.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { useIsSmallMobile } from \"../Composables/useIsMobile.mjs\";\nimport directive from \"../Directives/Focus.mjs\";\nimport { r as register, R as t15, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcAppSidebarHeader } from \"./NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nconst _sfc_main$3 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon star-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst Star = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon star-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst StarOutline = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcCheckboxRadioSwitch,\n NcVNodes\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data() {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without active.sync\n */\n activeTab: \"\",\n isLegacy34\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some((tab) => tab.id === this.active) ? this.active : this.tabs.length > 0 ? this.tabs[0].id : \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return OC.Util.naturalSortCompare(a.name, b.name);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-sidebar-tabs\" }, [_vm.hasMultipleTabs || _vm.showForSingleTab ? _c(\"div\", { staticClass: \"app-sidebar-tabs__nav\", class: { \"app-sidebar-tabs__nav--legacy\": _vm.isLegacy34 }, attrs: { \"role\": \"tablist\" }, on: { \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"left\", 37, $event.key, [\"Left\", \"ArrowLeft\"])) return null;\n if (\"button\" in $event && $event.button !== 0) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusPreviousTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"right\", 39, $event.key, [\"Right\", \"ArrowRight\"])) return null;\n if (\"button\" in $event && $event.button !== 2) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusNextTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusActiveTabContent.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"home\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusFirstTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"end\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusLastTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"page-up\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusFirstTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"page-down\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusLastTab.apply(null, arguments);\n }] } }, _vm._l(_vm.tabs, function(tab) {\n return _c(\"NcCheckboxRadioSwitch\", { key: tab.id, staticClass: \"app-sidebar-tabs__tab\", class: { active: tab.id === _vm.activeTab }, attrs: { \"aria-controls\": `tab-${tab.id}`, \"aria-selected\": String(_vm.activeTab === tab.id), \"button-variant\": true, \"checked\": _vm.activeTab === tab.id, \"wrapper-id\": `tab-button-${tab.id}`, \"tabindex\": _vm.activeTab === tab.id ? 0 : -1, \"button-variant-grouped\": \"horizontal\", \"role\": \"tab\", \"type\": \"button\" }, on: { \"update:checked\": function($event) {\n return _vm.setActive(tab.id);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcVNodes\", { attrs: { \"vnodes\": tab.renderIcon() } }, [_c(\"span\", { staticClass: \"app-sidebar-tabs__tab-icon\", class: tab.icon })])];\n }, proxy: true }], null, true) }, [_c(\"span\", { staticClass: \"app-sidebar-tabs__tab-caption\" }, [_vm._v(\" \" + _vm._s(tab.name) + \" \")])]);\n }), 1) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-tabs__content\", class: { \"app-sidebar-tabs__content--multiple\": _vm.hasMultipleTabs } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"30dd628e\"\n);\nconst NcAppSidebarTabs = __component__$1.exports;\nregister(t15);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n Teleport: Portal,\n NcActions,\n NcAppSidebarHeader,\n NcAppSidebarTabs,\n ArrowRight,\n IconDockRight: DockRight,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n Close,\n Star,\n StarOutline\n },\n directives: {\n focus: directive,\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: \"NcContent:selector\",\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Note: in @nextcloud/vue v9 this prop is required\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closing\",\n \"closed\",\n \"opening\",\n \"opened\",\n \"figure-click\",\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submit-name\",\n \"dismiss-editing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: GenRandomId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigure() {\n return this.$slots.header || this.background;\n },\n hasFigureClickListener() {\n return this.$listeners[\"figure-click\"];\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeDestroy() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigarion\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onBeforeEnter(element) {\n this.$emit(\"opening\", element);\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onBeforeLeave(element) {\n this.$emit(\"closing\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figure-click\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n this.$nextTick(() => this.$refs.nameInput.focus());\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n Vue.util.warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submit-name\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismiss-editing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"transition\", { attrs: { \"appear\": \"\", \"name\": \"slide-right\" }, on: { \"before-enter\": _vm.onBeforeEnter, \"after-enter\": _vm.onAfterEnter, \"before-leave\": _vm.onBeforeLeave, \"after-leave\": _vm.onAfterLeave } }, [_c(\"aside\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.open, expression: \"open\" }], ref: \"sidebar\", staticClass: \"app-sidebar\", attrs: { \"id\": \"app-sidebar-vue\", \"aria-labelledby\": `app-sidebar-vue-${_vm.uid}__header` }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeydownEsc.apply(null, arguments);\n } } }, [_vm.ncContentSelector && !_vm.open && !_vm.noToggle ? _c(\"Teleport\", { attrs: { \"selector\": _vm.ncContentSelector } }, [_c(\"NcButton\", _vm._b({ ref: \"toggle\", staticClass: \"app-sidebar__toggle\", class: _vm.toggleClasses, attrs: { \"aria-label\": _vm.t(\"Open sidebar\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"update:open\", true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"toggle-icon\", function() {\n return [_c(\"IconDockRight\", { attrs: { \"size\": 20 } })];\n })];\n }, proxy: true }], null, true) }, \"NcButton\", _vm.toggleAttrs, false))], 1) : _vm._e(), _c(\"header\", { staticClass: \"app-sidebar-header\", class: {\n \"app-sidebar-header--with-figure\": _vm.hasFigure,\n \"app-sidebar-header--compact\": _vm.compact\n } }, [!_vm.empty ? _vm._t(\"info\", function() {\n return [_c(\"div\", { staticClass: \"app-sidebar-header__info\" }, [_vm.hasFigure ? _c(\"div\", { staticClass: \"app-sidebar-header__figure\", class: {\n \"app-sidebar-header__figure--with-action\": _vm.hasFigureClickListener\n }, style: {\n backgroundImage: `url(${_vm.background})`\n }, attrs: { \"tabindex\": \"0\" }, on: { \"click\": _vm.onFigureClick, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onFigureClick.apply(null, arguments);\n } } }, [_vm._t(\"header\")], 2) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-header__desc\", class: {\n \"app-sidebar-header__desc--with-tertiary-action\": _vm.canStar || _vm.$slots[\"tertiary-actions\"],\n \"app-sidebar-header__desc--editable\": _vm.nameEditable && !_vm.subname,\n \"app-sidebar-header__desc--with-subname--editable\": _vm.nameEditable && _vm.subname,\n \"app-sidebar-header__desc--without-actions\": !_vm.$slots[\"secondary-actions\"]\n } }, [_vm.canStar || _vm.$slots[\"tertiary-actions\"] ? _c(\"div\", { staticClass: \"app-sidebar-header__tertiary-actions\" }, [_vm._t(\"tertiary-actions\", function() {\n return [_vm.canStar ? _c(\"NcButton\", { staticClass: \"app-sidebar-header__star\", attrs: { \"aria-label\": _vm.favoriteTranslated, \"pressed\": _vm.isStarred, \"variant\": \"secondary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleStarred.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.starLoading ? _c(\"NcLoadingIcon\") : _vm.isStarred ? _c(\"Star\", { attrs: { \"size\": 20 } }) : _c(\"StarOutline\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 2575459756) }) : _vm._e()];\n })], 2) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-header__name-container\" }, [_c(\"div\", { staticClass: \"app-sidebar-header__mainname-container\" }, [_c(\"NcAppSidebarHeader\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.nameEditable, expression: \"!nameEditable\" }], staticClass: \"app-sidebar-header__mainname\", attrs: { \"name\": _vm.name, \"linkify\": _vm.linkifyName, \"title\": _vm.title, \"tabindex\": _vm.nameEditable ? 0 : -1 }, nativeOn: { \"click\": function($event) {\n if ($event.target !== $event.currentTarget) return null;\n return _vm.editName.apply(null, arguments);\n } } }), _vm.nameEditable ? [_c(\"form\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: (() => _vm.onSubmitName()), expression: \"() => onSubmitName()\" }], staticClass: \"app-sidebar-header__mainname-form\", on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmitName.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"focus\", rawName: \"v-focus\" }], ref: \"nameInput\", staticClass: \"app-sidebar-header__mainname-input\", attrs: { \"type\": \"text\", \"placeholder\": _vm.namePlaceholder }, domProps: { \"value\": _vm.name }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n return _vm.onDismissEditing.apply(null, arguments);\n }, \"input\": _vm.onNameInput } }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.changeNameTranslated, \"type\": \"submit\", \"variant\": \"tertiary-no-background\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1252225425) })], 1)] : _vm._e(), _vm.$slots[\"secondary-actions\"] ? _c(\"NcActions\", { staticClass: \"app-sidebar-header__menu\", attrs: { \"force-menu\": _vm.forceMenu } }, [_vm._t(\"secondary-actions\")], 2) : _vm._e()], 2), _vm.subname.trim() !== \"\" || _vm.$slots[\"subname\"] ? _c(\"p\", { staticClass: \"app-sidebar-header__subname\", attrs: { \"title\": _vm.subtitle || void 0 } }, [_vm._t(\"subname\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.subname) + \" \")];\n })], 2) : _vm._e()])])])];\n }) : _c(\"NcAppSidebarHeader\", { staticClass: \"app-sidebar-header__mainname--hidden\", attrs: { \"name\": _vm.name, \"tabindex\": \"-1\" } }), _c(\"NcButton\", { ref: \"closeButton\", staticClass: \"app-sidebar__close\", attrs: { \"aria-label\": _vm.closeTranslated, \"title\": _vm.closeTranslated, \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.closeSidebar.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _vm.$slots[\"description\"] && !_vm.empty ? _c(\"div\", { staticClass: \"app-sidebar-header__description\" }, [_vm._t(\"description\")], 2) : _vm._e()], 2), _c(\"NcAppSidebarTabs\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.loading, expression: \"!loading\" }], ref: \"tabs\", attrs: { \"active\": _vm.active, \"force-tabs\": _vm.forceTabs }, on: { \"update:active\": _vm.onUpdateActive } }, [_vm._t(\"default\")], 2), _vm.loading ? _c(\"NcEmptyContent\", { scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcLoadingIcon\", { attrs: { \"size\": 64 } })];\n }, proxy: true }], null, false, 826850984) }) : _vm._e()], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"82f4f9ef\"\n);\nconst NcAppSidebar = __component__.exports;\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-B2F66PCc.mjs.map\n","/**\n * @typedef {import('unist').Node} Node\n */\n\n/**\n * @typedef {Array<Node> | string} ChildrenOrValue\n * List to use as `children` or value to use as `value`.\n *\n * @typedef {Record<string, unknown>} Props\n * Other fields to add to the node.\n */\n\n/**\n * Build a node.\n *\n * @template {string} T\n * @template {Props} P\n * @template {Array<Node>} C\n *\n * @overload\n * @param {T} type\n * @returns {{type: T}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @returns {{type: T} & P}\n *\n * @overload\n * @param {T} type\n * @param {string} value\n * @returns {{type: T, value: string}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {string} value\n * @returns {{type: T, value: string} & P}\n *\n * @overload\n * @param {T} type\n * @param {C} children\n * @returns {{type: T, children: C}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {C} children\n * @returns {{type: T, children: C} & P}\n *\n * @param {string} type\n * Node type.\n * @param {ChildrenOrValue | Props | null | undefined} [props]\n * Fields assigned to node (default: `undefined`).\n * @param {ChildrenOrValue | null | undefined} [value]\n * Children of node or value of `node` (cast to string).\n * @returns {Node}\n * Built node.\n */\nexport function u(type, props, value) {\n /** @type {Node} */\n const node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n // @ts-expect-error: create a parent.\n node.children = value\n } else if (value !== undefined && value !== null) {\n // @ts-expect-error: create a literal.\n node.value = String(value)\n }\n\n return node\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","import '../assets/autolink-CEziQYgN.css';\nimport { getBaseUrl, getRootUrl } from \"@nextcloud/router\";\nimport { u } from \"unist-builder\";\nimport { visitParents, SKIP } from \"unist-util-visit-parents\";\nimport { defineComponent } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextExternalLink\",\n props: {\n href: null,\n decorateExternal: { type: Boolean }\n },\n setup(__props) {\n const { href, decorateExternal = false } = __props;\n return { __sfc: true };\n }\n});\nconst externalLink = \"_externalLink_qMkgj\";\nconst externalLink_decorated = \"_externalLink_decorated_Tm8HU\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_08-Q6\",\n externalLink,\n externalLink_decorated\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"a\", { class: [_vm.$style.externalLink, {\n [_vm.$style.externalLink_decorated]: _vm.decorateExternal\n }], attrs: { \"href\": _vm.href, \"rel\": \"noopener noreferrer\", \"target\": \"_blank\" } }, [_vm._t(\"default\", function() {\n return [_vm._v(_vm._s(_vm.href))];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcRichTextExternalLink = __component__.exports;\nconst URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig;\nconst URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig;\nfunction remarkAutolink({ autolink, useMarkdown, useExtendedMarkdown }) {\n return function(tree) {\n if (useExtendedMarkdown || !useMarkdown || !autolink) {\n return;\n }\n visitParents(tree, (node) => node.type === \"text\", (node, ancestors) => {\n if (ancestors.some((ancestor) => ancestor.type === \"link\" || ancestor.type === \"linkReference\")) {\n return;\n }\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node) ?? 0;\n let parsed = parseUrl(node.value);\n parsed = parsed.map((n) => {\n if (typeof n === \"string\") {\n return u(\"text\", n);\n }\n return u(\"link\", {\n url: n.props.href\n }, [u(\"text\", n.props.href)]);\n }).filter((x) => x);\n parent.children.splice(index, 1, ...parsed.flat());\n return [SKIP, index + parsed.flat().length];\n });\n };\n}\nfunction parseUrl(text) {\n let match = URL_PATTERN_AUTOLINK.exec(text);\n const list = [];\n let start = 0;\n while (match !== null) {\n let href = match[2];\n let textAfter;\n let textBefore = text.substring(start, match.index + match[1].length);\n if (href[0] === \" \") {\n textBefore += href[0];\n href = href.substring(1).trim();\n }\n const lastChar = href[href.length - 1];\n if (lastChar === \".\" || lastChar === \",\" || lastChar === \";\" || match[0][0] === \"(\" && lastChar === \")\") {\n href = href.substring(0, href.length - 1);\n textAfter = lastChar;\n }\n list.push(textBefore);\n list.push({ component: NcRichTextExternalLink, props: { href: href.trim(), decorateExternal: true } });\n if (textAfter) {\n list.push(textAfter);\n }\n start = match.index + match[0].length;\n match = URL_PATTERN_AUTOLINK.exec(text);\n }\n list.push(text.substring(start));\n const joinedText = list.map((item) => typeof item === \"string\" ? item : item.props.href).join(\"\");\n if (text === joinedText) {\n return list;\n }\n logger.error(\"Failed to reassemble the chunked text: \" + text);\n return text;\n}\nfunction getRoute(router, url) {\n const removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str;\n const removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str);\n if (!router) {\n return null;\n }\n const isAbsoluteURL = /^https?:\\/\\//.test(url);\n const isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url);\n if (!isAbsoluteURL && isNonHttpLink) {\n return null;\n }\n if (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n return null;\n }\n if (!isAbsoluteURL && !url.startsWith(\"/\")) {\n return null;\n }\n const relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), \"/index.php\") : url;\n const relativeRouterBase = removePrefixes(router.history.base, getRootUrl(), \"/index.php\");\n const potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || \"/\";\n const route = router.resolve(potentialRouterPath).route;\n if (!route.matched.length) {\n return null;\n }\n return route.fullPath;\n}\nexport {\n NcRichTextExternalLink as N,\n URL_PATTERN as U,\n getRoute as g,\n parseUrl as p,\n remarkAutolink as r\n};\n//# sourceMappingURL=autolink-COrOqbJu.mjs.map\n","import { l as logger } from \"../chunks/logger-D3RVzcfQ.mjs\";\nfunction registerContactsMenuAction(action) {\n window._nc_contacts_menu_hooks ??= {};\n if (window._nc_contacts_menu_hooks[action.id]) {\n logger.error(`ContactsMenu action for id ${action.id} has already been registered`, {\n action\n });\n return;\n }\n window._nc_contacts_menu_hooks[action.id] = action;\n}\nfunction getEnabledContactsMenuActions(entry) {\n if (!window._nc_contacts_menu_hooks) {\n return [];\n }\n return Object.values(window._nc_contacts_menu_hooks).filter((action) => action.enabled(entry));\n}\nexport {\n getEnabledContactsMenuActions,\n registerContactsMenuAction\n};\n//# sourceMappingURL=contactsMenu.mjs.map\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","import { r as register, t as t4, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nregister(t4);\nclass Color {\n /**\n * @param r - The red value\n * @param g - The green value\n * @param b - The blue value\n * @param name - The name of the color\n */\n constructor(r, g, b, name) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.name = name;\n this.r = Math.min(r, 255);\n this.g = Math.min(g, 255);\n this.b = Math.min(b, 255);\n this.name = name;\n }\n r;\n g;\n b;\n name;\n /**\n * The hexadecimal color string.\n */\n get color() {\n const toHex = (int) => `00${int.toString(16)}`.slice(-2);\n return `#${toHex(this.r)}${toHex(this.g)}${toHex(this.b)}`;\n }\n}\nfunction calculateStepIncrement(steps, color1, color2) {\n return {\n r: (color2.r - color1.r) / steps,\n g: (color2.g - color1.g) / steps,\n b: (color2.b - color1.b) / steps\n };\n}\nfunction mixPalette(steps, color1, color2) {\n const palette = [];\n palette.push(color1);\n const increment = calculateStepIncrement(steps, color1, color2);\n for (let i = 1; i < steps; i++) {\n const r = Math.floor(color1.r + increment.r * i);\n const g = Math.floor(color1.g + increment.g * i);\n const b = Math.floor(color1.b + increment.b * i);\n palette.push(new Color(r, g, b));\n }\n return palette;\n}\nconst COLOR_RED = new Color(182, 70, 157, t(\"Purple\"));\nconst COLOR_YELLOW = new Color(221, 203, 85, t(\"Gold\"));\nconst COLOR_BLUE = new Color(0, 130, 201, t(\"Nextcloud blue\"));\nconst COLOR_BLACK = new Color(0, 0, 0, t(\"Black\"));\nconst COLOR_WHITE = new Color(255, 255, 255, t(\"White\"));\nconst defaultPalette = [\n COLOR_RED,\n new Color(\n ...[191, 103, 139],\n t(\"Rosy brown\")\n // TRANSLATORS: A color name for RGB(191, 103, 139)\n ),\n new Color(\n ...[201, 136, 121],\n t(\"Feldspar\")\n // TRANSLATORS: A color name for RGB(201, 136, 121)\n ),\n new Color(\n ...[211, 169, 103],\n t(\"Whiskey\")\n // TRANSLATORS: A color name for RGB(211, 169, 103)\n ),\n COLOR_YELLOW,\n new Color(\n ...[165, 184, 114],\n t(\"Olivine\")\n // TRANSLATORS: A color name for RGB(165, 184, 114)\n ),\n new Color(\n ...[110, 166, 143],\n t(\"Acapulco\")\n // TRANSLATORS: A color name for RGB(110, 166, 143)\n ),\n new Color(\n ...[55, 148, 172],\n t(\"Boston Blue\")\n // TRANSLATORS: A color name for RGB(55, 148, 172)\n ),\n COLOR_BLUE,\n new Color(\n ...[45, 115, 190],\n t(\"Mariner\")\n // TRANSLATORS: A color name for RGB(45, 115, 190)\n ),\n new Color(\n ...[91, 100, 179],\n t(\"Blue Violet\")\n // TRANSLATORS: A color name for RGB(91, 100, 179)\n ),\n new Color(\n ...[136, 85, 168],\n t(\"Deluge\")\n // TRANSLATORS: A color name for RGB(136, 85, 168)\n )\n];\nfunction generatePalette(steps) {\n const palette1 = mixPalette(steps, COLOR_RED, COLOR_YELLOW);\n const palette2 = mixPalette(steps, COLOR_YELLOW, COLOR_BLUE);\n const palette3 = mixPalette(steps, COLOR_BLUE, COLOR_RED);\n return palette1.concat(palette2).concat(palette3);\n}\nexport {\n Color as C,\n COLOR_BLACK as a,\n COLOR_WHITE as b,\n defaultPalette as d,\n generatePalette as g\n};\n//# sourceMappingURL=colors-B_oqiKWY.mjs.map\n","import md5 from \"md5\";\nimport { g as generatePalette } from \"../chunks/colors-B_oqiKWY.mjs\";\nfunction usernameToColor(username) {\n let hash = username.toLowerCase();\n if (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n hash = md5(hash);\n }\n hash = hash.replace(/[^0-9a-f]/g, \"\");\n const steps = 6;\n const finalPalette = generatePalette(steps);\n function hashToInt(hash2, maximum) {\n let finalInt = 0;\n const result = [];\n for (let i = 0; i < hash2.length; i++) {\n result.push(parseInt(hash2.charAt(i), 16) % 16);\n }\n for (const j in result) {\n finalInt += result[j];\n }\n return parseInt(parseInt(finalInt, 10) % maximum, 10);\n }\n return finalPalette[hashToInt(hash, steps * 3)];\n}\nexport {\n usernameToColor as default,\n usernameToColor\n};\n//# sourceMappingURL=usernameToColor.mjs.map\n","import { generateUrl } from \"@nextcloud/router\";\nimport { checkIfDarkTheme } from \"../Functions/isDarkTheme.mjs\";\nfunction getAvatarUrl(user, options) {\n const size = (options?.size || 64) <= 64 ? 64 : 512;\n const guestUrl = options?.isGuest ? \"/guest\" : \"\";\n const themeUrl = options?.isDarkTheme ?? checkIfDarkTheme(document.body) ? \"/dark\" : \"\";\n return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}?guestFallback=true`, {\n user,\n size\n });\n}\nexport {\n getAvatarUrl as g\n};\n//# sourceMappingURL=getAvatarUrl-BGOeDmNO.mjs.map\n","import '../assets/NcUserStatusIcon-Bw8yMFMP.css';\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, Y as t54, Z as t12, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst awayLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"none\" d=\"M-4-4h24v24H-4z\" />\\n\t<path fill=\"var(--color-warning)\" d=\"M6.9.1C3 .6-.1 4-.1 8c0 4.4 3.6 8 8 8 4 0 7.4-3 8-6.9-1.2 1.3-2.9 2.1-4.7 2.1-3.5 0-6.4-2.9-6.4-6.4 0-1.9.8-3.6 2.1-4.7z\" />\\n</svg>\\n';\nconst awaySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-away, var(--color-warning, #C88800))\"\\n\t\td=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst busySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst dndLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"none\" d=\"M-4-4h24v24H-4V-4z\" />\\n\t<path fill=\"var(--color-border-error, var(--color-error))\" d=\"M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z\" />\\n\t<path fill=\"#fdffff\" d=\"M5 6.5h6c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5H5c-.8 0-1.5-.7-1.5-1.5S4.2 6.5 5 6.5z\" />\\n</svg>\\n';\nconst dndSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M280-440h400v-80H280v80ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst invisibleLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"none\" d=\"M-4-4h24v24H-4V-4z\" />\\n\t<path d=\"M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 3.2c2.7 0 4.8 2.1 4.8 4.8s-2.1 4.8-4.8 4.8S3.2 10.7 3.2 8 5.3 3.2 8 3.2z\" />\\n</svg>\\n';\nconst invisibleSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-offline, var(--color-text-maxcontrast, #6B6B6B))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/>\\n</svg>\\n';\nconst onlineLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"var(--color-success)\" d=\"M4.8 11.2h6.4V4.8H4.8v6.4zM8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z\" />\\n</svg>\\n';\nconst onlineSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-online, var(--color-success, #2D7B41))\"\\n\t\td=\"m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nregister(t54);\nregister(t12);\nfunction getUserStatusText(status) {\n switch (status) {\n case \"away\":\n return t(\"away\");\n // TRANSLATORS: User status if the user is currently away from keyboard\n case \"busy\":\n return t(\"busy\");\n case \"dnd\":\n return t(\"do not disturb\");\n case \"online\":\n return t(\"online\");\n case \"invisible\":\n return t(\"invisible\");\n case \"offline\":\n return t(\"offline\");\n default:\n return status;\n }\n}\nconst matchSvg = {\n online: isLegacy32 ? onlineLegacySvg : onlineSvg,\n away: isLegacy32 ? awayLegacySvg : awaySvg,\n busy: isLegacy32 ? awayLegacySvg : busySvg,\n dnd: isLegacy32 ? dndLegacySvg : dndSvg,\n invisible: isLegacy32 ? invisibleLegacySvg : invisibleSvg,\n offline: isLegacy32 ? invisibleLegacySvg : invisibleSvg\n};\nconst _sfc_main = {\n name: \"NcUserStatusIcon\",\n props: {\n /**\n * Set the user id to fetch the status\n */\n user: {\n type: String,\n default: null\n },\n /**\n * Set the status\n *\n * @type {'online' | 'away' | 'busy' | 'dnd' | 'invisible' | 'offline'}\n */\n status: {\n type: String,\n default: null,\n validator: (value) => [\n \"online\",\n \"away\",\n \"busy\",\n \"dnd\",\n \"invisible\",\n \"offline\"\n ].includes(value)\n },\n /**\n * Set the `aria-hidden` attribute\n *\n * @type {'true' | 'false'}\n */\n ariaHidden: {\n type: String,\n default: null,\n validator: (value) => [\n \"true\",\n \"false\"\n ].includes(value)\n }\n },\n data() {\n return {\n fetchedUserStatus: null\n };\n },\n computed: {\n activeStatus() {\n return this.status ?? this.fetchedUserStatus;\n },\n activeSvg() {\n return matchSvg[this.activeStatus] ?? null;\n },\n ariaLabel() {\n if (this.ariaHidden === \"true\") {\n return null;\n }\n return t(\"User status: {status}\", { status: getUserStatusText(this.activeStatus) });\n }\n },\n watch: {\n user: {\n immediate: true,\n async handler(user) {\n if (!user || !getCapabilities()?.user_status?.enabled) {\n this.fetchedUserStatus = null;\n return;\n }\n try {\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{user}\", { user }));\n this.fetchedUserStatus = data.ocs?.data?.status;\n } catch {\n this.fetchedUserStatus = null;\n }\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.activeStatus ? _c(\"span\", { staticClass: \"user-status-icon\", class: {\n \"user-status-icon--invisible\": [\"invisible\", \"offline\"].includes(_vm.status)\n }, attrs: { \"role\": \"img\", \"aria-hidden\": _vm.ariaHidden, \"aria-label\": _vm.ariaLabel }, domProps: { \"innerHTML\": _vm._s(_vm.activeSvg) } }) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"86b73d39\"\n);\nconst NcUserStatusIcon = __component__.exports;\nexport {\n NcUserStatusIcon as N,\n getUserStatusText as g\n};\n//# sourceMappingURL=NcUserStatusIcon-gpl3yJFX.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcAvatar-BdHHFwV3.css';\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport { generateOcsUrl, generateUrl } from \"@nextcloud/router\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport debounce from \"debounce\";\nimport { defineAsyncComponent } from \"vue\";\nimport { N as NcActions, D as DotsHorizontalIcon } from \"./NcActions-CX1MSord.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { getEnabledContactsMenuActions } from \"../Functions/contactsMenu.mjs\";\nimport { usernameToColor } from \"../Functions/usernameToColor.mjs\";\nimport { r as register, u as t11, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-BGOeDmNO.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { b as isLegacy35 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcUserStatusIcon, g as getUserStatusText } from \"./NcUserStatusIcon-gpl3yJFX.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport NcActionLink from \"../Components/NcActionLink.mjs\";\nimport NcActionRouter from \"../Components/NcActionRouter.mjs\";\nimport NcActionText from \"../Components/NcActionText.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcPopover } from \"./NcPopover-BaHX3QSG.mjs\";\nregister(t11);\nconst userStatus = {\n data() {\n return {\n hasStatus: false,\n userStatus: {\n status: null,\n message: null,\n icon: null\n }\n };\n },\n methods: {\n /**\n * Fetches the user-status from the server\n *\n * @param {string} userId UserId of the user to fetch the status for\n *\n * @return {Promise<void>}\n */\n async fetchUserStatus(userId) {\n if (!userId) {\n return;\n }\n const capabilities = getCapabilities();\n if (!Object.hasOwn(capabilities, \"user_status\") || !capabilities.user_status.enabled) {\n return;\n }\n if (!getCurrentUser()) {\n return;\n }\n try {\n const { data } = await axios.get(generateOcsUrl(\"apps/user_status/api/v1/statuses/{userId}\", { userId }));\n this.setUserStatus(data.ocs.data);\n } catch (error) {\n if (error.response.status === 404 && error.response.data.ocs?.data?.length === 0) {\n return;\n }\n logger.error(\"Could not fetch user status\", { error });\n }\n },\n /**\n * Sets the user status\n *\n * @param {string} status user's status\n * @param {string} message user's message\n * @param {string} icon user's icon\n */\n setUserStatus({ status, message, icon }) {\n this.userStatus.status = status || \"\";\n this.userStatus.message = message || \"\";\n this.userStatus.icon = icon || \"\";\n this.hasStatus = !!status;\n }\n }\n};\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nfunction getUserHasAvatar(userId) {\n const flag = browserStorage.getItem(\"user-has-avatar.\" + userId);\n if (typeof flag === \"string\") {\n return Boolean(flag);\n }\n return null;\n}\nfunction setUserHasAvatar(userId, flag) {\n if (userId) {\n browserStorage.setItem(\"user-has-avatar.\" + userId, flag);\n }\n}\nconst _sfc_main = {\n name: \"NcAvatar\",\n directives: {\n ClickOutside: vOnClickOutside\n },\n components: {\n IconDotsHorizontal: DotsHorizontalIcon,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcLoadingIcon,\n NcPopover,\n NcProfileHoverCard: defineAsyncComponent(() => import(\"./NcProfileHoverCard-DK5YkGF0.mjs\")),\n NcUserStatusIcon\n },\n mixins: [userStatus],\n props: {\n /**\n * Set a custom url to the avatar image\n * either the url, user or displayName property must be defined\n */\n url: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class for an icon to be used instead of the avatar.\n */\n iconClass: {\n type: String,\n default: void 0\n },\n /**\n * Set the user id to fetch the avatar\n * either the url, user or displayName property must be defined\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Do not show the user status on the avatar.\n */\n hideStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Whether or not to display the user-status.\n *\n * @deprecated - Use `hideStatus` instead. Will be removed with v9.\n */\n showUserStatus: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Show the verbose user status (e.g. \"online\" / \"away\") instead of just the status icon.\n */\n verboseStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Whether or not to the status-icon should be used instead of online/away\n *\n * @deprecated - Use `verboseStatus` instead. Will be removed with v9.\n */\n showUserStatusCompact: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * When the user status was preloaded via another source it can be handed in with this property to save the request.\n * If this property is not set the status will be fetched automatically.\n * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n */\n preloadedUserStatus: {\n type: Object,\n default: void 0\n },\n /**\n * Is the user a guest user (then we have to user a different endpoint)\n */\n isGuest: {\n type: Boolean,\n default: false\n },\n /**\n * Set a display name that will be rendered as a tooltip\n * either the url, user or displayName property must be defined\n * specify just the displayname to generate a placeholder avatar without\n * trying to fetch the avatar based on the user id\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Set a size in px for the rendered avatar\n */\n size: {\n type: Number,\n default: 32\n },\n /**\n * Do not automatically generate a placeholder avatars if there is no real avatar is available.\n */\n noPlaceholder: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder avatars will be automatically generated when this is set to true.\n *\n * @deprecated - Use `noPlaceholder` instead. Will be removed in v9.\n */\n allowPlaceholder: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the tooltip\n */\n disableTooltip: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the menu\n */\n disableMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Declares a custom tooltip when not null\n * Fallback will be the displayName\n *\n * requires disableTooltip not to be set to true\n */\n tooltipMessage: {\n type: String,\n default: null\n },\n /**\n * Declares username is not a user's name, when true.\n * Prevents loading user's avatar from server and forces generating colored initials,\n * i.e. if the user is a group\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Selector for the popover menu container\n */\n menuContainer: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme,\n isLegacy35\n };\n },\n data() {\n return {\n avatarUrlLoaded: null,\n avatarSrcSetLoaded: null,\n userDoesNotExist: false,\n isAvatarLoaded: false,\n isMenuLoaded: false,\n contactsMenuLoading: false,\n contactsMenuData: {},\n contactsMenuActions: [],\n contactsMenuOpenState: false\n };\n },\n computed: {\n avatarAriaLabel() {\n if (!this.hasMenu) {\n return;\n }\n if (this.canDisplayUserStatus || this.showUserStatusIconOnAvatar) {\n return t(\"Avatar of {displayName}, {status}\", { displayName: this.displayName ?? this.user, status: getUserStatusText(this.userStatus.status) });\n }\n return t(\"Avatar of {displayName}\", { displayName: this.displayName ?? this.user });\n },\n canDisplayUserStatus() {\n return !this.hideStatus && this.showUserStatus && this.hasStatus && [\"online\", \"away\", \"busy\", \"dnd\"].includes(this.userStatus.status);\n },\n showUserStatusIconOnAvatar() {\n return !this.hideStatus && this.showUserStatus && !this.verboseStatus && this.showUserStatusCompact && this.hasStatus && this.userStatus.status !== \"dnd\" && this.userStatus.icon;\n },\n /**\n * The user identifier, either the display name if set or the user property\n * If both properties are not set an empty string is returned\n */\n userIdentifier() {\n if (this.isDisplayNameDefined) {\n return this.displayName;\n }\n if (this.isUserDefined) {\n return this.user;\n }\n return \"\";\n },\n isUserDefined() {\n return typeof this.user !== \"undefined\";\n },\n isDisplayNameDefined() {\n return typeof this.displayName !== \"undefined\";\n },\n isUrlDefined() {\n return typeof this.url !== \"undefined\";\n },\n hasMenu() {\n if (this.disableMenu) {\n return false;\n }\n if (this.isLegacy35) {\n if (this.isMenuLoaded) {\n return this.menu.length > 0;\n }\n return !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url);\n }\n return Boolean(this.user) && !this.isNoUser && !this.url && !this.userDoesNotExist;\n },\n /**\n * True if initials should be shown as the user icon fallback\n */\n showInitials() {\n return !this.noPlaceholder && this.allowPlaceholder && this.userDoesNotExist && !(this.iconClass || this.$scopedSlots.icon);\n },\n avatarStyle() {\n return {\n \"--avatar-size\": this.size + \"px\",\n lineHeight: this.showInitials ? this.size + \"px\" : 0,\n fontSize: Math.round(this.size * 0.45) + \"px\"\n };\n },\n initialsWrapperStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n backgroundColor: `rgba(${r}, ${g}, ${b}, 0.1)`\n };\n },\n initialsStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n color: `rgb(${r}, ${g}, ${b})`\n };\n },\n tooltip() {\n if (this.disableTooltip) {\n return false;\n }\n if (this.tooltipMessage) {\n return this.tooltipMessage;\n }\n return this.displayName;\n },\n /**\n * Get the (max. two) initials of the user as uppcase string\n */\n initials() {\n let initials = \"?\";\n if (this.showInitials) {\n const user = this.userIdentifier.trim();\n if (user === \"\") {\n return initials;\n }\n const filteredChars = user.match(/[\\p{L}\\p{N}\\s]/gu);\n if (!filteredChars) {\n return initials;\n }\n const filtered = filteredChars.join(\"\").trim();\n const idx = filtered.lastIndexOf(\" \");\n initials = String.fromCodePoint(filtered.codePointAt(0));\n if (idx !== -1) {\n initials = initials.concat(String.fromCodePoint(filtered.codePointAt(idx + 1)));\n }\n }\n return initials.toLocaleUpperCase();\n },\n /**\n * Contacts menu actions for the hover card.\n * `null` until actions are loaded so the card can fall back to profile API actions.\n *\n * @return {Array|null}\n */\n hoverCardActions() {\n if (this.isLegacy35 || !this.isMenuLoaded) {\n return null;\n }\n return this.menu.length > 0 ? this.menu : null;\n },\n /**\n * Status already known by this avatar so the hover card does not fetch it again.\n * Omitted while status is still the empty default (fetch in progress).\n *\n * @return {object|undefined}\n */\n hoverCardPreloadedUserStatus() {\n if (this.preloadedUserStatus) {\n return this.userStatus;\n }\n if (this.userStatus.status || this.userStatus.icon || this.userStatus.message) {\n return this.userStatus;\n }\n return void 0;\n },\n menu() {\n if (this.isLegacy35) {\n return this.legacyMenu;\n }\n const actions = this.contactsMenuActions.map((item) => {\n const route = getRoute(this.$router, item.hyperlink);\n return {\n id: item.id,\n appId: item.appId,\n text: item.title,\n href: route ? void 0 : item.hyperlink,\n to: route || void 0,\n icon: item.icon\n };\n });\n for (const action of getEnabledContactsMenuActions(this.contactsMenuData)) {\n try {\n actions.push({\n id: action.id,\n text: action.displayName(this.contactsMenuData),\n iconSvg: action.iconSvg(this.contactsMenuData),\n onClick: () => action.callback(this.contactsMenuData)\n });\n } catch (error) {\n logger.error(`Failed to render ContactsMenu action ${action.id}`, {\n error,\n action\n });\n }\n }\n return actions;\n },\n /**\n * Legacy NcActions menu entries for Nextcloud 32–34.\n *\n * @return {Array}\n */\n legacyMenu() {\n const actions = this.contactsMenuActions.map((item) => {\n const route = getRoute(this.$router, item.hyperlink);\n return {\n ncActionComponent: route ? NcActionRouter : NcActionLink,\n ncActionComponentProps: route ? {\n to: route,\n icon: item.icon\n } : {\n href: item.hyperlink,\n icon: item.icon\n },\n text: item.title\n };\n });\n for (const action of getEnabledContactsMenuActions(this.contactsMenuData)) {\n try {\n actions.push({\n ncActionComponent: NcActionButton,\n ncActionComponentProps: {},\n ncActionComponentHandlers: {\n click: () => action.callback(this.contactsMenuData)\n },\n text: action.displayName(this.contactsMenuData),\n iconSvg: action.iconSvg(this.contactsMenuData)\n });\n } catch (error) {\n logger.error(`Failed to render ContactsMenu action ${action.id}`, {\n error,\n action\n });\n }\n }\n function escape(html) {\n const text = document.createTextNode(html);\n const p = document.createElement(\"p\");\n p.appendChild(text);\n return p.innerHTML;\n }\n if (!this.hideStatus && this.showUserStatus && (this.userStatus.icon || this.userStatus.message)) {\n const emojiIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t<text x=\"50%\" y=\"50%\" text-anchor=\"middle\" style=\"dominant-baseline: central; font-size: 85%\">${escape(this.userStatus.icon)}</text>\n\t\t\t\t</svg>`;\n return [{\n ncActionComponent: NcActionText,\n ncActionComponentProps: {},\n iconSvg: this.userStatus.icon ? emojiIcon : void 0,\n text: `${this.userStatus.message}`\n }].concat(actions);\n }\n return actions;\n }\n },\n watch: {\n url() {\n this.userDoesNotExist = false;\n this.loadAvatarUrl();\n },\n user() {\n this.userDoesNotExist = false;\n this.isMenuLoaded = false;\n this.loadAvatarUrl();\n },\n preloadedUserStatus(status) {\n if (status) {\n this.setUserStatus(status);\n }\n },\n contactsMenuOpenState(shown) {\n if (this.isLegacy35) {\n return;\n }\n if (shown) {\n this.debouncedFetchContactsMenu();\n } else {\n this.debouncedFetchContactsMenu.clear();\n }\n }\n },\n created() {\n this.debouncedFetchContactsMenu = debounce(this.fetchContactsMenu, 300);\n },\n mounted() {\n this.loadAvatarUrl();\n subscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n subscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n if (!this.hideStatus && this.showUserStatus && this.user && !this.isNoUser) {\n if (!this.preloadedUserStatus) {\n this.fetchUserStatus(this.user);\n } else {\n this.setUserStatus(this.preloadedUserStatus);\n }\n subscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n } else if (!this.hideStatus && this.preloadedUserStatus) {\n this.setUserStatus(this.preloadedUserStatus);\n }\n },\n beforeDestroy() {\n this.debouncedFetchContactsMenu.clear();\n unsubscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n unsubscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n unsubscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n },\n methods: {\n t,\n handleUserStatusUpdated(state) {\n if (this.user === state.userId) {\n this.userStatus = {\n status: state.status,\n icon: state.icon,\n message: state.message\n };\n this.hasStatus = state.status !== null;\n }\n },\n /**\n * Toggle the legacy popover menu on click or enter\n *\n * @param {KeyboardEvent|MouseEvent} event the UI event\n */\n async toggleMenu(event) {\n if (event.type === \"keydown\" && event.key !== \"Enter\") {\n return;\n }\n if (!this.contactsMenuOpenState) {\n await this.fetchContactsMenu();\n }\n this.contactsMenuOpenState = !this.contactsMenuOpenState;\n },\n closeMenu() {\n if (!this.isLegacy35) {\n return;\n }\n this.contactsMenuOpenState = false;\n },\n async fetchContactsMenu() {\n this.contactsMenuLoading = true;\n try {\n const user = encodeURIComponent(this.user);\n const { data } = await axios.post(generateUrl(\"contactsmenu/findOne\"), `shareType=0&shareWith=${user}`);\n this.contactsMenuData = data;\n this.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions;\n } catch {\n this.contactsMenuData = {};\n this.contactsMenuActions = [];\n if (this.isLegacy35) {\n this.contactsMenuOpenState = false;\n }\n }\n this.contactsMenuLoading = false;\n this.isMenuLoaded = true;\n },\n /**\n * Handle avatar loading if user or url defined\n */\n loadAvatarUrl() {\n this.isAvatarLoaded = false;\n if (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser || this.iconClass || this.$scopedSlots.icon)) {\n this.isAvatarLoaded = true;\n this.userDoesNotExist = true;\n return;\n }\n if (this.isUrlDefined) {\n this.updateImageIfValid(this.url);\n return;\n }\n if (this.size <= 64) {\n const avatarUrl = this.avatarUrlGenerator(this.user, 64);\n const srcset = [\n avatarUrl + \" 1x\",\n this.avatarUrlGenerator(this.user, 512) + \" 8x\"\n ].join(\", \");\n this.updateImageIfValid(avatarUrl, srcset);\n } else {\n const avatarUrl = this.avatarUrlGenerator(this.user, 512);\n this.updateImageIfValid(avatarUrl);\n }\n },\n /**\n * Generate an avatar url from the server's avatar endpoint\n *\n * @param {string} user the user id\n * @param {number} size the desired size\n * @return {string}\n */\n avatarUrlGenerator(user, size) {\n let avatarUrl = getAvatarUrl(user, {\n size,\n isDarkTheme: this.isDarkTheme,\n isGuest: this.isGuest\n });\n if (user === getCurrentUser()?.uid && typeof window.oc_userconfig !== \"undefined\") {\n avatarUrl += \"?v=\" + window.oc_userconfig.avatar.version;\n }\n return avatarUrl;\n },\n /**\n * Check if the provided url is valid and update Avatar if so\n *\n * @param {string} url the avatar url\n * @param {Array} srcset the avatar srcset\n */\n updateImageIfValid(url, srcset = null) {\n const userHasAvatar = getUserHasAvatar(this.user);\n if (this.isUserDefined && typeof userHasAvatar === \"boolean\") {\n this.isAvatarLoaded = true;\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n if (userHasAvatar === false) {\n this.userDoesNotExist = true;\n }\n return;\n }\n const img = new Image();\n img.onload = () => {\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n this.isAvatarLoaded = true;\n setUserHasAvatar(this.user, true);\n };\n img.onerror = (error) => {\n logger.debug(\"Invalid avatar url\", { error, url });\n this.avatarUrlLoaded = null;\n this.avatarSrcSetLoaded = null;\n this.userDoesNotExist = true;\n this.isAvatarLoaded = false;\n setUserHasAvatar(this.user, false);\n };\n if (srcset) {\n img.srcset = srcset;\n }\n img.src = url;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: _vm.closeMenu, expression: \"closeMenu\" }], staticClass: \"avatardiv popovermenu-wrapper\", class: {\n \"avatardiv--unknown\": _vm.userDoesNotExist,\n \"avatardiv--with-menu\": _vm.hasMenu,\n \"avatardiv--with-legacy-menu\": _vm.hasMenu && _vm.isLegacy35,\n \"avatardiv--with-menu-loading\": _vm.contactsMenuLoading\n }, style: _vm.avatarStyle, attrs: { \"title\": _vm.tooltip } }, [_vm._t(\"icon\", function() {\n return [_vm.iconClass ? _c(\"span\", { staticClass: \"avatar-class-icon\", class: _vm.iconClass }) : _vm.isAvatarLoaded && !_vm.userDoesNotExist ? _c(\"img\", { attrs: { \"src\": _vm.avatarUrlLoaded, \"srcset\": _vm.avatarSrcSetLoaded, \"alt\": \"\" } }) : _vm._e()];\n }), _vm.isLegacy35 && _vm.hasMenu ? [_vm.menu.length === 0 ? _c(\"NcButton\", { staticClass: \"action-item action-item__menutoggle\", attrs: { \"aria-label\": _vm.avatarAriaLabel, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.toggleMenu }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.contactsMenuLoading ? _c(\"NcLoadingIcon\") : _c(\"IconDotsHorizontal\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1269954734) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.avatarAriaLabel, \"container\": _vm.menuContainer, \"force-menu\": \"\", \"manual-open\": \"\", \"open\": _vm.contactsMenuOpenState, \"variant\": \"tertiary-no-background\" }, on: { \"update:open\": function($event) {\n _vm.contactsMenuOpenState = $event;\n }, \"click\": _vm.toggleMenu }, scopedSlots: _vm._u([_vm.contactsMenuLoading ? { key: \"icon\", fn: function() {\n return [_c(\"NcLoadingIcon\")];\n }, proxy: true } : null], null, true) }, _vm._l(_vm.menu, function(item, key) {\n return _c(item.ncActionComponent, _vm._g(_vm._b({ key, tag: \"component\", scopedSlots: _vm._u([item.iconSvg ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": item.iconSvg } })];\n }, proxy: true } : null], null, true) }, \"component\", item.ncActionComponentProps, false), item.ncActionComponentHandlers), [_vm._v(\" \" + _vm._s(item.text) + \" \")]);\n }), 1)] : _vm.hasMenu ? _c(\"NcPopover\", { staticClass: \"avatar-profile-popover\", attrs: { \"shown\": _vm.contactsMenuOpenState, \"container\": _vm.menuContainer, \"delay\": { show: 400, hide: 0 }, \"popover-triggers\": [\"hover\"], \"triggers\": [\"hover\", \"focus\", \"click\"], \"no-focus-trap\": \"\", \"popup-role\": \"dialog\" }, on: { \"update:shown\": function($event) {\n _vm.contactsMenuOpenState = $event;\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(\"span\", _vm._b({ staticClass: \"avatar-profile-popover__trigger\", attrs: { \"role\": \"button\", \"tabindex\": \"0\", \"aria-label\": _vm.avatarAriaLabel } }, \"span\", attrs, false))];\n } }]) }, [_c(\"NcProfileHoverCard\", { attrs: { \"user\": _vm.user, \"open\": _vm.contactsMenuOpenState, \"actions\": _vm.hoverCardActions, \"actions-loading\": _vm.contactsMenuLoading, \"preloaded-user-status\": _vm.hoverCardPreloadedUserStatus } })], 1) : _vm._e(), _vm.showUserStatusIconOnAvatar ? _c(\"span\", { staticClass: \"avatardiv__user-status avatardiv__user-status--icon\" }, [_vm._v(\" \" + _vm._s(_vm.userStatus.icon) + \" \")]) : _vm.canDisplayUserStatus ? _c(\"NcUserStatusIcon\", { staticClass: \"avatardiv__user-status\", attrs: { \"status\": _vm.userStatus.status, \"aria-hidden\": String(_vm.hasMenu) } }) : _vm._e(), _vm.showInitials ? _c(\"span\", { staticClass: \"avatardiv__initials-wrapper\", style: _vm.initialsWrapperStyle }, [_c(\"span\", { staticClass: \"avatardiv__initials\", style: _vm.initialsStyle }, [_vm._v(\" \" + _vm._s(_vm.initials) + \" \")])]) : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c3ee4dd7\"\n);\nconst NcAvatar = __component__.exports;\nexport {\n NcAvatar as N,\n userStatus as u\n};\n//# sourceMappingURL=NcAvatar-C1ty7wsG.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && options.signal) {\n\t\t\toptions.signal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n id: options.id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // In case `id` is not defined.\n options.id ??= (this.#idAssigner++).toString();\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n try {\n options.signal?.throwIfAborted();\n this.#intervalCount++;\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=preloadImage.mjs.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VueSelect=t():e.VueSelect=t()}(\"undefined\"!=typeof self?self:this,(function(){return(()=>{var e={646:e=>{e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}},713:e=>{e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},860:e=>{e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},206:e=>{e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},319:(e,t,n)=>{var o=n(646),i=n(860),s=n(206);e.exports=function(e){return o(e)||i(e)||s()}},8:e=>{function t(n){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?e.exports=t=function(e){return typeof e}:e.exports=t=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},t(n)}e.exports=t}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return(()=>{\"use strict\";n.r(o),n.d(o,{VueSelect:()=>m,default:()=>_,mixins:()=>O});var e=n(319),t=n.n(e),i=n(8),s=n.n(i),r=n(713),a=n.n(r);const l={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer:function(){this.autoscroll&&this.maybeAdjustScroll()},open:function(e){var t=this;this.autoscroll&&e&&this.$nextTick((function(){return t.maybeAdjustScroll()}))}},methods:{maybeAdjustScroll:function(){var e,t=(null===(e=this.$refs.dropdownMenu)||void 0===e?void 0:e.children[this.typeAheadPointer])||!1;if(t){var n=this.getDropdownViewport(),o=t.getBoundingClientRect(),i=o.top,s=o.bottom,r=o.height;if(i<n.top)return this.$refs.dropdownMenu.scrollTop=t.offsetTop;if(s>n.bottom)return this.$refs.dropdownMenu.scrollTop=t.offsetTop-(n.height-r)}},getDropdownViewport:function(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},c={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){if(this.resetFocusOnOptionsChange)for(var e=0;e<this.filteredOptions.length;e++)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},open:function(e){e&&this.typeAheadToLastSelected()},selectedValue:function(){this.open&&this.typeAheadToLastSelected()}},methods:{typeAheadUp:function(){for(var e=this.typeAheadPointer-1;e>=0;e--)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},typeAheadDown:function(){for(var e=this.typeAheadPointer+1;e<this.filteredOptions.length;e++)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},typeAheadSelect:function(){var e=this.filteredOptions[this.typeAheadPointer];e&&this.selectable(e)&&this.select(e)},typeAheadToLastSelected:function(){var e=0!==this.selectedValue.length?this.filteredOptions.indexOf(this.selectedValue[this.selectedValue.length-1]):-1;-1!==e&&(this.typeAheadPointer=e)}}},u={props:{loading:{type:Boolean,default:!1}},data:function(){return{mutableLoading:!1}},watch:{search:function(){this.$emit(\"search\",this.search,this.toggleLoading)},loading:function(e){this.mutableLoading=e}},methods:{toggleLoading:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.mutableLoading=null==e?!this.mutableLoading:e}}};function p(e,t,n,o,i,s,r,a){var l,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),s&&(c._scopeId=\"data-v-\"+s),r?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}const d={Deselect:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"10\",height:\"10\"}},[t(\"path\",{attrs:{d:\"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z\"}})])}),[],!1,null,null,null).exports,OpenIndicator:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"14\",height:\"10\"}},[t(\"path\",{attrs:{d:\"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z\"}})])}),[],!1,null,null,null).exports},h={inserted:function(e,t,n){var o=n.context;if(o.appendToBody){document.body.appendChild(e);var i=o.$refs.toggle.getBoundingClientRect(),s=i.height,r=i.top,a=i.left,l=i.width,c=window.scrollX||window.pageXOffset,u=window.scrollY||window.pageYOffset;e.unbindPosition=o.calculatePosition(e,o,{width:l+\"px\",left:c+a+\"px\",top:u+r+s+\"px\"})}},unbind:function(e,t,n){n.context.appendToBody&&(e.unbindPosition&&\"function\"==typeof e.unbindPosition&&e.unbindPosition(),e.parentNode&&e.parentNode.removeChild(e))}};const f=function(e){var t={};return Object.keys(e).sort().forEach((function(n){t[n]=e[n]})),JSON.stringify(t)};var y=0;const b=function(){return++y};function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function v(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){a()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const m=p({components:v({},d),directives:{appendToBody:h},mixins:[l,c,u],props:{value:{},components:{type:Object,default:function(){return{}}},options:{type:Array,default:function(){return[]}},limit:{type:Number,default:null},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:\"\"},transition:{type:String,default:\"vs__fade\"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:\"label\"},ariaLabelCombobox:{type:String,default:\"Search for options\"},ariaLabelListbox:{type:String,default:\"Options\"},ariaLabelClearSelected:{type:String,default:\"Clear selected\"},ariaLabelDeselectOption:{type:Function,default:function(e){return\"Deselect \".concat(e)}},autocomplete:{type:String,default:\"off\"},reduce:{type:Function,default:function(e){return e}},selectable:{type:Function,default:function(e){return!0}},getOptionLabel:{type:Function,default:function(e){return\"object\"===s()(e)?e.hasOwnProperty(this.label)?e[this.label]:console.warn('[vue-select warn]: Label key \"option.'.concat(this.label,'\" does not')+\" exist in options object \".concat(JSON.stringify(e),\".\\n\")+\"https://vue-select.org/api/props.html#getoptionlabel\"):e}},getOptionKey:{type:Function,default:function(e){if(\"object\"!==s()(e))return e;try{return e.hasOwnProperty(\"id\")?e.id:f(e)}catch(t){return console.warn(\"[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.\\nhttps://vue-select.org/api/props.html#getoptionkey\",e,t)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default:function(e,t,n){return(t||\"\").toLocaleLowerCase().indexOf(n.toLocaleLowerCase())>-1}},filter:{type:Function,default:function(e,t){var n=this;return e.filter((function(e){var o=n.getOptionLabel(e);return\"number\"==typeof o&&(o=o.toString()),n.filterBy(e,o,t)}))}},createOption:{type:Function,default:function(e){return\"object\"===s()(this.optionList[0])?a()({},this.label,e):e}},resetFocusOnOptionsChange:{type:Boolean,default:!0},resetOnOptionsChange:{default:!1,validator:function(e){return[\"function\",\"boolean\"].includes(s()(e))}},clearSearchOnBlur:{type:Function,default:function(e){var t=e.clearSearchOnSelect,n=e.multiple;return t&&!n}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:\"auto\"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:function(){return[13]}},searchInputQuerySelector:{type:String,default:\"[type=search]\"},mapKeydown:{type:Function,default:function(e,t){return e}},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default:function(e,t,n){var o=n.width,i=n.top,s=n.left;e.style.top=i,e.style.left=s,e.style.width=o}},dropdownShouldOpen:{type:Function,default:function(e){var t=e.noDrop,n=e.open,o=e.mutableLoading;return!t&&(n&&!o)}},keyboardFocusBorder:{type:Boolean,default:!1},uid:{type:[String,Number],default:function(){return b()}}},data:function(){return{search:\"\",open:!1,isComposing:!1,isKeyboardNavigation:!1,pushedTags:[],_value:[]}},computed:{isTrackingValues:function(){return void 0===this.value||this.$options.propsData.hasOwnProperty(\"reduce\")},selectedValue:function(){var e=this.value;return this.isTrackingValues&&(e=this.$data._value),null!=e&&\"\"!==e?[].concat(e):[]},optionList:function(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var e=this,t={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:v({id:this.inputId,disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,role:\"combobox\",\"aria-autocomplete\":\"list\",\"aria-label\":this.ariaLabelCombobox,\"aria-controls\":\"vs-\".concat(this.uid,\"__listbox\"),\"aria-owns\":\"vs-\".concat(this.uid,\"__listbox\"),\"aria-expanded\":this.dropdownOpen.toString(),ref:\"search\",type:\"search\",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{\"aria-activedescendant\":\"vs-\".concat(this.uid,\"__option-\").concat(this.typeAheadPointer)}:{}),events:{compositionstart:function(){return e.isComposing=!0},compositionend:function(){return e.isComposing=!1},keydown:this.onSearchKeyDown,keypress:this.onSearchKeyPress,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(t){return e.search=t.target.value}}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:\"openIndicator\",role:\"presentation\",class:\"vs__open-indicator\"}},listHeader:t,listFooter:t,header:v({},t,{deselect:this.deselect}),footer:v({},t,{deselect:this.deselect})}},childComponents:function(){return v({},d,{},this.components)},stateClasses:function(){return{\"vs--open\":this.dropdownOpen,\"vs--single\":!this.multiple,\"vs--multiple\":this.multiple,\"vs--searching\":this.searching&&!this.noDrop,\"vs--searchable\":this.searchable&&!this.noDrop,\"vs--unsearchable\":!this.searchable,\"vs--loading\":this.mutableLoading,\"vs--disabled\":this.disabled}},searching:function(){return!!this.search},dropdownOpen:function(){return this.dropdownShouldOpen(this)},searchPlaceholder:function(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions:function(){var e=this,t=function(t){return null!==e.limit?t.slice(0,e.limit):t},n=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return t(n);var o=this.search.length?this.filter(n,this.search,this):n;if(this.taggable&&this.search.length)try{var i=this.createOption(this.search);this.optionExists(i)||o.unshift(i)}catch(e){}return t(o)},isValueEmpty:function(){return 0===this.selectedValue.length},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options:function(e,t){var n=this;!this.taggable&&(\"function\"==typeof n.resetOnOptionsChange?n.resetOnOptionsChange(e,t,n.selectedValue):n.resetOnOptionsChange)&&this.clearSelection(),this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value)},value:{immediate:!0,handler:function(e){this.isTrackingValues&&this.setInternalValueFromOptions(e)}},multiple:function(){this.clearSelection()},open:function(e){this.$emit(e?\"open\":\"close\")},search:function(e){e.length&&(this.open=!0)}},created:function(){this.mutableLoading=this.loading,this.$on(\"option:created\",this.pushTag)},methods:{setInternalValueFromOptions:function(e){var t=this;Array.isArray(e)?this.$data._value=e.map((function(e){return t.findOptionFromReducedValue(e)})):this.$data._value=this.findOptionFromReducedValue(e)},select:function(e){this.$emit(\"option:selecting\",e),this.isOptionSelected(e)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(e):(this.taggable&&!this.optionExists(e)&&this.$emit(\"option:created\",e),this.multiple&&(e=this.selectedValue.concat(e)),this.updateValue(e),this.$emit(\"option:selected\",e)),this.onAfterSelect(e)},deselect:function(e){var t=this;this.$emit(\"option:deselecting\",e),this.updateValue(this.selectedValue.filter((function(n){return!t.optionComparator(n,e)}))),this.$emit(\"option:deselected\",e)},keyboardDeselect:function(e,t){var n,o;this.deselect(e);var i=null===(n=this.$refs.deselectButtons)||void 0===n?void 0:n[t+1],s=null===(o=this.$refs.deselectButtons)||void 0===o?void 0:o[t-1],r=null!=i?i:s;r?r.focus():this.searchEl.focus()},clearSelection:function(){this.updateValue(this.multiple?[]:null),this.searchEl.focus()},onAfterSelect:function(e){var t=this;this.closeOnSelect&&(this.open=!this.open),this.clearSearchOnSelect&&(this.search=\"\"),this.noDrop&&this.multiple&&this.$nextTick((function(){return t.$refs.search.focus()}))},updateValue:function(e){var t=this;void 0===this.value&&(this.$data._value=e),null!==e&&(e=Array.isArray(e)?e.map((function(e){return t.reduce(e)})):this.reduce(e)),this.$emit(\"input\",e)},toggleDropdown:function(e){var n=e.target!==this.searchEl;n&&e.preventDefault();var o=[].concat(t()(this.$refs.deselectButtons||[]),t()([this.$refs.clearButton]||0));void 0===this.searchEl||o.filter(Boolean).some((function(t){return t.contains(e.target)||t===e.target}))?e.preventDefault():this.open&&n?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected:function(e){var t=this;return this.selectedValue.some((function(n){return t.optionComparator(n,e)}))},isOptionDeselectable:function(e){return this.isOptionSelected(e)&&this.deselectFromDropdown},hasKeyboardFocusBorder:function(e){return!(!this.keyboardFocusBorder||!this.isKeyboardNavigation)&&e===this.typeAheadPointer},optionComparator:function(e,t){return this.getOptionKey(e)===this.getOptionKey(t)},findOptionFromReducedValue:function(e){var n=this,o=[].concat(t()(this.options),t()(this.pushedTags)).filter((function(t){return JSON.stringify(n.reduce(t))===JSON.stringify(e)}));return 1===o.length?o[0]:o.find((function(e){return n.optionComparator(e,n.$data._value)}))||e},closeSearchOptions:function(){this.open=!1,this.$emit(\"search:blur\")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){var e=null;this.multiple&&(e=t()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(e)}},optionExists:function(e){var t=this;return this.optionList.some((function(n){return t.optionComparator(n,e)}))},optionAriaSelected:function(e){return this.selectable(e)?String(this.isOptionSelected(e)):null},normalizeOptionForSlot:function(e){return\"object\"===s()(e)?e:a()({},this.label,e)},pushTag:function(e){this.pushedTags.push(e)},onEscape:function(){this.search.length?this.search=\"\":this.open=!1},onSearchBlur:function(){if(!this.mousedown||this.searching){var e=this.clearSearchOnSelect,t=this.multiple;return this.clearSearchOnBlur({clearSearchOnSelect:e,multiple:t})&&(this.search=\"\"),void this.closeSearchOptions()}this.mousedown=!1,0!==this.search.length||0!==this.options.length||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit(\"search:focus\")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onMouseMove:function(e,t){this.isKeyboardNavigation=!1,this.selectable(e)&&(this.typeAheadPointer=t)},onSearchKeyDown:function(e){var t=this,n=function(e){if(e.preventDefault(),t.open)return!t.isComposing&&t.typeAheadSelect();t.open=!0},o={8:function(e){return t.maybeDeleteValue()},9:function(e){return t.onTab()},27:function(e){return t.onEscape()},38:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadUp();t.open=!0},40:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadDown();t.open=!0}};this.selectOnKeyCodes.forEach((function(e){return o[e]=n}));var i=this.mapKeydown(o,this);if(\"function\"==typeof i[e.keyCode])return i[e.keyCode](e)},onSearchKeyPress:function(e){this.open||32!==e.keyCode||(e.preventDefault(),this.open=!0)}}},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"v-select\",class:e.stateClasses,attrs:{id:\"v-select-\"+e.uid,dir:e.dir}},[e._t(\"header\",null,null,e.scope.header),e._v(\" \"),n(\"div\",{ref:\"toggle\",staticClass:\"vs__dropdown-toggle\"},[n(\"div\",{ref:\"selectedOptions\",staticClass:\"vs__selected-options\",on:{mousedown:e.toggleDropdown}},[e._l(e.selectedValue,(function(t,o){return e._t(\"selected-option-container\",[n(\"span\",{key:e.getOptionKey(t),staticClass:\"vs__selected\"},[e._t(\"selected-option\",[e._v(\"\\n \"+e._s(e.getOptionLabel(t))+\"\\n \")],null,e.normalizeOptionForSlot(t)),e._v(\" \"),e.multiple?n(\"button\",{ref:\"deselectButtons\",refInFor:!0,staticClass:\"vs__deselect\",attrs:{disabled:e.disabled,type:\"button\",title:e.ariaLabelDeselectOption(e.getOptionLabel(t)),\"aria-label\":e.ariaLabelDeselectOption(e.getOptionLabel(t))},on:{mousedown:function(n){return n.stopPropagation(),e.deselect(t)},keydown:function(n){return!n.type.indexOf(\"key\")&&e._k(n.keyCode,\"enter\",13,n.key,\"Enter\")?null:e.keyboardDeselect(t,o)}}},[n(e.childComponents.Deselect,{tag:\"component\"})],1):e._e()],2)],{option:e.normalizeOptionForSlot(t),deselect:e.deselect,multiple:e.multiple,disabled:e.disabled})})),e._v(\" \"),e._t(\"search\",[n(\"input\",e._g(e._b({staticClass:\"vs__search\"},\"input\",e.scope.search.attributes,!1),e.scope.search.events))],null,e.scope.search)],2),e._v(\" \"),n(\"div\",{ref:\"actions\",staticClass:\"vs__actions\"},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showClearButton,expression:\"showClearButton\"}],ref:\"clearButton\",staticClass:\"vs__clear\",attrs:{disabled:e.disabled,type:\"button\",title:e.ariaLabelClearSelected,\"aria-label\":e.ariaLabelClearSelected},on:{click:e.clearSelection}},[n(e.childComponents.Deselect,{tag:\"component\"})],1),e._v(\" \"),e.noDrop?e._e():n(\"button\",{ref:\"openIndicatorButton\",staticClass:\"vs__open-indicator-button\",attrs:{type:\"button\",tabindex:\"-1\",\"aria-labelledby\":\"vs-\"+e.uid+\"__listbox\",\"aria-controls\":\"vs-\"+e.uid+\"__listbox\",\"aria-expanded\":e.dropdownOpen.toString()},on:{mousedown:e.toggleDropdown}},[e._t(\"open-indicator\",[n(e.childComponents.OpenIndicator,e._b({tag:\"component\"},\"component\",e.scope.openIndicator.attributes,!1))],null,e.scope.openIndicator)],2),e._v(\" \"),e._t(\"spinner\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.mutableLoading,expression:\"mutableLoading\"}],staticClass:\"vs__spinner\"},[e._v(\"Loading...\")])],null,e.scope.spinner)],2)]),e._v(\" \"),n(\"transition\",{attrs:{name:e.transition}},[e.dropdownOpen?n(\"ul\",{directives:[{name:\"append-to-body\",rawName:\"v-append-to-body\"}],key:\"vs-\"+e.uid+\"__listbox\",ref:\"dropdownMenu\",staticClass:\"vs__dropdown-menu\",attrs:{id:\"vs-\"+e.uid+\"__listbox\",role:\"listbox\",\"aria-label\":e.ariaLabelListbox,\"aria-multiselectable\":e.multiple,tabindex:\"-1\"},on:{mousedown:function(t){return t.preventDefault(),e.onMousedown(t)},mouseup:e.onMouseUp}},[e._t(\"list-header\",null,null,e.scope.listHeader),e._v(\" \"),e._l(e.filteredOptions,(function(t,o){return n(\"li\",{key:e.getOptionKey(t),staticClass:\"vs__dropdown-option\",class:{\"vs__dropdown-option--deselect\":e.isOptionDeselectable(t)&&o===e.typeAheadPointer,\"vs__dropdown-option--selected\":e.isOptionSelected(t),\"vs__dropdown-option--highlight\":o===e.typeAheadPointer,\"vs__dropdown-option--kb-focus\":e.hasKeyboardFocusBorder(o),\"vs__dropdown-option--disabled\":!e.selectable(t)},attrs:{id:\"vs-\"+e.uid+\"__option-\"+o,role:\"option\",\"aria-selected\":e.optionAriaSelected(t)},on:{mousemove:function(n){return e.onMouseMove(t,o)},click:function(n){n.preventDefault(),n.stopPropagation(),e.selectable(t)&&e.select(t)}}},[e._t(\"option\",[e._v(\"\\n \"+e._s(e.getOptionLabel(t))+\"\\n \")],null,e.normalizeOptionForSlot(t))],2)})),e._v(\" \"),0===e.filteredOptions.length?n(\"li\",{staticClass:\"vs__no-options\"},[e._t(\"no-options\",[e._v(\"\\n Sorry, no matching options.\\n \")],null,e.scope.noOptions)],2):e._e(),e._v(\" \"),e._t(\"list-footer\",null,null,e.scope.listFooter)],2):n(\"ul\",{staticStyle:{display:\"none\",visibility:\"hidden\"},attrs:{id:\"vs-\"+e.uid+\"__listbox\",role:\"listbox\",\"aria-label\":e.ariaLabelListbox}})]),e._v(\" \"),e._t(\"footer\",null,null,e.scope.footer)],2)}),[],!1,null,null,null).exports,O={ajax:u,pointer:c,pointerScroll:l},_=m})(),o})()}));\n//# sourceMappingURL=vue-select.js.map","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nfunction FindRanges(text, search) {\n const ranges = [];\n let currentIndex = 0;\n let index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);\n let i = 0;\n while (index > -1 && i < text.length) {\n currentIndex = index + search.length;\n ranges.push({ start: index, end: currentIndex });\n index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);\n i++;\n }\n return ranges;\n}\nconst _sfc_main = {\n name: \"NcHighlight\",\n props: {\n /**\n * The string to display\n */\n text: {\n type: String,\n default: \"\"\n },\n /**\n * The string to match and highlight\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * The ranges to highlight, takes precedence over the search prop.\n */\n highlight: {\n type: Array,\n default: () => []\n }\n },\n computed: {\n /**\n * The indice ranges which should be highlighted.\n * If an array with ranges is provided, we use it. Otherwise\n * we calculate it based on the provided substring to highlight.\n *\n * @return {Array} The array of ranges to highlight\n */\n ranges() {\n let ranges = [];\n if (!this.search && this.highlight.length === 0) {\n return ranges;\n }\n if (this.highlight.length > 0) {\n ranges = this.highlight;\n } else {\n ranges = FindRanges(this.text, this.search);\n }\n ranges.forEach((range, i) => {\n if (range.end < range.start) {\n ranges[i] = {\n start: range.end,\n end: range.start\n };\n }\n });\n ranges = ranges.reduce((validRanges, range) => {\n if (range.start < this.text.length && range.end > 0) {\n validRanges.push({\n start: range.start < 0 ? 0 : range.start,\n end: range.end > this.text.length ? this.text.length : range.end\n });\n }\n return validRanges;\n }, []);\n ranges.sort((a, b) => {\n return a.start - b.start;\n });\n ranges = ranges.reduce((mergedRanges, range) => {\n if (!mergedRanges.length) {\n mergedRanges.push(range);\n } else {\n const idx = mergedRanges.length - 1;\n if (mergedRanges[idx].end >= range.start) {\n mergedRanges[idx] = {\n start: mergedRanges[idx].start,\n end: Math.max(mergedRanges[idx].end, range.end)\n };\n } else {\n mergedRanges.push(range);\n }\n }\n return mergedRanges;\n }, []);\n return ranges;\n },\n /**\n * Calculate the different chunks to show based on the ranges to highlight.\n *\n * @return {Array} The chunks\n */\n chunks() {\n if (this.ranges.length === 0) {\n return [{\n start: 0,\n end: this.text.length,\n highlight: false,\n text: this.text\n }];\n }\n const chunks = [];\n let currentIndex = 0;\n let currentRange = 0;\n while (currentIndex < this.text.length) {\n const range = this.ranges[currentRange];\n if (range.start === currentIndex) {\n chunks.push({\n ...range,\n highlight: true,\n text: this.text.slice(range.start, range.end)\n });\n currentRange++;\n currentIndex = range.end;\n if (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n chunks.push({\n start: currentIndex,\n end: this.text.length,\n highlight: false,\n text: this.text.slice(currentIndex)\n });\n currentIndex = this.text.length;\n }\n continue;\n }\n chunks.push({\n start: currentIndex,\n end: range.start,\n highlight: false,\n text: this.text.slice(currentIndex, range.start)\n });\n currentIndex = range.start;\n }\n return chunks;\n }\n },\n /**\n * The render function to display the component\n *\n * @param {Function} h The function to create VNodes\n * @return {object} The created VNode\n */\n render(h) {\n if (!this.ranges.length) {\n return h(\"span\", {}, this.text);\n }\n return h(\"span\", {}, this.chunks.map((chunk) => {\n return chunk.highlight ? h(\"strong\", {}, chunk.text) : chunk.text;\n }));\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcHighlight = __component__.exports;\nexport {\n FindRanges as F,\n NcHighlight as N\n};\n//# sourceMappingURL=index-CxTT94_h.mjs.map\n","import '../assets/NcEllipsisedOption-DRkFZ9bI.css';\nimport { N as NcHighlight, F as FindRanges } from \"../chunks/index-CxTT94_h.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcEllipsisedOption\",\n components: {\n NcHighlight\n },\n props: {\n /**\n * The text to be display in one line. If it is longer than 10 characters, it is be truncated with ellipsis in the end but keeping up to 10 last characters to fit the parent container.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The search value to highlight in the text\n */\n search: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n needsTruncate() {\n return this.name && this.name.length >= 10;\n },\n /**\n * Index at which to split the name if it is longer than 10 characters.\n *\n * @return {number} The position at which to split\n */\n split() {\n return this.name.length - Math.min(Math.floor(this.name.length / 2), 10);\n },\n part1() {\n if (this.needsTruncate) {\n return this.name.slice(0, this.split);\n }\n return this.name;\n },\n part2() {\n if (this.needsTruncate) {\n return this.name.slice(this.split);\n }\n return \"\";\n },\n /**\n * The ranges to highlight. Since we split the string for ellipsising,\n * the Highlight component cannot figure this out itself and needs the ranges provided.\n *\n * @return {Array} The array with the ranges to highlight\n */\n highlight1() {\n if (!this.search) {\n return [];\n }\n return FindRanges(this.name, this.search);\n },\n /**\n * We shift the ranges for the second part by the position of the split.\n * Ranges out of the string length are discarded by the Highlight component,\n * so we don't need to take care of this here.\n *\n * @return {Array} The array with the ranges to highlight\n */\n highlight2() {\n return this.highlight1.map((range) => {\n return {\n start: range.start - this.split,\n end: range.end - this.split\n };\n });\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"name-parts\", attrs: { \"dir\": \"auto\", \"title\": _vm.name } }, [_c(\"NcHighlight\", { staticClass: \"name-parts__first\", attrs: { \"text\": _vm.part1, \"search\": _vm.search, \"highlight\": _vm.highlight1 } }), _vm.part2 ? _c(\"NcHighlight\", { staticClass: \"name-parts__last\", attrs: { \"text\": _vm.part2, \"search\": _vm.search, \"highlight\": _vm.highlight2 } }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"592b8444\"\n);\nconst NcEllipsisedOption = __component__.exports;\nexport {\n NcEllipsisedOption as default\n};\n//# sourceMappingURL=NcEllipsisedOption.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcListItemIcon-BDyiLlk2.css';\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"vue\";\nimport \"../Composables/useIsDarkTheme.mjs\";\nimport \"@nextcloud/router\";\nimport \"../Functions/isDarkTheme.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { N as NcHighlight } from \"./index-CxTT94_h.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n name: \"NcListItemIcon\",\n components: {\n NcAvatar,\n NcHighlight,\n NcIconSvgWrapper\n },\n mixins: [\n userStatus\n ],\n props: {\n /**\n * Default first line text\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * SVG icon to be displayed at the end of the component\n */\n iconSvg: {\n type: String,\n default: \"\"\n },\n /**\n * Descriptive name for the icon\n */\n iconName: {\n type: String,\n default: \"\"\n },\n /**\n * Search within the highlight of name/subname\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n /**\n * Disable the margins of this component.\n * Useful for integration in `NcSelect` for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to name\n */\n displayName: {\n type: String,\n default: null\n },\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n setup() {\n return {\n margin,\n defaultSize\n };\n },\n computed: {\n hasIcon() {\n return this.icon !== \"\";\n },\n hasIconSvg() {\n return this.iconSvg !== \"\";\n },\n isValidSubname() {\n return this.subname?.trim?.() !== \"\";\n },\n isSizeBigEnough() {\n return this.avatarSize >= 26;\n },\n cssVars() {\n const margin2 = this.noMargin ? 0 : this.margin;\n return {\n \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n \"--margin\": this.margin + \"px\"\n };\n },\n /**\n * Seperates the search property into two parts, the first one is the search part on the name, the second on the subname.\n *\n * @return {[string, string]}\n */\n searchParts() {\n const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n const match = this.search.match(EMAIL_NOTATION);\n if (this.isNoUser || !match) {\n return [this.search, this.search];\n }\n return [match[1].trim(), match[2]];\n }\n },\n beforeMount() {\n if (!this.isNoUser && !this.subname) {\n this.fetchUserStatus(this.user);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._g({ staticClass: \"option\", class: { \"option--compact\": _vm.avatarSize < _vm.defaultSize }, style: _vm.cssVars, attrs: { \"id\": _vm.id } }, _vm.$listeners), [_c(\"NcAvatar\", _vm._b({ staticClass: \"option__avatar\", attrs: { \"disable-menu\": true, \"disable-tooltip\": true, \"display-name\": _vm.displayName || _vm.name, \"is-no-user\": _vm.isNoUser, \"size\": _vm.avatarSize } }, \"NcAvatar\", _vm.$attrs, false)), _c(\"div\", { staticClass: \"option__details\" }, [_c(\"NcHighlight\", { staticClass: \"option__lineone\", attrs: { \"text\": _vm.name, \"search\": _vm.searchParts[0] } }), _vm.isValidSubname && _vm.isSizeBigEnough ? _c(\"NcHighlight\", { staticClass: \"option__linetwo\", attrs: { \"text\": _vm.subname, \"search\": _vm.searchParts[1] } }) : _vm.hasStatus ? _c(\"span\", [_c(\"span\", [_vm._v(_vm._s(_vm.userStatus.icon))]), _c(\"span\", [_vm._v(_vm._s(_vm.userStatus.message))])]) : _vm._e()], 1), _vm._t(\"default\", function() {\n return [_vm.hasIconSvg ? _c(\"NcIconSvgWrapper\", { staticClass: \"option__icon\", attrs: { \"svg\": _vm.iconSvg, \"name\": _vm.iconName } }) : _vm.hasIcon ? _c(\"span\", { staticClass: \"icon option__icon\", class: _vm.icon, attrs: { \"aria-label\": _vm.iconName } }) : _vm._e()];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"eff1d9a4\"\n);\nconst NcListItemIcon = __component__.exports;\nexport {\n NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-DIecVacf.mjs.map\n","import '../assets/NcSelect-DS82iTcW.css';\nimport { autoUpdate, computePosition, offset, flip, shift, limitShift } from \"@floating-ui/dom\";\nimport { VueSelect } from \"@nextcloud/vue-select\";\nimport Vue from \"vue\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport NcEllipsisedOption from \"../Components/NcEllipsisedOption.mjs\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DIecVacf.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, g as t38, h as t17, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nimport \"@nextcloud/vue-select/dist/vue-select.css\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t17, t38);\nconst _sfc_main = {\n name: \"NcSelect\",\n components: {\n ChevronDown,\n NcEllipsisedOption,\n NcListItemIcon,\n NcLoadingIcon,\n VueSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n // Add VueSelect props to $props\n ...VueSelect.props,\n ...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n /**\n * `aria-label` for the clear input button\n */\n ariaLabelClearSelected: {\n type: String,\n default: t(\"Clear selected\")\n },\n /**\n * `aria-label` for the search input\n *\n * A descriptive `inputLabel` is preferred as this is not visible.\n */\n ariaLabelCombobox: {\n type: String,\n default: null\n },\n /**\n * `aria-label` for the listbox element\n */\n ariaLabelListbox: {\n type: String,\n default: t(\"Options\")\n },\n /**\n * Allows to customize the `aria-label` for the deselect-option button\n * The default is \"Deselect \" + optionLabel\n *\n * @type {(optionLabel: string) => string}\n */\n ariaLabelDeselectOption: {\n type: Function,\n default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n },\n /**\n * Append the dropdown element to the end of the body\n * and size/position it dynamically.\n *\n * @see https://vue-select.org/api/props.html#appendtobody\n */\n appendToBody: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * When `appendToBody` is true, this function is responsible for\n * positioning the drop down list.\n *\n * If a function is returned from `calculatePosition`, it will\n * be called when the drop down list is removed from the DOM.\n * This allows for any garbage collection you may need to do.\n *\n * @see https://vue-select.org/api/props.html#calculateposition\n */\n calculatePosition: {\n type: Function,\n default: null\n },\n /**\n * Close the dropdown when selecting an option.\n *\n * @deprecated Use the `keepOpen` prop instead\n */\n closeOnSelect: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Keep the dropdown open after selecting an option.\n *\n * @default false\n * @since 8.25.0\n */\n keepOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Replace default vue-select components\n *\n * @see https://vue-select.org/api/props.html#components\n */\n components: {\n type: Object,\n default: () => ({\n Deselect: {\n render: (createElement) => createElement(Close, {\n props: {\n size: 20,\n fillColor: \"var(--vs-controls-color)\"\n },\n style: {\n cursor: \"pointer\"\n }\n })\n }\n })\n },\n /**\n * Sets the maximum number of options to display in the dropdown list\n */\n limit: {\n type: Number,\n default: null\n },\n /**\n * Disable the component\n *\n * @see https://vue-select.org/api/props.html#disabled\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Determines whether the dropdown should be open.\n * Receives the component instance as the only argument.\n *\n * @see https://vue-select.org/api/props.html#dropdownshouldopen\n */\n dropdownShouldOpen: {\n type: Function,\n default: ({ noDrop, open }) => {\n return noDrop ? false : open;\n }\n },\n /**\n * Callback to determine if the provided option should\n * match the current search text. Used to determine\n * if the option should be displayed.\n *\n * Defaults to the internal vue-select function documented at the link\n * below\n *\n * Enabling `userSelect` will automatically set this to filter by the\n * `displayName` and `subname` properties of the user option object\n * unless this prop is set explicitly\n *\n * @see https://vue-select.org/api/props.html#filterby\n */\n filterBy: {\n type: Function,\n default: null\n },\n /**\n * Class for the `input`\n *\n * Necessary for use in NcActionInput\n */\n inputClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Input element id\n */\n inputId: {\n type: String,\n default: () => `select-input-${GenRandomId()}`\n },\n /**\n * Visible label for the input element\n *\n * @todo Set default for @nextcloud/vue 9\n */\n inputLabel: {\n type: String,\n default: null\n },\n /**\n * Pass true if you are using an external label\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Display a visible border around dropdown options\n * which have keyboard focus\n */\n keyboardFocusBorder: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Key of the displayed label for object options\n *\n * Defaults to the internal vue-select string documented at the link\n * below\n *\n * Enabling `userSelect` will automatically set this to `'displayName'`\n * unless this prop is set explicitly\n *\n * @see https://vue-select.org/api/props.html#label\n */\n label: {\n type: String,\n default: null\n },\n /**\n * Show the loading icon\n *\n * @see https://vue-select.org/api/props.html#loading\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Allow selection of multiple options\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Disable automatic wrapping when selected options overflow the width\n */\n noWrap: {\n type: Boolean,\n default: false\n },\n /**\n * Array of options\n *\n * @type {Array<string | number | Record<string | number, any>>}\n *\n * @see https://vue-select.org/api/props.html#options\n */\n options: {\n type: Array,\n default: () => []\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * Customized component's response to keydown events while the search input has focus\n *\n * @see https://vue-select.org/guide/keydown.html#mapkeydown\n */\n mapKeydown: {\n type: Function,\n /**\n * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n *\n * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n * @return {Record<number, Function>} patched keydown event handlers\n */\n default(map, vm) {\n return {\n ...map,\n /**\n * Patched Escape handler to stop propagation from open select\n *\n * @param {KeyboardEvent} event - default keydown event handler\n */\n 27: (event) => {\n if (vm.open) {\n event.stopPropagation();\n }\n map[27](event);\n }\n };\n }\n },\n /**\n * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n *\n * @see https://vue-select.org/api/props.html#uid\n */\n uid: {\n type: String,\n default: () => GenRandomId()\n },\n /**\n * When `appendToBody` is true, this sets the placement of the dropdown\n *\n * @type {'bottom' | 'top'}\n */\n placement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * If false, the focused dropdown option will not be reset when filtered\n * options change\n */\n resetFocusOnOptionsChange: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Enable the user selector with avatars\n *\n * Objects must contain the data expected by the\n * [NcListItemIcon](#/Components/NcListItemIcon) and\n * [NcAvatar](#/Components/NcAvatar) components\n *\n * @deprecated Use the `NcSelectUsers` component instead\n */\n userSelect: {\n type: Boolean,\n default: false\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Number, Object, Array],\n default: void 0\n },\n /**\n * Currently selected value\n *\n * The `v-model` directive may be used for two-way data binding\n *\n * @type {string | number | Record<string | number, any> | Array<any>}\n *\n * @see https://vue-select.org/api/props.html#value\n */\n modelValue: {\n type: [String, Number, Object, Array],\n default: null\n },\n /**\n * Enable if a value is required for native form validation\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n const model = useModelMigration(\"value\", \"input\");\n return {\n avatarSize,\n model,\n isLegacy: isLegacy32\n };\n },\n data() {\n return {\n search: \"\"\n };\n },\n computed: {\n inputRequired() {\n if (!this.required) {\n return null;\n }\n return this.model === null || Array.isArray(this.model) && this.model.length === 0;\n },\n localCalculatePosition() {\n if (this.calculatePosition !== null) {\n return this.calculatePosition;\n }\n return (dropdownMenu, component, { width }) => {\n dropdownMenu.style.width = width;\n const addClass = {\n name: \"addClass\",\n fn() {\n dropdownMenu.classList.add(\"vs__dropdown-menu--floating\");\n return {};\n }\n };\n const togglePlacementClass = {\n name: \"togglePlacementClass\",\n fn({ placement }) {\n component.$el.classList.toggle(\n \"select--drop-up\",\n placement === \"top\"\n );\n dropdownMenu.classList.toggle(\n \"vs__dropdown-menu--floating-placement-top\",\n placement === \"top\"\n );\n return {};\n }\n };\n const updatePosition = () => {\n computePosition(component.$refs.toggle, dropdownMenu, {\n placement: this.placement,\n middleware: [\n offset(-1),\n addClass,\n togglePlacementClass,\n // Match popperjs default collision prevention behavior by appending the following middleware in order\n flip(),\n shift({ limiter: limitShift() })\n ]\n }).then(({ x, y }) => {\n Object.assign(dropdownMenu.style, {\n left: `${x}px`,\n top: `${y}px`,\n width: `${component.$refs.toggle.getBoundingClientRect().width}px`\n });\n });\n };\n const cleanup = autoUpdate(\n component.$refs.toggle,\n dropdownMenu,\n updatePosition\n );\n return cleanup;\n };\n },\n localFilterBy() {\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n if (this.filterBy !== null) {\n return this.filterBy;\n }\n if (this.userSelect) {\n return (option, label, search) => {\n const match = search.match(EMAIL_NOTATION);\n return match && option.subname?.toLocaleLowerCase?.()?.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n };\n }\n return VueSelect.props.filterBy.default;\n },\n localLabel() {\n if (this.label !== null) {\n return this.label;\n }\n if (this.userSelect) {\n return \"displayName\";\n }\n return VueSelect.props.label.default;\n },\n propsToForward() {\n const vueSelectKeys = [\n ...Object.keys(VueSelect.props),\n ...VueSelect.mixins.flatMap((mixin) => Object.keys(mixin.props ?? {}))\n ];\n const initialPropsToForward = Object.fromEntries(Object.entries(this.$props).filter(([key]) => vueSelectKeys.includes(key)));\n const propsToForward = {\n ...initialPropsToForward,\n // Custom overrides of vue-select props\n value: this.model,\n calculatePosition: this.localCalculatePosition,\n closeOnSelect: this.closeOnSelect && !this.keepOpen,\n filterBy: this.localFilterBy,\n label: this.localLabel\n };\n return propsToForward;\n },\n listenersToForward() {\n return {\n ...this.$listeners,\n input: ($event) => {\n this.model = $event;\n }\n };\n }\n },\n mounted() {\n if (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n Vue.util.warn(\"[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.\");\n }\n if (this.inputLabel && this.ariaLabelCombobox) {\n Vue.util.warn(\"[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.\");\n }\n },\n methods: {\n t\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"VueSelect\", _vm._g(_vm._b({ staticClass: \"select\", class: {\n \"select--legacy\": _vm.isLegacy,\n \"select--no-wrap\": _vm.noWrap,\n \"user-select\": _vm.userSelect\n }, on: { \"search\": (searchString) => _vm.search = searchString }, scopedSlots: _vm._u([!_vm.labelOutside && _vm.inputLabel ? { key: \"header\", fn: function() {\n return [_c(\"label\", { staticClass: \"select__label\", attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.inputLabel) + \" \")])];\n }, proxy: true } : null, { key: \"search\", fn: function({ attributes, events }) {\n return [_c(\"input\", _vm._g(_vm._b({ staticClass: \"vs__search\", class: _vm.inputClass, attrs: { \"required\": _vm.inputRequired, \"dir\": \"auto\" } }, \"input\", attributes, false), events))];\n } }, { key: \"open-indicator\", fn: function({ attributes }) {\n return [_c(\"ChevronDown\", _vm._b({ style: {\n cursor: !_vm.disabled ? \"pointer\" : null\n }, attrs: { \"fill-color\": \"var(--vs-controls-color)\", \"size\": 26 } }, \"ChevronDown\", attributes, false))];\n } }, { key: \"option\", fn: function(option) {\n return [_vm._t(\"option\", function() {\n return [_vm.userSelect ? _c(\"NcListItemIcon\", _vm._b({ attrs: { \"avatar-size\": 32, \"name\": option[_vm.localLabel], \"search\": _vm.search } }, \"NcListItemIcon\", option, false)) : _c(\"NcEllipsisedOption\", { attrs: { \"name\": String(option[_vm.localLabel]), \"search\": _vm.search } })];\n }, null, option)];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_vm._t(\"selected-option\", function() {\n return [_vm.userSelect ? _c(\"NcListItemIcon\", _vm._b({ attrs: { \"avatar-size\": _vm.avatarSize, \"name\": selectedOption[_vm.localLabel], \"no-margin\": \"\", \"search\": _vm.search } }, \"NcListItemIcon\", selectedOption, false)) : _c(\"NcEllipsisedOption\", { attrs: { \"name\": String(selectedOption[_vm.localLabel]), \"search\": _vm.search } })];\n }, { \"vBind\": selectedOption })];\n } }, { key: \"spinner\", fn: function(spinner) {\n return [spinner.loading ? _c(\"NcLoadingIcon\") : _vm._e()];\n } }, { key: \"no-options\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.t(\"No results\")) + \" \")];\n }, proxy: true }, _vm._l(_vm.$scopedSlots, function(_, name) {\n return { key: name, fn: function(data) {\n return [_vm._t(name, null, null, data)];\n } };\n })], null, true) }, \"VueSelect\", _vm.propsToForward, false), _vm.listenersToForward));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSelect = __component__.exports;\nexport {\n NcSelect as N\n};\n//# sourceMappingURL=NcSelect-CxHfXvZV.mjs.map\n","import '../assets/NcCollectionList-ChU8Os4e.css';\nimport debounce from \"debounce\";\nimport { ref, set } from \"vue\";\nimport { r as register, P as t28, a as t, Q as t7 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\"remove-resource\", \"rename-collection\"],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"remove-resource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"rename-collection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"collection-list-item\" }, [_c(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": _vm.collection.name, \"allow-placeholder\": \"\" } }), _vm.newName === null ? _c(\"span\", { staticClass: \"collection-item-name\", attrs: { \"title\": \"\" }, on: { \"click\": _vm.showDetails } }, [_vm._v(_vm._s(_vm.collection.name))]) : _c(\"form\", { class: { \"should-shake\": _vm.error }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.renameCollection.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.newName, expression: \"newName\" }], attrs: { \"type\": \"text\", \"autocomplete\": \"off\", \"autocapitalize\": \"off\" }, domProps: { \"value\": _vm.newName }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.newName = $event.target.value;\n } } }), _c(\"input\", { staticClass: \"icon-confirm\", attrs: { \"type\": \"submit\", \"value\": \"\" } })]), !_vm.detailsOpen && _vm.newName === null ? _c(\"div\", { staticClass: \"linked-icons\" }, _vm._l(_vm.resources.slice(0, 2), function(resource) {\n return _c(_vm.getComponent(resource).component, { key: resource.type + \"|\" + resource.id, tag: \"component\", class: _vm.typeClass(resource), attrs: { \"title\": resource.name, \"to\": _vm.getComponent(resource).to, \"href\": _vm.getComponent(resource).href } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource), \"alt\": resource.name } })]);\n }), 1) : _vm._e(), _vm.newName === null ? _c(\"span\", { staticClass: \"sharingOptionsGroup\" }, [_c(\"NcActions\", [_c(\"NcActionButton\", { attrs: { \"icon\": \"icon-info\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleDetails.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.detailsOpen ? _vm.t(\"Hide details\") : _vm.t(\"Show details\")) + \" \")]), _c(\"NcActionButton\", { attrs: { \"icon\": \"icon-rename\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openRename.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Rename project\")) + \" \")])], 1)], 1) : _vm._e(), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"div\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.detailsOpen ? _c(\"ul\", { staticClass: \"resource-list-details\" }, _vm._l(_vm.resources, function(resource) {\n return _c(\"li\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource) }, [_c(_vm.getComponent(resource).component, { tag: \"component\", attrs: { \"to\": _vm.getComponent(resource).to, \"href\": _vm.getComponent(resource).href } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource), \"alt\": resource.name } }), _c(\"span\", { staticClass: \"resource-name\" }, [_vm._v(_vm._s(resource.name || \"\"))])]), _c(\"span\", { staticClass: \"icon-close\", on: { \"click\": function($event) {\n return _vm.removeResource(_vm.collection, resource);\n } } })], 1);\n }), 0) : _vm._e()])], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"88468fab\"\n);\nconst NcCollectionListItem = __component__$1.exports;\nregister(t7);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n set(storedCollections, \"value\", collections);\n };\n const addCollection = (collection) => {\n set(storedCollections, \"value\", [...storedCollections.value, collection]);\n };\n const removeCollection = (collectionId) => {\n set(storedCollections, \"value\", storedCollections.value.filter((item) => item.id !== collectionId));\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n set(storedCollections.value, index, collection);\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((error) => {\n logger.error(\"No resource selected\", { error });\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((error) => {\n logger.error(t(\"Failed to rename the project\"), { error });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _vm.collections && _vm.type && _vm.id ? _c(\"ul\", { staticClass: \"collection-list\", attrs: { \"id\": \"collection-list\" } }, [_c(\"li\", { on: { \"click\": _vm.showSelect } }, [_vm._m(0), _c(\"div\", { attrs: { \"id\": \"collection-select-container\" } }, [_c(\"NcSelect\", { ref: \"select\", attrs: { \"aria-label-combobox\": _vm.t(\"Add to a project\"), \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"label\": \"title\", \"limit\": 5 }, on: { \"close\": function($event) {\n _vm.isSelectOpen = false;\n }, \"open\": function($event) {\n _vm.isSelectOpen = true;\n }, \"option:selected\": _vm.select, \"search\": _vm.search }, scopedSlots: _vm._u([{ key: \"selected-option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__desc\" }, [_c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])])];\n } }, { key: \"option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__wrapper\" }, [option.class ? _c(\"span\", { staticClass: \"avatar\", class: option.class }) : option.method !== 2 ? _c(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": option.title } }) : _vm._e(), _c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])], 1)];\n } }], null, false, 2397208459), model: { value: _vm.value, callback: function($$v) {\n _vm.value = $$v;\n }, expression: \"value\" } }, [_c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"li\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _vm._l(_vm.collections, function(collection) {\n return _c(\"NcCollectionListItem\", { key: collection.id, attrs: { \"collection\": collection, \"error\": _vm.collectionsError[collection.id] }, on: { \"rename-collection\": _vm.renameCollectionFromItem, \"remove-resource\": _vm.removeResourceFromCollection } });\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"avatar\" }, [_c(\"span\", { staticClass: \"icon-projects\" })]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e1b88947\"\n);\nconst NcCollectionList = __component__.exports;\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-75D50pZU.mjs.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VueColor=t():e.VueColor=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=59)}([function(e,t){function n(e,t){var n=e[1]||\"\",i=e[3];if(!i)return n;if(t&&\"function\"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(e){return\"/*# sourceURL=\"+i.sourceRoot+e+\" */\"})).concat([o]).join(\"\\n\")}return[n].join(\"\\n\")}function r(e){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+\" */\"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?\"@media \"+t[2]+\"{\"+r+\"}\":r}).join(\"\")},t.i=function(e,n){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];\"number\"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];\"number\"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]=\"(\"+a[2]+\") and (\"+n+\")\"),t.push(a))}},t}},function(e,t,n){function r(e){for(var t=0;t<e.length;t++){var n=e[t],r=u[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(o(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{for(var a=[],i=0;i<n.parts.length;i++)a.push(o(n.parts[i]));u[n.id]={id:n.id,refs:1,parts:a}}}}function i(){var e=document.createElement(\"style\");return e.type=\"text/css\",f.appendChild(e),e}function o(e){var t,n,r=document.querySelector(\"style[\"+b+'~=\"'+e.id+'\"]');if(r){if(p)return v;r.parentNode.removeChild(r)}if(x){var o=h++;r=d||(d=i()),t=a.bind(null,r,o,!1),n=a.bind(null,r,o,!0)}else r=i(),t=s.bind(null,r),n=function(){r.parentNode.removeChild(r)};return t(e),function(r){if(r){if(r.css===e.css&&r.media===e.media&&r.sourceMap===e.sourceMap)return;t(e=r)}else n()}}function a(e,t,n,r){var i=n?\"\":r.css;if(e.styleSheet)e.styleSheet.cssText=m(t,i);else{var o=document.createTextNode(i),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(o,a[t]):e.appendChild(o)}}function s(e,t){var n=t.css,r=t.media,i=t.sourceMap;if(r&&e.setAttribute(\"media\",r),g.ssrId&&e.setAttribute(b,t.id),i&&(n+=\"\\n/*# sourceURL=\"+i.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+\" */\"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var c=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!c)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var l=n(63),u={},f=c&&(document.head||document.getElementsByTagName(\"head\")[0]),d=null,h=0,p=!1,v=function(){},g=null,b=\"data-vue-ssr-id\",x=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());e.exports=function(e,t,n,i){p=n,g=i||{};var o=l(e,t);return r(o),function(t){for(var n=[],i=0;i<o.length;i++){var a=o[i],s=u[a.id];s.refs--,n.push(s)}t?(o=l(e,t),r(o)):o=[];for(var i=0;i<n.length;i++){var s=n[i];if(0===s.refs){for(var c=0;c<s.parts.length;c++)s.parts[c]();delete u[s.id]}}}};var m=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join(\"\\n\")}}()},function(e,t){e.exports=function(e,t,n,r,i,o){var a,s=e=e||{},c=typeof e.default;\"object\"!==c&&\"function\"!==c||(a=e,s=e.default);var l=\"function\"==typeof s?s.options:s;t&&(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),i&&(l._scopeId=i);var u;if(o?(u=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},l._ssrRegister=u):r&&(u=r),u){var f=l.functional,d=f?l.render:l.beforeCreate;f?(l._injectStyles=u,l.render=function(e,t){return u.call(t),d(e,t)}):l.beforeCreate=d?[].concat(d,u):[u]}return{esModule:a,exports:s,options:l}}},function(e,t,n){\"use strict\";function r(e,t){var n,r=e&&e.a;!(n=e&&e.hsl?(0,o.default)(e.hsl):e&&e.hex&&e.hex.length>0?(0,o.default)(e.hex):e&&e.hsv?(0,o.default)(e.hsv):e&&e.rgba?(0,o.default)(e.rgba):e&&e.rgb?(0,o.default)(e.rgb):(0,o.default)(e))||void 0!==n._a&&null!==n._a||n.setAlpha(r||1);var i=n.toHsl(),a=n.toHsv();return 0===i.s&&(a.h=i.h=e.h||e.hsl&&e.hsl.h||t||0),{hsl:i,hex:n.toHexString().toUpperCase(),hex8:n.toHex8String().toUpperCase(),rgba:n.toRgb(),hsv:a,oldHue:e.h||t||i.h,source:e.source,a:e.a||n.getAlpha()}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(64),o=function(e){return e&&e.__esModule?e:{default:e}}(i);t.default={props:[\"value\"],data:function(){return{val:r(this.value)}},computed:{colors:{get:function(){return this.val},set:function(e){this.val=e,this.$emit(\"input\",e)}}},watch:{value:function(e){this.val=r(e)}},methods:{colorChange:function(e,t){this.oldHue=this.colors.hsl.h,this.colors=r(e,t||this.oldHue)},isValidHex:function(e){return(0,o.default)(e).isValid()},simpleCheckForValidColor:function(e){for(var t=[\"r\",\"g\",\"b\",\"a\",\"h\",\"s\",\"l\",\"v\"],n=0,r=0,i=0;i<t.length;i++){var o=t[i];e[o]&&(n++,isNaN(e[o])||r++)}if(n===r)return e},paletteUpperCase:function(e){return e.map(function(e){return e.toUpperCase()})},isTransparent:function(e){return 0===(0,o.default)(e).getAlpha()}}}},function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(e,t,n){\"use strict\";function r(e){c||n(65)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(36),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(67),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/EditableInput.vue\",t.default=f.exports},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(8),i=n(16);e.exports=n(9)?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(13),i=n(42),o=n(25),a=Object.defineProperty;t.f=n(9)?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),i)try{return a(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(15)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(e,t,n){var r=n(89),i=n(22);e.exports=function(e){return r(i(e))}},function(e,t,n){var r=n(29)(\"wks\"),i=n(17),o=n(4).Symbol,a=\"function\"==typeof o;(e.exports=function(e){return r[e]||(r[e]=a&&o[e]||(a?o:i)(\"Symbol.\"+e))}).store=r},function(e,t,n){\"use strict\";function r(e){c||n(111)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(50),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(113),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Hue.vue\",t.default=f.exports},function(e,t,n){var r=n(14);e.exports=function(e){if(!r(e))throw TypeError(e+\" is not an object!\");return e}},function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+r).toString(36))}},function(e,t,n){\"use strict\";function r(e){c||n(123)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(53),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(127),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Saturation.vue\",t.default=f.exports},function(e,t,n){\"use strict\";function r(e){c||n(128)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(54),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(133),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Alpha.vue\",t.default=f.exports},function(e,t,n){\"use strict\";function r(e){c||n(130)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(55),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(132),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Checkboard.vue\",t.default=f.exports},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on \"+e);return e}},function(e,t){e.exports=!0},function(e,t){var n=e.exports={version:\"2.5.1\"};\"number\"==typeof __e&&(__e=n)},function(e,t,n){var r=n(14);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&\"function\"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if(\"function\"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&\"function\"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(e,t){e.exports={}},function(e,t,n){var r=n(46),i=n(30);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(29)(\"keys\"),i=n(17);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t,n){var r=n(4),i=r[\"__core-js_shared__\"]||(r[\"__core-js_shared__\"]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){e.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(e,t,n){var r=n(8).f,i=n(6),o=n(11)(\"toStringTag\");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(11)},function(e,t,n){var r=n(4),i=n(24),o=n(23),a=n(32),s=n(8).f;e.exports=function(e){var t=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=[\"#4D4D4D\",\"#999999\",\"#FFFFFF\",\"#F44E3B\",\"#FE9200\",\"#FCDC00\",\"#DBDF00\",\"#A4DD00\",\"#68CCCA\",\"#73D8FF\",\"#AEA1FF\",\"#FDA1FF\",\"#333333\",\"#808080\",\"#CCCCCC\",\"#D33115\",\"#E27300\",\"#FCC400\",\"#B0BC00\",\"#68BC00\",\"#16A5A5\",\"#009CE0\",\"#7B64FF\",\"#FA28FF\",\"#000000\",\"#666666\",\"#B3B3B3\",\"#9F0500\",\"#C45100\",\"#FB9E00\",\"#808900\",\"#194D33\",\"#0C797D\",\"#0062B1\",\"#653294\",\"#AB149E\"];t.default={name:\"Compact\",mixins:[o.default],props:{palette:{type:Array,default:function(){return c}}},components:{\"ed-in\":s.default},computed:{pick:function(){return this.colors.hex.toUpperCase()}},methods:{handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"editableInput\",props:{label:String,labelText:String,desc:String,value:[String,Number],max:Number,min:Number,arrowOffset:{type:Number,default:1}},computed:{val:{get:function(){return this.value},set:function(e){if(!(void 0!==this.max&&+e>this.max))return e;this.$refs.input.value=this.max}},labelId:function(){return\"input__label__\"+this.label+\"__\"+Math.random().toString().slice(2,5)},labelSpanText:function(){return this.labelText||this.label}},methods:{update:function(e){this.handleChange(e.target.value)},handleChange:function(e){var t={};t[this.label]=e,void 0===t.hex&&void 0===t[\"#\"]?this.$emit(\"change\",t):e.length>5&&this.$emit(\"change\",t)},handleKeyDown:function(e){var t=this.val,n=Number(t);if(n){var r=this.arrowOffset||1;38===e.keyCode&&(t=n+r,this.handleChange(t),e.preventDefault()),40===e.keyCode&&(t=n-r,this.handleChange(t),e.preventDefault())}}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(3),i=function(e){return e&&e.__esModule?e:{default:e}}(r),o=[\"#FFFFFF\",\"#F2F2F2\",\"#E6E6E6\",\"#D9D9D9\",\"#CCCCCC\",\"#BFBFBF\",\"#B3B3B3\",\"#A6A6A6\",\"#999999\",\"#8C8C8C\",\"#808080\",\"#737373\",\"#666666\",\"#595959\",\"#4D4D4D\",\"#404040\",\"#333333\",\"#262626\",\"#0D0D0D\",\"#000000\"];t.default={name:\"Grayscale\",mixins:[i.default],props:{palette:{type:Array,default:function(){return o}}},components:{},computed:{pick:function(){return this.colors.hex.toUpperCase()}},methods:{handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(5),o=r(i),a=n(3),s=r(a);t.default={name:\"Material\",mixins:[s.default],components:{\"ed-in\":o.default},methods:{onChange:function(e){e&&(e.hex?this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:\"hex\"}):(e.r||e.g||e.b)&&this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}))}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(80),o=r(i),a=n(3),s=r(a),c=n(12),l=r(c);t.default={name:\"Slider\",mixins:[s.default],props:{swatches:{type:Array,default:function(){return[{s:.5,l:.8},{s:.5,l:.65},{s:.5,l:.5},{s:.5,l:.35},{s:.5,l:.2}]}}},components:{hue:l.default},computed:{normalizedSwatches:function(){return this.swatches.map(function(e){return\"object\"!==(void 0===e?\"undefined\":(0,o.default)(e))?{s:.5,l:e}:e})}},methods:{isActive:function(e,t){var n=this.colors.hsl;return 1===n.l&&1===e.l||(0===n.l&&0===e.l||Math.abs(n.l-e.l)<.01&&Math.abs(n.s-e.s)<.01)},hueChange:function(e){this.colorChange(e)},handleSwClick:function(e,t){this.colorChange({h:this.colors.hsl.h,s:t.s,l:t.l,source:\"hsl\"})}}}},function(e,t,n){\"use strict\";var r=n(23),i=n(41),o=n(44),a=n(7),s=n(6),c=n(26),l=n(87),u=n(31),f=n(94),d=n(11)(\"iterator\"),h=!([].keys&&\"next\"in[].keys()),p=function(){return this};e.exports=function(e,t,n,v,g,b,x){l(n,t,v);var m,_,w,y=function(e){if(!h&&e in S)return S[e];switch(e){case\"keys\":case\"values\":return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+\" Iterator\",k=\"values\"==g,F=!1,S=e.prototype,A=S[d]||S[\"@@iterator\"]||g&&S[g],E=A||y(g),O=g?k?y(\"entries\"):E:void 0,M=\"Array\"==t?S.entries||A:A;if(M&&(w=f(M.call(new e)))!==Object.prototype&&w.next&&(u(w,C,!0),r||s(w,d)||a(w,d,p)),k&&A&&\"values\"!==A.name&&(F=!0,E=function(){return A.call(this)}),r&&!x||!h&&!F&&S[d]||a(S,d,E),c[t]=E,c[C]=p,g)if(m={values:k?E:y(\"values\"),keys:b?E:y(\"keys\"),entries:O},x)for(_ in m)_ in S||o(S,_,m[_]);else i(i.P+i.F*(h||F),t,m);return m}},function(e,t,n){var r=n(4),i=n(24),o=n(85),a=n(7),s=function(e,t,n){var c,l,u,f=e&s.F,d=e&s.G,h=e&s.S,p=e&s.P,v=e&s.B,g=e&s.W,b=d?i:i[t]||(i[t]={}),x=b.prototype,m=d?r:h?r[t]:(r[t]||{}).prototype;d&&(n=t);for(c in n)(l=!f&&m&&void 0!==m[c])&&c in b||(u=l?m[c]:n[c],b[c]=d&&\"function\"!=typeof m[c]?n[c]:v&&l?o(u,r):g&&m[c]==u?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(u):p&&\"function\"==typeof u?o(Function.call,u):u,p&&((b.virtual||(b.virtual={}))[c]=u,e&s.R&&x&&!x[c]&&a(x,c,u)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){e.exports=!n(9)&&!n(15)(function(){return 7!=Object.defineProperty(n(43)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(e,t,n){var r=n(14),i=n(4).document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},function(e,t,n){e.exports=n(7)},function(e,t,n){var r=n(13),i=n(88),o=n(30),a=n(28)(\"IE_PROTO\"),s=function(){},c=function(){var e,t=n(43)(\"iframe\"),r=o.length;for(t.style.display=\"none\",n(93).appendChild(t),t.src=\"javascript:\",e=t.contentWindow.document,e.open(),e.write(\"<script>document.F=Object<\\/script>\"),e.close(),c=e.F;r--;)delete c.prototype[o[r]];return c()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[a]=e):n=c(),void 0===t?n:i(n,t)}},function(e,t,n){var r=n(6),i=n(10),o=n(90)(!1),a=n(28)(\"IE_PROTO\");e.exports=function(e,t){var n,s=i(e),c=0,l=[];for(n in s)n!=a&&r(s,n)&&l.push(n);for(;t.length>c;)r(s,n=t[c++])&&(~o(l,n)||l.push(n));return l}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(46),i=n(30).concat(\"length\",\"prototype\");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"Hue\",props:{value:Object,direction:{type:String,default:\"horizontal\"}},data:function(){return{oldHue:0,pullDirection:\"\"}},computed:{colors:function(){var e=this.value.hsl.h;return 0!==e&&e-this.oldHue>0&&(this.pullDirection=\"right\"),0!==e&&e-this.oldHue<0&&(this.pullDirection=\"left\"),this.oldHue=e,this.value},directionClass:function(){return{\"vc-hue--horizontal\":\"horizontal\"===this.direction,\"vc-hue--vertical\":\"vertical\"===this.direction}},pointerTop:function(){return\"vertical\"===this.direction?0===this.colors.hsl.h&&\"right\"===this.pullDirection?0:-100*this.colors.hsl.h/360+100+\"%\":0},pointerLeft:function(){return\"vertical\"===this.direction?0:0===this.colors.hsl.h&&\"right\"===this.pullDirection?\"100%\":100*this.colors.hsl.h/360+\"%\"}},methods:{handleChange:function(e,t){!t&&e.preventDefault();var n=this.$refs.container;if(n){var r,i,o=n.clientWidth,a=n.clientHeight,s=n.getBoundingClientRect().left+window.pageXOffset,c=n.getBoundingClientRect().top+window.pageYOffset,l=e.pageX||(e.touches?e.touches[0].pageX:0),u=e.pageY||(e.touches?e.touches[0].pageY:0),f=l-s,d=u-c;\"vertical\"===this.direction?(d<0?r=360:d>a?r=0:(i=-100*d/a+100,r=360*i/100),this.colors.hsl.h!==r&&this.$emit(\"change\",{h:r,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:\"hsl\"})):(f<0?r=0:f>o?r=360:(i=100*f/o,r=360*i/100),this.colors.hsl.h!==r&&this.$emit(\"change\",{h:r,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:\"hsl\"}))}},handleMouseDown:function(e){this.handleChange(e,!0),window.addEventListener(\"mousemove\",this.handleChange),window.addEventListener(\"mouseup\",this.handleMouseUp)},handleMouseUp:function(e){this.unbindEventListeners()},unbindEventListeners:function(){window.removeEventListener(\"mousemove\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleMouseUp)}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(118),o=r(i),a=n(3),s=r(a),c=[\"red\",\"pink\",\"purple\",\"deepPurple\",\"indigo\",\"blue\",\"lightBlue\",\"cyan\",\"teal\",\"green\",\"lightGreen\",\"lime\",\"yellow\",\"amber\",\"orange\",\"deepOrange\",\"brown\",\"blueGrey\",\"black\"],l=[\"900\",\"700\",\"500\",\"300\",\"100\"],u=function(){var e=[];return c.forEach(function(t){var n=[];\"black\"===t.toLowerCase()||\"white\"===t.toLowerCase()?n=n.concat([\"#000000\",\"#FFFFFF\"]):l.forEach(function(e){var r=o.default[t][e];n.push(r.toUpperCase())}),e.push(n)}),e}();t.default={name:\"Swatches\",mixins:[s.default],props:{palette:{type:Array,default:function(){return u}}},computed:{pick:function(){return this.colors.hex}},methods:{equal:function(e){return e.toLowerCase()===this.colors.hex.toLowerCase()},handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=n(18),l=r(c),u=n(12),f=r(u),d=n(19),h=r(d);t.default={name:\"Photoshop\",mixins:[o.default],props:{head:{type:String,default:\"Color Picker\"},disableFields:{type:Boolean,default:!1},hasResetButton:{type:Boolean,default:!1},acceptLabel:{type:String,default:\"OK\"},cancelLabel:{type:String,default:\"Cancel\"},resetLabel:{type:String,default:\"Reset\"},newLabel:{type:String,default:\"new\"},currentLabel:{type:String,default:\"current\"}},components:{saturation:l.default,hue:f.default,alpha:h.default,\"ed-in\":s.default},data:function(){return{currentColor:\"#FFF\"}},computed:{hsv:function(){var e=this.colors.hsv;return{h:e.h.toFixed(),s:(100*e.s).toFixed(),v:(100*e.v).toFixed()}},hex:function(){var e=this.colors.hex;return e&&e.replace(\"#\",\"\")}},created:function(){this.currentColor=this.colors.hex},methods:{childChange:function(e){this.colorChange(e)},inputChange:function(e){e&&(e[\"#\"]?this.isValidHex(e[\"#\"])&&this.colorChange({hex:e[\"#\"],source:\"hex\"}):e.r||e.g||e.b||e.a?this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}):(e.h||e.s||e.v)&&this.colorChange({h:e.h||this.colors.hsv.h,s:e.s/100||this.colors.hsv.s,v:e.v/100||this.colors.hsv.v,source:\"hsv\"}))},clickCurrentColor:function(){this.colorChange({hex:this.currentColor,source:\"hex\"})},handleAccept:function(){this.$emit(\"ok\")},handleCancel:function(){this.$emit(\"cancel\")},handleReset:function(){this.$emit(\"reset\")}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(125),o=r(i),a=n(126),s=r(a);t.default={name:\"Saturation\",props:{value:Object},computed:{colors:function(){return this.value},bgColor:function(){return\"hsl(\"+this.colors.hsv.h+\", 100%, 50%)\"},pointerTop:function(){return-100*this.colors.hsv.v+1+100+\"%\"},pointerLeft:function(){return 100*this.colors.hsv.s+\"%\"}},beforeDestroy:function(){this.unbindEventListeners()},methods:{throttle:(0,s.default)(function(e,t){e(t)},20,{leading:!0,trailing:!1}),handleChange:function(e,t){!t&&e.preventDefault();var n=this.$refs.container;if(n){var r=n.clientWidth,i=n.clientHeight,a=n.getBoundingClientRect().left+window.pageXOffset,s=n.getBoundingClientRect().top+window.pageYOffset,c=e.pageX||(e.touches?e.touches[0].pageX:0),l=e.pageY||(e.touches?e.touches[0].pageY:0),u=(0,o.default)(c-a,0,r),f=(0,o.default)(l-s,0,i),d=u/r,h=(0,o.default)(-f/i+1,0,1);this.throttle(this.onChange,{h:this.colors.hsv.h,s:d,v:h,a:this.colors.hsv.a,source:\"hsva\"})}},onChange:function(e){this.$emit(\"change\",e)},handleMouseDown:function(e){window.addEventListener(\"mousemove\",this.handleChange),window.addEventListener(\"mouseup\",this.handleChange),window.addEventListener(\"mouseup\",this.handleMouseUp)},handleMouseUp:function(e){this.unbindEventListeners()},unbindEventListeners:function(){window.removeEventListener(\"mousemove\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleMouseUp)}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(20),i=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default={name:\"Alpha\",props:{value:Object,onChange:Function},components:{checkboard:i.default},computed:{colors:function(){return this.value},gradientColor:function(){var e=this.colors.rgba,t=[e.r,e.g,e.b].join(\",\");return\"linear-gradient(to right, rgba(\"+t+\", 0) 0%, rgba(\"+t+\", 1) 100%)\"}},methods:{handleChange:function(e,t){!t&&e.preventDefault();var n=this.$refs.container;if(n){var r,i=n.clientWidth,o=n.getBoundingClientRect().left+window.pageXOffset,a=e.pageX||(e.touches?e.touches[0].pageX:0),s=a-o;r=s<0?0:s>i?1:Math.round(100*s/i)/100,this.colors.a!==r&&this.$emit(\"change\",{h:this.colors.hsl.h,s:this.colors.hsl.s,l:this.colors.hsl.l,a:r,source:\"rgba\"})}},handleMouseDown:function(e){this.handleChange(e,!0),window.addEventListener(\"mousemove\",this.handleChange),window.addEventListener(\"mouseup\",this.handleMouseUp)},handleMouseUp:function(){this.unbindEventListeners()},unbindEventListeners:function(){window.removeEventListener(\"mousemove\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleMouseUp)}}}},function(e,t,n){\"use strict\";function r(e,t,n){if(\"undefined\"==typeof document)return null;var r=document.createElement(\"canvas\");r.width=r.height=2*n;var i=r.getContext(\"2d\");return i?(i.fillStyle=e,i.fillRect(0,0,r.width,r.height),i.fillStyle=t,i.fillRect(0,0,n,n),i.translate(n,n),i.fillRect(0,0,n,n),r.toDataURL()):null}function i(e,t,n){var i=e+\",\"+t+\",\"+n;if(o[i])return o[i];var a=r(e,t,n);return o[i]=a,a}Object.defineProperty(t,\"__esModule\",{value:!0});var o={};t.default={name:\"Checkboard\",props:{size:{type:[Number,String],default:8},white:{type:String,default:\"#fff\"},grey:{type:String,default:\"#e6e6e6\"}},computed:{bgStyle:function(){return{\"background-image\":\"url(\"+i(this.white,this.grey,this.size)+\")\"}}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=n(18),l=r(c),u=n(12),f=r(u),d=n(19),h=r(d),p=n(20),v=r(p),g=[\"#D0021B\",\"#F5A623\",\"#F8E71C\",\"#8B572A\",\"#7ED321\",\"#417505\",\"#BD10E0\",\"#9013FE\",\"#4A90E2\",\"#50E3C2\",\"#B8E986\",\"#000000\",\"#4A4A4A\",\"#9B9B9B\",\"#FFFFFF\",\"rgba(0,0,0,0)\"];t.default={name:\"Sketch\",mixins:[o.default],components:{saturation:l.default,hue:f.default,alpha:h.default,\"ed-in\":s.default,checkboard:v.default},props:{presetColors:{type:Array,default:function(){return g}},disableAlpha:{type:Boolean,default:!1},disableFields:{type:Boolean,default:!1}},computed:{hex:function(){var e=void 0;return e=this.colors.a<1?this.colors.hex8:this.colors.hex,e.replace(\"#\",\"\")},activeColor:function(){var e=this.colors.rgba;return\"rgba(\"+[e.r,e.g,e.b,e.a].join(\",\")+\")\"}},methods:{handlePreset:function(e){this.colorChange({hex:e,source:\"hex\"})},childChange:function(e){this.colorChange(e)},inputChange:function(e){e&&(e.hex?this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:\"hex\"}):(e.r||e.g||e.b||e.a)&&this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}))}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=n(18),l=r(c),u=n(12),f=r(u),d=n(19),h=r(d),p=n(20),v=r(p);t.default={name:\"Chrome\",mixins:[o.default],props:{disableAlpha:{type:Boolean,default:!1},disableFields:{type:Boolean,default:!1}},components:{saturation:l.default,hue:f.default,alpha:h.default,\"ed-in\":s.default,checkboard:v.default},data:function(){return{fieldsIndex:0,highlight:!1}},computed:{hsl:function(){var e=this.colors.hsl,t=e.h,n=e.s,r=e.l;return{h:t.toFixed(),s:(100*n).toFixed()+\"%\",l:(100*r).toFixed()+\"%\"}},activeColor:function(){var e=this.colors.rgba;return\"rgba(\"+[e.r,e.g,e.b,e.a].join(\",\")+\")\"},hasAlpha:function(){return this.colors.a<1}},methods:{childChange:function(e){this.colorChange(e)},inputChange:function(e){if(e)if(e.hex)this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:\"hex\"});else if(e.r||e.g||e.b||e.a)this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"});else if(e.h||e.s||e.l){var t=e.s?e.s.replace(\"%\",\"\")/100:this.colors.hsl.s,n=e.l?e.l.replace(\"%\",\"\")/100:this.colors.hsl.l;this.colorChange({h:e.h||this.colors.hsl.h,s:t,l:n,source:\"hsl\"})}},toggleViews:function(){if(this.fieldsIndex>=2)return void(this.fieldsIndex=0);this.fieldsIndex++},showHighlight:function(){this.highlight=!0},hideHighlight:function(){this.highlight=!1}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(5),o=r(i),a=n(3),s=r(a),c=[\"#FF6900\",\"#FCB900\",\"#7BDCB5\",\"#00D084\",\"#8ED1FC\",\"#0693E3\",\"#ABB8C3\",\"#EB144C\",\"#F78DA7\",\"#9900EF\"];t.default={name:\"Twitter\",mixins:[s.default],components:{editableInput:o.default},props:{width:{type:[String,Number],default:276},defaultColors:{type:Array,default:function(){return c}},triangle:{default:\"top-left\",validator:function(e){return[\"hide\",\"top-left\",\"top-right\"].includes(e)}}},computed:{hsv:function(){var e=this.colors.hsv;return{h:e.h.toFixed(),s:(100*e.s).toFixed(),v:(100*e.v).toFixed()}},hex:function(){var e=this.colors.hex;return e&&e.replace(\"#\",\"\")}},methods:{equal:function(e){return e.toLowerCase()===this.colors.hex.toLowerCase()},handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})},inputChange:function(e){e&&(e[\"#\"]?this.isValidHex(e[\"#\"])&&this.colorChange({hex:e[\"#\"],source:\"hex\"}):e.r||e.g||e.b||e.a?this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}):(e.h||e.s||e.v)&&this.colorChange({h:e.h||this.colors.hsv.h,s:e.s/100||this.colors.hsv.s,v:e.v/100||this.colors.hsv.v,source:\"hsv\"}))}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}var i=n(60),o=r(i),a=n(69),s=r(a),c=n(73),l=r(c),u=n(77),f=r(u),d=n(115),h=r(d),p=n(120),v=r(p),g=n(135),b=r(g),x=n(139),m=r(x),_=n(143),w=r(_),y=n(19),C=r(y),k=n(20),F=r(k),S=n(5),A=r(S),E=n(12),O=r(E),M=n(18),j=r(M),L=n(3),P=r(L),R={version:\"2.8.2\",Compact:o.default,Grayscale:s.default,Twitter:w.default,Material:l.default,Slider:f.default,Swatches:h.default,Photoshop:v.default,Sketch:b.default,Chrome:m.default,Alpha:C.default,Checkboard:F.default,EditableInput:A.default,Hue:O.default,Saturation:j.default,ColorMixin:P.default};e.exports=R},function(e,t,n){\"use strict\";function r(e){c||n(61)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(35),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(68),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Compact.vue\",t.default=f.exports},function(e,t,n){var r=n(62);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"6ce8a5a8\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-compact {\\n padding-top: 5px;\\n padding-left: 5px;\\n width: 245px;\\n border-radius: 2px;\\n box-sizing: border-box;\\n box-shadow: 0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16);\\n background-color: #fff;\\n}\\n.vc-compact-colors {\\n overflow: hidden;\\n padding: 0;\\n margin: 0;\\n}\\n.vc-compact-color-item {\\n list-style: none;\\n width: 15px;\\n height: 15px;\\n float: left;\\n margin-right: 5px;\\n margin-bottom: 5px;\\n position: relative;\\n cursor: pointer;\\n}\\n.vc-compact-color-item--white {\\n box-shadow: inset 0 0 0 1px #ddd;\\n}\\n.vc-compact-color-item--white .vc-compact-dot {\\n background: #000;\\n}\\n.vc-compact-dot {\\n position: absolute;\\n top: 5px;\\n right: 5px;\\n bottom: 5px;\\n left: 5px;\\n border-radius: 50%;\\n opacity: 1;\\n background: #fff;\\n}\\n\",\"\"])},function(e,t){e.exports=function(e,t){for(var n=[],r={},i=0;i<t.length;i++){var o=t[i],a=o[0],s=o[1],c=o[2],l=o[3],u={id:e+\":\"+i,css:s,media:c,sourceMap:l};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}},function(e,t,n){var r;!function(i){function o(e,t){if(e=e||\"\",t=t||{},e instanceof o)return e;if(!(this instanceof o))return new o(e,t);var n=a(e);this._originalInput=e,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=G(100*this._a)/100,this._format=t.format||n.format,this._gradientType=t.gradientType,this._r<1&&(this._r=G(this._r)),this._g<1&&(this._g=G(this._g)),this._b<1&&(this._b=G(this._b)),this._ok=n.ok,this._tc_id=U++}function a(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,o=null,a=!1,c=!1;return\"string\"==typeof e&&(e=N(e)),\"object\"==typeof e&&(H(e.r)&&H(e.g)&&H(e.b)?(t=s(e.r,e.g,e.b),a=!0,c=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):H(e.h)&&H(e.s)&&H(e.v)?(r=D(e.s),i=D(e.v),t=f(e.h,r,i),a=!0,c=\"hsv\"):H(e.h)&&H(e.s)&&H(e.l)&&(r=D(e.s),o=D(e.l),t=l(e.h,r,o),a=!0,c=\"hsl\"),e.hasOwnProperty(\"a\")&&(n=e.a)),n=E(n),{ok:a,format:e.format||c,r:V(255,q(t.r,0)),g:V(255,q(t.g,0)),b:V(255,q(t.b,0)),a:n}}function s(e,t,n){return{r:255*O(e,255),g:255*O(t,255),b:255*O(n,255)}}function c(e,t,n){e=O(e,255),t=O(t,255),n=O(n,255);var r,i,o=q(e,t,n),a=V(e,t,n),s=(o+a)/2;if(o==a)r=i=0;else{var c=o-a;switch(i=s>.5?c/(2-o-a):c/(o+a),o){case e:r=(t-n)/c+(t<n?6:0);break;case t:r=(n-e)/c+2;break;case n:r=(e-t)/c+4}r/=6}return{h:r,s:i,l:s}}function l(e,t,n){function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var i,o,a;if(e=O(e,360),t=O(t,100),n=O(n,100),0===t)i=o=a=n;else{var s=n<.5?n*(1+t):n+t-n*t,c=2*n-s;i=r(c,s,e+1/3),o=r(c,s,e),a=r(c,s,e-1/3)}return{r:255*i,g:255*o,b:255*a}}function u(e,t,n){e=O(e,255),t=O(t,255),n=O(n,255);var r,i,o=q(e,t,n),a=V(e,t,n),s=o,c=o-a;if(i=0===o?0:c/o,o==a)r=0;else{switch(o){case e:r=(t-n)/c+(t<n?6:0);break;case t:r=(n-e)/c+2;break;case n:r=(e-t)/c+4}r/=6}return{h:r,s:i,v:s}}function f(e,t,n){e=6*O(e,360),t=O(t,100),n=O(n,100);var r=i.floor(e),o=e-r,a=n*(1-t),s=n*(1-o*t),c=n*(1-(1-o)*t),l=r%6;return{r:255*[n,s,a,a,c,n][l],g:255*[c,n,n,s,a,a][l],b:255*[a,a,c,n,n,s][l]}}function d(e,t,n,r){var i=[R(G(e).toString(16)),R(G(t).toString(16)),R(G(n).toString(16))];return r&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(\"\")}function h(e,t,n,r,i){var o=[R(G(e).toString(16)),R(G(t).toString(16)),R(G(n).toString(16)),R(B(r))];return i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join(\"\")}function p(e,t,n,r){return[R(B(r)),R(G(e).toString(16)),R(G(t).toString(16)),R(G(n).toString(16))].join(\"\")}function v(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.s-=t/100,n.s=M(n.s),o(n)}function g(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.s+=t/100,n.s=M(n.s),o(n)}function b(e){return o(e).desaturate(100)}function x(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.l+=t/100,n.l=M(n.l),o(n)}function m(e,t){t=0===t?0:t||10;var n=o(e).toRgb();return n.r=q(0,V(255,n.r-G(-t/100*255))),n.g=q(0,V(255,n.g-G(-t/100*255))),n.b=q(0,V(255,n.b-G(-t/100*255))),o(n)}function _(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.l-=t/100,n.l=M(n.l),o(n)}function w(e,t){var n=o(e).toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,o(n)}function y(e){var t=o(e).toHsl();return t.h=(t.h+180)%360,o(t)}function C(e){var t=o(e).toHsl(),n=t.h;return[o(e),o({h:(n+120)%360,s:t.s,l:t.l}),o({h:(n+240)%360,s:t.s,l:t.l})]}function k(e){var t=o(e).toHsl(),n=t.h;return[o(e),o({h:(n+90)%360,s:t.s,l:t.l}),o({h:(n+180)%360,s:t.s,l:t.l}),o({h:(n+270)%360,s:t.s,l:t.l})]}function F(e){var t=o(e).toHsl(),n=t.h;return[o(e),o({h:(n+72)%360,s:t.s,l:t.l}),o({h:(n+216)%360,s:t.s,l:t.l})]}function S(e,t,n){t=t||6,n=n||30;var r=o(e).toHsl(),i=360/n,a=[o(e)];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,a.push(o(r));return a}function A(e,t){t=t||6;for(var n=o(e).toHsv(),r=n.h,i=n.s,a=n.v,s=[],c=1/t;t--;)s.push(o({h:r,s:i,v:a})),a=(a+c)%1;return s}function E(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function O(e,t){L(e)&&(e=\"100%\");var n=P(e);return e=V(t,q(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),i.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function M(e){return V(1,q(0,e))}function j(e){return parseInt(e,16)}function L(e){return\"string\"==typeof e&&-1!=e.indexOf(\".\")&&1===parseFloat(e)}function P(e){return\"string\"==typeof e&&-1!=e.indexOf(\"%\")}function R(e){return 1==e.length?\"0\"+e:\"\"+e}function D(e){return e<=1&&(e=100*e+\"%\"),e}function B(e){return i.round(255*parseFloat(e)).toString(16)}function T(e){return j(e)/255}function H(e){return!!J.CSS_UNIT.exec(e)}function N(e){e=e.replace(I,\"\").replace($,\"\").toLowerCase();var t=!1;if(W[e])e=W[e],t=!0;else if(\"transparent\"==e)return{r:0,g:0,b:0,a:0,format:\"name\"};var n;return(n=J.rgb.exec(e))?{r:n[1],g:n[2],b:n[3]}:(n=J.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=J.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=J.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=J.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=J.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=J.hex8.exec(e))?{r:j(n[1]),g:j(n[2]),b:j(n[3]),a:T(n[4]),format:t?\"name\":\"hex8\"}:(n=J.hex6.exec(e))?{r:j(n[1]),g:j(n[2]),b:j(n[3]),format:t?\"name\":\"hex\"}:(n=J.hex4.exec(e))?{r:j(n[1]+\"\"+n[1]),g:j(n[2]+\"\"+n[2]),b:j(n[3]+\"\"+n[3]),a:T(n[4]+\"\"+n[4]),format:t?\"name\":\"hex8\"}:!!(n=J.hex3.exec(e))&&{r:j(n[1]+\"\"+n[1]),g:j(n[2]+\"\"+n[2]),b:j(n[3]+\"\"+n[3]),format:t?\"name\":\"hex\"}}function z(e){var t,n;return e=e||{level:\"AA\",size:\"small\"},t=(e.level||\"AA\").toUpperCase(),n=(e.size||\"small\").toLowerCase(),\"AA\"!==t&&\"AAA\"!==t&&(t=\"AA\"),\"small\"!==n&&\"large\"!==n&&(n=\"small\"),{level:t,size:n}}var I=/^\\s+/,$=/\\s+$/,U=0,G=i.round,V=i.min,q=i.max,X=i.random;o.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,r,o,a,s=this.toRgb();return e=s.r/255,t=s.g/255,n=s.b/255,r=e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4),o=t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4),a=n<=.03928?n/12.92:i.pow((n+.055)/1.055,2.4),.2126*r+.7152*o+.0722*a},setAlpha:function(e){return this._a=E(e),this._roundA=G(100*this._a)/100,this},toHsv:function(){var e=u(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=u(this._r,this._g,this._b),t=G(360*e.h),n=G(100*e.s),r=G(100*e.v);return 1==this._a?\"hsv(\"+t+\", \"+n+\"%, \"+r+\"%)\":\"hsva(\"+t+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHsl:function(){var e=c(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=c(this._r,this._g,this._b),t=G(360*e.h),n=G(100*e.s),r=G(100*e.l);return 1==this._a?\"hsl(\"+t+\", \"+n+\"%, \"+r+\"%)\":\"hsla(\"+t+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHex:function(e){return d(this._r,this._g,this._b,e)},toHexString:function(e){return\"#\"+this.toHex(e)},toHex8:function(e){return h(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return\"#\"+this.toHex8(e)},toRgb:function(){return{r:G(this._r),g:G(this._g),b:G(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+G(this._r)+\", \"+G(this._g)+\", \"+G(this._b)+\")\":\"rgba(\"+G(this._r)+\", \"+G(this._g)+\", \"+G(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:G(100*O(this._r,255))+\"%\",g:G(100*O(this._g,255))+\"%\",b:G(100*O(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+G(100*O(this._r,255))+\"%, \"+G(100*O(this._g,255))+\"%, \"+G(100*O(this._b,255))+\"%)\":\"rgba(\"+G(100*O(this._r,255))+\"%, \"+G(100*O(this._g,255))+\"%, \"+G(100*O(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(Y[d(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t=\"#\"+p(this._r,this._g,this._b,this._a),n=t,r=this._gradientType?\"GradientType = 1, \":\"\";if(e){var i=o(e);n=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+r+\"startColorstr=\"+t+\",endColorstr=\"+n+\")\"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||\"hex\"!==e&&\"hex6\"!==e&&\"hex3\"!==e&&\"hex4\"!==e&&\"hex8\"!==e&&\"name\"!==e?(\"rgb\"===e&&(n=this.toRgbString()),\"prgb\"===e&&(n=this.toPercentageRgbString()),\"hex\"!==e&&\"hex6\"!==e||(n=this.toHexString()),\"hex3\"===e&&(n=this.toHexString(!0)),\"hex4\"===e&&(n=this.toHex8String(!0)),\"hex8\"===e&&(n=this.toHex8String()),\"name\"===e&&(n=this.toName()),\"hsl\"===e&&(n=this.toHslString()),\"hsv\"===e&&(n=this.toHsvString()),n||this.toHexString()):\"name\"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return o(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(x,arguments)},brighten:function(){return this._applyModification(m,arguments)},darken:function(){return this._applyModification(_,arguments)},desaturate:function(){return this._applyModification(v,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(b,arguments)},spin:function(){return this._applyModification(w,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(S,arguments)},complement:function(){return this._applyCombination(y,arguments)},monochromatic:function(){return this._applyCombination(A,arguments)},splitcomplement:function(){return this._applyCombination(F,arguments)},triad:function(){return this._applyCombination(C,arguments)},tetrad:function(){return this._applyCombination(k,arguments)}},o.fromRatio=function(e,t){if(\"object\"==typeof e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=\"a\"===r?e[r]:D(e[r]));e=n}return o(e,t)},o.equals=function(e,t){return!(!e||!t)&&o(e).toRgbString()==o(t).toRgbString()},o.random=function(){return o.fromRatio({r:X(),g:X(),b:X()})},o.mix=function(e,t,n){n=0===n?0:n||50;var r=o(e).toRgb(),i=o(t).toRgb(),a=n/100;return o({r:(i.r-r.r)*a+r.r,g:(i.g-r.g)*a+r.g,b:(i.b-r.b)*a+r.b,a:(i.a-r.a)*a+r.a})},o.readability=function(e,t){var n=o(e),r=o(t);return(i.max(n.getLuminance(),r.getLuminance())+.05)/(i.min(n.getLuminance(),r.getLuminance())+.05)},o.isReadable=function(e,t,n){var r,i,a=o.readability(e,t);switch(i=!1,r=z(n),r.level+r.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},o.mostReadable=function(e,t,n){var r,i,a,s,c=null,l=0;n=n||{},i=n.includeFallbackColors,a=n.level,s=n.size;for(var u=0;u<t.length;u++)(r=o.readability(e,t[u]))>l&&(l=r,c=o(t[u]));return o.isReadable(e,c,{level:a,size:s})||!i?c:(n.includeFallbackColors=!1,o.mostReadable(e,[\"#fff\",\"#000\"],n))};var W=o.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},Y=o.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(W),J=function(){var e=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\",t=\"[\\\\s|\\\\(]+(\"+e+\")[,|\\\\s]+(\"+e+\")[,|\\\\s]+(\"+e+\")\\\\s*\\\\)?\",n=\"[\\\\s|\\\\(]+(\"+e+\")[,|\\\\s]+(\"+e+\")[,|\\\\s]+(\"+e+\")[,|\\\\s]+(\"+e+\")\\\\s*\\\\)?\";return{CSS_UNIT:new RegExp(e),rgb:new RegExp(\"rgb\"+t),rgba:new RegExp(\"rgba\"+n),hsl:new RegExp(\"hsl\"+t),hsla:new RegExp(\"hsla\"+n),hsv:new RegExp(\"hsv\"+t),hsva:new RegExp(\"hsva\"+n),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();void 0!==e&&e.exports?e.exports=o:void 0!==(r=function(){return o}.call(t,n,t,e))&&(e.exports=r)}(Math)},function(e,t,n){var r=n(66);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"0f73e73c\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-editable-input {\\n position: relative;\\n}\\n.vc-input__input {\\n padding: 0;\\n border: 0;\\n outline: none;\\n}\\n.vc-input__label {\\n text-transform: capitalize;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-editable-input\"},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.val,expression:\"val\"}],ref:\"input\",staticClass:\"vc-input__input\",attrs:{\"aria-labelledby\":e.labelId},domProps:{value:e.val},on:{keydown:e.handleKeyDown,input:[function(t){t.target.composing||(e.val=t.target.value)},e.update]}}),e._v(\" \"),n(\"span\",{staticClass:\"vc-input__label\",attrs:{for:e.label,id:e.labelId}},[e._v(e._s(e.labelSpanText))]),e._v(\" \"),n(\"span\",{staticClass:\"vc-input__desc\"},[e._v(e._s(e.desc))])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-compact\",attrs:{role:\"application\",\"aria-label\":\"Compact color picker\"}},[n(\"ul\",{staticClass:\"vc-compact-colors\",attrs:{role:\"listbox\"}},e._l(e.paletteUpperCase(e.palette),function(t){return n(\"li\",{key:t,staticClass:\"vc-compact-color-item\",class:{\"vc-compact-color-item--white\":\"#FFFFFF\"===t},style:{background:t},attrs:{role:\"option\",\"aria-label\":\"color:\"+t,\"aria-selected\":t===e.pick},on:{click:function(n){e.handlerClick(t)}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t===e.pick,expression:\"c === pick\"}],staticClass:\"vc-compact-dot\"})])}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(70)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(37),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(72),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Grayscale.vue\",t.default=f.exports},function(e,t,n){var r=n(71);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"21ddbb74\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-grayscale {\\n width: 125px;\\n border-radius: 2px;\\n box-shadow: 0 2px 15px rgba(0,0,0,.12), 0 2px 10px rgba(0,0,0,.16);\\n background-color: #fff;\\n}\\n.vc-grayscale-colors {\\n border-radius: 2px;\\n overflow: hidden;\\n padding: 0;\\n margin: 0;\\n}\\n.vc-grayscale-color-item {\\n list-style: none;\\n width: 25px;\\n height: 25px;\\n float: left;\\n position: relative;\\n cursor: pointer;\\n}\\n.vc-grayscale-color-item--white .vc-grayscale-dot {\\n background: #000;\\n}\\n.vc-grayscale-dot {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 6px;\\n height: 6px;\\n margin: -3px 0 0 -2px;\\n border-radius: 50%;\\n opacity: 1;\\n background: #fff;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-grayscale\",attrs:{role:\"application\",\"aria-label\":\"Grayscale color picker\"}},[n(\"ul\",{staticClass:\"vc-grayscale-colors\",attrs:{role:\"listbox\"}},e._l(e.paletteUpperCase(e.palette),function(t){return n(\"li\",{key:t,staticClass:\"vc-grayscale-color-item\",class:{\"vc-grayscale-color-item--white\":\"#FFFFFF\"==t},style:{background:t},attrs:{role:\"option\",\"aria-label\":\"Color:\"+t,\"aria-selected\":t===e.pick},on:{click:function(n){e.handlerClick(t)}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t===e.pick,expression:\"c === pick\"}],staticClass:\"vc-grayscale-dot\"})])}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(74)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(38),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(76),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Material.vue\",t.default=f.exports},function(e,t,n){var r=n(75);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"1ff3af73\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,'\\n.vc-material {\\n width: 98px;\\n height: 98px;\\n padding: 16px;\\n font-family: \"Roboto\";\\n position: relative;\\n border-radius: 2px;\\n box-shadow: 0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16);\\n background-color: #fff;\\n}\\n.vc-material .vc-input__input {\\n width: 100%;\\n margin-top: 12px;\\n font-size: 15px;\\n color: #333;\\n height: 30px;\\n}\\n.vc-material .vc-input__label {\\n position: absolute;\\n top: 0;\\n left: 0;\\n font-size: 11px;\\n color: #999;\\n text-transform: capitalize;\\n}\\n.vc-material-hex {\\n border-bottom-width: 2px;\\n border-bottom-style: solid;\\n}\\n.vc-material-split {\\n display: flex;\\n margin-right: -10px;\\n padding-top: 11px;\\n}\\n.vc-material-third {\\n flex: 1;\\n padding-right: 10px;\\n}\\n',\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-material\",attrs:{role:\"application\",\"aria-label\":\"Material color picker\"}},[n(\"ed-in\",{staticClass:\"vc-material-hex\",style:{borderColor:e.colors.hex},attrs:{label:\"hex\"},on:{change:e.onChange},model:{value:e.colors.hex,callback:function(t){e.$set(e.colors,\"hex\",t)},expression:\"colors.hex\"}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-material-split\"},[n(\"div\",{staticClass:\"vc-material-third\"},[n(\"ed-in\",{attrs:{label:\"r\"},on:{change:e.onChange},model:{value:e.colors.rgba.r,callback:function(t){e.$set(e.colors.rgba,\"r\",t)},expression:\"colors.rgba.r\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-material-third\"},[n(\"ed-in\",{attrs:{label:\"g\"},on:{change:e.onChange},model:{value:e.colors.rgba.g,callback:function(t){e.$set(e.colors.rgba,\"g\",t)},expression:\"colors.rgba.g\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-material-third\"},[n(\"ed-in\",{attrs:{label:\"b\"},on:{change:e.onChange},model:{value:e.colors.rgba.b,callback:function(t){e.$set(e.colors.rgba,\"b\",t)},expression:\"colors.rgba.b\"}})],1)])],1)},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(78)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(39),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(114),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Slider.vue\",t.default=f.exports},function(e,t,n){var r=n(79);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"7982aa43\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-slider {\\n position: relative;\\n width: 410px;\\n}\\n.vc-slider-hue-warp {\\n height: 12px;\\n position: relative;\\n}\\n.vc-slider-hue-warp .vc-hue-picker {\\n width: 14px;\\n height: 14px;\\n border-radius: 6px;\\n transform: translate(-7px, -2px);\\n background-color: rgb(248, 248, 248);\\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\\n}\\n.vc-slider-swatches {\\n display: flex;\\n margin-top: 20px;\\n}\\n.vc-slider-swatch {\\n margin-right: 1px;\\n flex: 1;\\n width: 20%;\\n}\\n.vc-slider-swatch:first-child {\\n margin-right: 1px;\\n}\\n.vc-slider-swatch:first-child .vc-slider-swatch-picker {\\n border-radius: 2px 0px 0px 2px;\\n}\\n.vc-slider-swatch:last-child {\\n margin-right: 0;\\n}\\n.vc-slider-swatch:last-child .vc-slider-swatch-picker {\\n border-radius: 0px 2px 2px 0px;\\n}\\n.vc-slider-swatch-picker {\\n cursor: pointer;\\n height: 12px;\\n}\\n.vc-slider-swatch:nth-child(n) .vc-slider-swatch-picker.vc-slider-swatch-picker--active {\\n transform: scaleY(1.8);\\n border-radius: 3.6px/2px;\\n}\\n.vc-slider-swatch-picker--white {\\n box-shadow: inset 0 0 0 1px #ddd;\\n}\\n.vc-slider-swatch-picker--active.vc-slider-swatch-picker--white {\\n box-shadow: inset 0 0 0 0.6px #ddd;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(81),o=r(i),a=n(100),s=r(a),c=\"function\"==typeof s.default&&\"symbol\"==typeof o.default?function(e){return typeof e}:function(e){return e&&\"function\"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?\"symbol\":typeof e};t.default=\"function\"==typeof s.default&&\"symbol\"===c(o.default)?function(e){return void 0===e?\"undefined\":c(e)}:function(e){return e&&\"function\"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?\"symbol\":void 0===e?\"undefined\":c(e)}},function(e,t,n){e.exports={default:n(82),__esModule:!0}},function(e,t,n){n(83),n(96),e.exports=n(32).f(\"iterator\")},function(e,t,n){\"use strict\";var r=n(84)(!0);n(40)(String,\"String\",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(21),i=n(22);e.exports=function(e){return function(t,n){var o,a,s=String(i(t)),c=r(n),l=s.length;return c<0||c>=l?e?\"\":void 0:(o=s.charCodeAt(c),o<55296||o>56319||c+1===l||(a=s.charCodeAt(c+1))<56320||a>57343?e?s.charAt(c):o:e?s.slice(c,c+2):a-56320+(o-55296<<10)+65536)}}},function(e,t,n){var r=n(86);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(\"function\"!=typeof e)throw TypeError(e+\" is not a function!\");return e}},function(e,t,n){\"use strict\";var r=n(45),i=n(16),o=n(31),a={};n(7)(a,n(11)(\"iterator\"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:i(1,n)}),o(e,t+\" Iterator\")}},function(e,t,n){var r=n(8),i=n(13),o=n(27);e.exports=n(9)?Object.defineProperties:function(e,t){i(e);for(var n,a=o(t),s=a.length,c=0;s>c;)r.f(e,n=a[c++],t[n]);return e}},function(e,t,n){var r=n(47);e.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(e){return\"String\"==r(e)?e.split(\"\"):Object(e)}},function(e,t,n){var r=n(10),i=n(91),o=n(92);e.exports=function(e){return function(t,n,a){var s,c=r(t),l=i(c.length),u=o(a,l);if(e&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(21),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(21),i=Math.max,o=Math.min;e.exports=function(e,t){return e=r(e),e<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(4).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(6),i=n(95),o=n(28)(\"IE_PROTO\"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,o)?e[o]:\"function\"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var r=n(22);e.exports=function(e){return Object(r(e))}},function(e,t,n){n(97);for(var r=n(4),i=n(7),o=n(26),a=n(11)(\"toStringTag\"),s=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),c=0;c<s.length;c++){var l=s[c],u=r[l],f=u&&u.prototype;f&&!f[a]&&i(f,a,l),o[l]=o.Array}},function(e,t,n){\"use strict\";var r=n(98),i=n(99),o=n(26),a=n(10);e.exports=n(40)(Array,\"Array\",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):\"keys\"==t?i(0,n):\"values\"==t?i(0,e[n]):i(0,[n,e[n]])},\"values\"),o.Arguments=o.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(101),__esModule:!0}},function(e,t,n){n(102),n(108),n(109),n(110),e.exports=n(24).Symbol},function(e,t,n){\"use strict\";var r=n(4),i=n(6),o=n(9),a=n(41),s=n(44),c=n(103).KEY,l=n(15),u=n(29),f=n(31),d=n(17),h=n(11),p=n(32),v=n(33),g=n(104),b=n(105),x=n(13),m=n(10),_=n(25),w=n(16),y=n(45),C=n(106),k=n(107),F=n(8),S=n(27),A=k.f,E=F.f,O=C.f,M=r.Symbol,j=r.JSON,L=j&&j.stringify,P=h(\"_hidden\"),R=h(\"toPrimitive\"),D={}.propertyIsEnumerable,B=u(\"symbol-registry\"),T=u(\"symbols\"),H=u(\"op-symbols\"),N=Object.prototype,z=\"function\"==typeof M,I=r.QObject,$=!I||!I.prototype||!I.prototype.findChild,U=o&&l(function(){return 7!=y(E({},\"a\",{get:function(){return E(this,\"a\",{value:7}).a}})).a})?function(e,t,n){var r=A(N,t);r&&delete N[t],E(e,t,n),r&&e!==N&&E(N,t,r)}:E,G=function(e){var t=T[e]=y(M.prototype);return t._k=e,t},V=z&&\"symbol\"==typeof M.iterator?function(e){return\"symbol\"==typeof e}:function(e){return e instanceof M},q=function(e,t,n){return e===N&&q(H,t,n),x(e),t=_(t,!0),x(n),i(T,t)?(n.enumerable?(i(e,P)&&e[P][t]&&(e[P][t]=!1),n=y(n,{enumerable:w(0,!1)})):(i(e,P)||E(e,P,w(1,{})),e[P][t]=!0),U(e,t,n)):E(e,t,n)},X=function(e,t){x(e);for(var n,r=g(t=m(t)),i=0,o=r.length;o>i;)q(e,n=r[i++],t[n]);return e},W=function(e,t){return void 0===t?y(e):X(y(e),t)},Y=function(e){var t=D.call(this,e=_(e,!0));return!(this===N&&i(T,e)&&!i(H,e))&&(!(t||!i(this,e)||!i(T,e)||i(this,P)&&this[P][e])||t)},J=function(e,t){if(e=m(e),t=_(t,!0),e!==N||!i(T,t)||i(H,t)){var n=A(e,t);return!n||!i(T,t)||i(e,P)&&e[P][t]||(n.enumerable=!0),n}},K=function(e){for(var t,n=O(m(e)),r=[],o=0;n.length>o;)i(T,t=n[o++])||t==P||t==c||r.push(t);return r},Z=function(e){for(var t,n=e===N,r=O(n?H:m(e)),o=[],a=0;r.length>a;)!i(T,t=r[a++])||n&&!i(N,t)||o.push(T[t]);return o};z||(M=function(){if(this instanceof M)throw TypeError(\"Symbol is not a constructor!\");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===N&&t.call(H,n),i(this,P)&&i(this[P],e)&&(this[P][e]=!1),U(this,e,w(1,n))};return o&&$&&U(N,e,{configurable:!0,set:t}),G(e)},s(M.prototype,\"toString\",function(){return this._k}),k.f=J,F.f=q,n(49).f=C.f=K,n(34).f=Y,n(48).f=Z,o&&!n(23)&&s(N,\"propertyIsEnumerable\",Y,!0),p.f=function(e){return G(h(e))}),a(a.G+a.W+a.F*!z,{Symbol:M});for(var Q=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),ee=0;Q.length>ee;)h(Q[ee++]);for(var te=S(h.store),ne=0;te.length>ne;)v(te[ne++]);a(a.S+a.F*!z,\"Symbol\",{for:function(e){return i(B,e+=\"\")?B[e]:B[e]=M(e)},keyFor:function(e){if(!V(e))throw TypeError(e+\" is not a symbol!\");for(var t in B)if(B[t]===e)return t},useSetter:function(){$=!0},useSimple:function(){$=!1}}),a(a.S+a.F*!z,\"Object\",{create:W,defineProperty:q,defineProperties:X,getOwnPropertyDescriptor:J,getOwnPropertyNames:K,getOwnPropertySymbols:Z}),j&&a(a.S+a.F*(!z||l(function(){var e=M();return\"[null]\"!=L([e])||\"{}\"!=L({a:e})||\"{}\"!=L(Object(e))})),\"JSON\",{stringify:function(e){if(void 0!==e&&!V(e)){for(var t,n,r=[e],i=1;arguments.length>i;)r.push(arguments[i++]);return t=r[1],\"function\"==typeof t&&(n=t),!n&&b(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!V(t))return t}),r[1]=t,L.apply(j,r)}}}),M.prototype[R]||n(7)(M.prototype,R,M.prototype.valueOf),f(M,\"Symbol\"),f(Math,\"Math\",!0),f(r.JSON,\"JSON\",!0)},function(e,t,n){var r=n(17)(\"meta\"),i=n(14),o=n(6),a=n(8).f,s=0,c=Object.isExtensible||function(){return!0},l=!n(15)(function(){return c(Object.preventExtensions({}))}),u=function(e){a(e,r,{value:{i:\"O\"+ ++s,w:{}}})},f=function(e,t){if(!i(e))return\"symbol\"==typeof e?e:(\"string\"==typeof e?\"S\":\"P\")+e;if(!o(e,r)){if(!c(e))return\"F\";if(!t)return\"E\";u(e)}return e[r].i},d=function(e,t){if(!o(e,r)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[r].w},h=function(e){return l&&p.NEED&&c(e)&&!o(e,r)&&u(e),e},p=e.exports={KEY:r,NEED:!1,fastKey:f,getWeak:d,onFreeze:h}},function(e,t,n){var r=n(27),i=n(48),o=n(34);e.exports=function(e){var t=r(e),n=i.f;if(n)for(var a,s=n(e),c=o.f,l=0;s.length>l;)c.call(e,a=s[l++])&&t.push(a);return t}},function(e,t,n){var r=n(47);e.exports=Array.isArray||function(e){return\"Array\"==r(e)}},function(e,t,n){var r=n(10),i=n(49).f,o={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return i(e)}catch(e){return a.slice()}};e.exports.f=function(e){return a&&\"[object Window]\"==o.call(e)?s(e):i(r(e))}},function(e,t,n){var r=n(34),i=n(16),o=n(10),a=n(25),s=n(6),c=n(42),l=Object.getOwnPropertyDescriptor;t.f=n(9)?l:function(e,t){if(e=o(e),t=a(t,!0),c)try{return l(e,t)}catch(e){}if(s(e,t))return i(!r.f.call(e,t),e[t])}},function(e,t){},function(e,t,n){n(33)(\"asyncIterator\")},function(e,t,n){n(33)(\"observable\")},function(e,t,n){var r=n(112);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"7c5f1a1c\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-hue {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n border-radius: 2px;\\n}\\n.vc-hue--horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n}\\n.vc-hue--vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n}\\n.vc-hue-container {\\n cursor: pointer;\\n margin: 0 2px;\\n position: relative;\\n height: 100%;\\n}\\n.vc-hue-pointer {\\n z-index: 2;\\n position: absolute;\\n}\\n.vc-hue-picker {\\n cursor: pointer;\\n margin-top: 1px;\\n width: 4px;\\n border-radius: 1px;\\n height: 8px;\\n box-shadow: 0 0 2px rgba(0, 0, 0, .6);\\n background: #fff;\\n transform: translateX(-2px) ;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-hue\",e.directionClass]},[n(\"div\",{ref:\"container\",staticClass:\"vc-hue-container\",attrs:{role:\"slider\",\"aria-valuenow\":e.colors.hsl.h,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"360\"},on:{mousedown:e.handleMouseDown,touchmove:e.handleChange,touchstart:e.handleChange}},[n(\"div\",{staticClass:\"vc-hue-pointer\",style:{top:e.pointerTop,left:e.pointerLeft},attrs:{role:\"presentation\"}},[n(\"div\",{staticClass:\"vc-hue-picker\"})])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-slider\",attrs:{role:\"application\",\"aria-label\":\"Slider color picker\"}},[n(\"div\",{staticClass:\"vc-slider-hue-warp\"},[n(\"hue\",{on:{change:e.hueChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-slider-swatches\",attrs:{role:\"group\"}},e._l(e.normalizedSwatches,function(t,r){return n(\"div\",{key:r,staticClass:\"vc-slider-swatch\",attrs:{\"data-index\":r,\"aria-label\":\"color:\"+e.colors.hex,role:\"button\"},on:{click:function(n){e.handleSwClick(r,t)}}},[n(\"div\",{staticClass:\"vc-slider-swatch-picker\",class:{\"vc-slider-swatch-picker--active\":e.isActive(t,r),\"vc-slider-swatch-picker--white\":1===t.l},style:{background:\"hsl(\"+e.colors.hsl.h+\", \"+100*t.s+\"%, \"+100*t.l+\"%)\"}})])}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(116)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(51),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(119),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Swatches.vue\",t.default=f.exports},function(e,t,n){var r=n(117);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"10f839a2\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-swatches {\\n width: 320px;\\n height: 240px;\\n overflow-y: scroll;\\n background-color: #fff;\\n box-shadow: 0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16);\\n}\\n.vc-swatches-box {\\n padding: 16px 0 6px 16px;\\n overflow: hidden;\\n}\\n.vc-swatches-color-group {\\n padding-bottom: 10px;\\n width: 40px;\\n float: left;\\n margin-right: 10px;\\n}\\n.vc-swatches-color-it {\\n box-sizing: border-box;\\n width: 40px;\\n height: 24px;\\n cursor: pointer;\\n background: #880e4f;\\n margin-bottom: 1px;\\n overflow: hidden;\\n -ms-border-radius: 2px 2px 0 0;\\n -moz-border-radius: 2px 2px 0 0;\\n -o-border-radius: 2px 2px 0 0;\\n -webkit-border-radius: 2px 2px 0 0;\\n border-radius: 2px 2px 0 0;\\n}\\n.vc-swatches-color--white {\\n border: 1px solid #DDD;\\n}\\n.vc-swatches-pick {\\n fill: rgb(255, 255, 255);\\n margin-left: 8px;\\n display: block;\\n}\\n.vc-swatches-color--white .vc-swatches-pick {\\n fill: rgb(51, 51, 51);\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),n.d(t,\"red\",function(){return r}),n.d(t,\"pink\",function(){return i}),n.d(t,\"purple\",function(){return o}),n.d(t,\"deepPurple\",function(){return a}),n.d(t,\"indigo\",function(){return s}),n.d(t,\"blue\",function(){return c}),n.d(t,\"lightBlue\",function(){return l}),n.d(t,\"cyan\",function(){return u}),n.d(t,\"teal\",function(){return f}),n.d(t,\"green\",function(){return d}),n.d(t,\"lightGreen\",function(){return h}),n.d(t,\"lime\",function(){return p}),n.d(t,\"yellow\",function(){return v}),n.d(t,\"amber\",function(){return g}),n.d(t,\"orange\",function(){return b}),n.d(t,\"deepOrange\",function(){return x}),n.d(t,\"brown\",function(){return m}),n.d(t,\"grey\",function(){return _}),n.d(t,\"blueGrey\",function(){return w}),n.d(t,\"darkText\",function(){return y}),n.d(t,\"lightText\",function(){return C}),n.d(t,\"darkIcons\",function(){return k}),n.d(t,\"lightIcons\",function(){return F}),n.d(t,\"white\",function(){return S}),n.d(t,\"black\",function(){return A});var r={50:\"#ffebee\",100:\"#ffcdd2\",200:\"#ef9a9a\",300:\"#e57373\",400:\"#ef5350\",500:\"#f44336\",600:\"#e53935\",700:\"#d32f2f\",800:\"#c62828\",900:\"#b71c1c\",a100:\"#ff8a80\",a200:\"#ff5252\",a400:\"#ff1744\",a700:\"#d50000\"},i={50:\"#fce4ec\",100:\"#f8bbd0\",200:\"#f48fb1\",300:\"#f06292\",400:\"#ec407a\",500:\"#e91e63\",600:\"#d81b60\",700:\"#c2185b\",800:\"#ad1457\",900:\"#880e4f\",a100:\"#ff80ab\",a200:\"#ff4081\",a400:\"#f50057\",a700:\"#c51162\"},o={50:\"#f3e5f5\",100:\"#e1bee7\",200:\"#ce93d8\",300:\"#ba68c8\",400:\"#ab47bc\",500:\"#9c27b0\",600:\"#8e24aa\",700:\"#7b1fa2\",800:\"#6a1b9a\",900:\"#4a148c\",a100:\"#ea80fc\",a200:\"#e040fb\",a400:\"#d500f9\",a700:\"#aa00ff\"},a={50:\"#ede7f6\",100:\"#d1c4e9\",200:\"#b39ddb\",300:\"#9575cd\",400:\"#7e57c2\",500:\"#673ab7\",600:\"#5e35b1\",700:\"#512da8\",800:\"#4527a0\",900:\"#311b92\",a100:\"#b388ff\",a200:\"#7c4dff\",a400:\"#651fff\",a700:\"#6200ea\"},s={50:\"#e8eaf6\",100:\"#c5cae9\",200:\"#9fa8da\",300:\"#7986cb\",400:\"#5c6bc0\",500:\"#3f51b5\",600:\"#3949ab\",700:\"#303f9f\",800:\"#283593\",900:\"#1a237e\",a100:\"#8c9eff\",a200:\"#536dfe\",a400:\"#3d5afe\",a700:\"#304ffe\"},c={50:\"#e3f2fd\",100:\"#bbdefb\",200:\"#90caf9\",300:\"#64b5f6\",400:\"#42a5f5\",500:\"#2196f3\",600:\"#1e88e5\",700:\"#1976d2\",800:\"#1565c0\",900:\"#0d47a1\",a100:\"#82b1ff\",a200:\"#448aff\",a400:\"#2979ff\",a700:\"#2962ff\"},l={50:\"#e1f5fe\",100:\"#b3e5fc\",200:\"#81d4fa\",300:\"#4fc3f7\",400:\"#29b6f6\",500:\"#03a9f4\",600:\"#039be5\",700:\"#0288d1\",800:\"#0277bd\",900:\"#01579b\",a100:\"#80d8ff\",a200:\"#40c4ff\",a400:\"#00b0ff\",a700:\"#0091ea\"},u={50:\"#e0f7fa\",100:\"#b2ebf2\",200:\"#80deea\",300:\"#4dd0e1\",400:\"#26c6da\",500:\"#00bcd4\",600:\"#00acc1\",700:\"#0097a7\",800:\"#00838f\",900:\"#006064\",a100:\"#84ffff\",a200:\"#18ffff\",a400:\"#00e5ff\",a700:\"#00b8d4\"},f={50:\"#e0f2f1\",100:\"#b2dfdb\",200:\"#80cbc4\",300:\"#4db6ac\",400:\"#26a69a\",500:\"#009688\",600:\"#00897b\",700:\"#00796b\",800:\"#00695c\",900:\"#004d40\",a100:\"#a7ffeb\",a200:\"#64ffda\",a400:\"#1de9b6\",a700:\"#00bfa5\"},d={50:\"#e8f5e9\",100:\"#c8e6c9\",200:\"#a5d6a7\",300:\"#81c784\",400:\"#66bb6a\",500:\"#4caf50\",600:\"#43a047\",700:\"#388e3c\",800:\"#2e7d32\",900:\"#1b5e20\",a100:\"#b9f6ca\",a200:\"#69f0ae\",a400:\"#00e676\",a700:\"#00c853\"},h={50:\"#f1f8e9\",100:\"#dcedc8\",200:\"#c5e1a5\",300:\"#aed581\",400:\"#9ccc65\",500:\"#8bc34a\",600:\"#7cb342\",700:\"#689f38\",800:\"#558b2f\",900:\"#33691e\",a100:\"#ccff90\",a200:\"#b2ff59\",a400:\"#76ff03\",a700:\"#64dd17\"},p={50:\"#f9fbe7\",100:\"#f0f4c3\",200:\"#e6ee9c\",300:\"#dce775\",400:\"#d4e157\",500:\"#cddc39\",600:\"#c0ca33\",700:\"#afb42b\",800:\"#9e9d24\",900:\"#827717\",a100:\"#f4ff81\",a200:\"#eeff41\",a400:\"#c6ff00\",a700:\"#aeea00\"},v={50:\"#fffde7\",100:\"#fff9c4\",200:\"#fff59d\",300:\"#fff176\",400:\"#ffee58\",500:\"#ffeb3b\",600:\"#fdd835\",700:\"#fbc02d\",800:\"#f9a825\",900:\"#f57f17\",a100:\"#ffff8d\",a200:\"#ffff00\",a400:\"#ffea00\",a700:\"#ffd600\"},g={50:\"#fff8e1\",100:\"#ffecb3\",200:\"#ffe082\",300:\"#ffd54f\",400:\"#ffca28\",500:\"#ffc107\",600:\"#ffb300\",700:\"#ffa000\",800:\"#ff8f00\",900:\"#ff6f00\",a100:\"#ffe57f\",a200:\"#ffd740\",a400:\"#ffc400\",a700:\"#ffab00\"},b={50:\"#fff3e0\",100:\"#ffe0b2\",200:\"#ffcc80\",300:\"#ffb74d\",400:\"#ffa726\",500:\"#ff9800\",600:\"#fb8c00\",700:\"#f57c00\",800:\"#ef6c00\",900:\"#e65100\",a100:\"#ffd180\",a200:\"#ffab40\",a400:\"#ff9100\",a700:\"#ff6d00\"},x={50:\"#fbe9e7\",100:\"#ffccbc\",200:\"#ffab91\",300:\"#ff8a65\",400:\"#ff7043\",500:\"#ff5722\",600:\"#f4511e\",700:\"#e64a19\",800:\"#d84315\",900:\"#bf360c\",a100:\"#ff9e80\",a200:\"#ff6e40\",a400:\"#ff3d00\",a700:\"#dd2c00\"},m={50:\"#efebe9\",100:\"#d7ccc8\",200:\"#bcaaa4\",300:\"#a1887f\",400:\"#8d6e63\",500:\"#795548\",600:\"#6d4c41\",700:\"#5d4037\",800:\"#4e342e\",900:\"#3e2723\"},_={50:\"#fafafa\",100:\"#f5f5f5\",200:\"#eeeeee\",300:\"#e0e0e0\",400:\"#bdbdbd\",500:\"#9e9e9e\",600:\"#757575\",700:\"#616161\",800:\"#424242\",900:\"#212121\"},w={50:\"#eceff1\",100:\"#cfd8dc\",200:\"#b0bec5\",300:\"#90a4ae\",400:\"#78909c\",500:\"#607d8b\",600:\"#546e7a\",700:\"#455a64\",800:\"#37474f\",900:\"#263238\"},y={primary:\"rgba(0, 0, 0, 0.87)\",secondary:\"rgba(0, 0, 0, 0.54)\",disabled:\"rgba(0, 0, 0, 0.38)\",dividers:\"rgba(0, 0, 0, 0.12)\"},C={primary:\"rgba(255, 255, 255, 1)\",secondary:\"rgba(255, 255, 255, 0.7)\",disabled:\"rgba(255, 255, 255, 0.5)\",dividers:\"rgba(255, 255, 255, 0.12)\"},k={active:\"rgba(0, 0, 0, 0.54)\",inactive:\"rgba(0, 0, 0, 0.38)\"},F={active:\"rgba(255, 255, 255, 1)\",inactive:\"rgba(255, 255, 255, 0.5)\"},S=\"#ffffff\",A=\"#000000\";t.default={red:r,pink:i,purple:o,deepPurple:a,indigo:s,blue:c,lightBlue:l,cyan:u,teal:f,green:d,lightGreen:h,lime:p,yellow:v,amber:g,orange:b,deepOrange:x,brown:m,grey:_,blueGrey:w,darkText:y,lightText:C,darkIcons:k,lightIcons:F,white:S,black:A}},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-swatches\",attrs:{role:\"application\",\"aria-label\":\"Swatches color picker\",\"data-pick\":e.pick}},[n(\"div\",{staticClass:\"vc-swatches-box\",attrs:{role:\"listbox\"}},e._l(e.palette,function(t,r){return n(\"div\",{key:r,staticClass:\"vc-swatches-color-group\"},e._l(t,function(t){return n(\"div\",{key:t,class:[\"vc-swatches-color-it\",{\"vc-swatches-color--white\":\"#FFFFFF\"===t}],style:{background:t},attrs:{role:\"option\",\"aria-label\":\"Color:\"+t,\"aria-selected\":e.equal(t),\"data-color\":t},on:{click:function(n){e.handlerClick(t)}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.equal(t),expression:\"equal(c)\"}],staticClass:\"vc-swatches-pick\"},[n(\"svg\",{staticStyle:{width:\"24px\",height:\"24px\"},attrs:{viewBox:\"0 0 24 24\"}},[n(\"path\",{attrs:{d:\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"}})])])])}))}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(121)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(52),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(134),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Photoshop.vue\",t.default=f.exports},function(e,t,n){var r=n(122);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"080365d4\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,'\\n.vc-photoshop {\\n background: #DCDCDC;\\n border-radius: 4px;\\n box-shadow: 0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15);\\n box-sizing: initial;\\n width: 513px;\\n font-family: Roboto;\\n}\\n.vc-photoshop__disable-fields {\\n width: 390px;\\n}\\n.vc-ps-head {\\n background-image: linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%);\\n border-bottom: 1px solid #B1B1B1;\\n box-shadow: inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02);\\n height: 23px;\\n line-height: 24px;\\n border-radius: 4px 4px 0 0;\\n font-size: 13px;\\n color: #4D4D4D;\\n text-align: center;\\n}\\n.vc-ps-body {\\n padding: 15px;\\n display: flex;\\n}\\n.vc-ps-saturation-wrap {\\n width: 256px;\\n height: 256px;\\n position: relative;\\n border: 2px solid #B3B3B3;\\n border-bottom: 2px solid #F0F0F0;\\n overflow: hidden;\\n}\\n.vc-ps-saturation-wrap .vc-saturation-circle {\\n width: 12px;\\n height: 12px;\\n}\\n.vc-ps-hue-wrap {\\n position: relative;\\n height: 256px;\\n width: 19px;\\n margin-left: 10px;\\n border: 2px solid #B3B3B3;\\n border-bottom: 2px solid #F0F0F0;\\n}\\n.vc-ps-hue-pointer {\\n position: relative;\\n}\\n.vc-ps-hue-pointer--left,\\n.vc-ps-hue-pointer--right {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 5px 0 5px 8px;\\n border-color: transparent transparent transparent #555;\\n}\\n.vc-ps-hue-pointer--left:after,\\n.vc-ps-hue-pointer--right:after {\\n content: \"\";\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 4px 0 4px 6px;\\n border-color: transparent transparent transparent #fff;\\n position: absolute;\\n top: 1px;\\n left: 1px;\\n transform: translate(-8px, -5px);\\n}\\n.vc-ps-hue-pointer--left {\\n transform: translate(-13px, -4px);\\n}\\n.vc-ps-hue-pointer--right {\\n transform: translate(20px, -4px) rotate(180deg);\\n}\\n.vc-ps-controls {\\n width: 180px;\\n margin-left: 10px;\\n display: flex;\\n}\\n.vc-ps-controls__disable-fields {\\n width: auto;\\n}\\n.vc-ps-actions {\\n margin-left: 20px;\\n flex: 1;\\n}\\n.vc-ps-ac-btn {\\n cursor: pointer;\\n background-image: linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%);\\n border: 1px solid #878787;\\n border-radius: 2px;\\n height: 20px;\\n box-shadow: 0 1px 0 0 #EAEAEA;\\n font-size: 14px;\\n color: #000;\\n line-height: 20px;\\n text-align: center;\\n margin-bottom: 10px;\\n}\\n.vc-ps-previews {\\n width: 60px;\\n}\\n.vc-ps-previews__swatches {\\n border: 1px solid #B3B3B3;\\n border-bottom: 1px solid #F0F0F0;\\n margin-bottom: 2px;\\n margin-top: 1px;\\n}\\n.vc-ps-previews__pr-color {\\n height: 34px;\\n box-shadow: inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000;\\n}\\n.vc-ps-previews__label {\\n font-size: 14px;\\n color: #000;\\n text-align: center;\\n}\\n.vc-ps-fields {\\n padding-top: 5px;\\n padding-bottom: 9px;\\n width: 80px;\\n position: relative;\\n}\\n.vc-ps-fields .vc-input__input {\\n margin-left: 40%;\\n width: 40%;\\n height: 18px;\\n border: 1px solid #888888;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC;\\n margin-bottom: 5px;\\n font-size: 13px;\\n padding-left: 3px;\\n margin-right: 10px;\\n}\\n.vc-ps-fields .vc-input__label, .vc-ps-fields .vc-input__desc {\\n top: 0;\\n text-transform: uppercase;\\n font-size: 13px;\\n height: 18px;\\n line-height: 22px;\\n position: absolute;\\n}\\n.vc-ps-fields .vc-input__label {\\n left: 0;\\n width: 34px;\\n}\\n.vc-ps-fields .vc-input__desc {\\n right: 0;\\n width: 0;\\n}\\n.vc-ps-fields__divider {\\n height: 5px;\\n}\\n.vc-ps-fields__hex .vc-input__input {\\n margin-left: 20%;\\n width: 80%;\\n height: 18px;\\n border: 1px solid #888888;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC;\\n margin-bottom: 6px;\\n font-size: 13px;\\n padding-left: 3px;\\n}\\n.vc-ps-fields__hex .vc-input__label {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 14px;\\n text-transform: uppercase;\\n font-size: 13px;\\n height: 18px;\\n line-height: 22px;\\n}\\n',\"\"])},function(e,t,n){var r=n(124);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"b5380e52\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-saturation,\\n.vc-saturation--white,\\n.vc-saturation--black {\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n}\\n.vc-saturation--white {\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n}\\n.vc-saturation--black {\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n}\\n.vc-saturation-pointer {\\n cursor: pointer;\\n position: absolute;\\n}\\n.vc-saturation-circle {\\n cursor: pointer;\\n width: 4px;\\n height: 4px;\\n box-shadow: 0 0 0 1.6px #fff, inset 0 0 1px 1px rgba(0,0,0,.3), 0 0 1px 2px rgba(0,0,0,.4);\\n border-radius: 50%;\\n transform: translate(-2px, -2px);\\n}\\n\",\"\"])},function(e,t){function n(e,t,n){return t<n?e<t?t:e>n?n:e:e<n?n:e>t?t:e}e.exports=n},function(e,t){function n(e,t,n){function r(t){var n=v,r=g;return v=g=void 0,k=t,x=e.apply(r,n)}function o(e){return k=e,m=setTimeout(u,t),F?r(e):x}function a(e){var n=e-_,r=e-k,i=t-n;return S?y(i,b-r):i}function l(e){var n=e-_,r=e-k;return void 0===_||n>=t||n<0||S&&r>=b}function u(){var e=C();if(l(e))return f(e);m=setTimeout(u,a(e))}function f(e){return m=void 0,A&&v?r(e):(v=g=void 0,x)}function d(){void 0!==m&&clearTimeout(m),k=0,v=_=g=m=void 0}function h(){return void 0===m?x:f(C())}function p(){var e=C(),n=l(e);if(v=arguments,g=this,_=e,n){if(void 0===m)return o(_);if(S)return m=setTimeout(u,t),r(_)}return void 0===m&&(m=setTimeout(u,t)),x}var v,g,b,x,m,_,k=0,F=!1,S=!1,A=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=s(t)||0,i(n)&&(F=!!n.leading,S=\"maxWait\"in n,b=S?w(s(n.maxWait)||0,t):b,A=\"trailing\"in n?!!n.trailing:A),p.cancel=d,p.flush=h,p}function r(e,t,r){var o=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(c);return i(r)&&(o=\"leading\"in r?!!r.leading:o,a=\"trailing\"in r?!!r.trailing:a),n(e,t,{leading:o,maxWait:t,trailing:a})}function i(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function o(e){return!!e&&\"object\"==typeof e}function a(e){return\"symbol\"==typeof e||o(e)&&_.call(e)==u}function s(e){if(\"number\"==typeof e)return e;if(a(e))return l;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(f,\"\");var n=h.test(e);return n||p.test(e)?v(e.slice(2),n?2:8):d.test(e)?l:+e}var c=\"Expected a function\",l=NaN,u=\"[object Symbol]\",f=/^\\s+|\\s+$/g,d=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,p=/^0o[0-7]+$/i,v=parseInt,g=\"object\"==typeof global&&global&&global.Object===Object&&global,b=\"object\"==typeof self&&self&&self.Object===Object&&self,x=g||b||Function(\"return this\")(),m=Object.prototype,_=m.toString,w=Math.max,y=Math.min,C=function(){return x.Date.now()};e.exports=r},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{ref:\"container\",staticClass:\"vc-saturation\",style:{background:e.bgColor},on:{mousedown:e.handleMouseDown,touchmove:e.handleChange,touchstart:e.handleChange}},[n(\"div\",{staticClass:\"vc-saturation--white\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-saturation--black\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-saturation-pointer\",style:{top:e.pointerTop,left:e.pointerLeft}},[n(\"div\",{staticClass:\"vc-saturation-circle\"})])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){var r=n(129);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"4dc1b086\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-alpha {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n}\\n.vc-alpha-checkboard-wrap {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n overflow: hidden;\\n}\\n.vc-alpha-gradient {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n}\\n.vc-alpha-container {\\n cursor: pointer;\\n position: relative;\\n z-index: 2;\\n height: 100%;\\n margin: 0 3px;\\n}\\n.vc-alpha-pointer {\\n z-index: 2;\\n position: absolute;\\n}\\n.vc-alpha-picker {\\n cursor: pointer;\\n width: 4px;\\n border-radius: 1px;\\n height: 8px;\\n box-shadow: 0 0 2px rgba(0, 0, 0, .6);\\n background: #fff;\\n margin-top: 1px;\\n transform: translateX(-2px);\\n}\\n\",\"\"])},function(e,t,n){var r=n(131);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"7e15c05b\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-checkerboard {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n background-size: contain;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement;return(e._self._c||t)(\"div\",{staticClass:\"vc-checkerboard\",style:e.bgStyle})},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-alpha\"},[n(\"div\",{staticClass:\"vc-alpha-checkboard-wrap\"},[n(\"checkboard\")],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-alpha-gradient\",style:{background:e.gradientColor}}),e._v(\" \"),n(\"div\",{ref:\"container\",staticClass:\"vc-alpha-container\",on:{mousedown:e.handleMouseDown,touchmove:e.handleChange,touchstart:e.handleChange}},[n(\"div\",{staticClass:\"vc-alpha-pointer\",style:{left:100*e.colors.a+\"%\"}},[n(\"div\",{staticClass:\"vc-alpha-picker\"})])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-photoshop\",e.disableFields?\"vc-photoshop__disable-fields\":\"\"],attrs:{role:\"application\",\"aria-label\":\"PhotoShop color picker\"}},[n(\"div\",{staticClass:\"vc-ps-head\",attrs:{role:\"heading\"}},[e._v(e._s(e.head))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-body\"},[n(\"div\",{staticClass:\"vc-ps-saturation-wrap\"},[n(\"saturation\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-hue-wrap\"},[n(\"hue\",{attrs:{direction:\"vertical\"},on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}},[n(\"div\",{staticClass:\"vc-ps-hue-pointer\"},[n(\"i\",{staticClass:\"vc-ps-hue-pointer--left\"}),n(\"i\",{staticClass:\"vc-ps-hue-pointer--right\"})])])],1),e._v(\" \"),n(\"div\",{class:[\"vc-ps-controls\",e.disableFields?\"vc-ps-controls__disable-fields\":\"\"]},[n(\"div\",{staticClass:\"vc-ps-previews\"},[n(\"div\",{staticClass:\"vc-ps-previews__label\"},[e._v(e._s(e.newLabel))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-previews__swatches\"},[n(\"div\",{staticClass:\"vc-ps-previews__pr-color\",style:{background:e.colors.hex},attrs:{\"aria-label\":\"New color is \"+e.colors.hex}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-previews__pr-color\",style:{background:e.currentColor},attrs:{\"aria-label\":\"Current color is \"+e.currentColor},on:{click:e.clickCurrentColor}})]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-previews__label\"},[e._v(e._s(e.currentLabel))])]),e._v(\" \"),e.disableFields?e._e():n(\"div\",{staticClass:\"vc-ps-actions\"},[n(\"div\",{staticClass:\"vc-ps-ac-btn\",attrs:{role:\"button\",\"aria-label\":e.acceptLabel},on:{click:e.handleAccept}},[e._v(e._s(e.acceptLabel))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-ac-btn\",attrs:{role:\"button\",\"aria-label\":e.cancelLabel},on:{click:e.handleCancel}},[e._v(e._s(e.cancelLabel))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-fields\"},[n(\"ed-in\",{attrs:{label:\"h\",desc:\"°\",value:e.hsv.h},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"s\",desc:\"%\",value:e.hsv.s,max:100},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"v\",desc:\"%\",value:e.hsv.v,max:100},on:{change:e.inputChange}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-fields__divider\"}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"r\",value:e.colors.rgba.r},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"g\",value:e.colors.rgba.g},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"b\",value:e.colors.rgba.b},on:{change:e.inputChange}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-fields__divider\"}),e._v(\" \"),n(\"ed-in\",{staticClass:\"vc-ps-fields__hex\",attrs:{label:\"#\",value:e.hex},on:{change:e.inputChange}})],1),e._v(\" \"),e.hasResetButton?n(\"div\",{staticClass:\"vc-ps-ac-btn\",attrs:{\"aria-label\":\"reset\"},on:{click:e.handleReset}},[e._v(e._s(e.resetLabel))]):e._e()])])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(136)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(56),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(138),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Sketch.vue\",t.default=f.exports},function(e,t,n){var r=n(137);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"612c6604\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-sketch {\\n position: relative;\\n width: 200px;\\n padding: 10px 10px 0;\\n box-sizing: initial;\\n background: #fff;\\n border-radius: 4px;\\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15), 0 8px 16px rgba(0, 0, 0, .15);\\n}\\n.vc-sketch-saturation-wrap {\\n width: 100%;\\n padding-bottom: 75%;\\n position: relative;\\n overflow: hidden;\\n}\\n.vc-sketch-controls {\\n display: flex;\\n}\\n.vc-sketch-sliders {\\n padding: 4px 0;\\n flex: 1;\\n}\\n.vc-sketch-sliders .vc-hue,\\n.vc-sketch-sliders .vc-alpha-gradient {\\n border-radius: 2px;\\n}\\n.vc-sketch-hue-wrap {\\n position: relative;\\n height: 10px;\\n}\\n.vc-sketch-alpha-wrap {\\n position: relative;\\n height: 10px;\\n margin-top: 4px;\\n overflow: hidden;\\n}\\n.vc-sketch-color-wrap {\\n width: 24px;\\n height: 24px;\\n position: relative;\\n margin-top: 4px;\\n margin-left: 4px;\\n border-radius: 3px;\\n}\\n.vc-sketch-active-color {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n border-radius: 2px;\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15), inset 0 0 4px rgba(0, 0, 0, .25);\\n z-index: 2;\\n}\\n.vc-sketch-color-wrap .vc-checkerboard {\\n background-size: auto;\\n}\\n.vc-sketch-field {\\n display: flex;\\n padding-top: 4px;\\n}\\n.vc-sketch-field .vc-input__input {\\n width: 90%;\\n padding: 4px 0 3px 10%;\\n border: none;\\n box-shadow: inset 0 0 0 1px #ccc;\\n font-size: 10px;\\n}\\n.vc-sketch-field .vc-input__label {\\n display: block;\\n text-align: center;\\n font-size: 11px;\\n color: #222;\\n padding-top: 3px;\\n padding-bottom: 4px;\\n text-transform: capitalize;\\n}\\n.vc-sketch-field--single {\\n flex: 1;\\n padding-left: 6px;\\n}\\n.vc-sketch-field--double {\\n flex: 2;\\n}\\n.vc-sketch-presets {\\n margin-right: -10px;\\n margin-left: -10px;\\n padding-left: 10px;\\n padding-top: 10px;\\n border-top: 1px solid #eee;\\n}\\n.vc-sketch-presets-color {\\n border-radius: 3px;\\n overflow: hidden;\\n position: relative;\\n display: inline-block;\\n margin: 0 10px 10px 0;\\n vertical-align: top;\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15);\\n}\\n.vc-sketch-presets-color .vc-checkerboard {\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15);\\n border-radius: 3px;\\n}\\n.vc-sketch__disable-alpha .vc-sketch-color-wrap {\\n height: 10px;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-sketch\",e.disableAlpha?\"vc-sketch__disable-alpha\":\"\"],attrs:{role:\"application\",\"aria-label\":\"Sketch color picker\"}},[n(\"div\",{staticClass:\"vc-sketch-saturation-wrap\"},[n(\"saturation\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-controls\"},[n(\"div\",{staticClass:\"vc-sketch-sliders\"},[n(\"div\",{staticClass:\"vc-sketch-hue-wrap\"},[n(\"hue\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-sketch-alpha-wrap\"},[n(\"alpha\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1)]),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-color-wrap\"},[n(\"div\",{staticClass:\"vc-sketch-active-color\",style:{background:e.activeColor},attrs:{\"aria-label\":\"Current color is \"+e.activeColor}}),e._v(\" \"),n(\"checkboard\")],1)]),e._v(\" \"),e.disableFields?e._e():n(\"div\",{staticClass:\"vc-sketch-field\"},[n(\"div\",{staticClass:\"vc-sketch-field--double\"},[n(\"ed-in\",{attrs:{label:\"hex\",value:e.hex},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"r\",value:e.colors.rgba.r},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"g\",value:e.colors.rgba.g},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"b\",value:e.colors.rgba.b},on:{change:e.inputChange}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"a\",value:e.colors.a,\"arrow-offset\":.01,max:1},on:{change:e.inputChange}})],1)]),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-presets\",attrs:{role:\"group\",\"aria-label\":\"A color preset, pick one to set as current color\"}},[e._l(e.presetColors,function(t){return[e.isTransparent(t)?n(\"div\",{key:t,staticClass:\"vc-sketch-presets-color\",attrs:{\"aria-label\":\"Color:\"+t},on:{click:function(n){e.handlePreset(t)}}},[n(\"checkboard\")],1):n(\"div\",{key:t,staticClass:\"vc-sketch-presets-color\",style:{background:t},attrs:{\"aria-label\":\"Color:\"+t},on:{click:function(n){e.handlePreset(t)}}})]})],2)])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(140)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(57),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(142),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Chrome.vue\",t.default=f.exports},function(e,t,n){var r=n(141);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"1cd16048\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-chrome {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3);\\n box-sizing: initial;\\n width: 225px;\\n font-family: Menlo, monospace;\\n background-color: #fff;\\n}\\n.vc-chrome-controls {\\n display: flex;\\n}\\n.vc-chrome-color-wrap {\\n position: relative;\\n width: 36px;\\n}\\n.vc-chrome-active-color {\\n position: relative;\\n width: 30px;\\n height: 30px;\\n border-radius: 15px;\\n overflow: hidden;\\n z-index: 1;\\n}\\n.vc-chrome-color-wrap .vc-checkerboard {\\n width: 30px;\\n height: 30px;\\n border-radius: 15px;\\n background-size: auto;\\n}\\n.vc-chrome-sliders {\\n flex: 1;\\n}\\n.vc-chrome-fields-wrap {\\n display: flex;\\n padding-top: 16px;\\n}\\n.vc-chrome-fields {\\n display: flex;\\n margin-left: -6px;\\n flex: 1;\\n}\\n.vc-chrome-field {\\n padding-left: 6px;\\n width: 100%;\\n}\\n.vc-chrome-toggle-btn {\\n width: 32px;\\n text-align: right;\\n position: relative;\\n}\\n.vc-chrome-toggle-icon {\\n margin-right: -4px;\\n margin-top: 12px;\\n cursor: pointer;\\n position: relative;\\n z-index: 2;\\n}\\n.vc-chrome-toggle-icon-highlight {\\n position: absolute;\\n width: 24px;\\n height: 28px;\\n background: #eee;\\n border-radius: 4px;\\n top: 10px;\\n left: 12px;\\n}\\n.vc-chrome-hue-wrap {\\n position: relative;\\n height: 10px;\\n margin-bottom: 8px;\\n}\\n.vc-chrome-alpha-wrap {\\n position: relative;\\n height: 10px;\\n}\\n.vc-chrome-hue-wrap .vc-hue {\\n border-radius: 2px;\\n}\\n.vc-chrome-alpha-wrap .vc-alpha-gradient {\\n border-radius: 2px;\\n}\\n.vc-chrome-hue-wrap .vc-hue-picker, .vc-chrome-alpha-wrap .vc-alpha-picker {\\n width: 12px;\\n height: 12px;\\n border-radius: 6px;\\n transform: translate(-6px, -2px);\\n background-color: rgb(248, 248, 248);\\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\\n}\\n.vc-chrome-body {\\n padding: 16px 16px 12px;\\n background-color: #fff;\\n}\\n.vc-chrome-saturation-wrap {\\n width: 100%;\\n padding-bottom: 55%;\\n position: relative;\\n border-radius: 2px 2px 0 0;\\n overflow: hidden;\\n}\\n.vc-chrome-saturation-wrap .vc-saturation-circle {\\n width: 12px;\\n height: 12px;\\n}\\n.vc-chrome-fields .vc-input__input {\\n font-size: 11px;\\n color: #333;\\n width: 100%;\\n border-radius: 2px;\\n border: none;\\n box-shadow: inset 0 0 0 1px #dadada;\\n height: 21px;\\n text-align: center;\\n}\\n.vc-chrome-fields .vc-input__label {\\n text-transform: uppercase;\\n font-size: 11px;\\n line-height: 11px;\\n color: #969696;\\n text-align: center;\\n display: block;\\n margin-top: 12px;\\n}\\n.vc-chrome__disable-alpha .vc-chrome-active-color {\\n width: 18px;\\n height: 18px;\\n}\\n.vc-chrome__disable-alpha .vc-chrome-color-wrap {\\n width: 30px;\\n}\\n.vc-chrome__disable-alpha .vc-chrome-hue-wrap {\\n margin-top: 4px;\\n margin-bottom: 4px;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-chrome\",e.disableAlpha?\"vc-chrome__disable-alpha\":\"\"],attrs:{role:\"application\",\"aria-label\":\"Chrome color picker\"}},[n(\"div\",{staticClass:\"vc-chrome-saturation-wrap\"},[n(\"saturation\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-body\"},[n(\"div\",{staticClass:\"vc-chrome-controls\"},[n(\"div\",{staticClass:\"vc-chrome-color-wrap\"},[n(\"div\",{staticClass:\"vc-chrome-active-color\",style:{background:e.activeColor},attrs:{\"aria-label\":\"current color is \"+e.colors.hex}}),e._v(\" \"),e.disableAlpha?e._e():n(\"checkboard\")],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-sliders\"},[n(\"div\",{staticClass:\"vc-chrome-hue-wrap\"},[n(\"hue\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-chrome-alpha-wrap\"},[n(\"alpha\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1)])]),e._v(\" \"),e.disableFields?e._e():n(\"div\",{staticClass:\"vc-chrome-fields-wrap\"},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:0===e.fieldsIndex,expression:\"fieldsIndex === 0\"}],staticClass:\"vc-chrome-fields\"},[n(\"div\",{staticClass:\"vc-chrome-field\"},[e.hasAlpha?e._e():n(\"ed-in\",{attrs:{label:\"hex\",value:e.colors.hex},on:{change:e.inputChange}}),e._v(\" \"),e.hasAlpha?n(\"ed-in\",{attrs:{label:\"hex\",value:e.colors.hex8},on:{change:e.inputChange}}):e._e()],1)]),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:1===e.fieldsIndex,expression:\"fieldsIndex === 1\"}],staticClass:\"vc-chrome-fields\"},[n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"r\",value:e.colors.rgba.r},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"g\",value:e.colors.rgba.g},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"b\",value:e.colors.rgba.b},on:{change:e.inputChange}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"a\",value:e.colors.a,\"arrow-offset\":.01,max:1},on:{change:e.inputChange}})],1)]),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:2===e.fieldsIndex,expression:\"fieldsIndex === 2\"}],staticClass:\"vc-chrome-fields\"},[n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"h\",value:e.hsl.h},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"s\",value:e.hsl.s},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"l\",value:e.hsl.l},on:{change:e.inputChange}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"a\",value:e.colors.a,\"arrow-offset\":.01,max:1},on:{change:e.inputChange}})],1)]),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-toggle-btn\",attrs:{role:\"button\",\"aria-label\":\"Change another color definition\"},on:{click:e.toggleViews}},[n(\"div\",{staticClass:\"vc-chrome-toggle-icon\"},[n(\"svg\",{staticStyle:{width:\"24px\",height:\"24px\"},attrs:{viewBox:\"0 0 24 24\"},on:{mouseover:e.showHighlight,mouseenter:e.showHighlight,mouseout:e.hideHighlight}},[n(\"path\",{attrs:{fill:\"#333\",d:\"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z\"}})])]),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.highlight,expression:\"highlight\"}],staticClass:\"vc-chrome-toggle-icon-highlight\"})])])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(144)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(58),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(146),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Twitter.vue\",t.default=f.exports},function(e,t,n){var r=n(145);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"669a48a5\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-twitter {\\n background: #fff;\\n border: 0 solid rgba(0,0,0,0.25);\\n box-shadow: 0 1px 4px rgba(0,0,0,0.25);\\n border-radius: 4px;\\n position: relative;\\n}\\n.vc-twitter-triangle {\\n width: 0px;\\n height: 0px;\\n border-style: solid;\\n border-width: 0 9px 10px 9px;\\n border-color: transparent transparent #fff transparent;\\n position: absolute;\\n}\\n.vc-twitter-triangle-shadow {\\n width: 0px;\\n height: 0px;\\n border-style: solid;\\n border-width: 0 9px 10px 9px;\\n border-color: transparent transparent rgba(0, 0, 0, .1) transparent;\\n position: absolute;\\n}\\n.vc-twitter-body {\\n padding: 15px 9px 9px 15px;\\n}\\n.vc-twitter .vc-editable-input {\\n position: relative;\\n}\\n.vc-twitter .vc-editable-input input {\\n width: 100px;\\n font-size: 14px;\\n color: #666;\\n border: 0px;\\n outline: none;\\n height: 28px;\\n box-shadow: inset 0 0 0 1px #F0F0F0;\\n box-sizing: content-box;\\n border-radius: 0 4px 4px 0;\\n float: left;\\n padding: 1px;\\n padding-left: 8px;\\n}\\n.vc-twitter .vc-editable-input span {\\n display: none;\\n}\\n.vc-twitter-hash {\\n background: #F0F0F0;\\n height: 30px;\\n width: 30px;\\n border-radius: 4px 0 0 4px;\\n float: left;\\n color: #98A1A4;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.vc-twitter-swatch {\\n width: 30px;\\n height: 30px;\\n float: left;\\n border-radius: 4px;\\n margin: 0 6px 6px 0;\\n cursor: pointer;\\n position: relative;\\n outline: none;\\n}\\n.vc-twitter-clear {\\n clear: both;\\n}\\n.vc-twitter-hide-triangle .vc-twitter-triangle {\\n display: none;\\n}\\n.vc-twitter-hide-triangle .vc-twitter-triangle-shadow {\\n display: none;\\n}\\n.vc-twitter-top-left-triangle .vc-twitter-triangle{\\n top: -10px;\\n left: 12px;\\n}\\n.vc-twitter-top-left-triangle .vc-twitter-triangle-shadow{\\n top: -11px;\\n left: 12px;\\n}\\n.vc-twitter-top-right-triangle .vc-twitter-triangle{\\n top: -10px;\\n right: 12px;\\n}\\n.vc-twitter-top-right-triangle .vc-twitter-triangle-shadow{\\n top: -11px;\\n right: 12px;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-twitter\",class:{\"vc-twitter-hide-triangle \":\"hide\"===e.triangle,\"vc-twitter-top-left-triangle \":\"top-left\"===e.triangle,\"vc-twitter-top-right-triangle \":\"top-right\"===e.triangle},style:{width:\"number\"==typeof e.width?e.width+\"px\":e.width}},[n(\"div\",{staticClass:\"vc-twitter-triangle-shadow\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-triangle\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-body\"},[e._l(e.defaultColors,function(t,r){return n(\"span\",{key:r,staticClass:\"vc-twitter-swatch\",style:{background:t,boxShadow:\"0 0 4px \"+(e.equal(t)?t:\"transparent\")},on:{click:function(n){e.handlerClick(t)}}})}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-hash\"},[e._v(\"#\")]),e._v(\" \"),n(\"editable-input\",{attrs:{label:\"#\",value:e.hex},on:{change:e.inputChange}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-clear\"})],2)])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o}])});","import '../assets/NcColorPicker-DjmfbD2K.css';\nimport { defineComponent, ref, computed } from \"vue\";\nimport { p as mdiDotsHorizontal, q as mdiCloseCircleOutline, a as mdiCheck, r as mdiArrowLeft } from \"./mdi-DkJglNiS.mjs\";\nimport { useVModel } from \"@vueuse/core\";\nimport { Chrome } from \"vue-color\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcPopover } from \"./NcPopover-BaHX3QSG.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, D as t2, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { d as defaultPalette, a as COLOR_BLACK, b as COLOR_WHITE } from \"./colors-B_oqiKWY.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t2);\nconst __default__ = {\n model: {\n event: \"update:modelValue\",\n prop: \"modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcColorPicker\",\n props: {\n advancedFields: { type: Boolean },\n clearable: { type: Boolean },\n container: { default: \"body\" },\n modelValue: { default: \"\" },\n value: { default: void 0 },\n open: { type: Boolean },\n palette: { default: () => [] },\n paletteOnly: { type: Boolean }\n },\n emits: [\"submit\", \"close\", \"update:modelValue\", \"update:value\"],\n setup(__props, { emit }) {\n const props = __props;\n const currentColor = useModelMigration(\"value\", \"update:value\", true);\n const modelOpen = useVModel(props, \"open\", emit, { passive: true, eventName: \"update:open\" });\n const HEX_REGEX = /^#([a-f0-9]{3}|[a-f0-9]{6})$/i;\n const id = createElementId();\n const advanced = ref(false);\n const normalizedPalette = computed(() => {\n let palette = props.palette;\n for (const color of palette) {\n if (typeof color === \"string\" && !color.match(HEX_REGEX) || typeof color === \"object\" && !color.color?.match(HEX_REGEX)) {\n logger.error(\"[NcColorPicker] Invalid palette passed\", { color });\n palette = [];\n break;\n }\n }\n if (palette.length === 0) {\n palette = props.clearable ? [...defaultPalette, COLOR_BLACK, COLOR_WHITE] : [...defaultPalette];\n }\n return palette.map((item) => ({\n color: typeof item === \"object\" ? item.color : item,\n name: typeof item === \"object\" && item.name ? item.name : t(\"A color with a HEX value {hex}\", { hex: typeof item === \"string\" ? item : item.color })\n }));\n });\n function handleConfirm(hideCallback) {\n emit(\"submit\", currentColor.value);\n hideCallback();\n advanced.value = false;\n }\n function toggleColor(color) {\n color = typeof color === \"string\" ? color : color.color;\n if (props.clearable && currentColor.value === color) {\n currentColor.value = void 0;\n } else {\n currentColor.value = color;\n }\n }\n function pickCustomColor(color) {\n currentColor.value = color.hex;\n }\n function getContrastColor(color) {\n return calculateLuma(color) > 0.5 ? COLOR_BLACK.color : COLOR_WHITE.color;\n }\n function calculateLuma(color) {\n const [red, green, blue] = hexToRGB(color);\n return (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255;\n }\n function hexToRGB(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : [0, 0, 0];\n }\n return { __sfc: true, props, emit, currentColor, modelOpen, HEX_REGEX, id, advanced, normalizedPalette, handleConfirm, toggleColor, pickCustomColor, getContrastColor, calculateLuma, hexToRGB, mdiArrowLeft, mdiCheck, mdiCloseCircleOutline, mdiDotsHorizontal, Chrome, NcButton, NcIconSvgWrapper, NcPopover, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcPopover, _vm._g(_vm._b({ attrs: { \"shown\": _setup.modelOpen, \"container\": _vm.container, \"popup-role\": \"dialog\" }, on: { \"update:shown\": function($event) {\n _setup.modelOpen = $event;\n }, \"apply-hide\": function($event) {\n return _setup.emit(\"close\");\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function(slotProps) {\n return [_vm._t(\"default\", null, null, slotProps)];\n } }, { key: \"default\", fn: function(slotProps) {\n return [_c(\"div\", { staticClass: \"color-picker\", class: {\n \"color-picker--advanced-fields\": _setup.advanced && _vm.advancedFields,\n \"color-picker--clearable\": _vm.clearable\n }, attrs: { \"role\": \"dialog\", \"aria-modal\": \"true\", \"aria-label\": _setup.t(\"Color picker\") } }, [_c(\"Transition\", { attrs: { \"name\": \"slide\", \"mode\": \"out-in\" } }, [!_setup.advanced ? _c(\"div\", { staticClass: \"color-picker__simple\" }, [_vm._l(_setup.normalizedPalette, function({ color, name }, index) {\n return _c(\"label\", { key: index, staticClass: \"color-picker__simple-color-circle\", class: { \"color-picker__simple-color-circle--active\": color === _setup.currentColor }, style: {\n backgroundColor: color,\n color: _setup.getContrastColor(color)\n } }, [_c(\"span\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(color) + \" -- \" + _vm._s(_setup.currentColor) + \" \")]), color === _setup.currentColor ? _c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiCheck } }) : _vm._e(), _c(\"input\", { staticClass: \"hidden-visually\", attrs: { \"type\": \"radio\", \"aria-label\": name, \"name\": `color-picker-${_setup.id}` }, domProps: { \"checked\": color === _setup.currentColor }, on: { \"click\": function($event) {\n return _setup.toggleColor(color);\n } } })], 1);\n }), _vm.clearable ? _c(\"label\", { staticClass: \"color-picker__clear\", attrs: { \"title\": _setup.t(\"No color\") } }, [_c(_setup.NcIconSvgWrapper, { attrs: { \"size\": _setup.currentColor ? 28 : 34, \"path\": _setup.mdiCloseCircleOutline } }), _c(\"input\", { staticClass: \"hidden-visually\", attrs: { \"type\": \"radio\", \"aria-label\": _setup.t(\"No color\"), \"name\": `color-picker-${_setup.id}` }, domProps: { \"checked\": !_setup.currentColor }, on: { \"click\": function($event) {\n _setup.currentColor = void 0;\n } } })], 1) : _vm._e()], 2) : _c(_setup.Chrome, { staticClass: \"color-picker__advanced\", attrs: { \"disable-alpha\": true, \"disable-fields\": !_vm.advancedFields, \"value\": _setup.currentColor ?? \"#000000\" }, on: { \"input\": _setup.pickCustomColor } })], 1), !_vm.paletteOnly ? _c(\"div\", { staticClass: \"color-picker__navigation\" }, [_setup.advanced ? _c(_setup.NcButton, { attrs: { \"aria-label\": _setup.t(\"Back\"), \"title\": _setup.t(\"Back\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n _setup.advanced = false;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"directional\": \"\", \"path\": _setup.mdiArrowLeft } })];\n }, proxy: true }], null, true) }) : _c(_setup.NcButton, { attrs: { \"aria-label\": _setup.t(\"More options\"), \"title\": _setup.t(\"More options\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n _setup.advanced = true;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiDotsHorizontal } })];\n }, proxy: true }], null, true) }), _c(_setup.NcButton, { attrs: { \"variant\": \"primary\" }, on: { \"click\": function($event) {\n return _setup.handleConfirm(slotProps.hide);\n } } }, [_vm._v(\" \" + _vm._s(_setup.t(\"Choose\")) + \" \")])], 1) : _vm._e()], 1)];\n } }], null, true) }, \"NcPopover\", _vm.$attrs, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a8b9d9f6\"\n);\nconst NcColorPicker = __component__.exports;\nexport {\n NcColorPicker as N\n};\n//# sourceMappingURL=NcColorPicker-BwqjqV32.mjs.map\n","import '../assets/NcContent-rDfulBCh.css';\nimport { Portal } from \"@linusborg/vue-simple-portal\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, K as t30, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t30);\nconst contentSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM140 44C132.268 44 126 50.268 126 58V292C126 299.732 132.268 306 140 306H372C379.732 306 386 299.732 386 292V58C386 50.268 379.732 44 372 44H140Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst navigationSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM112 44C119.732 44 126 50.268 126 58V292C126 299.732 119.732 306 112 306H20C12.268 306 6 299.732 6 292V58C6 50.268 12.268 44 20 44H112Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst _sfc_main = {\n name: \"NcContent\",\n components: {\n NcButton,\n NcIconSvgWrapper,\n Teleport: Portal\n },\n provide() {\n return {\n appName: this.appName,\n \"NcContent:setHasAppNavigation\": this.setAppNavigation,\n \"NcContent:selector\": \"#content-vue\"\n };\n },\n props: {\n /**\n * The application name to use.\n * This is used to scope all content (content, sidebar, navigation) to the application.\n */\n appName: {\n type: String,\n required: true\n }\n },\n setup() {\n const isMobile = useIsMobile();\n return {\n isMobile,\n isLegacy34\n };\n },\n data() {\n return {\n hasAppNavigation: false,\n currentFocus: \"\"\n // unknown\n };\n },\n computed: {\n currentImage() {\n if (this.currentFocus === \"navigation\") {\n return navigationSvg;\n }\n return contentSvg;\n }\n },\n beforeMount() {\n const container = document.getElementById(\"skip-actions\");\n if (container) {\n container.innerHTML = \"\";\n container.classList.add(\"vue-skip-actions\");\n }\n },\n methods: {\n t,\n openAppNavigation() {\n emit(\"toggle-navigation\", { open: true });\n this.$nextTick(() => {\n window.location.hash = \"app-navigation-vue\";\n document.getElementById(\"app-navigation-vue\").focus();\n });\n },\n setAppNavigation(value) {\n this.hasAppNavigation = value;\n if (this.currentFocus === \"\") {\n this.currentFocus = \"navigation\";\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"content\", class: [`app-${_vm.appName.toLowerCase()}`, { \"content--legacy\": _vm.isLegacy34 }], attrs: { \"id\": \"content-vue\" } }, [_c(\"Teleport\", { attrs: { \"selector\": \"#skip-actions\" } }, [_c(\"div\", { staticClass: \"vue-skip-actions__container\" }, [_c(\"div\", { staticClass: \"vue-skip-actions__headline\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Keyboard navigation help\")) + \" \")]), _c(\"div\", { staticClass: \"vue-skip-actions__buttons\" }, [_c(\"NcButton\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasAppNavigation, expression: \"hasAppNavigation\" }], attrs: { \"href\": \"#app-navigation-vue\", \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openAppNavigation.apply(null, arguments);\n }, \"focusin\": function($event) {\n _vm.currentFocus = \"navigation\";\n }, \"mouseover\": function($event) {\n _vm.currentFocus = \"navigation\";\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Skip to app navigation\")) + \" \")]), _c(\"NcButton\", { attrs: { \"href\": \"#app-content-vue\", \"variant\": \"tertiary\" }, on: { \"focusin\": function($event) {\n _vm.currentFocus = \"content\";\n }, \"mouseover\": function($event) {\n _vm.currentFocus = \"content\";\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Skip to main content\")) + \" \")])], 1), _c(\"NcIconSvgWrapper\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.isMobile, expression: \"!isMobile\" }], staticClass: \"vue-skip-actions__image\", attrs: { \"svg\": _vm.currentImage, \"size\": \"auto\" } })], 1), _vm._v(\"  \")]), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"0549f131\"\n);\nconst NcContent = __component__.exports;\nexport {\n NcContent as N\n};\n//# sourceMappingURL=NcContent-nvVwz9xO.mjs.map\n","import '../assets/NcDashboardWidget-CodY3evn.css';\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { r as register, m as t35, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-BiZ8QNOR.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"dashboard-widget\" }, [_vm.showHalfEmptyContentArea ? _c(\"NcEmptyContent\", { staticClass: \"half-screen\", attrs: { \"description\": _vm.halfEmptyContentString }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"halfEmptyContentIcon\", function() {\n return [_c(\"Check\")];\n })];\n }, proxy: true }], null, true) }) : _vm._e(), _c(\"ul\", _vm._l(_vm.displayedItems, function(item) {\n return _c(\"li\", { key: item.id }, [_vm._t(\"default\", function() {\n return [_c(\"NcDashboardWidgetItem\", _vm._g(_vm._b({ attrs: { \"item-menu\": _vm.itemMenu } }, \"NcDashboardWidgetItem\", item, false), _vm.handlers))];\n }, { \"item\": item })], 2);\n }), 0), _vm.loading ? _c(\"div\", _vm._l(7, function(i) {\n return _c(\"div\", { key: i, staticClass: \"item-list__entry\" }, [_c(\"NcAvatar\", { staticClass: \"item-avatar\", attrs: { \"size\": 44 } }), _vm._m(0, true)], 1);\n }), 0) : _vm.items.length === 0 ? _vm._t(\"empty-content\", function() {\n return [_vm.emptyContentMessage ? _c(\"NcEmptyContent\", { attrs: { \"description\": _vm.emptyContentMessage }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"emptyContentIcon\")];\n }, proxy: true }], null, true) }) : _vm._e()];\n }) : _vm.showMore ? _c(\"a\", { staticClass: \"more\", attrs: { \"href\": _vm.showMoreUrl, \"target\": \"_blank\", \"tabindex\": \"0\" } }, [_vm._v(\" \" + _vm._s(_vm.showMoreLabel) + \" \")]) : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"item__details\" }, [_c(\"h3\", [_vm._v(\" \")]), _c(\"p\", { staticClass: \"message\" }, [_vm._v(\"   \")])]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"bde19bf3\"\n);\nconst NcDashboardWidget = __component__.exports;\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-d_eqooRR.mjs.map\n","import { formatRelativeTime, getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { toValue } from \"@vueuse/core\";\nimport { computed, ref, watchEffect, onUnmounted, readonly } from \"vue\";\nimport { r as register, f as t3, a as t } from \"../chunks/_l10n-CAnZaLWU.mjs\";\nregister(t3);\nconst FEW_SECONDS_AGO = {\n long: t(\"a few seconds ago\"),\n short: t(\"seconds ago\"),\n // FOR TRANSLATORS: Shorter version of 'a few seconds ago'\n narrow: t(\"sec. ago\")\n // FOR TRANSLATORS: If possible in your language an even shorter version of 'a few seconds ago'\n};\nfunction useFormatRelativeTime(timestamp = Date.now(), opts = {}) {\n let timeoutId;\n const date = computed(() => new Date(toValue(timestamp)));\n const options = computed(() => {\n const { language, relativeTime: relativeTime2, ignoreSeconds } = toValue(opts);\n return {\n ...language && { language },\n ...relativeTime2 && { relativeTime: relativeTime2 },\n ignoreSeconds: ignoreSeconds ? FEW_SECONDS_AGO[relativeTime2 || \"long\"] : false\n };\n });\n const relativeTime = ref(\"\");\n watchEffect(updateRelativeTime);\n function updateRelativeTime() {\n const timestamp2 = date.value.getTime();\n if (Number.isNaN(timestamp2)) {\n relativeTime.value = t(\"Invalid date\");\n return;\n } else {\n relativeTime.value = formatRelativeTime(date.value, options.value);\n }\n if (toValue(opts).update !== false) {\n const diff = Math.abs(Date.now() - timestamp2);\n const interval = diff > 12e4 || options.value.ignoreSeconds ? Math.min(diff / 60, 18e5) : 1e3;\n timeoutId = window.setTimeout(updateRelativeTime, interval);\n }\n }\n onUnmounted(() => timeoutId && window.clearTimeout(timeoutId));\n return readonly(relativeTime);\n}\nfunction useFormatTime(timestamp, opts) {\n const options = computed(() => ({\n locale: getCanonicalLocale(),\n format: { dateStyle: \"short\", timeStyle: \"medium\" },\n ...toValue(opts)\n }));\n const formatter = computed(() => new Intl.DateTimeFormat(options.value.locale, options.value.format));\n return computed(() => formatter.value.format(toValue(timestamp)));\n}\nfunction useFormatDateTime(timestamp = Date.now(), opts = {}) {\n const formattedFullTime = useFormatTime(timestamp, opts);\n const relativeTime = useFormatRelativeTime(timestamp, computed(() => {\n const options = toValue(opts);\n return {\n ...options,\n relativeTime: typeof options.relativeTime === \"string\" ? options.relativeTime : \"long\"\n };\n }));\n const formattedTime = computed(() => toValue(opts).relativeTime !== false ? relativeTime.value : formattedFullTime.value);\n return {\n formattedTime,\n formattedFullTime\n };\n}\nexport {\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime\n};\n//# sourceMappingURL=useFormatDateTime.mjs.map\n","export function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n if (isDate(value)) {\n return new Date(value.getTime());\n }\n\n if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(value);\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(value);\n var day = date.getDay();\n var diff = (day + 7 - firstDayOfWeek) % 7;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nexport function startOfWeekYear(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n _ref$firstWeekContain = _ref.firstWeekContainsDate,\n firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n }\n\n var date = toDate(value);\n var year = date.getFullYear();\n var firstDateOfFirstWeek = new Date(0);\n\n for (var i = year + 1; i >= year - 1; i--) {\n firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n break;\n }\n }\n\n return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n var date = toDate(value);\n var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n var firstDateOfFirstWeek = startOfWeekYear(date, {\n firstDayOfWeek: firstDayOfWeek,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var output = \"\".concat(Math.abs(val));\n var sign = val < 0 ? '-' : '';\n\n while (output.length < len) {\n output = \"0\".concat(output);\n }\n\n return sign + output;\n}\n\nfunction getOffset(date) {\n return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n var word = h < 12 ? 'AM' : 'PM';\n return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n Y: function Y(date) {\n var y = date.getFullYear();\n return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n },\n // Year: 00, 01, ..., 99\n YY: function YY(date) {\n return pad(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n YYYY: function YYYY(date) {\n return pad(date.getFullYear(), 4);\n },\n // Month: 1, 2, ..., 12\n M: function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n MM: function MM(date) {\n return pad(date.getMonth() + 1, 2);\n },\n MMM: function MMM(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MMMM: function MMMM(date, locale) {\n return locale.months[date.getMonth()];\n },\n // Day of month: 1, 2, ..., 31\n D: function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n DD: function DD(date) {\n return pad(date.getDate(), 2);\n },\n // Hour: 0, 1, ... 23\n H: function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n HH: function HH(date) {\n return pad(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n h: function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n }\n\n if (hours > 12) {\n return hours % 12;\n }\n\n return hours;\n },\n // Hour: 01, 02, ..., 12\n hh: function hh() {\n var hours = formatFlags.h.apply(formatFlags, arguments);\n return pad(hours, 2);\n },\n // Minute: 0, 1, ..., 59\n m: function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n mm: function mm(date) {\n return pad(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n s: function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n ss: function ss(date) {\n return pad(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n S: function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n SS: function SS(date) {\n return pad(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n SSS: function SSS(date) {\n return pad(date.getMilliseconds(), 3);\n },\n // Day of week: 0, 1, ..., 6\n d: function d(date) {\n return date.getDay();\n },\n // Day of week: 'Su', 'Mo', ..., 'Sa'\n dd: function dd(date, locale) {\n return locale.weekdaysMin[date.getDay()];\n },\n // Day of week: 'Sun', 'Mon',..., 'Sat'\n ddd: function ddd(date, locale) {\n return locale.weekdaysShort[date.getDay()];\n },\n // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n dddd: function dddd(date, locale) {\n return locale.weekdays[date.getDay()];\n },\n // AM, PM\n A: function A(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), false);\n },\n // am, pm\n a: function a(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), true);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n Z: function Z(date) {\n return formatTimezone(getOffset(date), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n ZZ: function ZZ(date) {\n return formatTimezone(getOffset(date));\n },\n // Seconds timestamp: 512969520\n X: function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n x: function x(date) {\n return date.getTime();\n },\n w: function w(date, locale) {\n return getWeek(date, {\n firstDayOfWeek: locale.firstDayOfWeek,\n firstWeekContainsDate: locale.firstWeekContainsDate\n });\n },\n ww: function ww(date, locale) {\n return pad(formatFlags.w(date, locale), 2);\n }\n};\nexport function format(val, str) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var date = toDate(val);\n\n if (!isValidDate(date)) {\n return 'Invalid Date';\n }\n\n var locale = options.locale || defaultLocale;\n return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n if (p1) {\n return p1;\n }\n\n if (typeof formatFlags[match] === 'function') {\n return \"\".concat(formatFlags[match](date, locale));\n }\n\n return match;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n var tokens = Array.isArray(token) ? token : [token];\n var func;\n\n if (typeof callback === 'string') {\n func = function func(input) {\n var value = parseInt(input, 10);\n return _defineProperty({}, callback, value);\n };\n } else {\n func = callback;\n }\n\n tokens.forEach(function (key) {\n parseFlags[key] = [regex, func];\n });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n return function (locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n return new RegExp(array.map(escapeStringRegExp).join('|'));\n };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n return function (input, locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n var index = array.indexOf(input);\n\n if (index < 0) {\n throw new Error('Invalid Word');\n }\n\n return _defineProperty({}, key, index);\n };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n var year = new Date().getFullYear();\n var cent = Math.floor(year / 100);\n var value = parseInt(input, 10);\n value = (value > 68 ? cent - 1 : cent) * 100 + value;\n return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n return {\n isPM: isPM\n };\n});\n\nfunction offsetFromString(str) {\n var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n _ref9 = _slicedToArray(_ref8, 3),\n symbol = _ref9[0],\n hour = _ref9[1],\n minute = _ref9[2];\n\n var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n if (minutes === 0) {\n return 0;\n }\n\n return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n return {\n offset: offsetFromString(input)\n };\n});\naddParseFlag('x', matchSigned, function (input) {\n return {\n date: new Date(parseInt(input, 10))\n };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n return {\n date: new Date(parseFloat(input) * 1000)\n };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n if (hour !== undefined && isPM !== undefined) {\n if (isPM) {\n if (hour < 12) {\n return hour + 12;\n }\n } else if (hour === 12) {\n return 0;\n }\n }\n\n return hour;\n}\n\nfunction getFullInputArray(input) {\n var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n var result = [0, 0, 1, 0, 0, 0, 0];\n var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n var useBackup = true;\n\n for (var i = 0; i < 7; i++) {\n if (input[i] === undefined) {\n result[i] = useBackup ? backupArr[i] : result[i];\n } else {\n result[i] = input[i];\n useBackup = false;\n }\n }\n\n return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n var date;\n\n if (y < 100 && y >= 0) {\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate() {\n var date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var y = args[0];\n\n if (y < 100 && y >= 0) {\n args[0] += 400;\n date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(Date, args));\n }\n\n return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n var tokens = format.match(formattingTokens);\n\n if (!tokens) {\n throw new Error();\n }\n\n var length = tokens.length;\n var mark = {};\n\n for (var i = 0; i < length; i += 1) {\n var token = tokens[i];\n var parseTo = parseFlags[token];\n\n if (!parseTo) {\n var word = token.replace(/^\\[|\\]$/g, '');\n\n if (dateString.indexOf(word) === 0) {\n dateString = dateString.substr(word.length);\n } else {\n throw new Error('not match');\n }\n } else {\n var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n var parser = parseTo[1];\n var value = (regex.exec(dateString) || [])[0];\n var obj = parser(value, locale);\n mark = _objectSpread({}, mark, {}, obj);\n dateString = dateString.replace(value, '');\n }\n }\n\n return mark;\n}\n\nexport function parse(str, format) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n var _options$locale = options.locale,\n _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n _options$backupDate = options.backupDate,\n backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n var parseResult = makeParser(str, format, _locale);\n var year = parseResult.year,\n month = parseResult.month,\n day = parseResult.day,\n hour = parseResult.hour,\n minute = parseResult.minute,\n second = parseResult.second,\n millisecond = parseResult.millisecond,\n isPM = parseResult.isPM,\n date = parseResult.date,\n offset = parseResult.offset,\n weekday = parseResult.weekday,\n week = parseResult.week;\n\n if (date) {\n return date;\n }\n\n var inputArray = [year, month, day, hour, minute, second, millisecond];\n inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n if (week !== undefined && month === undefined && day === undefined) {\n // new Date(year, 3) make sure in current year\n var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n firstDayOfWeek: _locale.firstDayOfWeek,\n firstWeekContainsDate: _locale.firstWeekContainsDate\n });\n return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n }\n\n var parsedDate;\n var result = getFullInputArray(inputArray, backupDate);\n\n if (offset !== undefined) {\n result[6] += offset * 60 * 1000;\n parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n } else {\n parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n } // check weekday\n\n\n if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n return new Date(NaN);\n }\n\n return parsedDate;\n } catch (e) {\n return new Date(NaN);\n }\n}","import { getWeek, format, parse } from 'date-format-parse';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _extends$1() {\n return _extends$1 = Object.assign || function (a) {\n for (var b, c = 1; c < arguments.length; c++) {\n for (var d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && (a[d] = b[d]);\n }\n }\n\n return a;\n }, _extends$1.apply(this, arguments);\n}\n\nvar normalMerge = [\"attrs\", \"props\", \"domProps\"],\n toArrayMerge = [\"class\", \"style\", \"directives\"],\n functionalMerge = [\"on\", \"nativeOn\"],\n mergeJsxProps = function mergeJsxProps(a) {\n return a.reduce(function (c, a) {\n for (var b in a) {\n if (!c[b]) c[b] = a[b];else if (-1 !== normalMerge.indexOf(b)) c[b] = _extends$1({}, c[b], a[b]);else if (-1 !== toArrayMerge.indexOf(b)) {\n var d = c[b] instanceof Array ? c[b] : [c[b]],\n e = a[b] instanceof Array ? a[b] : [a[b]];\n c[b] = d.concat(e);\n } else if (-1 !== functionalMerge.indexOf(b)) {\n for (var f in a[b]) {\n if (c[b][f]) {\n var g = c[b][f] instanceof Array ? c[b][f] : [c[b][f]],\n h = a[b][f] instanceof Array ? a[b][f] : [a[b][f]];\n c[b][f] = g.concat(h);\n } else c[b][f] = a[b][f];\n }\n } else if (\"hook\" == b) for (var i in a[b]) {\n c[b][i] = c[b][i] ? mergeFn(c[b][i], a[b][i]) : a[b][i];\n } else c[b] = a[b];\n }\n\n return c;\n }, {});\n},\n mergeFn = function mergeFn(a, b) {\n return function () {\n a && a.apply(this, arguments), b && b.apply(this, arguments);\n };\n};\n\nvar helper = mergeJsxProps;\n\n// new Date(10, 0, 1) The year from 0 to 99 will be incremented by 1900 automatically.\nfunction createDate(y) {\n var M = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var d = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var h = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var m = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var s = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var ms = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var date = new Date(y, M, d, h, m, s, ms);\n\n if (y < 100 && y >= 0) {\n date.setFullYear(y);\n }\n\n return date;\n}\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date);\n}\nfunction isValidRangeDate(date) {\n return Array.isArray(date) && date.length === 2 && date.every(isValidDate) && date[0] <= date[1];\n}\nfunction isValidDates(dates) {\n return Array.isArray(dates) && dates.every(isValidDate);\n}\nfunction getValidDate(value) {\n var date = new Date(value);\n\n if (isValidDate(date)) {\n return date;\n }\n\n for (var _len = arguments.length, backup = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n backup[_key - 1] = arguments[_key];\n }\n\n if (backup.length) {\n return getValidDate.apply(void 0, backup);\n }\n\n return new Date();\n}\nfunction startOfYear(value) {\n var date = new Date(value);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(value) {\n var date = new Date(value);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfDay(value) {\n var date = new Date(value);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getCalendar(_ref) {\n var firstDayOfWeek = _ref.firstDayOfWeek,\n year = _ref.year,\n month = _ref.month;\n var arr = []; // change to the last day of the last month\n\n var calendar = createDate(year, month, 0);\n var lastDayInLastMonth = calendar.getDate(); // getDay() 0 is Sunday, 1 is Monday\n\n var firstDayInLastMonth = lastDayInLastMonth - (calendar.getDay() + 7 - firstDayOfWeek) % 7;\n\n for (var i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n arr.push(createDate(year, month, i - lastDayInLastMonth));\n } // change to the last day of the current month\n\n\n calendar.setMonth(month + 1, 0);\n var lastDayInCurrentMonth = calendar.getDate();\n\n for (var _i = 1; _i <= lastDayInCurrentMonth; _i++) {\n arr.push(createDate(year, month, _i));\n }\n\n var lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n var nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n\n for (var _i2 = 1; _i2 <= nextMonthLength; _i2++) {\n arr.push(createDate(year, month, lastDayInCurrentMonth + _i2));\n }\n\n return arr;\n}\nfunction setMonth(dirtyDate, dirtyMonth) {\n var date = new Date(dirtyDate);\n var month = typeof dirtyMonth === 'function' ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n var year = date.getFullYear();\n var daysInMonth = createDate(year, month + 1, 0).getDate();\n var day = date.getDate();\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\nfunction setYear(dirtyDate, dirtyYear) {\n var date = new Date(dirtyDate);\n var year = typeof dirtyYear === 'function' ? dirtyYear(date.getFullYear()) : dirtyYear;\n date.setFullYear(year);\n return date;\n}\nfunction assignTime(target, source) {\n var date = new Date(target);\n var time = new Date(source);\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n return date;\n}\n\n/**\n * chunk the array\n * @param {Array} arr\n * @param {Number} size\n */\nfunction chunk(arr, size) {\n if (!Array.isArray(arr)) {\n return [];\n }\n\n var result = [];\n var len = arr.length;\n var i = 0;\n size = size || len;\n\n while (i < len) {\n result.push(arr.slice(i, i += size));\n }\n\n return result;\n}\n/**\n * isObject\n * @param {*} obj\n * @returns {Boolean}\n */\n\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n/**\n * pick object\n * @param {Object} obj\n * @param {Array|String} props\n */\n\nfunction pick(obj, props) {\n if (!isObject(obj)) return {};\n\n if (!Array.isArray(props)) {\n props = [props];\n }\n\n var res = {};\n props.forEach(function (prop) {\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n });\n return res;\n}\n/**\n * deep merge two object without merging array\n * @param {object} target\n * @param {object} source\n */\n\nfunction mergeDeep(target, source) {\n if (!isObject(target)) {\n return {};\n }\n\n var result = target;\n\n if (isObject(source)) {\n Object.keys(source).forEach(function (key) {\n var value = source[key];\n\n if (isObject(value) && isObject(target[key])) {\n value = mergeDeep(target[key], value);\n }\n\n result = _objectSpread2({}, result, _defineProperty({}, key, value));\n });\n }\n\n return result;\n}\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar en = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nvar _default = locale;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n});\n\nvar en$1 = unwrapExports(en);\n\nvar lang = {\n formatLocale: en$1,\n yearFormat: 'YYYY',\n monthFormat: 'MMM',\n monthBeforeYear: true\n};\n\nvar defaultLocale = 'en';\nvar locales = {};\nlocales[defaultLocale] = lang;\nfunction locale(name, object, isLocal) {\n if (typeof name !== 'string') return locales[defaultLocale];\n var l = defaultLocale;\n\n if (locales[name]) {\n l = name;\n }\n\n if (object) {\n locales[name] = object;\n l = name;\n }\n\n if (!isLocal) {\n defaultLocale = l;\n }\n\n return locales[name] || locales[defaultLocale];\n}\n/**\n * get locale object\n * @param {string} name lang\n */\n\nfunction getLocale(name) {\n return locale(name, null, true);\n}\n\n/* istanbul ignore file */\nfunction rafThrottle(fn) {\n var isRunning = false;\n return function fnBinfRaf() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isRunning) return;\n isRunning = true;\n requestAnimationFrame(function () {\n isRunning = false;\n fn.apply(_this, args);\n });\n };\n}\n\n/**\n * get the hidden element width, height\n * @param {HTMLElement} element dom\n */\nfunction getPopupElementSize(element) {\n var originalDisplay = element.style.display;\n var originalVisibility = element.style.visibility;\n element.style.display = 'block';\n element.style.visibility = 'hidden';\n var styles = window.getComputedStyle(element);\n var width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n var height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n element.style.display = originalDisplay;\n element.style.visibility = originalVisibility;\n return {\n width: width,\n height: height\n };\n}\n/**\n * get the popup position\n * @param {HTMLElement} el relative element\n * @param {Number} targetWidth target element's width\n * @param {Number} targetHeight target element's height\n * @param {Boolean} fixed\n */\n\nfunction getRelativePosition(el, targetWidth, targetHeight, fixed) {\n var left = 0;\n var top = 0;\n var offsetX = 0;\n var offsetY = 0;\n var relativeRect = el.getBoundingClientRect();\n var dw = document.documentElement.clientWidth;\n var dh = document.documentElement.clientHeight;\n\n if (fixed) {\n offsetX = window.pageXOffset + relativeRect.left;\n offsetY = window.pageYOffset + relativeRect.top;\n }\n\n if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n left = offsetX - relativeRect.left + 1;\n } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n left = offsetX;\n } else {\n left = offsetX + relativeRect.width - targetWidth;\n }\n\n if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n top = offsetY + dh - relativeRect.top - targetHeight;\n } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n top = offsetY + relativeRect.height;\n } else {\n top = offsetY - targetHeight;\n }\n\n return {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n };\n}\nfunction getScrollParent(node) {\n var until = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;\n\n if (!node || node === until) {\n return null;\n }\n\n var style = function style(value, prop) {\n return getComputedStyle(value, null).getPropertyValue(prop);\n };\n\n var regex = /(auto|scroll)/;\n var scroll = regex.test(style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x'));\n return scroll ? node : getScrollParent(node.parentNode, until);\n}\n\n//\nvar script = {\n name: 'Popup',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n top: '',\n left: ''\n };\n },\n watch: {\n visible: {\n immediate: true,\n handler: function handler(val) {\n var _this = this;\n\n this.$nextTick(function () {\n if (val) {\n _this.displayPopup();\n }\n });\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n\n this._clickoutEvent = 'ontouchend' in document ? 'touchstart' : 'mousedown';\n document.addEventListener(this._clickoutEvent, this.handleClickOutside); // change the popup position when resize or scroll\n\n var relativeElement = this.$parent.$el;\n this._displayPopup = rafThrottle(function () {\n return _this2.displayPopup();\n });\n this._scrollParent = getScrollParent(relativeElement) || window;\n\n this._scrollParent.addEventListener('scroll', this._displayPopup);\n\n window.addEventListener('resize', this._displayPopup);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.appendToBody && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n\n document.removeEventListener(this._clickoutEvent, this.handleClickOutside);\n\n this._scrollParent.removeEventListener('scroll', this._displayPopup);\n\n window.removeEventListener('resize', this._displayPopup);\n },\n methods: {\n handleClickOutside: function handleClickOutside(evt) {\n if (!this.visible) return;\n var target = evt.target;\n var el = this.$el;\n\n if (el && !el.contains(target)) {\n this.$emit('clickoutside', evt);\n }\n },\n displayPopup: function displayPopup() {\n if (!this.visible) return;\n var popup = this.$el;\n var relativeElement = this.$parent.$el;\n var appendToBody = this.appendToBody;\n\n if (!this._popupRect) {\n this._popupRect = getPopupElementSize(popup);\n }\n\n var _this$_popupRect = this._popupRect,\n width = _this$_popupRect.width,\n height = _this$_popupRect.height;\n\n var _getRelativePosition = getRelativePosition(relativeElement, width, height, appendToBody),\n left = _getRelativePosition.left,\n top = _getRelativePosition.top;\n\n this.left = left;\n this.top = top;\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('transition', {\n attrs: {\n \"name\": _vm.prefixClass + \"-zoom-in-down\"\n }\n }, [_vm.visible ? _c('div', {\n class: _vm.prefixClass + \"-datepicker-main \" + _vm.prefixClass + \"-datepicker-popup\",\n style: {\n top: _vm.top,\n left: _vm.left,\n position: 'absolute'\n }\n }, [_vm._t(\"default\")], 2) : _vm._e()]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M940.218182 107.054545h-209.454546V46.545455h-65.163636v60.50909H363.054545V46.545455H297.890909v60.50909H83.781818c-18.618182 0-32.581818 13.963636-32.581818 32.581819v805.236363c0 18.618182 13.963636 32.581818 32.581818 32.581818h861.090909c18.618182 0 32.581818-13.963636 32.581818-32.581818V139.636364c-4.654545-18.618182-18.618182-32.581818-37.236363-32.581819zM297.890909 172.218182V232.727273h65.163636V172.218182h307.2V232.727273h65.163637V172.218182h176.872727v204.8H116.363636V172.218182h181.527273zM116.363636 912.290909V442.181818h795.927273v470.109091H116.363636z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 = normalizeComponent({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, {}, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$2 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 24 24\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 = normalizeComponent({\n render: __vue_render__$2,\n staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, {}, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$3 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M810.005333 274.005333l-237.994667 237.994667 237.994667 237.994667-60.010667 60.010667-237.994667-237.994667-237.994667 237.994667-60.010667-60.010667 237.994667-237.994667-237.994667-237.994667 60.010667-60.010667 237.994667 237.994667 237.994667-237.994667z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 = normalizeComponent({\n render: __vue_render__$3,\n staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, {}, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$1 = {\n props: {\n type: String,\n disabled: Boolean\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('button', _vm._g({\n class: [_vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-icon-\" + _vm.type, {\n disabled: _vm.disabled\n }],\n attrs: {\n \"type\": \"button\",\n \"disabled\": _vm.disabled\n }\n }, _vm.$listeners), [_c('i', {\n class: _vm.prefixClass + \"-icon-\" + _vm.type\n })]);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 = normalizeComponent({\n render: __vue_render__$4,\n staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$1, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\n\nvar script$2 = {\n name: 'TableDate',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n getWeek: {\n default: function _default() {\n return getWeek;\n }\n },\n prefixClass: {\n default: 'mx'\n },\n onDateMouseEnter: {\n default: undefined\n },\n onDateMouseLeave: {\n default: undefined\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n getRowClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n firstDayOfWeek: function firstDayOfWeek() {\n return this.getLocale().formatLocale.firstDayOfWeek || 0;\n },\n yearMonth: function yearMonth() {\n var _this$getLocale = this.getLocale(),\n yearFormat = _this$getLocale.yearFormat,\n monthBeforeYear = _this$getLocale.monthBeforeYear,\n _this$getLocale$month = _this$getLocale.monthFormat,\n monthFormat = _this$getLocale$month === void 0 ? 'MMM' : _this$getLocale$month;\n\n var yearLabel = {\n panel: 'year',\n label: this.formatDate(this.calendar, yearFormat)\n };\n var monthLabel = {\n panel: 'month',\n label: this.formatDate(this.calendar, monthFormat)\n };\n return monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel];\n },\n days: function days() {\n var locale = this.getLocale();\n var days = locale.days || locale.formatLocale.weekdaysMin;\n return days.concat(days).slice(this.firstDayOfWeek, this.firstDayOfWeek + 7);\n },\n dates: function dates() {\n var year = this.calendar.getFullYear();\n var month = this.calendar.getMonth();\n var arr = getCalendar({\n firstDayOfWeek: this.firstDayOfWeek,\n year: year,\n month: month\n });\n return chunk(arr, 7);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1);\n break;\n\n case 'last-month':\n date.setMonth(date.getMonth(), 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-month':\n date.setMonth(date.getMonth() + 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconLeftClick: function handleIconLeftClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v - 1;\n }), 'last-month');\n },\n handleIconRightClick: function handleIconRightClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v + 1;\n }), 'next-month');\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange(panel) {\n this.$emit('changepanel', panel);\n },\n handleMouseEnter: function handleMouseEnter(cell) {\n if (typeof this.onDateMouseEnter === 'function') {\n this.onDateMouseEnter(cell);\n }\n },\n handleMouseLeave: function handleMouseLeave(cell) {\n if (typeof this.onDateMouseLeave === 'function') {\n this.onDateMouseLeave(cell);\n }\n },\n handleCellClick: function handleCellClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var index = target.getAttribute('data-row-col');\n\n if (index) {\n var _index$split$map = index.split(',').map(function (v) {\n return parseInt(v, 10);\n }),\n _index$split$map2 = _slicedToArray(_index$split$map, 2),\n row = _index$split$map2[0],\n col = _index$split$map2[1];\n\n var date = this.dates[row][col];\n this.$emit('select', new Date(date));\n }\n },\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n getCellTitle: function getCellTitle(date) {\n var fmt = this.titleFormat;\n return this.formatDate(date, fmt);\n },\n getWeekNumber: function getWeekNumber(date) {\n return this.getWeek(date, this.getLocale().formatLocale);\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-date\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"left\",\n \"disabled\": _vm.isDisabledArrows('last-month')\n },\n on: {\n \"click\": _vm.handleIconLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"right\",\n \"disabled\": _vm.isDisabledArrows('next-month')\n },\n on: {\n \"click\": _vm.handleIconRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, _vm._l(_vm.yearMonth, function (item) {\n return _c('button', {\n key: item.panel,\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-current-\" + item.panel,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.handlePanelChange(item.panel);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.label) + \"\\n \")]);\n }), 0)], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-date\"\n }, [_c('thead', [_c('tr', [_vm.showWeekNumber ? _c('th', {\n class: _vm.prefixClass + \"-week-number-header\"\n }) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.days, function (day) {\n return _c('th', {\n key: day\n }, [_vm._v(_vm._s(day))]);\n })], 2)]), _vm._v(\" \"), _c('tbody', {\n on: {\n \"click\": _vm.handleCellClick\n }\n }, _vm._l(_vm.dates, function (row, i) {\n return _c('tr', {\n key: i,\n class: [_vm.prefixClass + \"-date-row\", _vm.getRowClasses(row)]\n }, [_vm.showWeekNumber ? _c('td', {\n class: _vm.prefixClass + \"-week-number\",\n attrs: {\n \"data-row-col\": i + \",0\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.getWeekNumber(row[0])) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-row-col\": i + \",\" + j,\n \"title\": _vm.getCellTitle(cell)\n },\n on: {\n \"mouseenter\": function mouseenter($event) {\n return _vm.handleMouseEnter(cell);\n },\n \"mouseleave\": function mouseleave($event) {\n return _vm.handleMouseLeave(cell);\n }\n }\n }, [_c('div', [_vm._v(_vm._s(cell.getDate()))])]);\n })], 2);\n }), 0)])])]);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 = normalizeComponent({\n render: __vue_render__$5,\n staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$2, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n//\nvar script$3 = {\n name: 'TableMonth',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n calendarYear: function calendarYear() {\n return this.calendar.getFullYear();\n },\n months: function months() {\n var locale = this.getLocale();\n var monthsLocale = locale.months || locale.formatLocale.monthsShort;\n var months = monthsLocale.map(function (text, month) {\n return {\n text: text,\n month: month\n };\n });\n return chunk(months, 3);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange() {\n this.$emit('changepanel', 'year');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var month = target.getAttribute('data-month');\n\n if (month && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(month, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-month\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handlePanelChange\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.calendarYear) + \"\\n \")])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-month\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.months, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell.month),\n attrs: {\n \"data-month\": cell.month\n }\n }, [_c('div', [_vm._v(_vm._s(cell.text))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 = normalizeComponent({\n render: __vue_render__$6,\n staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$3, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\n//\nvar script$4 = {\n name: 'TableYear',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getYearPanel: {\n type: Function\n }\n },\n computed: {\n years: function years() {\n var calendar = new Date(this.calendar);\n\n if (typeof this.getYearPanel === 'function') {\n return this.getYearPanel(calendar);\n }\n\n return this.getYears(calendar);\n },\n firstYear: function firstYear() {\n return this.years[0][0];\n },\n lastYear: function lastYear() {\n var last = function last(arr) {\n return arr[arr.length - 1];\n };\n\n return last(last(this.years));\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-decade':\n date.setFullYear(this.firstYear - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-decade':\n date.setFullYear(this.lastYear + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n getYears: function getYears(calendar) {\n var firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n var years = [];\n\n for (var i = 0; i < 10; i++) {\n years.push(firstYear + i);\n }\n\n return chunk(years, 2);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 10;\n }), 'last-decade');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 10;\n }), 'next-decade');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var year = target.getAttribute('data-year');\n\n if (year && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(year, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$7 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-year\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('span', [_vm._v(_vm._s(_vm.firstYear))]), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-decade-separator\"\n }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.lastYear))])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-year\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.years, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-year\": cell\n }\n }, [_c('div', [_vm._v(_vm._s(cell))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$7 = [];\n/* style */\n\nvar __vue_inject_styles__$7 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$7 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$7 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$7 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$7 = normalizeComponent({\n render: __vue_render__$7,\n staticRenderFns: __vue_staticRenderFns__$7\n}, __vue_inject_styles__$7, __vue_script__$4, __vue_scope_id__$7, __vue_is_functional_template__$7, __vue_module_identifier__$7, false, undefined, undefined, undefined);\n\nvar CalendarPanel = {\n name: 'CalendarPanel',\n inject: {\n prefixClass: {\n default: 'mx'\n },\n dispatchDatePicker: {\n default: function _default() {\n return function () {};\n }\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n defaultPanel: {\n type: String\n },\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n disabledDate: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n type: {\n type: String,\n default: 'date'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: undefined\n },\n getYearPanel: {\n type: Function\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n calendar: Date,\n // update date when select year or month\n partialUpdate: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n var panels = ['date', 'month', 'year'];\n var index = Math.max(panels.indexOf(this.type), panels.indexOf(this.defaultPanel));\n var panel = index !== -1 ? panels[index] : 'date';\n return {\n panel: panel,\n innerCalendar: new Date()\n };\n },\n computed: {\n innerValue: function innerValue() {\n var value = Array.isArray(this.value) ? this.value : [this.value];\n var map = {\n year: startOfYear,\n month: startOfMonth,\n date: startOfDay\n };\n var start = map[this.type] || map.date;\n return value.filter(isValidDate).map(function (v) {\n return start(v);\n });\n },\n calendarYear: function calendarYear() {\n return this.innerCalendar.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.innerCalendar.getMonth();\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: 'initCalendar'\n },\n calendar: {\n handler: 'initCalendar'\n },\n defaultValue: {\n handler: 'initCalendar'\n }\n },\n methods: {\n initCalendar: function initCalendar() {\n var calendarDate = this.calendar;\n\n if (!isValidDate(calendarDate)) {\n var length = this.innerValue.length;\n calendarDate = getValidDate(length > 0 ? this.innerValue[length - 1] : this.defaultValue);\n }\n\n this.innerCalendar = startOfMonth(calendarDate);\n },\n isDisabled: function isDisabled(date) {\n return this.disabledDate(new Date(date), this.innerValue);\n },\n emitDate: function emitDate(date, type) {\n if (!this.isDisabled(date)) {\n this.$emit('select', date, type, this.innerValue); // someone need get the first selected date to set range value. (#429)\n\n this.dispatchDatePicker('pick', date, type);\n }\n },\n handleCalendarChange: function handleCalendarChange(calendar, type) {\n var oldCalendar = new Date(this.innerCalendar);\n this.innerCalendar = calendar;\n this.$emit('update:calendar', calendar);\n this.dispatchDatePicker('calendar-change', calendar, oldCalendar, type);\n },\n handelPanelChange: function handelPanelChange(panel) {\n var oldPanel = this.panel;\n this.panel = panel;\n this.dispatchDatePicker('panel-change', panel, oldPanel);\n },\n handleSelectYear: function handleSelectYear(year) {\n if (this.type === 'year') {\n var date = this.getYearCellDate(year);\n this.emitDate(date, 'year');\n } else {\n this.handleCalendarChange(createDate(year, this.calendarMonth), 'year');\n this.handelPanelChange('month');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date = new Date(this.innerValue[0]);\n\n _date.setFullYear(year);\n\n this.emitDate(_date, 'year');\n }\n }\n },\n handleSelectMonth: function handleSelectMonth(month) {\n if (this.type === 'month') {\n var date = this.getMonthCellDate(month);\n this.emitDate(date, 'month');\n } else {\n this.handleCalendarChange(createDate(this.calendarYear, month), 'month');\n this.handelPanelChange('date');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date2 = new Date(this.innerValue[0]);\n\n _date2.setFullYear(this.calendarYear);\n\n this.emitDate(setMonth(_date2, month), 'month');\n }\n }\n },\n handleSelectDate: function handleSelectDate(date) {\n this.emitDate(date, this.type === 'week' ? 'week' : 'date');\n },\n getMonthCellDate: function getMonthCellDate(month) {\n return createDate(this.calendarYear, month);\n },\n getYearCellDate: function getYearCellDate(year) {\n return createDate(year, 0);\n },\n getDateClasses: function getDateClasses(cellDate) {\n var notCurrentMonth = cellDate.getMonth() !== this.calendarMonth;\n var classes = [];\n\n if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n classes.push('today');\n }\n\n if (notCurrentMonth) {\n classes.push('not-current-month');\n }\n\n var state = this.getStateClass(cellDate);\n\n if (!(state === 'active' && notCurrentMonth)) {\n classes.push(state);\n }\n\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getMonthClasses: function getMonthClasses(month) {\n var classes = [];\n\n if (this.type !== 'month') {\n if (this.calendarMonth === month) {\n classes.push('active');\n }\n\n var _cellDate = this.getMonthCellDate(month);\n\n if (this.disabledCalendarChanger(_cellDate, 'month')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getMonthCellDate(month);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getYearClasses: function getYearClasses(year) {\n var classes = [];\n\n if (this.type !== 'year') {\n if (this.calendarYear === year) {\n classes.push('active');\n }\n\n var _cellDate2 = this.getYearCellDate(year);\n\n if (this.disabledCalendarChanger(_cellDate2, 'year')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getYearCellDate(year);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getStateClass: function getStateClass(cellDate) {\n if (this.isDisabled(cellDate)) {\n return 'disabled';\n }\n\n if (this.innerValue.some(function (v) {\n return v.getTime() === cellDate.getTime();\n })) {\n return 'active';\n }\n\n return '';\n },\n getWeekState: function getWeekState(row) {\n if (this.type !== 'week') return '';\n var start = row[0].getTime();\n var end = row[6].getTime();\n var active = this.innerValue.some(function (v) {\n var time = v.getTime();\n return time >= start && time <= end;\n });\n return active ? \"\".concat(this.prefixClass, \"-active-week\") : '';\n }\n },\n render: function render() {\n var h = arguments[0];\n var panel = this.panel,\n innerCalendar = this.innerCalendar;\n\n if (panel === 'year') {\n return h(__vue_component__$7, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getYearClasses,\n \"getYearPanel\": this.getYearPanel\n },\n \"on\": {\n \"select\": this.handleSelectYear,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n if (panel === 'month') {\n return h(__vue_component__$6, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getMonthClasses\n },\n \"on\": {\n \"select\": this.handleSelectMonth,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n return h(__vue_component__$5, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getDateClasses,\n \"getRowClasses\": this.getWeekState,\n \"titleFormat\": this.titleFormat,\n \"showWeekNumber\": typeof this.showWeekNumber === 'boolean' ? this.showWeekNumber : this.type === 'week'\n },\n \"class\": _defineProperty({}, \"\".concat(this.prefixClass, \"-calendar-week-mode\"), this.type === 'week'),\n \"on\": {\n \"select\": this.handleSelectDate,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n};\n\nvar CalendarRange = {\n name: 'CalendarRange',\n components: {\n CalendarPanel: CalendarPanel\n },\n provide: function provide() {\n return {\n onDateMouseEnter: this.onDateMouseEnter,\n onDateMouseLeave: this.onDateMouseLeave\n };\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, CalendarPanel.props),\n data: function data() {\n return {\n innerValue: [],\n calendars: [],\n hoveredValue: null\n };\n },\n computed: {\n // Minimum difference between start and end calendars\n calendarMinDiff: function calendarMinDiff() {\n var map = {\n date: 1,\n // type:date min 1 month\n month: 1 * 12,\n // type:month min 1 year\n year: 10 * 12 // type:year min 10 year\n\n };\n return map[this.type] || map.date;\n },\n calendarMaxDiff: function calendarMaxDiff() {\n return Infinity;\n },\n defaultValues: function defaultValues() {\n return Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n var _this = this;\n\n this.innerValue = isValidRangeDate(this.value) ? this.value : [new Date(NaN), new Date(NaN)];\n var calendars = this.innerValue.map(function (v, i) {\n return startOfMonth(getValidDate(v, _this.defaultValues[i]));\n });\n this.updateCalendars(calendars);\n }\n }\n },\n methods: {\n handleSelect: function handleSelect(date, type) {\n var _this$innerValue = _slicedToArray(this.innerValue, 2),\n startValue = _this$innerValue[0],\n endValue = _this$innerValue[1];\n\n if (isValidDate(startValue) && !isValidDate(endValue)) {\n if (startValue.getTime() > date.getTime()) {\n this.innerValue = [date, startValue];\n } else {\n this.innerValue = [startValue, date];\n }\n\n this.emitDate(this.innerValue, type);\n } else {\n this.innerValue = [date, new Date(NaN)];\n }\n },\n onDateMouseEnter: function onDateMouseEnter(cell) {\n this.hoveredValue = cell;\n },\n onDateMouseLeave: function onDateMouseLeave() {\n this.hoveredValue = null;\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n updateStartCalendar: function updateStartCalendar(value) {\n this.updateCalendars([value, this.calendars[1]], 1);\n },\n updateEndCalendar: function updateEndCalendar(value) {\n this.updateCalendars([this.calendars[0], value], 0);\n },\n updateCalendars: function updateCalendars(calendars) {\n var adjustIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var gap = this.getCalendarGap(calendars);\n\n if (gap) {\n var calendar = new Date(calendars[adjustIndex]);\n calendar.setMonth(calendar.getMonth() + (adjustIndex === 0 ? -gap : gap));\n calendars[adjustIndex] = calendar;\n }\n\n this.calendars = calendars;\n },\n getCalendarGap: function getCalendarGap(calendars) {\n var _calendars = _slicedToArray(calendars, 2),\n calendarLeft = _calendars[0],\n calendarRight = _calendars[1];\n\n var yearDiff = calendarRight.getFullYear() - calendarLeft.getFullYear();\n var monthDiff = calendarRight.getMonth() - calendarLeft.getMonth();\n var diff = yearDiff * 12 + monthDiff;\n var min = this.calendarMinDiff;\n var max = this.calendarMaxDiff;\n\n if (diff < min) {\n return min - diff;\n }\n\n if (diff > max) {\n return max - diff;\n }\n\n return 0;\n },\n getRangeClasses: function getRangeClasses(cellDate, currentDates, classnames) {\n var classes = [].concat(this.getClasses(cellDate, currentDates, classnames));\n if (/disabled|active/.test(classnames)) return classes;\n\n var inRange = function inRange(data, range) {\n var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {\n return v.getTime();\n };\n var value = fn(data);\n\n var _range$map = range.map(fn),\n _range$map2 = _slicedToArray(_range$map, 2),\n min = _range$map2[0],\n max = _range$map2[1];\n\n if (min > max) {\n var _ref = [max, min];\n min = _ref[0];\n max = _ref[1];\n }\n\n return value > min && value < max;\n };\n\n if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n return classes.concat('in-range');\n }\n\n if (currentDates.length === 1 && this.hoveredValue && inRange(cellDate, [currentDates[0], this.hoveredValue])) {\n return classes.concat('hover-in-range');\n }\n\n return classes;\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var calendarRange = this.calendars.map(function (calendar, index) {\n var props = _objectSpread2({}, _this2.$props, {\n calendar: calendar,\n value: _this2.innerValue,\n defaultValue: _this2.defaultValues[index],\n getClasses: _this2.getRangeClasses,\n // don't update when range is true\n partialUpdate: false\n });\n\n var on = {\n select: _this2.handleSelect,\n 'update:calendar': index === 0 ? _this2.updateStartCalendar : _this2.updateEndCalendar\n };\n return h(\"calendar-panel\", {\n \"props\": _objectSpread2({}, props),\n \"on\": _objectSpread2({}, on)\n });\n });\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [calendarRange]);\n }\n};\n\nvar scrollBarWidth;\nfunction getScrollbarWidth () {\n if (typeof window === 'undefined') return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n var outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return scrollBarWidth;\n}\n\n//\nvar script$5 = {\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n data: function data() {\n return {\n scrollbarWidth: 0,\n thumbTop: '',\n thumbHeight: ''\n };\n },\n created: function created() {\n this.scrollbarWidth = getScrollbarWidth();\n document.addEventListener('mouseup', this.handleDragend);\n },\n beforeDestroy: function beforeDestroy() {\n document.addEventListener('mouseup', this.handleDragend);\n },\n mounted: function mounted() {\n this.$nextTick(this.getThumbSize);\n },\n methods: {\n getThumbSize: function getThumbSize() {\n var wrap = this.$refs.wrap;\n if (!wrap) return;\n var heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;\n this.thumbHeight = heightPercentage < 100 ? \"\".concat(heightPercentage, \"%\") : '';\n },\n handleScroll: function handleScroll(evt) {\n var el = evt.currentTarget;\n var scrollHeight = el.scrollHeight,\n scrollTop = el.scrollTop;\n this.thumbTop = \"\".concat(scrollTop * 100 / scrollHeight, \"%\");\n },\n handleDragstart: function handleDragstart(evt) {\n evt.stopImmediatePropagation();\n this._draggable = true;\n var offsetTop = this.$refs.thumb.offsetTop;\n this._prevY = evt.clientY - offsetTop;\n document.addEventListener('mousemove', this.handleDraging);\n },\n handleDraging: function handleDraging(evt) {\n if (!this._draggable) return;\n var clientY = evt.clientY;\n var wrap = this.$refs.wrap;\n var scrollHeight = wrap.scrollHeight,\n clientHeight = wrap.clientHeight;\n var offsetY = clientY - this._prevY;\n var top = offsetY * scrollHeight / clientHeight;\n wrap.scrollTop = top;\n },\n handleDragend: function handleDragend() {\n if (this._draggable) {\n this._draggable = false;\n document.removeEventListener('mousemove', this.handleDraging);\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$8 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-scrollbar\",\n style: {\n position: 'relative',\n overflow: 'hidden'\n }\n }, [_c('div', {\n ref: \"wrap\",\n class: _vm.prefixClass + \"-scrollbar-wrap\",\n style: {\n marginRight: \"-\" + _vm.scrollbarWidth + \"px\"\n },\n on: {\n \"scroll\": _vm.handleScroll\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-scrollbar-track\"\n }, [_c('div', {\n ref: \"thumb\",\n class: _vm.prefixClass + \"-scrollbar-thumb\",\n style: {\n height: _vm.thumbHeight,\n top: _vm.thumbTop\n },\n on: {\n \"mousedown\": _vm.handleDragstart\n }\n })])]);\n};\n\nvar __vue_staticRenderFns__$8 = [];\n/* style */\n\nvar __vue_inject_styles__$8 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$8 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$8 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$8 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$8 = normalizeComponent({\n render: __vue_render__$8,\n staticRenderFns: __vue_staticRenderFns__$8\n}, __vue_inject_styles__$8, __vue_script__$5, __vue_scope_id__$8, __vue_is_functional_template__$8, __vue_module_identifier__$8, false, undefined, undefined, undefined);\n\n//\n\nvar padNumber = function padNumber(value) {\n value = parseInt(value, 10);\n return value < 10 ? \"0\".concat(value) : \"\".concat(value);\n};\n\nvar generateOptions = function generateOptions(length, step, options) {\n if (Array.isArray(options)) {\n return options.filter(function (v) {\n return v >= 0 && v < length;\n });\n }\n\n if (step <= 0) {\n step = 1;\n }\n\n var arr = [];\n\n for (var i = 0; i < length; i += step) {\n arr.push(i);\n }\n\n return arr;\n};\n\nvar scrollTo = function scrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n // jump to target if duration zero\n if (duration <= 0) {\n requestAnimationFrame(function () {\n element.scrollTop = to;\n });\n return;\n }\n\n var difference = to - element.scrollTop;\n var tick = difference / duration * 10;\n requestAnimationFrame(function () {\n var scrollTop = element.scrollTop + tick;\n\n if (scrollTop >= to) {\n element.scrollTop = to;\n return;\n }\n\n element.scrollTop = scrollTop;\n scrollTo(element, to, duration - 10);\n });\n};\n\nvar script$6 = {\n name: 'ListColumns',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n scrollDuration: {\n type: Number,\n default: 100\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n showHour: {\n type: Boolean,\n default: true\n },\n showMinute: {\n type: Boolean,\n default: true\n },\n showSecond: {\n type: Boolean,\n default: true\n },\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n use12h: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n columns: function columns() {\n var cols = [];\n if (this.showHour) cols.push({\n type: 'hour',\n list: this.getHoursList()\n });\n if (this.showMinute) cols.push({\n type: 'minute',\n list: this.getMinutesList()\n });\n if (this.showSecond) cols.push({\n type: 'second',\n list: this.getSecondsList()\n });\n if (this.use12h) cols.push({\n type: 'ampm',\n list: this.getAMPMList()\n });\n return cols.filter(function (v) {\n return v.list.length > 0;\n });\n }\n },\n watch: {\n date: {\n handler: function handler() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.scrollToSelected(_this.scrollDuration);\n });\n }\n }\n },\n mounted: function mounted() {\n this.scrollToSelected(0);\n },\n methods: {\n getHoursList: function getHoursList() {\n var _this2 = this;\n\n return generateOptions(this.use12h ? 12 : 24, this.hourStep, this.hourOptions).map(function (num) {\n var date = new Date(_this2.date);\n var text = padNumber(num);\n\n if (_this2.use12h) {\n if (num === 0) {\n text = '12';\n }\n\n if (date.getHours() >= 12) {\n num += 12;\n }\n }\n\n var value = date.setHours(num);\n return {\n value: value,\n text: text\n };\n });\n },\n getMinutesList: function getMinutesList() {\n var _this3 = this;\n\n return generateOptions(60, this.minuteStep, this.minuteOptions).map(function (num) {\n var value = new Date(_this3.date).setMinutes(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getSecondsList: function getSecondsList() {\n var _this4 = this;\n\n return generateOptions(60, this.secondStep, this.secondOptions).map(function (num) {\n var value = new Date(_this4.date).setSeconds(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getAMPMList: function getAMPMList() {\n var _this5 = this;\n\n return ['AM', 'PM'].map(function (text, i) {\n var date = new Date(_this5.date);\n var value = date.setHours(date.getHours() % 12 + i * 12);\n return {\n text: text,\n value: value\n };\n });\n },\n scrollToSelected: function scrollToSelected(duration) {\n var elements = this.$el.querySelectorAll('.active');\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var scrollElement = getScrollParent(element, this.$el);\n\n if (scrollElement) {\n var to = element.offsetTop;\n scrollTo(scrollElement, to, duration);\n }\n }\n },\n handleSelect: function handleSelect(evt) {\n var target = evt.target,\n currentTarget = evt.currentTarget;\n if (target.tagName.toUpperCase() !== 'LI') return;\n var type = currentTarget.getAttribute('data-type');\n var colIndex = parseInt(currentTarget.getAttribute('data-index'), 10);\n var cellIndex = parseInt(target.getAttribute('data-index'), 10);\n var value = this.columns[colIndex].list[cellIndex].value;\n this.$emit('select', value, type);\n }\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$9 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time-columns\"\n }, _vm._l(_vm.columns, function (col, i) {\n return _c('scrollbar-vertical', {\n key: i,\n class: _vm.prefixClass + \"-time-column\"\n }, [_c('ul', {\n class: _vm.prefixClass + \"-time-list\",\n attrs: {\n \"data-type\": col.type,\n \"data-index\": i\n },\n on: {\n \"click\": _vm.handleSelect\n }\n }, _vm._l(col.list, function (item, j) {\n return _c('li', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-item\", _vm.getClasses(item.value, col.type)],\n attrs: {\n \"data-index\": j\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0)]);\n }), 1);\n};\n\nvar __vue_staticRenderFns__$9 = [];\n/* style */\n\nvar __vue_inject_styles__$9 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$9 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$9 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$9 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$9 = normalizeComponent({\n render: __vue_render__$9,\n staticRenderFns: __vue_staticRenderFns__$9\n}, __vue_inject_styles__$9, __vue_script__$6, __vue_scope_id__$9, __vue_is_functional_template__$9, __vue_module_identifier__$9, false, undefined, undefined, undefined);\n\n//\n\nfunction parseOption() {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var values = time.split(':');\n\n if (values.length >= 2) {\n var hours = parseInt(values[0], 10);\n var minutes = parseInt(values[1], 10);\n return {\n hours: hours,\n minutes: minutes\n };\n }\n\n return null;\n}\n\nvar scrollTo$1 = function scrollTo(element, to) {\n if (element) {\n element.scrollTop = to;\n }\n};\n\nvar script$7 = {\n name: 'ListOptions',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n options: {\n type: [Object, Function],\n default: function _default() {\n return [];\n }\n },\n format: {\n type: String,\n default: 'HH:mm:ss'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n list: function list() {\n var result = [];\n var options = this.options;\n\n if (typeof options === 'function') {\n return options() || [];\n }\n\n var start = parseOption(options.start);\n var end = parseOption(options.end);\n var step = parseOption(options.step);\n var fmt = options.format || this.format;\n\n if (start && end && step) {\n var startMinutes = start.minutes + start.hours * 60;\n var endMinutes = end.minutes + end.hours * 60;\n var stepMinutes = step.minutes + step.hours * 60;\n var len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n\n for (var i = 0; i <= len; i++) {\n var timeMinutes = startMinutes + i * stepMinutes;\n var hours = Math.floor(timeMinutes / 60);\n var minutes = timeMinutes % 60;\n var value = new Date(this.date).setHours(hours, minutes, 0);\n result.push({\n value: value,\n text: this.formatDate(value, fmt)\n });\n }\n }\n\n return result;\n }\n },\n mounted: function mounted() {\n this.scrollToSelected();\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n scrollToSelected: function scrollToSelected() {\n var element = this.$el.querySelector('.active');\n if (!element) return;\n var scrollElement = getScrollParent(element, this.$el);\n if (!scrollElement) return;\n var to = element.offsetTop;\n scrollTo$1(scrollElement, to);\n },\n handleSelect: function handleSelect(value) {\n this.$emit('select', value, 'time');\n }\n }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n/* template */\n\nvar __vue_render__$a = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('scrollbar-vertical', _vm._l(_vm.list, function (item) {\n return _c('div', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-option\", _vm.getClasses(item.value)],\n on: {\n \"click\": function click($event) {\n return _vm.handleSelect(item.value);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0);\n};\n\nvar __vue_staticRenderFns__$a = [];\n/* style */\n\nvar __vue_inject_styles__$a = undefined;\n/* scoped */\n\nvar __vue_scope_id__$a = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$a = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$a = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$a = normalizeComponent({\n render: __vue_render__$a,\n staticRenderFns: __vue_staticRenderFns__$a\n}, __vue_inject_styles__$a, __vue_script__$7, __vue_scope_id__$a, __vue_is_functional_template__$a, __vue_module_identifier__$a, false, undefined, undefined, undefined);\n\n//\nvar script$8 = {\n name: 'TimePanel',\n components: {\n ListColumns: __vue_component__$9,\n ListOptions: __vue_component__$a\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n format: {\n default: 'HH:mm:ss'\n },\n timeTitleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n showTimeHeader: {\n type: Boolean,\n default: false\n },\n disabledTime: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n timePickerOptions: {\n type: [Object, Function],\n default: function _default() {\n return null;\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n showHour: {\n type: Boolean,\n default: undefined\n },\n showMinute: {\n type: Boolean,\n default: undefined\n },\n showSecond: {\n type: Boolean,\n default: undefined\n },\n use12h: {\n type: Boolean,\n default: undefined\n },\n scrollDuration: {\n type: Number,\n default: 100\n }\n },\n data: function data() {\n return {\n innerValue: getValidDate(this.value, this.defaultValue)\n };\n },\n computed: {\n title: function title() {\n var titleFormat = this.timeTitleFormat;\n var date = new Date(this.innerValue);\n return this.formatDate(date, titleFormat);\n },\n innerForamt: function innerForamt() {\n return typeof this.format === 'string' ? this.format : 'HH:mm:ss';\n },\n ShowHourMinuteSecondAMPM: function ShowHourMinuteSecondAMPM() {\n var _this = this;\n\n var fmt = this.innerForamt;\n var defaultProps = {\n showHour: /[HhKk]/.test(fmt),\n showMinute: /m/.test(fmt),\n showSecond: /s/.test(fmt),\n use12h: /a/i.test(fmt)\n };\n var obj = {};\n Object.keys(defaultProps).forEach(function (key) {\n obj[key] = typeof _this[key] === 'boolean' ? _this[key] : defaultProps[key];\n });\n return obj;\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n this.innerValue = getValidDate(this.value, this.defaultValue);\n }\n }\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n isDisabledTime: function isDisabledTime(value) {\n return this.disabledTime(new Date(value));\n },\n isDisabledHour: function isDisabledHour(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setMinutes(0, 0, 0)) && this.isDisabledTime(value.setMinutes(59, 59, 999));\n },\n isDisabledMinute: function isDisabledMinute(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setSeconds(0, 0)) && this.isDisabledTime(value.setSeconds(59, 999));\n },\n isDisabledAMPM: function isDisabledAMPM(date) {\n var value = new Date(date);\n var minHour = value.getHours() < 12 ? 0 : 12;\n var maxHour = minHour + 11;\n return this.isDisabledTime(value) && this.isDisabledTime(value.setHours(minHour, 0, 0, 0)) && this.isDisabledTime(value.setHours(maxHour, 59, 59, 999));\n },\n isDisabled: function isDisabled(date, type) {\n if (type === 'hour') {\n return this.isDisabledHour(date);\n }\n\n if (type === 'minute') {\n return this.isDisabledMinute(date);\n }\n\n if (type === 'ampm') {\n return this.isDisabledAMPM(date);\n }\n\n return this.isDisabledTime(date);\n },\n handleSelect: function handleSelect(value, type) {\n var date = new Date(value);\n\n if (!this.isDisabled(value, type)) {\n this.innerValue = date;\n\n if (!this.isDisabledTime(date)) {\n this.$emit('select', date, type);\n }\n }\n },\n handleClickTitle: function handleClickTitle() {\n this.$emit('clicktitle');\n },\n getClasses: function getClasses(value, type) {\n var cellDate = new Date(value);\n\n if (this.isDisabled(value, type)) {\n return 'disabled';\n }\n\n if (cellDate.getTime() === this.innerValue.getTime()) {\n return 'active';\n }\n\n return '';\n }\n }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n/* template */\n\nvar __vue_render__$b = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time\"\n }, [_vm.showTimeHeader ? _c('div', {\n class: _vm.prefixClass + \"-time-header\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-time-header-title\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handleClickTitle\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")])]) : _vm._e(), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-time-content\"\n }, [_vm.timePickerOptions ? _c('list-options', {\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"options\": _vm.timePickerOptions,\n \"format\": _vm.innerForamt\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }) : _c('list-columns', _vm._b({\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"hour-options\": _vm.hourOptions,\n \"minute-options\": _vm.minuteOptions,\n \"second-options\": _vm.secondOptions,\n \"hour-step\": _vm.hourStep,\n \"minute-step\": _vm.minuteStep,\n \"second-step\": _vm.secondStep,\n \"scroll-duration\": _vm.scrollDuration\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }, 'list-columns', _vm.ShowHourMinuteSecondAMPM, false))], 1)]);\n};\n\nvar __vue_staticRenderFns__$b = [];\n/* style */\n\nvar __vue_inject_styles__$b = undefined;\n/* scoped */\n\nvar __vue_scope_id__$b = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$b = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$b = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$b = normalizeComponent({\n render: __vue_render__$b,\n staticRenderFns: __vue_staticRenderFns__$b\n}, __vue_inject_styles__$b, __vue_script__$8, __vue_scope_id__$b, __vue_is_functional_template__$b, __vue_module_identifier__$b, false, undefined, undefined, undefined);\n\nvar TimeRange = {\n name: 'TimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, __vue_component__$b.props),\n data: function data() {\n return {\n startValue: new Date(NaN),\n endValue: new Date(NaN)\n };\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n if (isValidRangeDate(this.value)) {\n var _this$value = _slicedToArray(this.value, 2),\n startValue = _this$value[0],\n endValue = _this$value[1];\n\n this.startValue = startValue;\n this.endValue = endValue;\n } else {\n this.startValue = new Date(NaN);\n this.endValue = new Date(NaN);\n }\n }\n }\n },\n methods: {\n emitChange: function emitChange(type, index) {\n var date = [this.startValue, this.endValue];\n this.$emit('select', date, type === 'time' ? 'time-range' : type, index);\n },\n handleSelectStart: function handleSelectStart(date, type) {\n this.startValue = date; // check the NaN\n\n if (!(this.endValue.getTime() >= date.getTime())) {\n this.endValue = date;\n }\n\n this.emitChange(type, 0);\n },\n handleSelectEnd: function handleSelectEnd(date, type) {\n // check the NaN\n this.endValue = date;\n\n if (!(this.startValue.getTime() <= date.getTime())) {\n this.startValue = date;\n }\n\n this.emitChange(type, 1);\n },\n disabledStartTime: function disabledStartTime(date) {\n return this.disabledTime(date, 0);\n },\n disabledEndTime: function disabledEndTime(date) {\n return date.getTime() < this.startValue.getTime() || this.disabledTime(date, 1);\n }\n },\n render: function render() {\n var h = arguments[0];\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.startValue,\n defaultValue: defaultValues[0],\n disabledTime: this.disabledStartTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectStart\n }))\n }), h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.endValue,\n defaultValue: defaultValues[1],\n disabledTime: this.disabledEndTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectEnd\n }))\n })]);\n }\n};\n\nvar DatetimePanel = {\n name: 'DatetimePanel',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarPanel.props, {}, __vue_component__$b.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(date, type) {\n this.$emit('select', date, type);\n },\n handleSelect: function handleSelect(date, type) {\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var datetime = assignTime(date, getValidDate(this.value, this.defaultValue));\n\n if (this.disabledTime(new Date(datetime))) {\n // set the time of defalutValue;\n datetime = assignTime(date, this.defaultValue);\n\n if (this.disabledTime(new Date(datetime))) {\n // if disabled don't emit date\n this.currentValue = datetime;\n return;\n }\n }\n\n this.emitDate(datetime, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarPanel.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(__vue_component__$b.props)), {\n showTimeHeader: true,\n value: this.currentValue\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarPanel, helper([{}, calendarProps])), this.timeVisible && h(__vue_component__$b, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar DatetimeRange = {\n name: 'DatetimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarRange.props, {}, TimeRange.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n handleSelect: function handleSelect(dates, type) {\n var _this = this;\n\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var datetimes = dates.map(function (date, i) {\n var time = isValidRangeDate(_this.value) ? _this.value[i] : defaultValues[i];\n return assignTime(date, time);\n });\n\n if (datetimes[1].getTime() < datetimes[0].getTime()) {\n datetimes = [datetimes[0], datetimes[0]];\n }\n\n if (datetimes.some(this.disabledTime)) {\n datetimes = dates.map(function (date, i) {\n return assignTime(date, defaultValues[i]);\n });\n\n if (datetimes.some(this.disabledTime)) {\n this.currentValue = datetimes;\n return;\n }\n }\n\n this.emitDate(datetimes, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarRange.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(TimeRange.props)), {\n value: this.currentValue,\n showTimeHeader: true\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarRange, helper([{}, calendarProps])), this.timeVisible && h(TimeRange, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar componentMap = {\n default: CalendarPanel,\n time: __vue_component__$b,\n datetime: DatetimePanel\n};\nvar componentRangeMap = {\n default: CalendarRange,\n time: TimeRange,\n datetime: DatetimeRange\n};\nvar DatePicker = {\n name: 'DatePicker',\n provide: function provide() {\n var _this = this;\n\n return {\n // make locale reactive\n getLocale: function getLocale() {\n return _this.locale;\n },\n getWeek: this.getWeek,\n prefixClass: this.prefixClass,\n dispatchDatePicker: this.$emit.bind(this)\n };\n },\n props: _objectSpread2({}, DatetimePanel.props, {\n value: {},\n valueType: {\n type: String,\n default: 'date' // date, format, timestamp, or token like 'YYYY-MM-DD'\n\n },\n type: {\n type: String,\n // ['date', 'datetime', 'time', 'year', 'month', 'week']\n default: 'date'\n },\n format: {\n type: String\n },\n formatter: {\n type: Object\n },\n range: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n rangeSeparator: {\n type: String\n },\n lang: {\n type: [String, Object]\n },\n placeholder: {\n type: String,\n default: ''\n },\n editable: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: true\n },\n prefixClass: {\n type: String,\n default: 'mx'\n },\n inputClass: {},\n inputAttr: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n open: {\n type: Boolean,\n default: undefined\n },\n popupClass: {},\n popupStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n inline: {\n type: Boolean,\n default: false\n },\n confirm: {\n type: Boolean,\n default: false\n },\n confirmText: {\n type: String,\n default: 'OK'\n },\n renderInputText: {\n type: Function\n },\n shortcuts: {\n type: Array,\n validator: function validator(value) {\n return Array.isArray(value) && value.every(function (v) {\n return isObject(v) && typeof v.text === 'string' && typeof v.onClick === 'function';\n });\n },\n default: function _default() {\n return [];\n }\n }\n }),\n data: function data() {\n return {\n // cache the innervalue, wait to confirm\n currentValue: null,\n userInput: null,\n defaultOpen: false,\n mouseInInput: false\n };\n },\n computed: {\n popupVisible: function popupVisible() {\n return !this.disabled && (typeof this.open === 'boolean' ? this.open : this.defaultOpen);\n },\n innerRangeSeparator: function innerRangeSeparator() {\n return this.rangeSeparator || (this.multiple ? ',' : ' ~ ');\n },\n innerFormat: function innerFormat() {\n var map = {\n date: 'YYYY-MM-DD',\n datetime: 'YYYY-MM-DD HH:mm:ss',\n year: 'YYYY',\n month: 'YYYY-MM',\n time: 'HH:mm:ss',\n week: 'w'\n };\n return this.format || map[this.type] || map.date;\n },\n innerValue: function innerValue() {\n var value = this.value;\n\n if (this.validMultipleType) {\n value = Array.isArray(value) ? value : [];\n return value.map(this.value2date);\n }\n\n if (this.range) {\n value = Array.isArray(value) ? value.slice(0, 2) : [null, null];\n return value.map(this.value2date);\n }\n\n return this.value2date(value);\n },\n text: function text() {\n var _this2 = this;\n\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n if (typeof this.renderInputText === 'function') {\n return this.renderInputText(this.innerValue);\n }\n\n if (!this.isValidValue(this.innerValue)) {\n return '';\n }\n\n if (Array.isArray(this.innerValue)) {\n return this.innerValue.map(function (v) {\n return _this2.formatDate(v);\n }).join(this.innerRangeSeparator);\n }\n\n return this.formatDate(this.innerValue);\n },\n showClearIcon: function showClearIcon() {\n return !this.disabled && this.clearable && this.text && this.mouseInInput;\n },\n locale: function locale() {\n if (isObject(this.lang)) {\n return mergeDeep(getLocale(), this.lang);\n }\n\n return getLocale(this.lang);\n },\n validMultipleType: function validMultipleType() {\n var types = ['date', 'month', 'year'];\n return this.multiple && !this.range && types.indexOf(this.type) !== -1;\n }\n },\n watch: {\n innerValue: {\n immediate: true,\n handler: function handler(val) {\n this.currentValue = val;\n }\n },\n popupVisible: {\n handler: function handler(val) {\n if (val) {\n this.currentValue = this.innerValue;\n }\n }\n }\n },\n created: function created() {\n if (_typeof(this.format) === 'object') {\n console.warn(\"[vue2-datepicker]: The prop `format` don't support Object any more. You can use the new prop `formatter` to replace it\");\n }\n },\n methods: {\n handleMouseEnter: function handleMouseEnter() {\n this.mouseInInput = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n this.mouseInInput = false;\n },\n handleClickOutSide: function handleClickOutSide(evt) {\n var target = evt.target;\n\n if (!this.$el.contains(target)) {\n this.closePopup();\n }\n },\n getFormatter: function getFormatter(key) {\n return isObject(this.formatter) && this.formatter[key] || isObject(this.format) && this.format[key];\n },\n getWeek: function getWeek$1(date, options) {\n if (typeof this.getFormatter('getWeek') === 'function') {\n return this.getFormatter('getWeek')(date, options);\n }\n\n return getWeek(date, options);\n },\n parseDate: function parseDate(value, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('parse') === 'function') {\n return this.getFormatter('parse')(value, fmt);\n }\n\n var backupDate = new Date();\n return parse(value, fmt, {\n locale: this.locale.formatLocale,\n backupDate: backupDate\n });\n },\n formatDate: function formatDate(date, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('stringify') === 'function') {\n return this.getFormatter('stringify')(date, fmt);\n }\n\n return format(date, fmt, {\n locale: this.locale.formatLocale\n });\n },\n // transform the outer value to inner date\n value2date: function value2date(value) {\n switch (this.valueType) {\n case 'date':\n return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n\n case 'timestamp':\n return typeof value === 'number' ? new Date(value) : new Date(NaN);\n\n case 'format':\n return typeof value === 'string' ? this.parseDate(value) : new Date(NaN);\n\n default:\n return typeof value === 'string' ? this.parseDate(value, this.valueType) : new Date(NaN);\n }\n },\n // transform the inner date to outer value\n date2value: function date2value(date) {\n if (!isValidDate(date)) return null;\n\n switch (this.valueType) {\n case 'date':\n return date;\n\n case 'timestamp':\n return date.getTime();\n\n case 'format':\n return this.formatDate(date);\n\n default:\n return this.formatDate(date, this.valueType);\n }\n },\n emitValue: function emitValue(date, type) {\n var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // fix IE11/10 trigger input event when input is focused. (placeholder !== '')\n this.userInput = null;\n var value = Array.isArray(date) ? date.map(this.date2value) : this.date2value(date);\n this.$emit('input', value);\n this.$emit('change', value, type);\n\n if (close) {\n this.closePopup();\n }\n\n return value;\n },\n isValidValue: function isValidValue(value) {\n if (this.validMultipleType) {\n return isValidDates(value);\n }\n\n if (this.range) {\n return isValidRangeDate(value);\n }\n\n return isValidDate(value);\n },\n isValidValueAndNotDisabled: function isValidValueAndNotDisabled(value) {\n if (!this.isValidValue(value)) {\n return false;\n }\n\n var disabledDate = typeof this.disabledDate === 'function' ? this.disabledDate : function () {\n return false;\n };\n var disabledTime = typeof this.disabledTime === 'function' ? this.disabledTime : function () {\n return false;\n };\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return value.every(function (v) {\n return !disabledDate(v) && !disabledTime(v);\n });\n },\n handleMultipleDates: function handleMultipleDates(date, dates) {\n if (this.validMultipleType && dates) {\n var nextDates = dates.filter(function (v) {\n return v.getTime() !== date.getTime();\n });\n\n if (nextDates.length === dates.length) {\n nextDates.push(date);\n }\n\n return nextDates;\n }\n\n return date;\n },\n handleSelectDate: function handleSelectDate(val, type, dates) {\n val = this.handleMultipleDates(val, dates);\n\n if (this.confirm) {\n this.currentValue = val;\n } else {\n this.emitValue(val, type, // this.type === 'datetime', click the time should close popup\n !this.validMultipleType && (type === this.type || type === 'time'));\n }\n },\n clear: function clear() {\n this.emitValue(this.range ? [null, null] : null);\n this.$emit('clear');\n },\n handleClear: function handleClear(evt) {\n evt.stopPropagation();\n this.clear();\n },\n handleConfirmDate: function handleConfirmDate() {\n var value = this.emitValue(this.currentValue);\n this.$emit('confirm', value);\n },\n handleSelectShortcut: function handleSelectShortcut(evt) {\n var index = evt.currentTarget.getAttribute('data-index');\n var item = this.shortcuts[parseInt(index, 10)];\n\n if (isObject(item) && typeof item.onClick === 'function') {\n var date = item.onClick(this);\n\n if (date) {\n this.emitValue(date);\n }\n }\n },\n openPopup: function openPopup(evt) {\n if (this.popupVisible || this.disabled) return;\n this.defaultOpen = true;\n this.$emit('open', evt);\n this.$emit('update:open', true);\n },\n closePopup: function closePopup() {\n if (!this.popupVisible) return;\n this.defaultOpen = false;\n this.$emit('close');\n this.$emit('update:open', false);\n },\n blur: function blur() {\n // when use slot input\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n },\n focus: function focus() {\n if (this.$refs.input) {\n this.$refs.input.focus();\n }\n },\n handleInputChange: function handleInputChange() {\n var _this3 = this;\n\n if (!this.editable || this.userInput === null) return;\n var text = this.userInput.trim();\n this.userInput = null;\n\n if (text === '') {\n this.clear();\n return;\n }\n\n var date;\n\n if (this.validMultipleType) {\n date = text.split(this.innerRangeSeparator).map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else if (this.range) {\n var arr = text.split(this.innerRangeSeparator);\n\n if (arr.length !== 2) {\n // Maybe the separator during the day is the same as the separator for the date\n // eg: 2019-10-09-2020-01-02\n arr = text.split(this.innerRangeSeparator.trim());\n }\n\n date = arr.map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else {\n date = this.parseDate(text);\n }\n\n if (this.isValidValueAndNotDisabled(date)) {\n this.emitValue(date);\n this.blur();\n } else {\n this.$emit('input-error', text);\n }\n },\n handleInputInput: function handleInputInput(evt) {\n // slot input v-model\n this.userInput = typeof evt === 'string' ? evt : evt.target.value;\n },\n handleInputKeydown: function handleInputKeydown(evt) {\n var keyCode = evt.keyCode; // Tab 9 or Enter 13\n\n if (keyCode === 9) {\n this.closePopup();\n } else if (keyCode === 13) {\n this.handleInputChange();\n }\n },\n handleInputBlur: function handleInputBlur(evt) {\n // tab close\n this.$emit('blur', evt);\n },\n handleInputFocus: function handleInputFocus(evt) {\n this.openPopup(evt);\n this.$emit('focus', evt);\n },\n hasSlot: function hasSlot(name) {\n return !!(this.$slots[name] || this.$scopedSlots[name]);\n },\n renderSlot: function renderSlot(name, fallback, props) {\n var slotFn = this.$scopedSlots[name];\n\n if (slotFn) {\n return slotFn(props) || fallback;\n }\n\n return this.$slots[name] || fallback;\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n\n var props = _objectSpread2({\n name: 'date',\n type: 'text',\n autocomplete: 'off',\n value: this.text,\n class: this.inputClass || \"\".concat(this.prefixClass, \"-input\"),\n readonly: !this.editable,\n disabled: this.disabled,\n placeholder: this.placeholder\n }, this.inputAttr);\n\n var value = props.value,\n className = props.class,\n attrs = _objectWithoutProperties(props, [\"value\", \"class\"]);\n\n var events = {\n keydown: this.handleInputKeydown,\n focus: this.handleInputFocus,\n blur: this.handleInputBlur,\n input: this.handleInputInput,\n change: this.handleInputChange\n };\n var input = this.renderSlot('input', h(\"input\", {\n \"domProps\": {\n \"value\": value\n },\n \"class\": className,\n \"attrs\": _objectSpread2({}, attrs),\n \"on\": _objectSpread2({}, events),\n \"ref\": \"input\"\n }), {\n props: props,\n events: events\n });\n var calendarIcon = this.type === 'time' ? h(__vue_component__$2) : h(__vue_component__$1); // remove touchstart event to avoid opens the popup while scrolling in mobile #469\n\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-input-wrapper\"),\n \"on\": {\n \"mouseenter\": this.handleMouseEnter,\n \"mouseleave\": this.handleMouseLeave,\n \"click\": this.openPopup\n },\n \"ref\": \"inputWrapper\"\n }, [input, this.showClearIcon ? h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-clear\"),\n \"on\": {\n \"click\": this.handleClear\n }\n }, [this.renderSlot('icon-clear', h(__vue_component__$3))]) : h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-calendar\")\n }, [this.renderSlot('icon-calendar', calendarIcon)])]);\n },\n renderContent: function renderContent() {\n var h = this.$createElement;\n var map = this.range ? componentRangeMap : componentMap;\n var Component = map[this.type] || map.default;\n\n var props = _objectSpread2({}, pick(this.$props, Object.keys(Component.props)), {\n value: this.currentValue\n });\n\n var on = _objectSpread2({}, pick(this.$listeners, Component.emits || []), {\n select: this.handleSelectDate\n });\n\n var content = h(Component, helper([{}, {\n props: props,\n on: on,\n ref: 'picker'\n }]));\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-body\")\n }, [this.renderSlot('content', content, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderSidebar: function renderSidebar() {\n var _this4 = this;\n\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-sidebar\")\n }, [this.renderSlot('sidebar', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.shortcuts.map(function (v, i) {\n return h(\"button\", {\n \"key\": i,\n \"attrs\": {\n \"data-index\": i,\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-btn-text \").concat(prefixClass, \"-btn-shortcut\"),\n \"on\": {\n \"click\": _this4.handleSelectShortcut\n }\n }, [v.text]);\n })]);\n },\n renderHeader: function renderHeader() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-header\")\n }, [this.renderSlot('header', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-footer\")\n }, [this.renderSlot('footer', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.confirm ? h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-datepicker-btn-confirm\"),\n \"on\": {\n \"click\": this.handleConfirmDate\n }\n }, [this.confirmText]) : null]);\n }\n },\n render: function render() {\n var _class;\n\n var h = arguments[0];\n var prefixClass = this.prefixClass,\n inline = this.inline,\n disabled = this.disabled;\n var sidedar = this.hasSlot('sidebar') || this.shortcuts.length ? this.renderSidebar() : null;\n var content = h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-content\")\n }, [this.hasSlot('header') ? this.renderHeader() : null, this.renderContent(), this.hasSlot('footer') || this.confirm ? this.renderFooter() : null]);\n return h(\"div\", {\n \"class\": (_class = {}, _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker\"), true), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-range\"), this.range), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-inline\"), inline), _defineProperty(_class, \"disabled\", disabled), _class)\n }, [!inline ? this.renderInput() : null, !inline ? h(__vue_component__, {\n \"ref\": \"popup\",\n \"class\": this.popupClass,\n \"style\": this.popupStyle,\n \"attrs\": {\n \"visible\": this.popupVisible,\n \"appendToBody\": this.appendToBody\n },\n \"on\": {\n \"clickoutside\": this.handleClickOutSide\n }\n }, [sidedar, content]) : h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-main\")\n }, [sidedar, content])]);\n }\n};\n\nDatePicker.locale = locale;\n\nDatePicker.install = function install(Vue) {\n Vue.component(DatePicker.name, DatePicker);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n DatePicker.install(window.Vue);\n}\n\n_extends(DatePicker, {\n CalendarPanel: CalendarPanel,\n CalendarRange: CalendarRange,\n TimePanel: __vue_component__$b,\n TimeRange: TimeRange,\n DatetimePanel: DatetimePanel,\n DatetimeRange: DatetimeRange\n});\n\nexport default DatePicker;\n","import { defineComponent, computed } from \"vue\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, v as t46, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t46);\nfunction formatTimezoneId(timezoneId) {\n return timezoneId.slice(timezoneId.indexOf(\"/\") + 1).replaceAll(\"/\", \" - \").replaceAll(\"_\", \" \");\n}\nfunction getTimezones() {\n return Intl.supportedValuesOf(\"timeZone\").filter((tz) => !tz.startsWith(\"Etc/\")).map((timezoneId) => ({\n timezoneId,\n label: formatTimezoneId(timezoneId)\n })).sort((a, b) => a.timezoneId.localeCompare(b.timezoneId));\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcTimezonePicker\",\n props: {\n additionalTimezones: { default: () => [] },\n value: { default: void 0 },\n modelValue: { default: \"floating\" },\n uid: { default: createElementId() }\n },\n emits: [\"input\", \"update:modelValue\", \"update:model-value\"],\n setup(__props) {\n const props = __props;\n const model = useModelMigration(\"value\", \"input\");\n const formattedAdditionalTimezones = computed(() => {\n return props.additionalTimezones.map(({ timezoneId, label }) => ({\n timezoneId,\n label\n }));\n });\n const options = computed(() => {\n const timezones = getTimezones();\n timezones.unshift(...formattedAdditionalTimezones.value);\n return timezones;\n });\n function filterBy(option, label, search) {\n const terms = search.trim().split(/\\s+/);\n const values = Object.values(option);\n return terms.every((term) => {\n return values.some((value) => value.toLowerCase().includes(term.toLowerCase()));\n });\n }\n return { __sfc: true, props, model, formattedAdditionalTimezones, options, filterBy, t, NcSelect };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcSelect, { attrs: { \"aria-label-combobox\": _setup.t(\"Search for time zone\"), \"clearable\": false, \"filter-by\": _setup.filterBy, \"multiple\": false, \"options\": _setup.options, \"placeholder\": _setup.t(\"Type to search time zone\"), \"uid\": _vm.uid, \"reduce\": (option) => option.timezoneId, \"label\": \"label\" }, model: { value: _setup.model, callback: function($$v) {\n _setup.model = $$v;\n }, expression: \"model\" } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTimezonePicker = __component__.exports;\nexport {\n NcTimezonePicker as N\n};\n//# sourceMappingURL=NcTimezonePicker-BfSjyBxq.mjs.map\n","import '../assets/NcDateTimePicker-CD0ZGUBz.css';\nimport { getFirstDay, getDayNamesMin, getDayNamesShort, getDayNames, getMonthNamesShort, getMonthNames } from \"@nextcloud/l10n\";\nimport DatePicker from \"vue2-datepicker\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"../chunks/useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, O as t40, a as t } from \"../chunks/_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"../chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcPopover } from \"../chunks/NcPopover-BaHX3QSG.mjs\";\nimport { N as NcTimezonePicker } from \"../chunks/NcTimezonePicker-BfSjyBxq.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-Df3JYkxQ.mjs\";\nconst _sfc_main$2 = {\n name: \"CalendarBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon calendar-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst CalendarBlank = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"WebIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon web-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Web = __component__$1.exports;\nregister(t40);\nconst formatMap = {\n date: \"YYYY-MM-DD\",\n datetime: \"YYYY-MM-DD H:mm:ss\",\n year: \"YYYY\",\n month: \"YYYY-MM\",\n time: \"H:mm:ss\",\n week: \"w\"\n};\nconst _sfc_main = {\n name: \"NcDateTimePicker\",\n components: {\n CalendarBlank,\n DatePicker,\n NcPopover,\n NcTimezonePicker,\n Web\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Allow to clear the input.\n */\n clearable: {\n type: Boolean,\n default: false\n },\n /**\n * Default increment step for minutes in the time picker.\n */\n minuteStep: {\n type: Number,\n default: 10\n },\n /**\n * Since 8.25.0: Support 'date-range', 'time-range' and 'datetime-range' values.\n */\n type: {\n type: String,\n default: \"date\",\n validator: (type) => [\"date\", \"time\", \"datetime\", \"week\", \"month\", \"year\", \"date-range\", \"time-range\", \"datetime-range\"].includes(type)\n },\n /**\n * Either `moment.js` formatting tokens or a function taking a Date object and returning a string.\n * Warning: In v9 this will change the accepted token format to standardized Unicode tokens instead!\n */\n format: {\n type: [String, Function],\n default: null\n },\n /**\n * @deprecated use `format` instead\n */\n formatter: {\n type: Object,\n default: null\n },\n /**\n * The locale to use for formatting the shown dates.\n * By default the users current Nextcloud locale is used.\n */\n lang: {\n type: Object,\n default: null\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n // eslint-disable-next-line\n value: {\n default: void 0\n },\n /**\n * The value to initialize, but also two-way bind the selected date. The date is – like the `Date` object in\n * JavaScript – tied to UTC. The selected time zone does not have an influence of the selected time and date\n * value. You have to translate the time yourself when you want to factor in time zones.\n */\n // eslint-disable-next-line\n modelValue: {\n default: () => /* @__PURE__ */ new Date()\n },\n /**\n * The preselected IANA time zone ID for the time zone picker, only relevant in combination with `:show-timezone-select=\"true\"`. Example: `Europe/Berlin`. The prop supports two-way binding through the .sync modifier.\n */\n timezoneId: {\n type: String,\n default: \"UTC\"\n },\n /**\n * Include a timezone picker within the menu.\n * Please note that the dates are still bound to the locale timezone\n * and any conversion needs to be done by the app itself.\n */\n showTimezoneSelect: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the timezone select icon will be highlighted.\n */\n highlightTimezone: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the menu will be placed on the `<body>`\n * instead of default placement on the picker.\n */\n appendToBody: {\n type: Boolean,\n default: false\n },\n /**\n * Show the ISO week numbers within the calendar.\n */\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n /**\n * Optional custom placeholder for the input box.\n */\n placeholder: {\n type: String,\n default: null\n },\n /**\n * @deprecated use the 'date-range' or 'datetime-range' type instead.\n */\n range: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"update:timezone-id\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n timezoneDialogHeaderId: `timezone-dialog-header-${GenRandomId()}`\n };\n },\n data() {\n return {\n showTimezonePopover: false,\n tzVal: this.timezoneId\n };\n },\n computed: {\n realType() {\n return this.type.split(\"-\")[0];\n },\n /**\n * Datepicker language\n * https://github.com/mengxiong10/vue2-datepicker/blob/master/locale.md\n *\n * @return {object}\n */\n defaultLang() {\n return {\n formatLocale: {\n months: getMonthNames(),\n monthsShort: getMonthNamesShort(),\n weekdays: getDayNames(),\n weekdaysShort: getDayNamesShort(),\n weekdaysMin: getDayNamesMin(),\n // 0 = sunday, 1 = monday\n firstDayOfWeek: getFirstDay()\n },\n monthFormat: \"MMMM\"\n };\n },\n /**\n * Translated placeholder\n *\n * @return {string}\n */\n defaultPlaceholder() {\n if (this.realType === \"time\") {\n return t(\"Pick a time\");\n }\n if (this.realType === \"month\") {\n return t(\"Pick a month\");\n }\n if (this.realType === \"year\") {\n return t(\"Pick a year\");\n }\n if (this.realType === \"week\") {\n return t(\"Pick a week\");\n }\n if (this.realType === \"date\") {\n return t(\"Pick a date\");\n }\n return t(\"Pick a date and a time\");\n },\n /**\n * Is the range picker enabled\n */\n internalRange() {\n return this.range || this.type.endsWith(\"-range\");\n },\n internalFormat() {\n if (this.format && typeof this.format === \"string\") {\n return this.format;\n }\n return formatMap[this.realType] || formatMap.date;\n },\n /**\n * The formatter used for the vue-datepicker to fix nextcloud-libraries/nextcloud-vue#5044\n */\n internalFormatter() {\n const getWeek = (date) => {\n const firstThursday = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n firstThursday.setUTCDate(firstThursday.getUTCDate() + 4 - (firstThursday.getUTCDay() || 7));\n const yearStart = new Date(Date.UTC(firstThursday.getUTCFullYear(), 0, 1));\n return Math.ceil(((firstThursday - yearStart) / 864e5 + 1) / 7);\n };\n return {\n getWeek,\n // wrape the format if it is a function\n ...typeof this.format === \"function\" ? { stringify: this.format } : {},\n // allow to override it by users using the `formatter` prop\n ...this.formatter ?? {}\n };\n }\n },\n methods: {\n t,\n handleSelectYear(year) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setFullYear(year));\n this.$refs.datepicker.selectDate(date);\n } catch {\n logger.error(\"Invalid value\", { value, year });\n }\n }\n },\n handleSelectMonth(month) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setMonth(month));\n this.$refs.datepicker.selectDate(date);\n } catch {\n logger.error(\"Invalid value\", { value, month });\n }\n }\n },\n /**\n * Toggles the visibility of the time zone popover\n */\n toggleTimezonePopover() {\n if (!this.showTimezoneSelect) {\n return;\n }\n this.showTimezonePopover = !this.showTimezonePopover;\n }\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"DatePicker\", _vm._g(_vm._b({ ref: \"datepicker\", attrs: { \"append-to-body\": _vm.appendToBody, \"clearable\": _vm.clearable, \"format\": _vm.internalFormat, \"formatter\": _vm.internalFormatter, \"lang\": _vm.lang ? _vm.lang : _vm.defaultLang, \"minute-step\": _vm.minuteStep, \"placeholder\": _vm.placeholder ? _vm.placeholder : _vm.defaultPlaceholder, \"popup-class\": { \"show-week-number\": _vm.showWeekNumber }, \"range\": _vm.internalRange, \"show-week-number\": _vm.showWeekNumber, \"type\": _vm.realType, \"value\": _vm.model }, on: { \"select-year\": _vm.handleSelectYear, \"select-month\": _vm.handleSelectMonth, \"input\": function($event) {\n _vm.model = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon-calendar\", fn: function() {\n return [_vm.showTimezoneSelect ? _c(\"NcPopover\", { attrs: { \"popup-role\": \"dialog\", \"shown\": _vm.showTimezonePopover, \"popover-base-class\": \"timezone-select__popper\" }, on: { \"update:shown\": function($event) {\n _vm.showTimezonePopover = $event;\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(\"button\", _vm._b({ staticClass: \"datetime-picker-inline-icon\", class: { \"datetime-picker-inline-icon--highlighted\": _vm.highlightTimezone }, on: { \"mousedown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return (() => {\n }).apply(null, arguments);\n } } }, \"button\", attrs, false), [_c(\"Web\", { attrs: { \"size\": 20 } })], 1)];\n } }], null, false, 3026992387) }, [_c(\"div\", { attrs: { \"role\": \"dialog\", \"aria-labelledby\": _vm.timezoneDialogHeaderId } }, [_c(\"div\", { staticClass: \"timezone-popover-wrapper__label\" }, [_c(\"strong\", { attrs: { \"id\": _vm.timezoneDialogHeaderId } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Please select a time zone:\")) + \" \")])]), _c(\"NcTimezonePicker\", { staticClass: \"timezone-popover-wrapper__timezone-select\", on: { \"input\": function($event) {\n return _vm.$emit(\"update:timezone-id\", arguments[0]);\n } }, model: { value: _vm.tzVal, callback: function($$v) {\n _vm.tzVal = $$v;\n }, expression: \"tzVal\" } })], 1)]) : _c(\"CalendarBlank\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, _vm._l(_vm.$scopedSlots, function(_, slot) {\n return { key: slot, fn: function(scope) {\n return [_vm._t(slot, null, null, scope)];\n } };\n })], null, true) }, \"DatePicker\", _vm.$attrs, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"ecb9b537\"\n);\nconst NcDateTimePicker = __component__.exports;\nScopeComponent(NcDateTimePicker);\nexport {\n NcDateTimePicker as default\n};\n//# sourceMappingURL=NcDateTimePicker.mjs.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.EmojiMart=t():e.EmojiMart=t()}(\"undefined\"!=typeof self?self:this,(function(){return function(){var e={537:function(){\"undefined\"!=typeof window&&function(){for(var e=0,t=[\"ms\",\"moz\",\"webkit\",\"o\"],i=0;i<t.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[t[i]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[t[i]+\"CancelAnimationFrame\"]||window[t[i]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,i){var n=(new Date).getTime(),r=Math.max(0,16-(n-e)),o=window.setTimeout((function(){t(n+r)}),r);return e=n+r,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}()}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,i),o.exports}i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return function(){\"use strict\";i.r(n),i.d(n,{Anchors:function(){return k},Category:function(){return X},Emoji:function(){return J},EmojiData:function(){return N},EmojiIndex:function(){return R},EmojiView:function(){return $},Picker:function(){return se},Preview:function(){return G},Search:function(){return Q},Skins:function(){return Z},frequently:function(){return w},sanitize:function(){return D},store:function(){return c},uncompress:function(){return p}});var e,t,r=\"emoji-mart\",o=JSON,s=\"undefined\"!=typeof window&&\"localStorage\"in window;function a(e,i){if(t)t(e,i);else{if(!s)return;try{window.localStorage[\"\".concat(r,\".\").concat(e)]=o.stringify(i)}catch(e){}}}var c={update:function(e){for(var t in e)a(t,e[t])},set:a,get:function(t){if(e)return e(t);if(s){try{var i=window.localStorage[\"\".concat(r,\".\").concat(t)]}catch(e){return}return i?JSON.parse(i):void 0}},setNamespace:function(e){r=e},setHandlers:function(i){i||(i={}),e=i.getter,t=i.setter}};function u(e){return u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},u(e)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}var h={name:\"a\",unified:\"b\",non_qualified:\"c\",has_img_apple:\"d\",has_img_google:\"e\",has_img_twitter:\"f\",has_img_facebook:\"h\",keywords:\"j\",sheet:\"k\",emoticons:\"l\",text:\"m\",short_names:\"n\",added_in:\"o\"},m=function(e){var t=[],i=function(e,i){e&&(Array.isArray(e)?e:[e]).forEach((function(e){(i?e.split(/[-|_|\\s]+/):[e]).forEach((function(e){e=e.toLowerCase(),-1==t.indexOf(e)&&t.push(e)}))}))};return i(e.short_names,!0),i(e.name,!0),i(e.keywords,!1),i(e.emoticons,!1),t.join(\",\")};function d(e){var t,i=function(e,t){var i=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if(\"string\"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}(e))||t&&e&&\"number\"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}(Object.getOwnPropertyNames(e));try{for(i.s();!(t=i.n()).done;){var n=t.value,r=e[n];e[n]=r&&\"object\"===u(r)?d(r):r}}catch(e){i.e(e)}finally{i.f()}return Object.freeze(e)}var f,v,p=function(e){if(!e.compressed)return e;for(var t in e.compressed=!1,e.emojis){var i=e.emojis[t];for(var n in h)i[n]=i[h[n]],delete i[h[n]];i.short_names||(i.short_names=[]),i.short_names.unshift(t),i.sheet_x=i.sheet[0],i.sheet_y=i.sheet[1],delete i.sheet,i.text||(i.text=\"\"),i.added_in||(i.added_in=6),i.added_in=i.added_in.toFixed(1),i.search=m(i)}return d(e)},j=[\"+1\",\"grinning\",\"kissing_heart\",\"heart_eyes\",\"laughing\",\"stuck_out_tongue_winking_eye\",\"sweat_smile\",\"joy\",\"scream\",\"disappointed\",\"unamused\",\"weary\",\"sob\",\"sunglasses\",\"heart\",\"hankey\"],g={};function y(){v=!0,f=c.get(\"frequently\")}var w={add:function(e){v||y();var t=e.id;f||(f=g),f[t]||(f[t]=0),f[t]+=1,c.set(\"last\",t),c.set(\"frequently\",f)},get:function(e){if(v||y(),!f){g={};for(var t=[],i=Math.min(e,j.length),n=0;n<i;n++)g[j[n]]=parseInt((i-n)/4,10)+1,t.push(j[n]);return t}var r=e,o=[];for(var s in f)f.hasOwnProperty(s)&&o.push(s);var a=o.sort((function(e,t){return f[e]-f[t]})).reverse().slice(0,r),u=c.get(\"last\");return u&&-1==a.indexOf(u)&&(a.pop(),a.push(u)),a}},_={activity:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"/></svg>',custom:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><g transform=\"translate(2.000000, 1.000000)\"><rect id=\"Rectangle\" x=\"8\" y=\"0\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect></g></svg>',flags:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"/></svg>',foods:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"/></svg>',nature:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"/><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"/></svg>',objects:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"/><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"/></svg>',smileys:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"/></svg>',people:'<svg xmlns:svg=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 24 24\"> <path id=\"path3814\" d=\"m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z\" /> <path id=\"path3816\" d=\"M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z \" /> </svg>',places:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"/><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"/></svg>',recent:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"/><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/></svg>',symbols:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"/></svg>'};function b(e,t,i,n,r,o,s,a){var c,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},u._ssrRegister=c):r&&(c=a?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:u}}var C=b({props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default:function(){return{}}}},emits:[\"click\"],created:function(){this.svgs=_}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-anchors\",attrs:{role:\"tablist\"}},e._l(e.categories,(function(i){return t(\"button\",{key:i.id,class:{\"emoji-mart-anchor\":!0,\"emoji-mart-anchor-selected\":i.id==e.activeCategory.id},style:{color:i.id==e.activeCategory.id?e.color:\"\"},attrs:{role:\"tab\",type:\"button\",\"aria-label\":i.name,\"aria-selected\":i.id==e.activeCategory.id,\"data-title\":e.i18n.categories[i.id]},on:{click:function(t){return e.$emit(\"click\",i)}}},[t(\"div\",{attrs:{\"aria-hidden\":\"true\"},domProps:{innerHTML:e._s(e.svgs[i.id])}}),e._v(\" \"),t(\"span\",{staticClass:\"emoji-mart-anchor-bar\",style:{backgroundColor:e.color},attrs:{\"aria-hidden\":\"true\"}})])})),0)}),[],!1,null,null,null),k=C.exports;function E(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function S(e){var t=function(e,t){if(\"object\"!=u(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,\"string\");if(\"object\"!=u(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"==u(t)?t:t+\"\"}function x(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,S(n.key),n)}}function O(e,t,i){return t&&x(e.prototype,t),i&&x(e,i),Object.defineProperty(e,\"prototype\",{writable:!1}),e}var P=String.fromCodePoint||function(){var e,t,i=[],n=-1,r=arguments.length;if(!r)return\"\";for(var o=\"\";++n<r;){var s=Number(arguments[n]);if(!isFinite(s)||s<0||s>1114111||Math.floor(s)!=s)throw RangeError(\"Invalid code point: \"+s);s<=65535?i.push(s):(e=55296+((s-=65536)>>10),t=s%1024+56320,i.push(e,t)),(n+1===r||i.length>16384)&&(o+=String.fromCharCode.apply(null,i),i.length=0)}return o};function A(e){var t=e.split(\"-\").map((function(e){return\"0x\".concat(e)}));return P.apply(null,t)}function M(e){return e.reduce((function(e,t){return-1===e.indexOf(t)&&e.push(t),e}),[])}function I(e,t){var i=M(e),n=M(t);return i.filter((function(e){return n.indexOf(e)>=0}))}function F(e,t){var i={};for(var n in e){var r=e[n],o=r;Object.prototype.hasOwnProperty.call(t,n)&&(o=t[n]),\"object\"===u(o)&&(o=F(r,o)),i[n]=o}return i}function z(e,t){var i=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if(\"string\"==typeof e)return L(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?L(e,t):void 0}}(e))||t&&e&&\"number\"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}var T=/^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/,q=[\"1F3FA\",\"1F3FB\",\"1F3FC\",\"1F3FD\",\"1F3FE\",\"1F3FF\"],R=function(){return O((function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=i.emojisToShowFilter,r=i.include,o=i.exclude,s=i.custom,a=i.recent,c=i.recentLength,u=void 0===c?20:c;E(this,e),this._data=p(t),this._emojisFilter=n||null,this._include=r||null,this._exclude=o||null,this._custom=s||[],this._recent=a||w.get(u),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:\"recent\",name:\"Recent\",emojis:[]},this._customCategory={id:\"custom\",name:\"Custom\",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}),[{key:\"buildIndex\",value:function(){var e=this,t=this._data.categories;if(this._include&&(t=(t=t.filter((function(t){return e._include.includes(t.id)}))).sort((function(t,i){var n=e._include.indexOf(t.id),r=e._include.indexOf(i.id);return n<r?-1:n>r?1:0}))),t.forEach((function(t){if(e.isCategoryNeeded(t.id)){var i={id:t.id,name:t.name,emojis:[]};t.emojis.forEach((function(t){var n=e.addEmoji(t);n&&i.emojis.push(n)})),i.emojis.length&&e._categories.push(i)}})),this.isCategoryNeeded(\"custom\")){if(this._custom.length>0){var i,n=z(this._custom);try{for(n.s();!(i=n.n()).done;){var r=i.value;this.addCustomEmoji(r)}}catch(e){n.e(e)}finally{n.f()}}this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded(\"recent\")&&(this._recent.length&&this._recent.map((function(t){var i,n=z(e._customCategory.emojis);try{for(n.s();!(i=n.n()).done;){var r=i.value;if(r.id===t)return void e._recentCategory.emojis.push(r)}}catch(e){n.e(e)}finally{n.f()}e.hasEmoji(t)&&e._recentCategory.emojis.push(e.emoji(t))})),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}},{key:\"findEmoji\",value:function(e,t){var i=e.match(T);if(i&&(e=i[1],i[2]&&(t=parseInt(i[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){var n=this._emojis[e];return t?n.getSkin(t):n}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:\"categories\",value:function(){return this._categories}},{key:\"emoji\",value:function(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);var t=this._emojis[e];if(!t)throw new Error(\"Can not find emoji by id: \"+e);return t}},{key:\"firstEmoji\",value:function(){var e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error(\"Can not get first emoji\");return e}},{key:\"hasEmoji\",value:function(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}},{key:\"nativeEmoji\",value:function(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:\"search\",value:function(e,t){var i=this;if(t||(t=75),!e.length)return null;if(\"-\"==e||\"-1\"==e)return[this.emoji(\"-1\")];var n,r=e.toLowerCase().split(/[\\s|,|\\-|_]+/);r.length>2&&(r=[r[0],r[1]]),n=r.map((function(e){for(var t=i._emojis,n=i._searchIndex,r=0,o=function(){var i=e[s];if(r++,n[i]||(n[i]={}),!(n=n[i]).results){var o={};for(var a in n.results=[],n.emojis={},t){var c=t[a],u=c._data.search,l=e.substr(0,r),h=u.indexOf(l);if(-1!=h){var m=h+1;l==a&&(m=0),n.results.push(c),n.emojis[a]=c,o[a]=m}}n.results.sort((function(e,t){return o[e.id]-o[t.id]}))}t=n.emojis},s=0;s<e.length;s++)o();return n.results})).filter((function(e){return e}));var o=null;return(o=n.length>1?I.apply(null,n):n.length?n[0]:[])&&o.length>t&&(o=o.slice(0,t)),o}},{key:\"addCustomEmoji\",value:function(e){var t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=m(t));var i=new N(t);return this._emojis[i.id]=i,this._customCategory.emojis.push(i),i}},{key:\"addEmoji\",value:function(e){var t=this,i=this._data.emojis[e];if(!this.isEmojiNeeded(i))return!1;var n=new N(i);if(this._emojis[e]=n,n.native&&(this._nativeEmojis[n.native]=n),n._skins)for(var r in n._skins){var o=n._skins[r];o.native&&(this._nativeEmojis[o.native]=o)}return n.emoticons&&n.emoticons.forEach((function(i){t._emoticons[i]||(t._emoticons[i]=e)})),n}},{key:\"isCategoryNeeded\",value:function(e){var t=!this._include||!this._include.length||this._include.indexOf(e)>-1,i=!(!this._exclude||!this._exclude.length)&&this._exclude.indexOf(e)>-1;return!(!t||i)}},{key:\"isEmojiNeeded\",value:function(e){return!this._emojisFilter||this._emojisFilter(e)}}])}(),N=function(){return O((function e(t){if(E(this,e),this._data=Object.assign({},t),this._skins=null,this._data.skin_variations)for(var i in this._skins=[],q){var n=q[i],r=this._data.skin_variations[n],o=Object.assign({},t);for(var s in r)o[s]=r[s];delete o.skin_variations,o.skin_tone=parseInt(i)+1,this._skins.push(new e(o))}for(var a in this._sanitized=D(this._data),this._sanitized)this[a]=this._sanitized[a];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}),[{key:\"getSkin\",value:function(e){return e&&\"native\"!=e&&this._skins?this._skins[e-1]:this}},{key:\"getPosition\",value:function(){var e=+(100/60*this._data.sheet_x).toFixed(2),t=+(100/60*this._data.sheet_y).toFixed(2);return\"\".concat(e,\"% \").concat(t,\"%\")}},{key:\"ariaLabel\",value:function(){return[this.native].concat(this.short_names).filter(Boolean).join(\", \")}}])}(),$=function(){return O((function e(t,i,n,r,o,s,a){E(this,e),this._emoji=t,this._native=r,this._skin=i,this._set=n,this._fallback=o,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(a),this.content=this._content(),this.title=!0===s?t.short_name:null,this.ariaLabel=t.ariaLabel(),Object.freeze(this)}),[{key:\"getEmoji\",value:function(){return this._emoji.getSkin(this._skin)}},{key:\"_canRender\",value:function(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}},{key:\"_cssClass\",value:function(){return[\"emoji-set-\"+this._set,\"emoji-type-\"+this._emojiType()]}},{key:\"_cssStyle\",value:function(e){var t={};return this._isCustom()?t={backgroundImage:\"url(\"+this.getEmoji()._data.imageUrl+\")\",backgroundSize:\"100%\",width:e+\"px\",height:e+\"px\"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(t=this._isNative()?Object.assign(t,{fontSize:Math.round(.95*e*10)/10+\"px\"}):Object.assign(t,{width:e+\"px\",height:e+\"px\"})),t}},{key:\"_content\",value:function(){return this._isCustom()?\"\":this._isNative()?this.getEmoji().native:this._hasEmoji()?\"\":this._fallback?this._fallback(this.getEmoji()):null}},{key:\"_isNative\",value:function(){return this._native}},{key:\"_isCustom\",value:function(){return this.getEmoji().custom}},{key:\"_hasEmoji\",value:function(){if(!this.getEmoji()._data)return!1;var e=this.getEmoji()._data[\"has_img_\"+this._set];return void 0===e||e}},{key:\"_emojiType\",value:function(){return this._isCustom()?\"custom\":this._isNative()?\"native\":this._hasEmoji()?\"image\":\"fallback\"}}])}();function D(e){var t=e.name,i=e.short_names,n=e.skin_tone,r=e.skin_variations,o=e.emoticons,s=e.unified,a=e.custom,c=e.imageUrl,u=e.id||i[0],l=\":\".concat(u,\":\");return a?{id:u,name:t,colons:l,emoticons:o,custom:a,imageUrl:c}:(n&&(l+=\":skin-tone-\".concat(n,\":\")),{id:u,name:t,colons:l,emoticons:o,unified:s.toLowerCase(),skin:n||(r?1:null),native:A(s)})}function B(e,t,i){return(t=S(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var H={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:\"apple\"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:\"span\"}},U={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:\"Emoji Mart™\"},emoji:{type:String,default:\"department_store\"},color:{type:String,default:\"#ae65c5\"},set:{type:String,default:\"apple\"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default:function(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default:function(){return{}}}};function V(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function W(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?V(Object(i),!0).forEach((function(t){B(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):V(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var J=b({props:W(W({},H),{},{data:{type:Object,required:!0}}),emits:[\"click\",\"mouseenter\",\"mouseleave\"],computed:{view:function(){return new $(this.emojiObject,this.skin,this.set,this.native,this.fallback,this.tooltip,this.size)},sanitizedData:function(){return this.emojiObject._sanitized},title:function(){return this.tooltip?this.emojiObject.short_name:null},emojiObject:function(){return\"string\"==typeof this.emoji?this.data.findEmoji(this.emoji):this.emoji}},created:function(){},methods:{onClick:function(){this.$emit(\"click\",this.emojiObject)},onMouseEnter:function(){this.$emit(\"mouseenter\",this.emojiObject)},onMouseLeave:function(){this.$emit(\"mouseleave\",this.emojiObject)}}},(function(){var e=this,t=e._self._c;return e.view.canRender?t(e.tag,{tag:\"component\",staticClass:\"emoji-mart-emoji\",attrs:{title:e.view.title,\"aria-label\":e.view.ariaLabel,\"data-title\":e.title},on:{mouseenter:e.onMouseEnter,mouseleave:e.onMouseLeave,click:e.onClick}},[t(\"span\",{class:e.view.cssClass,style:e.view.cssStyle},[e._v(e._s(e.view.content))])]):e._e()}),[],!1,null,null,null).exports,X=b({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},emojis:{type:Array},emojiProps:{type:Object,required:!0}},methods:{activeClass:function(e){return this.emojiProps.selectedEmoji&&this.emojiProps.selectedEmojiCategory&&this.emojiProps.selectedEmoji.id==e.id&&this.emojiProps.selectedEmojiCategory.id==this.id?\"emoji-mart-emoji-selected\":\"\"}},computed:{isVisible:function(){return!!this.emojis},isSearch:function(){return\"Search\"==this.name},hasResults:function(){return this.emojis.length>0},emojiObjects:function(){var e=this;return this.emojis.map((function(t){return{emojiObject:t,emojiView:new $(t,e.emojiProps.skin,e.emojiProps.set,e.emojiProps.native,e.emojiProps.fallback,e.emojiProps.emojiTooltip,e.emojiProps.emojiSize)}}))}},components:{Emoji:J}},(function(){var e=this,t=e._self._c;return e.isVisible&&(e.isSearch||e.hasResults)?t(\"section\",{class:{\"emoji-mart-category\":!0,\"emoji-mart-no-results\":!e.hasResults},attrs:{\"aria-label\":e.i18n.categories[e.id]}},[t(\"div\",{staticClass:\"emoji-mart-category-label\"},[t(\"h3\",{staticClass:\"emoji-mart-category-label\"},[e._v(e._s(e.i18n.categories[e.id]))])]),e._v(\" \"),e._l(e.emojiObjects,(function(i){var n=i.emojiObject,r=i.emojiView;return[r.canRender?t(\"button\",{key:n.id,staticClass:\"emoji-mart-emoji\",class:e.activeClass(n),attrs:{\"aria-label\":r.ariaLabel,role:\"option\",\"aria-selected\":\"false\",\"aria-posinset\":\"1\",\"aria-setsize\":\"1812\",type:\"button\",\"data-title\":n.short_name,title:r.title},on:{mouseenter:function(t){e.emojiProps.onEnter(r.getEmoji())},mouseleave:function(t){e.emojiProps.onLeave(r.getEmoji())},click:function(t){e.emojiProps.onClick(r.getEmoji())}}},[t(\"span\",{class:r.cssClass,style:r.cssStyle},[e._v(e._s(r.content))])]):e._e()]})),e._v(\" \"),e.hasResults?e._e():t(\"div\",[t(\"emoji\",{attrs:{data:e.data,emoji:\"sleuth_or_spy\",native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}}),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-no-results-label\"},[e._v(e._s(e.i18n.notfound))])],1)],2):e._e()}),[],!1,null,null,null).exports,Z=b({props:{skin:{type:Number,required:!0}},emits:[\"change\"],data:function(){return{opened:!1}},methods:{onClick:function(e){this.opened&&e!=this.skin&&this.$emit(\"change\",e),this.opened=!this.opened}}},(function(){var e=this,t=e._self._c;return t(\"div\",{class:{\"emoji-mart-skin-swatches\":!0,\"emoji-mart-skin-swatches-opened\":e.opened}},e._l(6,(function(i){return t(\"span\",{key:i,class:{\"emoji-mart-skin-swatch\":!0,\"emoji-mart-skin-swatch-selected\":e.skin==i}},[t(\"span\",{class:\"emoji-mart-skin emoji-mart-skin-tone-\"+i,on:{click:function(t){return e.onClick(i)}}})])})),0)}),[],!1,null,null,null).exports,G=b({props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData:function(){return this.emoji?this.emoji:{}},emojiShortNames:function(){return this.emojiData.short_names},emojiEmoticons:function(){return this.emojiData.emoticons}},components:{Emoji:J,Skins:Z}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-preview\"},[e.emoji?[t(\"div\",{staticClass:\"emoji-mart-preview-emoji\"},[t(\"emoji\",{attrs:{data:e.data,emoji:e.emoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-data\"},[t(\"div\",{staticClass:\"emoji-mart-preview-name\"},[e._v(e._s(e.emoji.name))]),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-shortnames\"},e._l(e.emojiShortNames,(function(i){return t(\"span\",{key:i,staticClass:\"emoji-mart-preview-shortname\"},[e._v(\":\"+e._s(i)+\":\")])})),0),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-emoticons\"},e._l(e.emojiEmoticons,(function(i){return t(\"span\",{key:i,staticClass:\"emoji-mart-preview-emoticon\"},[e._v(e._s(i))])})),0)])]:[t(\"div\",{staticClass:\"emoji-mart-preview-emoji\"},[t(\"emoji\",{attrs:{data:e.data,emoji:e.idleEmoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-data\"},[t(\"span\",{staticClass:\"emoji-mart-title-label\"},[e._v(e._s(e.title))])]),e._v(\" \"),e.showSkinTones?t(\"div\",{staticClass:\"emoji-mart-preview-skins\"},[t(\"skins\",{attrs:{skin:e.skinProps.skin},on:{change:function(t){return e.onSkinChange(t)}}})],1):e._e()]],2)}),[],!1,null,null,null).exports,K=b({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:[\"search\",\"enter\",\"arrowUp\",\"arrowDown\",\"arrowRight\",\"arrowLeft\"],data:function(){return{value:\"\"}},computed:{emojiIndex:function(){return this.data}},watch:{value:function(){this.$emit(\"search\",this.value)}},methods:{clear:function(){this.value=\"\"}},mounted:function(){var e=this.$el.querySelector(\"input\");this.autoFocus&&e.focus()}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-search\"},[t(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.value,expression:\"value\"}],attrs:{type:\"text\",placeholder:e.i18n.search,role:\"textbox\",\"aria-autocomplete\":\"list\",\"aria-owns\":\"emoji-mart-list\",\"aria-label\":\"Search for an emoji\",\"aria-describedby\":\"emoji-mart-search-description\"},domProps:{value:e.value},on:{keydown:[function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"left\",37,t.key,[\"Left\",\"ArrowLeft\"])||\"button\"in t&&0!==t.button?null:function(t){return e.$emit(\"arrowLeft\",t)}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"right\",39,t.key,[\"Right\",\"ArrowRight\"])||\"button\"in t&&2!==t.button?null:function(){return e.$emit(\"arrowRight\")}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"])?null:function(){return e.$emit(\"arrowDown\")}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"])?null:function(t){return e.$emit(\"arrowUp\",t)}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?null:function(){return e.$emit(\"enter\")}.apply(null,arguments)}],input:function(t){t.target.composing||(e.value=t.target.value)}}}),e._v(\" \"),t(\"span\",{staticClass:\"hidden\",attrs:{id:\"emoji-picker-search-description\"}},[e._v(\"Use the left, right, up and down arrow keys to navigate the emoji search\\n results.\")])])}),[],!1,null,null,null),Q=K.exports;function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}i(537);var ee=function(){return O((function e(t){var i,n;E(this,e),this._vm=t,this._data=t.data,this._perLine=t.perLine,this._categories=[],(i=this._categories).push.apply(i,function(e){if(Array.isArray(e))return Y(e)}(n=this._data.categories())||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(n)||function(e,t){if(e){if(\"string\"==typeof e)return Y(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Y(e,t):void 0}}(n)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),this._categories=this._categories.filter((function(e){return e.emojis.length>0})),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}),[{key:\"onScroll\",value:function(){var e=this._vm.$refs.scroll;if(e){for(var t=e.scrollTop,i=this.filteredCategories[0],n=0,r=this.filteredCategories.length;n<r;n++){var o=this.filteredCategories[n],s=this._vm.getCategoryComponent(n);if(s&&s.$el.offsetTop-50>t)break;i=o}this.activeCategory=i}}},{key:\"allCategories\",get:function(){return this._categories}},{key:\"filteredCategories\",get:function(){return this.searchEmojis?[{id:\"search\",name:\"Search\",emojis:this.searchEmojis}]:this._categories.filter((function(e){return e.emojis.length>0}))}},{key:\"previewEmojiCategory\",get:function(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}},{key:\"onAnchorClick\",value:function(e){var t=this;if(!this.searchEmojis){var i=this.filteredCategories.indexOf(e),n=this._vm.getCategoryComponent(i);this._vm.infiniteScroll?function(){if(n){var i=n.$el.offsetTop;e.first&&(i=0),t._vm.$refs.scroll.scrollTop=i}}():this.activeCategory=this.filteredCategories[i]}}},{key:\"onSearch\",value:function(e){var t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}},{key:\"onEmojiEnter\",value:function(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}},{key:\"onEmojiLeave\",value:function(e){this.previewEmoji=null}},{key:\"onArrowLeft\",value:function(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}},{key:\"onArrowRight\",value:function(){this.previewEmojiIdx<this.emojisLength(this.previewEmojiCategoryIdx)-1?this.previewEmojiIdx+=1:(this.previewEmojiCategoryIdx+=1,this.previewEmojiCategoryIdx>=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}},{key:\"onArrowDown\",value:function(){if(-1==this.previewEmojiIdx)return this.onArrowRight();var e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length,t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(var i=0;i<t;i++)this.onArrowRight();this.updatePreviewEmoji()}},{key:\"onArrowUp\",value:function(){var e=this._perLine;this.previewEmojiIdx-e<0&&(e=this.previewEmojiCategoryIdx>0?this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:0);for(var t=0;t<e;t++)this.onArrowLeft();this.updatePreviewEmoji()}},{key:\"updatePreviewEmoji\",value:function(){var e=this;this.previewEmoji=this.filteredCategories[this.previewEmojiCategoryIdx].emojis[this.previewEmojiIdx],this._vm.$nextTick((function(){var t=e._vm.$refs.scroll,i=t.querySelector(\".emoji-mart-emoji-selected\"),n=t.offsetTop-t.offsetHeight;i&&i.offsetTop+i.offsetHeight>n+t.scrollTop&&(t.scrollTop+=i.offsetHeight),i&&i.offsetTop<t.scrollTop&&(t.scrollTop-=i.offsetHeight)}))}},{key:\"emojisLength\",value:function(e){return-1==e?0:this.filteredCategories[e].emojis.length}}])}();function te(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function ie(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?te(Object(i),!0).forEach((function(t){B(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):te(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var ne={search:\"Search\",notfound:\"No Emoji Found\",categories:{search:\"Search Results\",recent:\"Frequently Used\",smileys:\"Smileys & Emotion\",people:\"People & Body\",nature:\"Animals & Nature\",foods:\"Food & Drink\",activity:\"Activity\",places:\"Travel & Places\",objects:\"Objects\",symbols:\"Symbols\",flags:\"Flags\",custom:\"Custom\"}},re={props:ie(ie({},U),{},{data:{type:Object,required:!0}}),emits:[\"select\",\"skin-change\"],data:function(){return{activeSkin:this.skin||c.get(\"skin\")||this.defaultSkin,view:new ee(this)}},computed:{customStyles:function(){return ie({width:this.calculateWidth+\"px\"},this.pickerStyles)},emojiProps:function(){return{native:this.native,skin:this.activeSkin,set:this.set,emojiTooltip:this.emojiTooltip,emojiSize:this.emojiSize,selectedEmoji:this.view.previewEmoji,selectedEmojiCategory:this.view.previewEmojiCategory,onEnter:this.onEmojiEnter.bind(this),onLeave:this.onEmojiLeave.bind(this),onClick:this.onEmojiClick.bind(this)}},skinProps:function(){return{skin:this.activeSkin}},calculateWidth:function(){return this.perLine*(this.emojiSize+12)+12+2+function(){if(\"undefined\"==typeof document)return 0;var e=document.createElement(\"div\");e.style.width=\"100px\",e.style.height=\"100px\",e.style.overflow=\"scroll\",e.style.position=\"absolute\",e.style.top=\"-9999px\",document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t}()},filteredCategories:function(){return this.view.filteredCategories},mergedI18n:function(){return Object.freeze(F(ne,this.i18n))},idleEmoji:function(){try{return this.data.emoji(this.emoji)}catch(e){return console.error(\"Default preview emoji `\"+this.emoji+\"` is not available, check the Picker `emoji` property\"),console.error(e),this.data.firstEmoji()}},isSearching:function(){return null!=this.view.searchEmojis}},watch:{skin:function(){this.onSkinChange(this.skin)}},methods:{onScroll:function(){this.infiniteScroll&&!this.waitingForPaint&&(this.waitingForPaint=!0,window.requestAnimationFrame(this.onScrollPaint.bind(this)))},onScrollPaint:function(){this.waitingForPaint=!1,this.view.onScroll()},onAnchorClick:function(e){this.view.onAnchorClick(e)},onSearch:function(e){this.view.onSearch(e)},onEmojiEnter:function(e){this.view.onEmojiEnter(e)},onEmojiLeave:function(e){this.view.onEmojiLeave(e)},onArrowLeft:function(e){var t=this.view.previewEmojiIdx;this.view.onArrowLeft(),e&&this.view.previewEmojiIdx!==t&&e.preventDefault()},onArrowRight:function(){this.view.onArrowRight()},onArrowDown:function(){this.view.onArrowDown()},onArrowUp:function(e){this.view.onArrowUp(),e.preventDefault()},onEnter:function(){this.view.previewEmoji&&(this.$emit(\"select\",this.view.previewEmoji),w.add(this.view.previewEmoji))},onEmojiClick:function(e){this.$emit(\"select\",e),w.add(e)},onTextSelect:function(e){e.stopPropagation()},onSkinChange:function(e){this.activeSkin=e,c.update({skin:e}),this.$emit(\"skin-change\",e)},getCategoryComponent:function(e){var t=this.$refs[\"categories_\"+e];return t&&\"0\"in t?t[0]:t}},components:{Anchors:k,Category:X,Preview:G,Search:Q}},oe=b(re,(function(){var e=this,t=e._self._c;return t(\"section\",{staticClass:\"emoji-mart emoji-mart-static\",style:e.customStyles},[e.showCategories?t(\"div\",{staticClass:\"emoji-mart-bar emoji-mart-bar-anchors\"},[t(\"anchors\",{attrs:{data:e.data,i18n:e.mergedI18n,color:e.color,categories:e.view.allCategories,\"active-category\":e.view.activeCategory},on:{click:e.onAnchorClick}})],1):e._e(),e._v(\" \"),e._t(\"searchTemplate\",(function(){return[e.showSearch?t(\"search\",{ref:\"search\",attrs:{data:e.data,i18n:e.mergedI18n,\"auto-focus\":e.autoFocus,\"on-search\":e.onSearch},on:{search:e.onSearch,arrowLeft:e.onArrowLeft,arrowRight:e.onArrowRight,arrowDown:e.onArrowDown,arrowUp:e.onArrowUp,enter:e.onEnter,select:e.onTextSelect}}):e._e()]}),{data:e.data,i18n:e.i18n,autoFocus:e.autoFocus,onSearch:e.onSearch}),e._v(\" \"),t(\"div\",{ref:\"scroll\",staticClass:\"emoji-mart-scroll\",attrs:{role:\"tabpanel\"},on:{scroll:e.onScroll}},[t(\"div\",{ref:\"scrollContent\",attrs:{id:\"emoji-mart-list\",role:\"listbox\",\"aria-expanded\":\"true\"}},[e._t(\"customCategory\"),e._v(\" \"),e._l(e.view.filteredCategories,(function(i,n){return t(\"category\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.infiniteScroll||i==e.view.activeCategory||e.isSearching,expression:\"infiniteScroll || category == view.activeCategory || isSearching\"}],key:i.id,ref:\"categories_\"+n,refInFor:!0,attrs:{data:e.data,i18n:e.mergedI18n,id:i.id,name:i.name,emojis:i.emojis,\"emoji-props\":e.emojiProps}})}))],2)]),e._v(\" \"),e._t(\"previewTemplate\",(function(){return[e.showPreview?t(\"div\",{staticClass:\"emoji-mart-bar emoji-mart-bar-preview\"},[t(\"preview\",{attrs:{data:e.data,title:e.title,emoji:e.view.previewEmoji,\"idle-emoji\":e.idleEmoji,\"show-skin-tones\":e.showSkinTones,\"emoji-props\":e.emojiProps,\"skin-props\":e.skinProps,\"on-skin-change\":e.onSkinChange}})],1):e._e()]}),{data:e.data,title:e.title,emoji:e.view.previewEmoji,idleEmoji:e.idleEmoji,showSkinTones:e.showSkinTones,emojiProps:e.emojiProps,skinProps:e.skinProps,onSkinChange:e.onSkinChange})],2)}),[],!1,null,null,null),se=oe.exports}(),n}()}));","import { getBuilder } from \"@nextcloud/browser-storage\";\nimport { EmojiIndex, frequently } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nconst storage = getBuilder(\"nextcloud-vue\").persist(true).build();\nlet emojiIndex;\nvar EmojiSkinTone = /* @__PURE__ */ ((EmojiSkinTone2) => {\n EmojiSkinTone2[EmojiSkinTone2[\"Neutral\"] = 1] = \"Neutral\";\n EmojiSkinTone2[EmojiSkinTone2[\"Light\"] = 2] = \"Light\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumLight\"] = 3] = \"MediumLight\";\n EmojiSkinTone2[EmojiSkinTone2[\"Medium\"] = 4] = \"Medium\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumDark\"] = 5] = \"MediumDark\";\n EmojiSkinTone2[EmojiSkinTone2[\"Dark\"] = 6] = \"Dark\";\n return EmojiSkinTone2;\n})(EmojiSkinTone || {});\nfunction emojiSearch(query, maxResults = 10) {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n const currentSkinTone = getCurrentSkinTone();\n let results;\n if (query) {\n results = emojiIndex.search(`:${query}`, maxResults);\n if (results.length < maxResults) {\n results = results.concat(emojiIndex.search(query, maxResults - results.length));\n }\n } else {\n results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];\n }\n return results.map((emoji) => emoji.getSkin(currentSkinTone));\n}\nfunction emojiAddRecent(emojiOrEmojiData) {\n let emojiData;\n if (typeof emojiOrEmojiData === \"string\") {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n emojiData = emojiIndex.findEmoji(emojiOrEmojiData);\n } else {\n emojiData = emojiOrEmojiData;\n }\n if (emojiData && \"id\" in emojiData) {\n frequently.add(emojiData);\n }\n}\nfunction getCurrentSkinTone() {\n const skinTone = Number.parseInt(storage.getItem(\"NcEmojiPicker::currentSkinTone\") ?? \"1\");\n return Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n}\nfunction setCurrentSkinTone(skinTone) {\n skinTone = Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n storage.setItem(\"NcEmojiPicker::currentSkinTone\", skinTone.toString());\n}\nexport {\n EmojiSkinTone as E,\n emojiAddRecent as a,\n emojiSearch as e,\n getCurrentSkinTone as g,\n setCurrentSkinTone as s\n};\n//# sourceMappingURL=emoji-Dtn2mDf7.mjs.map\n","import '../assets/NcEmojiPicker-B-iLLj37.css';\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { isFocusable } from \"tabbable\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker-BwqjqV32.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-BnLfCgGU.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-Dtn2mDf7.mjs\";\nimport { r as register, A as t44, B as t37, q as t16, C as t6, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { C as Color } from \"./colors-B_oqiKWY.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcPopover } from \"./NcPopover-BaHX3QSG.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CQp8XS4C.mjs\";\nconst _sfc_main$1 = {\n name: \"CircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconCircle = __component__$1.exports;\nregister(t6, t16, t37, t44);\nlet emojiIndex;\nconst i18n = {\n search: t(\"Search emoji\"),\n notfound: t(\"No emoji found\"),\n categories: {\n search: t(\"Search results\"),\n recent: t(\"Frequently used\"),\n smileys: t(\"Smileys & Emotion\"),\n people: t(\"People & Body\"),\n nature: t(\"Animals & Nature\"),\n foods: t(\"Food & Drink\"),\n activity: t(\"Activities\"),\n places: t(\"Travel & Places\"),\n objects: t(\"Objects\"),\n symbols: t(\"Symbols\"),\n flags: t(\"Flags\"),\n custom: t(\"Custom\")\n }\n};\nconst skinTonePalette = [\n new Color(255, 222, 52, t(\"Neutral skin color\")),\n new Color(228, 205, 166, t(\"Light skin tone\")),\n new Color(250, 221, 192, t(\"Medium light skin tone\")),\n new Color(174, 129, 87, t(\"Medium skin tone\")),\n new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n name: \"NcEmojiPicker\",\n components: {\n Emoji,\n IconCircle,\n NcButton,\n NcColorPicker,\n NcPopover,\n NcTextField,\n Picker\n },\n props: {\n /**\n * The emoji-set\n */\n activeSet: {\n type: String,\n default: \"native\"\n },\n /**\n * Show preview section when hovering emoji\n */\n showPreview: {\n type: Boolean,\n default: false\n },\n /**\n * Allow unselecting the selected emoji\n */\n allowUnselect: {\n type: Boolean,\n default: false\n },\n /**\n * Selected emoji to allow unselecting\n */\n selectedEmoji: {\n type: String,\n default: \"\"\n },\n /**\n * The fallback emoji in the preview section\n */\n previewFallbackEmoji: {\n type: String,\n default: \"grinning\"\n },\n /**\n * The fallback text in the preview section\n */\n previewFallbackName: {\n type: String,\n default: t(\"Pick an emoji\")\n },\n /**\n * Whether to close the emoji picker after picking one\n */\n closeOnSelect: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Selector for the popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n emits: [\n \"select\",\n \"select-data\",\n \"unselect\"\n ],\n setup() {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n return {\n // Non-reactive constants\n emojiIndex,\n skinTonePalette,\n i18n\n };\n },\n data() {\n const currentSkinTone = getCurrentSkinTone();\n return {\n /**\n * The current active color from the skin tone palette\n */\n currentColor: skinTonePalette[currentSkinTone - 1],\n /**\n * The current active skin tone\n *\n * @type {1|2|3|4|5|6}\n */\n currentSkinTone,\n search: \"\",\n open: false\n };\n },\n computed: {\n native() {\n return this.activeSet === \"native\";\n }\n },\n created() {\n useTrapStackControl(() => this.open);\n },\n methods: {\n t,\n clearSearch() {\n this.search = \"\";\n this.$refs.search.focus();\n },\n /**\n * Update the current skin tone by the result of the color picker\n *\n * @param {string} color Color set\n */\n onChangeSkinTone(color) {\n const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n if (index > -1) {\n this.currentSkinTone = index + 1;\n this.currentColor = this.skinTonePalette[index];\n setCurrentSkinTone(this.currentSkinTone);\n }\n },\n select(emojiObject) {\n this.$emit(\"select\", emojiObject.native);\n this.$emit(\"select-data\", emojiObject);\n if (this.closeOnSelect) {\n this.open = false;\n }\n },\n unselect() {\n this.$emit(\"unselect\");\n },\n afterShow() {\n this.$refs.search.focus();\n },\n afterHide() {\n if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n }\n },\n /**\n * Manually handle Tab navigation skipping emoji buttons.\n * Navigation over emojis is handled by Arrow keys.\n *\n * @param {KeyboardEvent} event - Keyboard event\n */\n handleTabNavigationSkippingEmojis(event) {\n const current = event.target;\n const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n if (!event.shiftKey) {\n const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n nextNode.focus();\n } else {\n const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n prevNode.focus();\n }\n },\n /**\n * Handle arrow navigation via <Picker>'s handlers with scroll bug fix\n *\n * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n * @param {KeyboardEvent} event - Keyboard event\n */\n async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n this.$refs.picker[originalHandlerName](event);\n await this.$nextTick();\n const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n selectedEmoji?.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcPopover\", _vm._g(_vm._b({ ref: \"popover\", attrs: {\n \"shown\": _vm.open,\n \"container\": _vm.container,\n \"popup-role\": \"dialog\",\n \"focus-trap\": false\n /* Handled manually to remove emoji buttons from TAB sequence */\n }, on: { \"update:shown\": function($event) {\n _vm.open = $event;\n }, \"after-show\": _vm.afterShow, \"after-hide\": _vm.afterHide }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function(slotProps) {\n return [_vm._t(\"default\", null, null, slotProps)];\n } }], null, true) }, \"NcPopover\", _vm.$attrs, false), _vm.$listeners), [_c(\"div\", { staticClass: \"nc-emoji-picker-container\" }, [_c(\"Picker\", _vm._b({ ref: \"picker\", attrs: { \"color\": \"var(--color-primary-element)\", \"data\": _vm.emojiIndex, \"emoji\": _vm.previewFallbackEmoji, \"i18n\": _vm.i18n, \"native\": _vm.native, \"emoji-size\": 20, \"per-line\": 8, \"picker-styles\": { width: \"320px\" }, \"show-preview\": _vm.showPreview, \"skin\": _vm.currentSkinTone, \"show-skin-tones\": false, \"title\": _vm.previewFallbackName, \"role\": \"dialog\", \"aria-modal\": \"true\", \"aria-label\": _vm.t(\"Emoji picker\") }, on: { \"select\": _vm.select }, nativeOn: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n $event.preventDefault();\n return _vm.handleTabNavigationSkippingEmojis.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"searchTemplate\", fn: function({ onSearch }) {\n return [_c(\"div\", { staticClass: \"search__wrapper\" }, [_c(\"NcTextField\", { ref: \"search\", staticClass: \"search\", attrs: { \"value\": _vm.search, \"label\": _vm.t(\"Search\"), \"label-visible\": true, \"placeholder\": _vm.i18n.search, \"trailing-button-icon\": \"close\", \"trailing-button-label\": _vm.t(\"Clear search\"), \"show-trailing-button\": _vm.search !== \"\" }, on: { \"update:value\": [function($event) {\n _vm.search = $event;\n }, function($event) {\n return onSearch(_vm.search);\n }], \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"left\", 37, $event.key, [\"Left\", \"ArrowLeft\"])) return null;\n if (\"button\" in $event && $event.button !== 0) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"right\", 39, $event.key, [\"Right\", \"ArrowRight\"])) return null;\n if (\"button\" in $event && $event.button !== 2) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.$refs.picker.onEnter.apply(null, arguments);\n }], \"trailing-button-click\": function($event) {\n _vm.clearSearch();\n onSearch(\"\");\n } } }), _c(\"NcColorPicker\", { attrs: { \"palette-only\": \"\", \"container\": _vm.container, \"palette\": _vm.skinTonePalette, \"value\": _vm.currentColor.color }, on: { \"update:value\": _vm.onChangeSkinTone } }, [_c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"Skin tone\"), \"variant\": \"tertiary-no-background\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCircle\", { style: { color: _vm.currentColor.color }, attrs: { \"title\": _vm.currentColor.name, \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)], 1)];\n } }, _vm.allowUnselect && _vm.selectedEmoji ? { key: \"customCategory\", fn: function() {\n return [_c(\"div\", { staticClass: \"emoji-mart-category-label\" }, [_c(\"h3\", { staticClass: \"emoji-mart-category-label\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Selected\")) + \" \")])]), _c(\"Emoji\", { staticClass: \"emoji-selected\", attrs: { \"data\": _vm.emojiIndex, \"emoji\": _vm.selectedEmoji, \"native\": true, \"size\": 32 }, on: { \"click\": _vm.unselect } }), _c(\"Emoji\", { staticClass: \"emoji-delete\", attrs: { \"data\": _vm.emojiIndex, \"emoji\": \":x:\", \"native\": true, \"size\": 10 }, on: { \"click\": _vm.unselect } })];\n }, proxy: true } : null], null, true) }, \"Picker\", _vm.$attrs, false))], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a3ed576d\"\n);\nconst NcEmojiPicker = __component__.exports;\nexport {\n NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker-C_88_f6x.mjs.map\n","import '../assets/NcFilePicker-BjFpDu4R.css';\nimport { defineComponent, ref, computed, nextTick } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport NcActionCaption from \"../Components/NcActionCaption.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { r as register, M as t41, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nregister(t41);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFilePicker\",\n props: {\n accept: { default: void 0 },\n actionCaption: { default: \"\" },\n actions: { default: () => [] },\n directory: { type: Boolean },\n directoryOnly: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n label: { default: void 0 },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n variant: { default: \"primary\" }\n },\n emits: [\"pick\"],\n setup(__props, { expose, emit }) {\n const props = __props;\n expose({\n reset\n });\n const formElement = ref(null);\n const inputElement = ref(null);\n const currentLabel = computed(() => {\n if (props.loading) {\n return t(\"Uploading …\");\n } else if (props.label) {\n return props.label;\n } else if (props.directoryOnly) {\n return t(\"Pick folder\");\n }\n return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n });\n const canUploadFolders = computed(() => {\n return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n });\n function triggerPickFiles(uploadFolders) {\n reset();\n if (canUploadFolders.value) {\n inputElement.value.webkitdirectory = uploadFolders;\n }\n nextTick(() => inputElement.value.click());\n }\n function onPick() {\n const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n emit(\"pick\", files);\n }\n function reset() {\n formElement.value.reset();\n }\n return { __sfc: true, props, emit, formElement, inputElement, currentLabel, canUploadFolders, triggerPickFiles, onPick, reset, IconFolderUpload, IconPlus, IconUpload, NcActionButton, NcActionCaption, NcActions, NcIconSvgWrapper, NcLoadingIcon, t };\n }\n});\nconst filePicker = \"_filePicker_2NMRS\";\nconst style0 = {\n filePicker\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"form\", { ref: \"formElement\", class: _vm.$style.filePicker }, [_c(_setup.NcActions, { attrs: { \"aria-label\": _setup.currentLabel, \"disabled\": _vm.disabled || _vm.loading, \"menu-name\": _vm.iconOnly ? void 0 : _setup.currentLabel, \"force-name\": !_vm.iconOnly, \"variant\": _vm.variant }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [!_vm.loading ? _vm._t(\"icon\", function() {\n return [_c(_setup.IconPlus, { attrs: { \"size\": 20 } })];\n }) : _c(_setup.NcLoadingIcon)];\n }, proxy: true }], null, true) }, [_vm.actionCaption ? _c(_setup.NcActionCaption, { attrs: { \"name\": _vm.actionCaption } }) : _vm._e(), !_vm.directoryOnly ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n return _setup.triggerPickFiles(false);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.IconUpload, { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3377047136) }, [_vm._v(\" \" + _vm._s(_setup.canUploadFolders || !!_vm.$slots.actions ? _vm.multiple ? _setup.t(\"Upload files\") : _setup.t(\"Upload file\") : _setup.currentLabel) + \" \")]) : _vm._e(), _setup.canUploadFolders ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n return _setup.triggerPickFiles(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.IconFolderUpload, { staticStyle: { \"color\": \"var(--color-primary-element)\" }, attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 746052933) }, [_vm._v(\" \" + _vm._s(!_vm.directoryOnly || !!_vm.$slots.actions ? _setup.t(\"Upload folder\") : _setup.currentLabel) + \" \")]) : _vm._e(), _vm._l(_vm.actions, function(group) {\n return [group.caption ? _c(_setup.NcActionCaption, { key: group.caption, attrs: { \"name\": group.caption } }) : _vm._e(), _vm._l(group.actions ?? [group], function(action) {\n return _c(_setup.NcActionButton, { key: action.label, attrs: { \"close-after-click\": \"\" }, on: { \"click\": action.onClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": action.iconSvg } })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(action.label) + \" \")]);\n })];\n })], 2), _c(\"input\", { ref: \"inputElement\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join(\", \"), \"aria-hidden\": \"true\", \"multiple\": _vm.multiple, \"type\": \"file\" }, on: { \"change\": _setup.onPick } }), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFilePicker = __component__.exports;\nexport {\n NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-Dg6UqMN1.mjs.map\n","import { a as mdiCheck, e as mdiContentCopy } from \"./mdi-DkJglNiS.mjs\";\nimport { toValue } from \"@vueuse/core\";\nimport { ref, computed } from \"vue\";\nimport { r as register, d as t22, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nregister(t22);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst DELAY = 2e3;\nfunction useCopy(content) {\n const isCopied = ref(false);\n const icon = computed(() => isCopied.value ? mdiCheck : mdiContentCopy);\n const altText = computed(() => isCopied.value ? t(\"Copied\") : t(\"Copy to clipboard\"));\n async function copy() {\n if (isCopied.value) {\n return;\n }\n const value = toValue(content);\n try {\n await navigator.clipboard.writeText(value);\n } catch {\n prompt(\"\", value);\n }\n isCopied.value = true;\n setTimeout(() => {\n isCopied.value = false;\n }, DELAY);\n }\n return {\n isCopied,\n copy,\n icon,\n altText\n };\n}\nexport {\n useCopy as u\n};\n//# sourceMappingURL=useCopy-C-jNoLry.mjs.map\n","import '../assets/NcKbd-IflT8hS_.css';\nimport { defineComponent, computed } from \"vue\";\nimport { r as register, y as t8, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t8);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: void 0 },\n mac: { type: [Boolean, null], default: isMac }\n },\n setup(__props) {\n const props = __props;\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => props.symbol && labels.value[props.symbol] || props.symbol);\n return { __sfc: true, props, labels, label };\n }\n});\nconst kbd = \"_kbd_yM-sL\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_eWxAA\",\n kbd\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"kbd\", { class: _vm.$style.kbd }, [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_setup.label) + \" \")];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcKbd = __component__.exports;\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-D86qGvDb.mjs.map\n","import '../assets/NcHotkeyList-XE5Xd_iE.css';\nimport { defineComponent } from \"vue\";\nimport { r as register, z as t31, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return { __sfc: true, labelId, t };\n }\n});\nconst hotkeyList = \"_hotkeyList_OojgM\";\nconst hotkeyList__heading = \"_hotkeyList__heading_Co5pe\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: _vm.$style.hotkeyList }, [_c(\"div\", { class: [_vm.$style.hotkeyList__heading, { \"hidden-visually\": !_vm.label }], attrs: { \"id\": _setup.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label || _setup.t(\"Keyboard shortcuts\")) + \" \")]), _c(\"ul\", { attrs: { \"aria-labelledby\": _setup.labelId } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcHotkeyList = __component__.exports;\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-BACQoMeA.mjs.map\n","import '../assets/NcListItem-3a4Lafwa.css';\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcCounterBubble } from \"./NcCounterBubble-oxV8oMlX.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst [major] = loadState(\"core\", \"config\", { version: \"30.0\" }).version.split(\".\", 2) ?? [];\nconst isLegacy = major && Number.parseInt(major) < 30;\nconst _sfc_main = {\n name: \"NcListItem\",\n components: {\n NcActions,\n NcCounterBubble,\n NcVNodes\n },\n props: {\n /**\n * The details text displayed in the upper right part of the component\n */\n details: {\n type: String,\n default: \"\"\n },\n /**\n * Name (first line of text)\n */\n name: {\n type: String,\n default: void 0\n },\n /**\n * Pass in `true` if you want the matching behavior to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * The route for the router link.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * The value for the external link\n */\n href: {\n type: String,\n default: \"#\"\n },\n /**\n * The HTML target attribute used for the link\n */\n target: {\n type: String,\n default: \"\"\n },\n /**\n * Id for the `<a>` element\n */\n anchorId: {\n type: String,\n default: \"\"\n },\n /**\n * Make subname bold\n */\n bold: {\n type: Boolean,\n default: false\n },\n /**\n * Show the NcListItem in compact design\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Toggle the active state of the component\n */\n active: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * Aria label for the wrapper element\n */\n linkAriaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions toggle\n */\n actionsAriaLabel: {\n type: String,\n default: void 0\n },\n /**\n * If different from 0 this component will display the\n * NcCounterBubble component\n */\n counterNumber: {\n type: [Number, String],\n default: 0\n },\n /**\n * Outlined or highlighted state of the counter\n */\n counterType: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].indexOf(value) !== -1;\n }\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Show the list component layout\n */\n oneLine: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"click\",\n \"dragstart\",\n \"update:menuOpen\"\n ],\n setup() {\n return {\n isLegacy\n };\n },\n data() {\n return {\n hovered: false,\n hasActions: false,\n hasSubname: false,\n displayActionsOnHoverFocus: false,\n menuOpen: false,\n hasIndicator: false,\n hasDetails: false\n };\n },\n computed: {\n showAdditionalElements() {\n return !this.displayActionsOnHoverFocus || this.forceDisplayActions;\n },\n showDetails() {\n return (this.details !== \"\" || this.hasDetails) && (!this.displayActionsOnHoverFocus || this.forceDisplayActions);\n }\n },\n watch: {\n menuOpen(newValue) {\n if (!newValue && !this.hovered) {\n this.displayActionsOnHoverFocus = false;\n }\n }\n },\n mounted() {\n this.checkSlots();\n },\n updated() {\n this.checkSlots();\n },\n methods: {\n /**\n * Handle link click\n *\n * @param {MouseEvent|KeyboardEvent} event - Native click or keydown event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n showActions() {\n if (this.hasActions) {\n this.displayActionsOnHoverFocus = true;\n }\n this.hovered = false;\n },\n hideActions() {\n this.displayActionsOnHoverFocus = false;\n },\n /**\n * @param {FocusEvent} event UI event\n */\n handleBlur(event) {\n if (this.menuOpen) {\n return;\n }\n if (this.$refs[\"list-item\"].contains(event.relatedTarget)) {\n return;\n }\n this.hideActions();\n },\n /**\n * Hide the actions on mouseleave unless the menu is open\n */\n handleMouseleave() {\n if (!this.menuOpen) {\n this.displayActionsOnHoverFocus = false;\n }\n this.hovered = false;\n },\n handleMouseover() {\n this.showActions();\n this.hovered = true;\n },\n handleActionsUpdateOpen(e) {\n this.menuOpen = e;\n this.$emit(\"update:menuOpen\", e);\n },\n // Check if subname and actions slots are populated\n checkSlots() {\n if (this.hasActions !== !!this.$slots.actions) {\n this.hasActions = !!this.$slots.actions;\n }\n if (this.hasSubname !== !!this.$slots.subname) {\n this.hasSubname = !!this.$slots.subname;\n }\n if (this.hasIndicator !== !!this.$slots.indicator) {\n this.hasIndicator = !!this.$slots.indicator;\n }\n if (this.hasDetails !== !!this.$slots.details) {\n this.hasDetails = !!this.$slots.details;\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.to ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.to ? true : null, \"to\": _vm.to, \"exact\": _vm.to ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"li\", { staticClass: \"list-item__wrapper\", class: { \"list-item__wrapper--active\": _vm.active ?? isActive } }, [_c(\"div\", { ref: \"list-item\", staticClass: \"list-item\", class: {\n \"list-item--compact\": _vm.compact,\n \"list-item--legacy\": _vm.isLegacy,\n \"list-item--one-line\": _vm.oneLine\n }, on: { \"mouseover\": _vm.handleMouseover, \"mouseleave\": _vm.handleMouseleave } }, [_c(\"a\", { staticClass: \"list-item__anchor\", attrs: { \"id\": _vm.anchorId || void 0, \"aria-label\": _vm.linkAriaLabel, \"href\": routerLinkHref || _vm.href, \"target\": _vm.target || (_vm.href === \"#\" ? void 0 : \"_blank\"), \"rel\": _vm.href === \"#\" ? void 0 : \"noopener noreferrer\" }, on: { \"focus\": _vm.showActions, \"focusout\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"dragstart\": function($event) {\n return _vm.$emit(\"dragstart\", $event);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.hideActions.apply(null, arguments);\n } } }, [_vm._t(\"icon\"), _c(\"div\", { staticClass: \"list-item-content\" }, [_c(\"div\", { staticClass: \"list-item-content__main\" }, [_c(\"div\", { staticClass: \"list-item-content__name\" }, [_vm._t(\"name\", function() {\n return [_vm._v(_vm._s(_vm.name))];\n })], 2), _vm.hasSubname ? _c(\"div\", { staticClass: \"list-item-content__subname\", class: { \"list-item-content__subname--bold\": _vm.bold } }, [_vm._t(\"subname\")], 2) : _vm._e()]), _c(\"div\", { staticClass: \"list-item-content__details\" }, [_vm.showDetails ? _c(\"div\", { staticClass: \"list-item-details__details\" }, [_vm._t(\"details\", function() {\n return [_vm._v(_vm._s(_vm.details))];\n })], 2) : _vm._e(), _vm.counterNumber || _vm.hasIndicator ? _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showAdditionalElements, expression: \"showAdditionalElements\" }], staticClass: \"list-item-details__extra\" }, [_vm.counterNumber ? _c(\"NcCounterBubble\", { staticClass: \"list-item-details__counter\", attrs: { \"active\": _vm.active ?? isActive, \"type\": _vm.counterType } }, [_vm._v(\" \" + _vm._s(_vm.counterNumber) + \" \")]) : _vm._e(), _vm.hasIndicator ? _c(\"span\", { staticClass: \"list-item-details__indicator\" }, [_vm._t(\"indicator\")], 2) : _vm._e()], 1) : _vm._e()])])], 2), _vm.$slots[\"extra-actions\"] ? _c(\"div\", { staticClass: \"list-item-content__extra-actions\" }, [_vm._t(\"extra-actions\")], 2) : _vm._e(), _vm.forceDisplayActions || _vm.displayActionsOnHoverFocus ? _c(\"div\", { staticClass: \"list-item-content__actions\", on: { \"focusout\": _vm.handleBlur } }, [_c(\"NcActions\", { ref: \"actions\", attrs: { \"primary\": _vm.active ?? isActive, \"force-menu\": _vm.forceMenu, \"aria-label\": _vm.actionsAriaLabel }, on: { \"update:open\": _vm.handleActionsUpdateOpen }, scopedSlots: _vm._u([_vm.$slots[\"actions-icon\"] ? { key: \"icon\", fn: function() {\n return [_vm._t(\"actions-icon\")];\n }, proxy: true } : null], null, true) }, [_vm._t(\"actions\")], 2)], 1) : _vm._e(), _vm.$slots.extra ? _c(\"div\", { staticClass: \"list-item__extra\" }, [_vm._t(\"extra\")], 2) : _vm._e()])])];\n } }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9ea2f116\"\n);\nconst NcListItem = __component__.exports;\nexport {\n NcListItem as N\n};\n//# sourceMappingURL=NcListItem-DFrhF-DU.mjs.map\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n case 'ArrayBuffer':\n return as(new Uint8Array(value).buffer, value);\n case 'DataView': {\n const { buffer } = new Uint8Array(value);\n return as(new DataView(buffer), value);\n }\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n case 'DataView':\n return [ARRAY, asString];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type) {\n let spread = value;\n if (type === 'DataView') {\n spread = new Uint8Array(value.buffer);\n }\n else if (type === 'ArrayBuffer') {\n spread = new Uint8Array(value);\n }\n return as([type, [...spread]], value);\n }\n\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is an element.\n * @param {unknown} this\n * Context object (`this`) to call `test` with\n * @param {unknown} [element]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * Position of `element` in its parent.\n * @param {Parents | null | undefined} [parent]\n * Parent of `element`.\n * @returns {boolean}\n * Whether this is an element and passes a test.\n *\n * @typedef {Array<TestFunction | string> | TestFunction | string | null | undefined} Test\n * Check for an arbitrary element.\n *\n * * when `string`, checks that the element has that tag name\n * * when `function`, see `TestFunction`\n * * when `Array`, checks if one of the subtests pass\n *\n * @callback TestFunction\n * Check if an element passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Element} element\n * An element.\n * @param {number | undefined} [index]\n * Position of `element` in its parent.\n * @param {Parents | undefined} [parent]\n * Parent of `element`.\n * @returns {boolean | undefined | void}\n * Whether this element passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `element` is an `Element` and whether it passes the given test.\n *\n * @param element\n * Thing to check, typically `element`.\n * @param test\n * Check for a specific element.\n * @param index\n * Position of `element` in its parent.\n * @param parent\n * Parent of `element`.\n * @param context\n * Context object (`this`) to call `test` with.\n * @returns\n * Whether `element` is an `Element` and passes a test.\n * @throws\n * When an incorrect `test`, `index`, or `parent` is given; there is no error\n * thrown when `element` is not a node or not an element.\n */\nexport const isElement =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends TestFunction>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n * (<Condition extends string>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n * ((element?: null | undefined) => false) &\n * ((element: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n * ((element: unknown, test?: Test, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [element]\n * @param {Test | undefined} [test]\n * @param {number | null | undefined} [index]\n * @param {Parents | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (element, test, index, parent, context) {\n const check = convertElement(test)\n\n if (\n index !== null &&\n index !== undefined &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite `index`')\n }\n\n if (\n parent !== null &&\n parent !== undefined &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected valid `parent`')\n }\n\n if (\n (index === null || index === undefined) !==\n (parent === null || parent === undefined)\n ) {\n throw new Error('Expected both `index` and `parent`')\n }\n\n return looksLikeAnElement(element)\n ? check.call(context, element, index, parent)\n : false\n }\n )\n\n/**\n * Generate a check from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * an `element`, `index`, and `parent`.\n *\n * @param test\n * A test for a specific element.\n * @returns\n * A check.\n */\nexport const convertElement =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends TestFunction>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n * (<Condition extends string>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n * ((test?: null | undefined) => (element?: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test | null | undefined} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n // Assume array.\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as `test`')\n }\n )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array<TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn a string into a test for an element with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction tagNameFactory(check) {\n return castFactory(tagName)\n\n /**\n * @param {Element} element\n * @returns {boolean}\n */\n function tagName(element) {\n return element.tagName === check\n }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeAnElement(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} element\n * @returns {element is Element}\n */\nfunction element(element) {\n return Boolean(\n element &&\n typeof element === 'object' &&\n 'type' in element &&\n element.type === 'element' &&\n 'tagName' in element &&\n typeof element.tagName === 'string'\n )\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Element}\n */\nfunction looksLikeAnElement(value) {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'type' in value &&\n 'tagName' in value\n )\n}\n","// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\n// Windows paths like `c:\\`\nconst WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\\\/;\n\nexport default function isAbsoluteUrl(url) {\n\tif (typeof url !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof url}\\``);\n\t}\n\n\tif (WINDOWS_PATH_REGEX.test(url)) {\n\t\treturn false;\n\t}\n\n\treturn ABSOLUTE_URL_REGEX.test(url);\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-is-element').Test} Test\n */\n\n/**\n * @callback CreateContent\n * Create a target for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array<ElementContent> | ElementContent | null | undefined}\n * Content to add.\n *\n * @callback CreateProperties\n * Create properties for an element.\n * @param {Element} element\n * Element to check.\n * @returns {Properties | null | undefined}\n * Properties to add.\n *\n * @callback CreateRel\n * Create a `rel` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array<string> | string | null | undefined}\n * `rel` to use.\n *\n * @callback CreateTarget\n * Create a `target` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Target | null | undefined}\n * `target` to use.\n *\n * @typedef Options\n * Configuration.\n * @property {Array<ElementContent> | CreateContent | ElementContent | null | undefined} [content]\n * Content to insert at the end of external links (optional); will be\n * inserted in a `<span>` element; useful for improving accessibility by\n * giving users advanced warning when opening a new window.\n * @property {CreateProperties | Properties | null | undefined} [contentProperties]\n * Properties to add to the `span` wrapping `content` (optional).\n * @property {CreateProperties | Properties | null | undefined} [properties]\n * Properties to add to the link itself (optional).\n * @property {Array<string> | null | undefined} [protocols=['http', 'https']]\n * Protocols to check, such as `mailto` or `tel` (default: `['http',\n * 'https']`).\n * @property {Array<string> | CreateRel | string | null | undefined} [rel=['nofollow']]\n * Link types to hint about the referenced documents (default:\n * `['nofollow']`); pass an empty array (`[]`) to not set `rel`s on links;\n * when using a `target`, add `noopener` and `noreferrer` to avoid\n * exploitation of the `window.opener` API.\n * @property {CreateTarget | Target | null | undefined} [target]\n * How to display referenced documents; the default (nothing) is to not set\n * `target`s on links.\n * @property {Test | null | undefined} [test]\n * Extra test to define which external link elements are modified (optional);\n * any test that can be given to `hast-util-is-element` is supported.\n *\n * @typedef {'_blank' | '_parent' | '_self' | '_top'} Target\n * Target.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {convertElement} from 'hast-util-is-element'\nimport isAbsoluteUrl from 'is-absolute-url'\nimport {parse} from 'space-separated-tokens'\nimport {visit} from 'unist-util-visit'\n\nconst defaultProtocols = ['http', 'https']\nconst defaultRel = ['nofollow']\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Automatically add `rel` (and `target`?) to external links.\n *\n * ###### Notes\n *\n * You should [likely not configure `target`][css-tricks].\n *\n * You should at least set `rel` to `['nofollow']`.\n * When using a `target`, add `noopener` and `noreferrer` to avoid exploitation\n * of the `window.opener` API.\n *\n * When using a `target`, you should set `content` to adhere to accessibility\n * guidelines by giving users advanced warning when opening a new window.\n *\n * [css-tricks]: https://css-tricks.com/use-target_blank/\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function rehypeExternalLinks(options) {\n const settings = options || emptyOptions\n const protocols = settings.protocols || defaultProtocols\n const is = convertElement(settings.test)\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n visit(tree, 'element', function (node, index, parent) {\n if (\n node.tagName === 'a' &&\n typeof node.properties.href === 'string' &&\n is(node, index, parent)\n ) {\n const url = node.properties.href\n\n if (\n isAbsoluteUrl(url)\n ? protocols.includes(url.slice(0, url.indexOf(':')))\n : url.startsWith('//')\n ) {\n const contentRaw = createIfNeeded(settings.content, node)\n const content =\n contentRaw && !Array.isArray(contentRaw) ? [contentRaw] : contentRaw\n const relRaw = createIfNeeded(settings.rel, node) || defaultRel\n const rel = typeof relRaw === 'string' ? parse(relRaw) : relRaw\n const target = createIfNeeded(settings.target, node)\n\n const properties = createIfNeeded(settings.properties, node)\n\n if (properties) {\n Object.assign(node.properties, structuredClone(properties))\n }\n\n if (rel.length > 0) {\n node.properties.rel = [...rel]\n }\n\n if (target) {\n node.properties.target = target\n }\n\n if (content) {\n const properties =\n createIfNeeded(settings.contentProperties, node) || {}\n\n node.children.push({\n type: 'element',\n tagName: 'span',\n properties: structuredClone(properties),\n children: structuredClone(content)\n })\n }\n }\n }\n })\n }\n}\n\n/**\n * Call a function to get a return value or use the value.\n *\n * @template T\n * Type of value.\n * @param {T} value\n * Value.\n * @param {Element} element\n * Element.\n * @returns {T extends Function ? ReturnType<T> : T}\n * Result.\n */\nfunction createIfNeeded(value, element) {\n return typeof value === 'function' ? value(element) : value\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","import {\n boolean,\n number,\n spaceSeparated,\n commaSeparated,\n commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let prop = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback CreateElementLike\n * Function that works somewhat like `React.createElement`.\n * @param {string} name\n * Element name.\n * @param {any} attributes\n * Properties.\n * @param {Array<any>} [children]\n * Children.\n * @returns {any}\n * Something.\n *\n * @typedef State\n * Info passed around.\n * @property {Schema} schema\n * Current schema.\n * @property {string | undefined} prefix\n * Prefix to use.\n * @property {number} key\n * Current key.\n * @property {boolean} react\n * Looks like React.\n * @property {boolean} vue\n * Looks like Vue.\n * @property {boolean} vdom\n * Looks like vdom.\n * @property {boolean} hyperscript\n * Looks like `hyperscript`.\n *\n * @typedef Options\n * Configuration.\n * @property {string | null | undefined} [prefix]\n * Prefix to use as a prefix for keys passed in `props` to `h()`, this\n * behavior is turned off by passing `false` and turned on by passing a\n * `string`.\n * By default, `h-` is used as a prefix if the given `h` is detected as being\n * `virtual-dom/h` or `React.createElement`\n * @property {'html' | 'svg' | null | undefined} [space]\n * Whether `node` is in the `'html'` or `'svg'` space.\n * If an `<svg>` element is found when inside the HTML space, `toH`\n * automatically switches to the SVG space when entering the element, and\n * switches back when exiting.\n */\n\nimport {html, svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport styleToObject from 'style-to-object'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {CreateElementLike} H\n * Type of hyperscript function.\n * @param {H} h\n * HyperScript function.\n * @param {Node} tree\n * Tree to transform.\n * @param {string | boolean | Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {ReturnType<H>}\n * Return type of the hyperscript function.\n */\n// eslint-disable-next-line complexity\nexport function toH(h, tree, options) {\n if (typeof h !== 'function') {\n throw new TypeError('h is not a function')\n }\n\n const r = react(h)\n const v = vue(h)\n const vd = vdom(h)\n /** @type {string|boolean|null|undefined} */\n let prefix\n /** @type {Element} */\n let node\n\n if (typeof options === 'string' || typeof options === 'boolean') {\n prefix = options\n options = {}\n } else {\n if (!options) options = {}\n prefix = options.prefix\n }\n\n if (tree && tree.type === 'root') {\n const head = tree.children[0]\n // @ts-expect-error Allow `doctypes` in there, we’ll filter them out later.\n node =\n tree.children.length === 1 && head.type === 'element'\n ? head\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: tree.children\n }\n } else if (tree && tree.type === 'element') {\n node = tree\n } else {\n throw new Error(\n 'Expected root or element, not `' + ((tree && tree.type) || tree) + '`'\n )\n }\n\n return transform(h, node, {\n schema: options.space === 'svg' ? svg : html,\n prefix:\n prefix === undefined || prefix === null\n ? r || v || vd\n ? 'h-'\n : undefined\n : typeof prefix === 'string'\n ? prefix\n : prefix\n ? 'h-'\n : undefined,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n/**\n * Transform a hast node through a hyperscript interface to *anything*!\n *\n * @template {CreateElementLike} H\n * Type of hyperscript function.\n * @param {H} h\n * HyperScript function.\n * @param {Element} node\n * Node to transform.\n * @param {State} state\n * Info passed around.\n * @returns {ReturnType<H>}\n * Return type of the hyperscript function.\n */\nfunction transform(h, node, state) {\n const parentSchema = state.schema\n let schema = parentSchema\n let name = node.tagName\n /** @type {Record<string, unknown>} */\n const attributes = {}\n /** @type {Array<ReturnType<H>|string>} */\n const nodes = []\n let index = -1\n /** @type {string} */\n let key\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n state.schema = schema\n }\n\n for (key in node.properties) {\n if (node.properties && own.call(node.properties, key)) {\n addAttribute(attributes, key, node.properties[key], state, name)\n }\n }\n\n if (state.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else if (schema.space) {\n attributes.namespace = webNamespaces[schema.space]\n }\n }\n\n if (state.prefix) {\n state.key++\n attributes.key = state.prefix + state.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n const value = node.children[index]\n\n if (value.type === 'element') {\n nodes.push(transform(h, value, state))\n } else if (value.type === 'text') {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n state.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length > 0\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\n/**\n * Add an attribute to `props`.\n *\n * @param {Record<string, unknown>} props\n * Map.\n * @param {string} prop\n * Key.\n * @param {unknown} value\n * Value.\n * @param {State} state\n * Info passed around.\n * @param {string} name\n * Element name.\n * @returns {void}\n * Nothing.\n */\n// eslint-disable-next-line complexity, max-params\nfunction addAttribute(props, prop, value, state, name) {\n const info = find(state.schema, prop)\n /** @type {string | undefined} */\n let subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value === undefined ||\n value === null ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (value === false && (state.vue || state.vdom || state.hyperscript)) ||\n (!value && info.boolean && (state.vue || state.vdom || state.hyperscript))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && state.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (state.react || state.vue || state.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n // Vue 3 (used in our tests) doesn’t need this anymore.\n // Some major in the future we can drop Vue 2 support.\n /* c8 ignore next 2 */\n if (state.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (state.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (state.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n props[subprop] = Object.assign(props[subprop] || {}, {\n [info.attribute]: value\n })\n } else if (info.space && state.react) {\n props[hastToReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n/**\n * Check if `h` is `react.createElement`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like React.\n */\nfunction react(h) {\n const node = /** @type {unknown} */ (h('div', {}))\n return Boolean(\n node &&\n // @ts-expect-error Looks like a React node.\n ('_owner' in node || '_store' in node) &&\n // @ts-expect-error Looks like a React node.\n (node.key === undefined || node.key === null)\n )\n}\n\n/**\n * Check if `h` is `hyperscript`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like `hyperscript`.\n */\nfunction hyperscript(h) {\n return 'context' in h && 'cleanup' in h\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like `virtual-dom`\n */\nfunction vdom(h) {\n const node = /** @type {unknown} */ (h('div', {}))\n // @ts-expect-error Looks like a vnode.\n return node.type === 'VirtualNode'\n}\n\n/**\n * Check if `h` is Vue.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like Vue.\n */\nfunction vue(h) {\n // Vue 3 (used in our tests) doesn’t need this anymore.\n // Some major in the future we can drop Vue 2 support.\n /* c8 ignore next 3 */\n const node = /** @type {unknown} */ (h('div', {}))\n // @ts-expect-error Looks like a Vue node.\n return Boolean(node && node.context && node.context._isVue)\n}\n\n/**\n * Parse a declaration into an object.\n *\n * @param {string} value\n * CSS declarations.\n * @param {string} tagName\n * Tag name.\n * @returns {Record<string, string>}\n * Properties.\n */\nfunction parseStyle(value, tagName) {\n /** @type {Record<string, string>} */\n const result = {}\n\n try {\n styleToObject(value, (name, value) => {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n\n result[\n name.replace(\n /-([a-z])/g,\n /**\n * @param {string} _\n * @param {string} $1\n * @returns {string}\n */\n (_, $1) => $1.toUpperCase()\n )\n ] = value\n })\n } catch (error_) {\n const error = /** @type {Error} */ (error_)\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'object') {\n return ('length' in test ? anyFactory : matchesFactory)(test)\n }\n\n if (typeof test === 'function') {\n return test\n }\n\n throw new Error('Expected function, string, or object as test')\n}\n\nfunction convertAll(tests) {\n var results = []\n var length = tests.length\n var index = -1\n\n while (++index < length) {\n results[index] = convert(tests[index])\n }\n\n return results\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction matchesFactory(test) {\n return matches\n\n function matches(node) {\n var key\n\n for (key in test) {\n if (node[key] !== test[key]) {\n return false\n }\n }\n\n return true\n }\n}\n\nfunction anyFactory(tests) {\n var checks = convertAll(tests)\n var length = checks.length\n\n return matches\n\n function matches() {\n var index = -1\n\n while (++index < length) {\n if (checks[index].apply(this, arguments)) {\n return true\n }\n }\n\n return false\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type\n\n function type(node) {\n return Boolean(node && node.type === test)\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n var is\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n is = convert(test)\n\n one(tree, null, [])\n\n // Visit a single node.\n function one(node, index, parents) {\n var result = []\n var subresult\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents.concat(node)))\n return subresult[0] === EXIT ? subresult : result\n }\n\n return result\n }\n\n // Visit children in `parent`.\n function all(children, parents) {\n var min = -1\n var step = reverse ? -1 : 1\n var index = (reverse ? children.length : min) + step\n var result\n\n while (index > min && index < children.length) {\n result = one(children[index], index, parents)\n\n if (result[0] === EXIT) {\n return result\n }\n\n index = typeof result[1] === 'number' ? result[1] : index + step\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hastCssPropertyMap = {\n align: 'text-align',\n valign: 'vertical-align',\n height: 'height',\n width: 'width',\n};\n\nmodule.exports = function tableCellStyle(node) {\n visit(node, 'element', visitor);\n return node;\n};\n\nfunction visitor(node) {\n if (node.tagName !== 'tr' && node.tagName !== 'td' && node.tagName !== 'th') {\n return;\n }\n\n var hastName;\n var cssName;\n for (hastName in hastCssPropertyMap) {\n if (\n !hasOwnProperty.call(hastCssPropertyMap, hastName) ||\n node.properties[hastName] === undefined\n ) {\n continue;\n }\n cssName = hastCssPropertyMap[hastName];\n appendStyle(node, cssName, node.properties[hastName]);\n delete node.properties[hastName];\n }\n}\n\nfunction appendStyle(node, property, value) {\n var prevStyle = (node.properties.style || '').trim();\n if (prevStyle && !/;\\s*/.test(prevStyle)) {\n prevStyle += ';';\n }\n if (prevStyle) {\n prevStyle += ' ';\n }\n var nextStyle = prevStyle + property + ': ' + value + ';';\n node.properties.style = nextStyle;\n}\n","/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n * Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`).\n * If a node is passed it must be a `Text` node, whose `value` field is\n * checked.\n */\nexport function whitespace(thing) {\n /** @type {string} */\n const value =\n // @ts-expect-error looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-expect-error looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See <https://infra.spec.whatwg.org/#ascii-whitespace>.\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<unknown>} ReactElement\n *\n * @callback CreateElementLike\n * @param {any} name\n * @param {any} props\n * @param {...ReactNode} children\n * @returns {ReactNode}\n *\n * @typedef SharedOptions\n * Base configuration (without `components`).\n * @property {CreateElementLike} createElement\n * How to create elements or components.\n * You should typically pass `React.createElement`.\n * @property {((props: any) => ReactNode)|undefined} [Fragment]\n * Create fragments instead of an outer `<div>` if available.\n * You should typically pass `React.Fragment`.\n * @property {string|undefined} [prefix='h-']\n * React key prefix.\n * @property {boolean|undefined} [fixTableCellAlign=true]\n * Fix obsolete align attributes on table cells by turning them\n * into inline styles.\n * Keep it on when working with markdown, turn it off when working\n * with markup for emails.\n * The default is `true`.\n *\n * @typedef {SharedOptions & (import('./complex-types').ComponentsWithNodeOptions|import('./complex-types').ComponentsWithoutNodeOptions)} Options\n * Configuration.\n */\n\nimport {toH} from 'hast-to-hyperscript'\n// @ts-expect-error: hush.\nimport tableCellStyle from '@mapbox/hast-util-table-cell-style'\nimport {whitespace} from 'hast-util-whitespace'\n\nconst own = {}.hasOwnProperty\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * Compile HTML to React nodes.\n *\n * > 👉 **Note**: this compiler returns a React node where compilers typically\n * > return `string`.\n * > When using `.stringify`, the result is such a React node.\n * > When using `.process` (or `.processSync`), the result is available at\n * > `file.result`.\n *\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options], Root, ReactElement>}\n */\nexport default function rehypeReact(options) {\n if (!options || typeof options.createElement !== 'function') {\n throw new TypeError('createElement is not a function')\n }\n\n const createElement = options.createElement\n\n const fixTableCellAlign = options.fixTableCellAlign !== false\n\n Object.assign(this, {Compiler: compiler})\n\n /** @type {import('unified').CompilerFunction<Root, ReactNode>} */\n function compiler(node) {\n /** @type {ReactNode} */\n let result = toH(\n // @ts-expect-error: assume `name` is a known element.\n h,\n fixTableCellAlign ? tableCellStyle(node) : node,\n options.prefix\n )\n\n if (node.type === 'root') {\n // Invert <https://github.com/syntax-tree/hast-to-hyperscript/blob/d227372/index.js#L46-L56>.\n result =\n result &&\n typeof result === 'object' &&\n 'type' in result &&\n 'props' in result &&\n result.type === 'div' &&\n (node.children.length !== 1 || node.children[0].type !== 'element')\n ? // `children` does exist.\n // type-coverage:ignore-next-line\n result.props.children\n : [result]\n\n return createElement(options.Fragment || 'div', {}, result)\n }\n\n return result\n }\n\n /**\n * @param {keyof JSX.IntrinsicElements} name\n * @param {Record<string, unknown>} props\n * @param {Array<ReactNode>} [children]\n * @returns {ReactNode}\n */\n function h(name, props, children) {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we remove the pretty lines for now.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n // See: <https://github.com/rehypejs/rehype-react/pull/29>.\n // See: <https://github.com/rehypejs/rehype-react/pull/32>.\n // See: <https://github.com/rehypejs/rehype-react/pull/45>.\n if (children && tableElements.has(name)) {\n children = children.filter((child) => !whitespace(child))\n }\n\n if (options.components && own.call(options.components, name)) {\n const component = options.components[name]\n\n if (options.passNode && typeof component === 'function') {\n // @ts-expect-error: `toH` passes the current node.\n // type-coverage:ignore-next-line\n props = Object.assign({node: this}, props)\n }\n\n return createElement(component, props, children)\n }\n\n return createElement(name, props, children)\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array<string>`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array<Nodes> | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parents>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array<Nodes>} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/**\n * Turn normal line endings into hard breaks.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function newlineToBreak(tree) {\n findAndReplace(tree, [/\\r?\\n|\\r/g, replace])\n}\n\n/**\n * Replace line endings.\n *\n * @type {ReplaceFunction}\n */\nfunction replace() {\n return {type: 'break'}\n}\n","/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {newlineToBreak} from 'mdast-util-newline-to-break'\n\n/**\n * Support hard breaks without needing spaces or escapes (turns enters into\n * `<br>`s).\n *\n * @returns\n * Transform.\n */\nexport default function remarkBreaks() {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n newlineToBreak(tree)\n }\n}\n","/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const character = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n if (\n character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n value !== 'semi'\n ) {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n return character === characterReference ? false : character\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {undefined}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array<unknown>} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}","/**\n * @import {\n * Extension,\n * Handles,\n * HtmlExtension,\n * NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * List of constructs to merge into.\n * @param {Array<unknown>} list\n * List of constructs to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, \" \")\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array<string>} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = \"\\uFFFD\";\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns {State}\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n * Content.\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, contentStart, \"linePrefix\");\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter(\"paragraph\");\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(\"chunkText\", {\n contentType: \"text\",\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit(\"chunkText\");\n effects.exit(\"paragraph\");\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit(\"chunkText\");\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}","/**\n * @import {\n * Construct,\n * ContainerState,\n * InitialConstruct,\n * Initializer,\n * Point,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n * Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array<StackItem>} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter(\"chunkFlow\", {\n _tokenizer: childFlow,\n contentType: \"flow\",\n previous: childToken\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit(\"chunkFlow\"), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit(\"chunkFlow\"));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * Token.\n * @param {boolean | undefined} [endOfFile]\n * Whether the token is at the end of the file (default: `false`).\n * @returns {undefined}\n * Nothing.\n */\n function writeToChild(token, endOfFile) {\n const stream = self.sliceStream(token);\n if (endOfFile) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // …and either is not ended yet…\n !childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * Size.\n * @returns {undefined}\n * Nothing.\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n * Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array<Event>} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n partial: true,\n tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit,\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter(\"blockQuote\", {\n _container: true\n });\n state.open = true;\n }\n effects.enter(\"blockQuotePrefix\");\n effects.enter(\"blockQuoteMarker\");\n effects.consume(code);\n effects.exit(\"blockQuoteMarker\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter(\"blockQuotePrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"blockQuotePrefixWhitespace\");\n effects.exit(\"blockQuotePrefix\");\n return ok;\n }\n effects.exit(\"blockQuotePrefix\");\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(\"blockQuote\");\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n partial: true,\n tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter(\"codeIndented\");\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(\"codeIndented\");\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n * - Array-length modifications at the high end of an array (push/pop) are\n * expected to be common and are implemented in (amortized) time\n * proportional to the number of elements added or removed, whereas\n * other operations (shift/unshift and splice) are much less efficient.\n * - Function arguments are passed on the stack, so adding tens of thousands\n * of elements to an array with `arr.push(...newElements)` will frequently\n * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n * Item type.\n */\nexport class SpliceBuffer {\n /**\n * @param {ReadonlyArray<T> | null | undefined} [initial]\n * Initial items (optional).\n * @returns\n * Splice buffer.\n */\n constructor(initial) {\n /** @type {Array<T>} */\n this.left = initial ? [...initial] : [];\n /** @type {Array<T>} */\n this.right = [];\n }\n\n /**\n * Array access;\n * does not move the cursor.\n *\n * @param {number} index\n * Index.\n * @return {T}\n * Item.\n */\n get(index) {\n if (index < 0 || index >= this.left.length + this.right.length) {\n throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n }\n if (index < this.left.length) return this.left[index];\n return this.right[this.right.length - index + this.left.length - 1];\n }\n\n /**\n * The length of the splice buffer, one greater than the largest index in the\n * array.\n */\n get length() {\n return this.left.length + this.right.length;\n }\n\n /**\n * Remove and return `list[0]`;\n * moves the cursor to `0`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n shift() {\n this.setCursor(0);\n return this.right.pop();\n }\n\n /**\n * Slice the buffer to get an array;\n * does not move the cursor.\n *\n * @param {number} start\n * Start.\n * @param {number | null | undefined} [end]\n * End (optional).\n * @returns {Array<T>}\n * Array of items.\n */\n slice(start, end) {\n /** @type {number} */\n const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n if (stop < this.left.length) {\n return this.left.slice(start, stop);\n }\n if (start > this.left.length) {\n return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n }\n return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n }\n\n /**\n * Mimics the behavior of Array.prototype.splice() except for the change of\n * interface necessary to avoid segfaults when patching in very large arrays.\n *\n * This operation moves cursor is moved to `start` and results in the cursor\n * placed after any inserted items.\n *\n * @param {number} start\n * Start;\n * zero-based index at which to start changing the array;\n * negative numbers count backwards from the end of the array and values\n * that are out-of bounds are clamped to the appropriate end of the array.\n * @param {number | null | undefined} [deleteCount=0]\n * Delete count (default: `0`);\n * maximum number of elements to delete, starting from start.\n * @param {Array<T> | null | undefined} [items=[]]\n * Items to include in place of the deleted items (default: `[]`).\n * @return {Array<T>}\n * Any removed items.\n */\n splice(start, deleteCount, items) {\n /** @type {number} */\n const count = deleteCount || 0;\n this.setCursor(Math.trunc(start));\n const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n if (items) chunkedPush(this.left, items);\n return removed.reverse();\n }\n\n /**\n * Remove and return the highest-numbered item in the array, so\n * `list[list.length - 1]`;\n * Moves the cursor to `length`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n pop() {\n this.setCursor(Number.POSITIVE_INFINITY);\n return this.left.pop();\n }\n\n /**\n * Inserts a single item to the high-numbered side of the array;\n * moves the cursor to `length`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n push(item) {\n this.setCursor(Number.POSITIVE_INFINITY);\n this.left.push(item);\n }\n\n /**\n * Inserts many items to the high-numbered side of the array.\n * Moves the cursor to `length`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n pushMany(items) {\n this.setCursor(Number.POSITIVE_INFINITY);\n chunkedPush(this.left, items);\n }\n\n /**\n * Inserts a single item to the low-numbered side of the array;\n * Moves the cursor to `0`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n unshift(item) {\n this.setCursor(0);\n this.right.push(item);\n }\n\n /**\n * Inserts many items to the low-numbered side of the array;\n * moves the cursor to `0`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n unshiftMany(items) {\n this.setCursor(0);\n chunkedPush(this.right, items.reverse());\n }\n\n /**\n * Move the cursor to a specific position in the array. Requires\n * time proportional to the distance moved.\n *\n * If `n < 0`, the cursor will end up at the beginning.\n * If `n > length`, the cursor will end up at the end.\n *\n * @param {number} n\n * Position.\n * @return {undefined}\n * Nothing.\n */\n setCursor(n) {\n if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n if (n < this.left.length) {\n // Move cursor to the this.left\n const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n chunkedPush(this.right, removed.reverse());\n } else {\n // Move cursor to the this.right\n const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n chunkedPush(this.left, removed.reverse());\n }\n }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n * Item type.\n * @param {Array<T>} list\n * List to inject into.\n * @param {ReadonlyArray<T>} right\n * Items to inject.\n * @return {undefined}\n * Nothing.\n */\nfunction chunkedPush(list, right) {\n /** @type {number} */\n let chunkStart = 0;\n if (right.length < 10000) {\n list.push(...right);\n } else {\n while (chunkStart < right.length) {\n list.push(...right.slice(chunkStart, chunkStart + 10000));\n chunkStart += 10000;\n }\n }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n /** @type {Record<string, number>} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array<Event>} */\n let parameters;\n /** @type {Array<Event>} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n const events = new SpliceBuffer(eventsArray);\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events.get(index);\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === \"content\") {\n break;\n }\n if (subevents[otherIndex][1].type === \"chunkText\") {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events.get(otherIndex);\n if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events.get(lineIndex)[1].type = \"lineEndingBlank\";\n }\n otherEvent[1].type = \"lineEnding\";\n lineIndex = otherIndex;\n }\n } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n // Move past.\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = {\n ...events.get(lineIndex)[1].start\n };\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n events.splice(lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n\n // The changes to the `events` buffer must be copied back into the eventsArray\n splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n * Events.\n * @param {number} eventIndex\n * Index.\n * @returns {Record<string, number>}\n * Gaps.\n */\nfunction subcontent(events, eventIndex) {\n const token = events.get(eventIndex)[1];\n const context = events.get(eventIndex)[2];\n let startPosition = eventIndex - 1;\n /** @type {Array<number>} */\n const startPositions = [];\n let tokenizer = token._tokenizer;\n if (!tokenizer) {\n tokenizer = context.parser[token.contentType](token.start);\n if (token._contentTypeTextTrailing) {\n tokenizer._contentTypeTextTrailing = true;\n }\n }\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record<string, number>} */\n const gaps = {};\n /** @type {Array<Chunk>} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events.get(++startPosition)[1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.push([start, start + slice.length - 1]);\n events.splice(start, 2, slice);\n }\n jumps.reverse();\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n resolve: resolveContent,\n tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n partial: true,\n tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter(\"content\");\n previous = effects.enter(\"chunkContent\", {\n contentType: \"content\"\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(\"chunkContent\");\n effects.exit(\"content\");\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit(\"chunkContent\");\n previous.next = effects.enter(\"chunkContent\", {\n contentType: \"content\",\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit(\"chunkContent\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, prefixed, \"linePrefix\");\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}","/**\n * @import {\n * Effects,\n * State,\n * TokenizeContext,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return atBreak;\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}","/**\n * @import {\n * Code,\n * Effects,\n * State,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, atBreak, \"linePrefix\");\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns {State}\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n }\n return ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n partial: true,\n tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(\"definition\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code);\n effects.exit(\"definitionMarker\");\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"definition\");\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n resolve: resolveHeadingAtx,\n tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === \"whitespace\") {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: \"atxHeadingText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: \"chunkText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: \"text\"\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(\"atxHeading\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"atxHeading\");\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, \"whitespace\")(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(\"atxHeadingText\");\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingText\");\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n concrete: true,\n name: 'htmlFlow',\n resolveTo: resolveToHtmlFlow,\n tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n partial: true,\n tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n partial: true,\n tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"htmlFlow\");\n effects.enter(\"htmlFlowData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit(\"htmlFlowData\");\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter(\"htmlFlowData\");\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code> | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array<Event>} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array<Event>} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}","/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record<string, number>} */\n const columnStart = {};\n /** @type {Array<Construct>} */\n const resolveAllConstructs = [];\n /** @type {Array<Chunk>} */\n let chunks = [];\n /** @type {Array<Token>} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray<Construct>} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray<Construct>} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n * Token.\n * @returns {Array<Chunk>}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array<Chunk>} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array<string>} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n * Events.\n * @returns {Array<Event>}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (encoding && typeof encoding === 'object') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array<number>} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array<PhrasingContent>} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array<Element | Text>}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n // Someone can write `js python ruby`.\n const language = node.lang ? node.lang.split(/\\s+/) : []\n\n // GH/CM still drop the non-first languages.\n if (language.length > 0) {\n properties.className = ['language-' + language[0]]\n }\n\n // Create `<code>`.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `<pre>`.\n result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n state.patch(node, result)\n return result\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Delete} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strikethrough(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'del',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Emphasis} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function emphasis(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'em',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n let reuseCounter = state.footnoteCounts.get(id)\n\n if (reuseCounter === undefined) {\n reuseCounter = 0\n state.footnoteOrder.push(id)\n counter = state.footnoteOrder.length\n } else {\n counter = index + 1\n }\n\n reuseCounter += 1\n state.footnoteCounts.set(id, reuseCounter)\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + clobberPrefix + 'fn-' + safeId,\n id:\n clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Heading} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function heading(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'h' + node.depth,\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n * Info passed around.\n * @param {Html} node\n * mdast node.\n * @returns {Element | Raw | undefined}\n * hast node.\n */\nexport function html(state, node) {\n if (state.options.allowDangerousHtml) {\n /** @type {Raw} */\n const result = {type: 'raw', value: node.value}\n state.patch(node, result)\n return state.applyData(node, result)\n }\n\n return undefined\n}\n","/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract<Nodes, Reference>} node\n * Reference node (image, link).\n * @returns {Array<ElementContent>}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ImageReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function imageReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Image} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function image(state, node) {\n /** @type {Properties} */\n const properties = {src: normalizeUri(node.url)}\n\n if (node.alt !== null && node.alt !== undefined) {\n properties.alt = node.alt\n }\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {InlineCode} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function inlineCode(state, node) {\n /** @type {Text} */\n const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n state.patch(node, text)\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'code',\n properties: {},\n children: [text]\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {LinkReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function linkReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {href: normalizeUri(definition.url || '')}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Link} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function link(state, node) {\n /** @type {Properties} */\n const properties = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array<ElementContent>} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {List} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function list(state, node) {\n /** @type {Properties} */\n const properties = {}\n const results = state.all(node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n properties.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < results.length) {\n const child = results[index]\n\n if (\n child.type === 'element' &&\n child.tagName === 'li' &&\n child.properties &&\n Array.isArray(child.properties.className) &&\n child.properties.className.includes('task-list-item')\n ) {\n properties.className = ['contains-task-list']\n break\n }\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: node.ordered ? 'ol' : 'ul',\n properties,\n children: state.wrap(results, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Paragraph} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function paragraph(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastRoot} node\n * mdast node.\n * @returns {HastParents}\n * hast node.\n */\nexport function root(state, node) {\n /** @type {HastRoot} */\n const result = {type: 'root', children: state.wrap(state.all(node))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Strong} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strong(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'strong',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Table} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function table(state, node) {\n const rows = state.all(node)\n const firstRow = rows.shift()\n /** @type {Array<Element>} */\n const tableContent = []\n\n if (firstRow) {\n /** @type {Element} */\n const head = {\n type: 'element',\n tagName: 'thead',\n properties: {},\n children: state.wrap([firstRow], true)\n }\n state.patch(node.children[0], head)\n tableContent.push(head)\n }\n\n if (rows.length > 0) {\n /** @type {Element} */\n const body = {\n type: 'element',\n tagName: 'tbody',\n properties: {},\n children: state.wrap(rows, true)\n }\n\n const start = pointStart(node.children[1])\n const end = pointEnd(node.children[node.children.length - 1])\n if (start && end) body.position = {start, end}\n tableContent.push(body)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'table',\n properties: {},\n children: state.wrap(tableContent, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableRow} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function tableRow(state, node, parent) {\n const siblings = parent ? parent.children : undefined\n // Generate a body row when without parent.\n const rowIndex = siblings ? siblings.indexOf(node) : 1\n const tagName = rowIndex === 0 ? 'th' : 'td'\n // To do: option to use `style`?\n const align = parent && parent.type === 'table' ? parent.align : undefined\n const length = align ? align.length : node.children.length\n let cellIndex = -1\n /** @type {Array<ElementContent>} */\n const cells = []\n\n while (++cellIndex < length) {\n // Note: can also be undefined.\n const cell = node.children[cellIndex]\n /** @type {Properties} */\n const properties = {}\n const alignValue = align ? align[cellIndex] : undefined\n\n if (alignValue) {\n properties.align = alignValue\n }\n\n /** @type {Element} */\n let result = {type: 'element', tagName, properties, children: []}\n\n if (cell) {\n result.children = state.all(cell)\n state.patch(cell, result)\n result = state.applyData(cell, result)\n }\n\n cells.push(result)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'tr',\n properties: {},\n children: state.wrap(cells, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableCell} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function tableCell(state, node) {\n // Note: this function is normally not called: see `table-row` for how rows\n // and their cells are compiled.\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'td', // Assume body cell.\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastText} node\n * mdast node.\n * @returns {HastElement | HastText}\n * hast node.\n */\nexport function text(state, node) {\n /** @type {HastText} */\n const result = {type: 'text', value: trimLines(String(node.value))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ThematicBreak} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function thematicBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'hr',\n properties: {},\n children: []\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array<ElementContent>} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array<ElementContent>} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @import {\n * ElementContent as HastElementContent,\n * Element as HastElement,\n * Nodes as HastNodes,\n * Properties as HastProperties,\n * RootContent as HastRootContent,\n * Text as HastText\n * } from 'hast'\n * @import {\n * Definition as MdastDefinition,\n * FootnoteDefinition as MdastFootnoteDefinition,\n * Nodes as MdastNodes,\n * Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n * FootnoteBackContentTemplate,\n * FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | undefined} parent\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n * Handle nodes.\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree (default:\n * `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` property on footnotes to prevent them from\n * *clobbering* (default: `'user-content-'`).\n *\n * Pass `''` for trusted markdown and when you are careful with\n * polyfilling.\n * You could pass a different prefix.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=\"x\"></p>\n * <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n * Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n * Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map<string, MdastDefinition>} */\n const definitionById = new Map()\n /** @type {Map<string, MdastFootnoteDefinition>} */\n const footnoteById = new Map()\n /** @type {Map<string, number>} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array<HastElementContent>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array<HastElementContent>} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array<Type>} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<HastText | Type>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise<undefined>}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n * runs the (rehype) plugins used on it with a hast tree,\n * then discards the result (*bridge mode*)\n * * otherwise,\n * returns a hast tree,\n * the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**:\n * > It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc);\n * this is a heavy task as it needs a full HTML parser,\n * but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n * (and doesn’t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n * see later),\n * create a hast `text` node\n * * otherwise,\n * create a `<div>` element (which could be changed with `data.hName`),\n * with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n * When a processor was given,\n * configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n */\n\nimport {visit} from 'unist-util-visit'\n\n/**\n * Remove empty paragraphs in `tree`.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function squeezeParagraphs(tree) {\n visit(tree, function (node, index, parent) {\n if (\n index !== undefined &&\n parent &&\n node.type === 'paragraph' &&\n node.children.every(function (child) {\n return child.type === 'text' && /^\\s*$/.test(child.value)\n })\n ) {\n parent.children.splice(index, 1)\n return index\n }\n })\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n */\n\nimport {squeezeParagraphs} from 'mdast-squeeze-paragraphs'\nimport {visit} from 'unist-util-visit'\n\n/**\n * Only keep links with the given protocols.\n *\n * @param {object} options Options\n * @param {string[]} options.except - Protocols to exclude. Defauls to `['http', 'https']`.\n * @returns\n * Transform.\n */\nexport default function remarkUnlinkProtocols(\n options = {except: ['http', 'https']}\n) {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n /** @type {Map<string, string>} */\n const definitions = new Map()\n\n // Find definitions to look up linkReferences.\n visit(tree, 'definition', function (node, index, parent) {\n definitions.set(node.identifier, node.url)\n if (parent && typeof index === 'number') {\n const url = node.url\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1)\n return index\n }\n }\n })\n\n visit(tree, function (node, index, parent) {\n if (\n parent &&\n typeof index === 'number' &&\n (node.type === 'link' || node.type === 'linkReference')\n ) {\n const url =\n node.type === 'link' ? node.url : definitions.get(node.identifier)\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1, ...node.children)\n return index\n }\n }\n })\n\n squeezeParagraphs(tree)\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise<undefined>` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_widgets ??= {};\nwindow._registerWidget ??= (id, callback, onDestroy, props) => {\n registerWidget(id, callback, onDestroy, props);\n};\nfunction registerWidget(id, callback, onDestroy = () => {\n}, props) {\n const propsWithDefaults = {\n hasInteractiveView: true,\n fullWidth: false,\n isResizable: false,\n ...props\n };\n if (window._vue_richtext_widgets[id]) {\n logger.error(`[ReferencePicker]: Widget for id ${id} already registered`);\n return;\n }\n window._vue_richtext_widgets[id] = {\n id,\n callback,\n onDestroy,\n ...propsWithDefaults\n };\n}\nfunction renderWidget(el, options) {\n const { richObjectType, richObject, accessible, interactive } = options;\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n logger.error(\"Widget for rich object type \" + richObjectType + \" not registered\");\n return;\n }\n window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible, interactive });\n}\nfunction destroyWidget(richObjectType, el) {\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n return;\n }\n window._vue_richtext_widgets[richObjectType].onDestroy(el);\n}\nfunction isWidgetRegistered(id) {\n return !!window._vue_richtext_widgets[id];\n}\nfunction hasInteractiveView(id) {\n return !!window._vue_richtext_widgets[id]?.hasInteractiveView;\n}\nfunction hasFullWidth(id) {\n return !!window._vue_richtext_widgets[id]?.fullWidth;\n}\nfunction isResizable(id) {\n return !!window._vue_richtext_widgets[id]?.isResizable;\n}\nexport {\n renderWidget as a,\n isResizable as b,\n hasFullWidth as c,\n destroyWidget as d,\n hasInteractiveView as h,\n isWidgetRegistered as i,\n registerWidget as r\n};\n//# sourceMappingURL=widgets-XxirL-2f.mjs.map\n","import '../assets/NcReferenceWidget-Cg4xOL_8.css';\nimport { useElementSize, useIntersectionObserver } from \"@vueuse/core\";\nimport { ref, nextTick } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { r as register, l as t24, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { d as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, b as isResizable, c as hasFullWidth } from \"./widgets-XxirL-2f.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t24);\nconst IDLE_TIMEOUT = 3 * 60 * 1e3;\nconst RESIZE_KEYBOARD_STEP = 10;\nconst _sfc_main = {\n name: \"NcReferenceWidget\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n reference: {\n type: Object,\n required: true\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const widgetId = `nc-reference-widget-${createElementId()}`;\n const isVisible = ref(false);\n const widgetRoot = ref();\n const customWidget = ref();\n const { width } = useElementSize(widgetRoot);\n const { height: customWidgetHeight } = useElementSize(customWidget);\n useIntersectionObserver(widgetRoot, ([entry]) => {\n nextTick(() => {\n isVisible.value = entry.isIntersecting;\n });\n });\n return {\n width,\n isVisible,\n widgetRoot,\n customWidget,\n customWidgetHeight,\n widgetId,\n RESIZE_KEYBOARD_STEP\n };\n },\n data() {\n return {\n showInteractive: false,\n rendered: false,\n idleTimeout: null,\n isResizing: false,\n resizedHeight: null,\n resizeStartY: 0,\n resizeStartHeight: 0,\n resizeMinHeight: 100,\n resizeMaxHeight: window.innerHeight - 120\n };\n },\n computed: {\n isInteractive() {\n return !this.interactiveOptIn && this.interactive || this.showInteractive;\n },\n hasFullWidth() {\n return hasFullWidth(this.reference.richObjectType);\n },\n isResizable() {\n return isResizable(this.reference.richObjectType);\n },\n hasCustomWidget() {\n return isWidgetRegistered(this.reference.richObjectType);\n },\n customWidgetStyle() {\n if (!this.resizedHeight) {\n return null;\n }\n return { height: `${this.resizedHeight}px !important` };\n },\n ariaValueNow() {\n return Math.round(this.resizedHeight ?? this.customWidgetHeight);\n },\n hasInteractiveView() {\n return isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType);\n },\n noAccess() {\n return this.reference && !this.reference.accessible;\n },\n descriptionStyle() {\n if (this.numberOfLines === 0) {\n return {\n display: \"none\"\n };\n }\n const lineClamp = this.numberOfLines;\n return {\n lineClamp,\n webkitLineClamp: lineClamp\n };\n },\n numberOfLines() {\n const lineCountOffsets = [450, 550, 650, Infinity];\n return lineCountOffsets.findIndex((max) => this.width < max);\n },\n compactLink() {\n const link = this.reference.openGraphObject.link;\n if (!link) {\n return \"\";\n }\n if (link.startsWith(\"https://\")) {\n return link.substring(8);\n }\n if (link.startsWith(\"http://\")) {\n return link.substring(7);\n }\n return link;\n },\n route() {\n return getRoute(this.$router, this.reference.openGraphObject.link);\n },\n referenceWidgetLinkComponent() {\n return this.route ? RouterLink : \"a\";\n },\n referenceWidgetLinkProps() {\n return this.route ? { to: this.route } : { href: this.reference.openGraphObject.link, target: \"_blank\" };\n }\n },\n watch: {\n isVisible: {\n handler(val) {\n if (!val) {\n this.idleTimeout = setTimeout(() => {\n if (!this.isVisible) {\n this.destroyWidget();\n }\n }, IDLE_TIMEOUT);\n return;\n }\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n if (!this.rendered) {\n this.renderWidget();\n }\n },\n immediate: true\n }\n },\n beforeDestroy() {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimout = null;\n }\n this.stopResize();\n this.destroyWidget();\n },\n methods: {\n t,\n enableInteractive() {\n this.showInteractive = true;\n this.renderWidget();\n },\n renderWidget() {\n if (!this.$refs.customWidgetContent) {\n return;\n }\n if (this?.reference?.richObjectType === \"open-graph\") {\n return;\n }\n this.$refs.customWidgetContent.innerHTML = \"\";\n const widget = document.createElement(\"div\");\n widget.style = \"width: 100%;\";\n this.$refs.customWidgetContent.appendChild(widget);\n this.$nextTick(() => {\n renderWidget(widget, {\n ...this.reference,\n interactive: this.isInteractive\n });\n this.rendered = true;\n });\n },\n destroyWidget() {\n if (this.rendered) {\n destroyWidget(this.reference.richObjectType, this.$el);\n this.rendered = false;\n }\n },\n initResizeLimits() {\n const widgetEl = this.$refs.customWidgetContent?.firstElementChild;\n if (widgetEl) {\n const computedStyle = window.getComputedStyle(widgetEl);\n const parsedMin = parseFloat(computedStyle.minHeight);\n const parsedMax = parseFloat(computedStyle.maxHeight);\n this.resizeMinHeight = parsedMin > 0 ? parsedMin : 100;\n this.resizeMaxHeight = Number.isFinite(parsedMax) && parsedMax > 0 ? parsedMax : window.innerHeight - 120;\n } else {\n this.resizeMinHeight = 100;\n this.resizeMaxHeight = window.innerHeight - 120;\n }\n },\n startResize(event) {\n if (!this.isResizable || !this.$refs.customWidget) {\n return;\n }\n this.initResizeLimits();\n this.isResizing = true;\n this.resizeStartY = event.clientY;\n this.resizeStartHeight = this.$refs.customWidget.getBoundingClientRect().height;\n window.addEventListener(\"pointermove\", this.onResize);\n window.addEventListener(\"pointerup\", this.stopResize);\n },\n onResizeKeydown(delta) {\n if (!this.isResizable || !this.$refs.customWidget) {\n return;\n }\n this.initResizeLimits();\n const currentHeight = this.resizedHeight ?? this.resizeStartHeight;\n const next = currentHeight + delta;\n this.resizedHeight = Math.min(this.resizeMaxHeight, Math.max(this.resizeMinHeight, next));\n },\n onResize(event) {\n if (!this.isResizing || !this.$refs.customWidget) {\n return;\n }\n const deltaY = event.clientY - this.resizeStartY;\n this.resizedHeight = Math.min(this.resizeMaxHeight, Math.max(this.resizeMinHeight, this.resizeStartHeight + deltaY));\n },\n stopResize() {\n if (!this.isResizing) {\n return;\n }\n this.isResizing = false;\n window.removeEventListener(\"pointermove\", this.onResize);\n window.removeEventListener(\"pointerup\", this.stopResize);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"widgetRoot\", class: { \"toggle-interactive\": _vm.hasInteractiveView && !_vm.isInteractive } }, [_vm.reference && _vm.hasCustomWidget ? _c(\"div\", { ref: \"customWidget\", staticClass: \"widget-custom\", class: {\n \"full-width\": _vm.hasFullWidth\n }, style: _vm.customWidgetStyle, attrs: { \"id\": _vm.widgetId } }, [_c(\"div\", { ref: \"customWidgetContent\", staticClass: \"widget-custom__content\" }), _vm.isResizable ? _c(\"div\", { staticClass: \"widget-custom__resize-handle\", attrs: { \"role\": \"slider\", \"tabindex\": \"0\", \"aria-orientation\": \"vertical\", \"aria-label\": _vm.t(\"Widget height\"), \"aria-valuenow\": _vm.ariaValueNow, \"aria-valuemin\": _vm.resizeMinHeight, \"aria-valuemax\": _vm.resizeMaxHeight, \"aria-controls\": _vm.widgetId }, on: { \"pointerdown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.startResize.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onResizeKeydown(-_vm.RESIZE_KEYBOARD_STEP);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onResizeKeydown(_vm.RESIZE_KEYBOARD_STEP);\n }] } }) : _vm._e()]) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c(_vm.referenceWidgetLinkComponent, _vm._b({ tag: \"component\", staticClass: \"widget-default\", attrs: { \"rel\": \"noopener noreferrer\" } }, \"component\", _vm.referenceWidgetLinkProps, false), [_vm.reference.openGraphObject.thumb ? _c(\"img\", { staticClass: \"widget-default--image\", attrs: { \"src\": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c(\"div\", { staticClass: \"widget-default--details\" }, [_c(\"p\", { staticClass: \"widget-default--name\" }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.name) + \" \")]), _c(\"p\", { staticClass: \"widget-default--description\", style: _vm.descriptionStyle }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.description) + \" \")]), _c(\"p\", { staticClass: \"widget-default--link\" }, [_vm._v(\" \" + _vm._s(_vm.compactLink) + \" \")])])]) : _vm._e(), _vm.interactiveOptIn && _vm.hasInteractiveView && !_vm.isInteractive ? _c(\"NcButton\", { staticClass: \"toggle-interactive--button\", on: { \"click\": _vm.enableInteractive } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Enable interactive view\")) + \" \")]) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"96e3ab0e\"\n);\nconst NcReferenceWidget = __component__.exports;\nexport {\n NcReferenceWidget as N\n};\n//# sourceMappingURL=NcReferenceWidget-CMq5QVka.mjs.map\n","import '../assets/NcRichText-D0xtzoWq.css';\nimport { toString } from \"mdast-util-to-string\";\nimport rehypeExternalLinks from \"rehype-external-links\";\nimport rehype2react from \"rehype-react\";\nimport breaks from \"remark-breaks\";\nimport remarkParse from \"remark-parse\";\nimport remark2rehype from \"remark-rehype\";\nimport remarkUnlinkProtocols from \"remark-unlink-protocols\";\nimport { unified } from \"unified\";\nimport { defineComponent, ref } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-BAjRm8PQ.mjs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { getSharingToken } from \"@nextcloud/sharing/public\";\nimport { N as NcReferenceWidget } from \"./NcReferenceWidget-CMq5QVka.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { U as URL_PATTERN, p as parseUrl, r as remarkAutolink, g as getRoute, N as NcRichTextExternalLink } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { u as useCopy } from \"./useCopy-C-jNoLry.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u } from \"unist-builder\";\nimport { visitParents, EXIT, SKIP } from \"unist-util-visit-parents\";\nconst _sfc_main$2 = {\n name: \"NcReferenceList\",\n components: {\n NcReferenceWidget\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n referenceData: {\n type: Array,\n default: null\n },\n limit: {\n type: Number,\n default: 1\n },\n displayFallback: {\n type: Boolean,\n default: false\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n references: null,\n loading: true\n };\n },\n computed: {\n isVisible() {\n return this.loading || this.displayedReferences.length !== 0;\n },\n values() {\n if (this.referenceData) {\n return this.referenceData;\n }\n if (this.displayFallback && !this.loading && !this.references) {\n return [this.fallbackReference];\n }\n return this.references ? Object.values(this.references) : [];\n },\n firstReference() {\n return this.values[0] ?? null;\n },\n displayedReferences() {\n return this.values.filter(Boolean).slice(0, this.limit);\n },\n fallbackReference() {\n return {\n accessible: true,\n openGraphObject: {\n id: this.text,\n link: this.text,\n name: this.text\n },\n richObjectType: \"open-graph\"\n };\n }\n },\n watch: {\n text: \"fetch\"\n },\n mounted() {\n this.fetch();\n },\n methods: {\n fetch() {\n this.loading = true;\n if (this.referenceData) {\n this.references = null;\n this.loading = false;\n return;\n }\n if (!new RegExp(URL_PATTERN).exec(this.text)) {\n this.references = null;\n this.loading = false;\n return;\n }\n this.resolve().then((response) => {\n this.references = response.data.ocs.data.references;\n this.loading = false;\n this.$emit(\"loaded\");\n }).catch((error) => {\n logger.error(\"Failed to extract references\", { error });\n this.loading = false;\n this.$emit(\"loaded\");\n });\n },\n resolve() {\n const match = new RegExp(URL_PATTERN).exec(this.text.trim());\n const isPublic = getCurrentUser() === null;\n if (this.limit === 1 && match) {\n return isPublic ? axios.get(generateOcsUrl(\"references/resolvePublic\") + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`) : axios.get(generateOcsUrl(\"references/resolve\") + `?reference=${encodeURIComponent(match[0])}`);\n }\n return isPublic ? axios.post(generateOcsUrl(\"references/extractPublic\"), {\n text: this.text,\n resolve: true,\n limit: this.limit,\n sharingToken: getSharingToken()\n }) : axios.post(generateOcsUrl(\"references/extract\"), {\n text: this.text,\n resolve: true,\n limit: this.limit\n });\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.isVisible ? _c(\"div\", { staticClass: \"widgets--list\", class: { \"icon-loading\": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) {\n return _c(\"NcReferenceWidget\", { key: reference.openGraphObject?.id, attrs: { \"reference\": reference, \"interactive\": _vm.interactive, \"interactive-opt-in\": _vm.interactiveOptIn } });\n }), 1) : _vm._e();\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"a50e616b\"\n);\nconst NcReferenceList = __component__$2.exports;\nfunction ccount(value, character) {\n const source = String(value);\n if (typeof character !== \"string\") {\n throw new TypeError(\"Expected character\");\n }\n let count = 0;\n let index = source.indexOf(character);\n while (index !== -1) {\n count++;\n index = source.indexOf(character, index + character.length);\n }\n return count;\n}\nfunction ok$1() {\n}\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nfunction asciiControl(code2) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code2 !== null && (code2 < 32 || code2 === 127)\n );\n}\nfunction markdownLineEnding(code2) {\n return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(new RegExp(\"\\\\p{P}|\\\\p{S}\", \"u\"));\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n return check;\n function check(code2) {\n return code2 !== null && code2 > -1 && regex.test(String.fromCharCode(code2));\n }\n}\nfunction escapeStringRegexp(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(\"Expected a string\");\n }\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\nconst convert = (\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n (function(test) {\n if (test === null || test === void 0) {\n return ok;\n }\n if (typeof test === \"function\") {\n return castFactory(test);\n }\n if (typeof test === \"object\") {\n return Array.isArray(test) ? anyFactory(test) : (\n // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(\n /** @type {Props} */\n test\n )\n );\n }\n if (typeof test === \"string\") {\n return typeFactory(test);\n }\n throw new Error(\"Expected function, string, or object as test\");\n })\n);\nfunction anyFactory(tests) {\n const checks = [];\n let index = -1;\n while (++index < tests.length) {\n checks[index] = convert(tests[index]);\n }\n return castFactory(any);\n function any(...parameters) {\n let index2 = -1;\n while (++index2 < checks.length) {\n if (checks[index2].apply(this, parameters)) return true;\n }\n return false;\n }\n}\nfunction propertiesFactory(check) {\n const checkAsRecord = (\n /** @type {Record<string, unknown>} */\n check\n );\n return castFactory(all);\n function all(node) {\n const nodeAsRecord = (\n /** @type {Record<string, unknown>} */\n /** @type {unknown} */\n node\n );\n let key;\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false;\n }\n return true;\n }\n}\nfunction typeFactory(check) {\n return castFactory(type);\n function type(node) {\n return node && node.type === check;\n }\n}\nfunction castFactory(testFunction) {\n return check;\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) && testFunction.call(\n this,\n value,\n typeof index === \"number\" ? index : void 0,\n parent || void 0\n )\n );\n }\n}\nfunction ok() {\n return true;\n}\nfunction looksLikeANode(value) {\n return value !== null && typeof value === \"object\" && \"type\" in value;\n}\nfunction findAndReplace(tree, list2, options) {\n const settings = options || {};\n const ignored = convert(settings.ignore || []);\n const pairs = toPairs(list2);\n let pairIndex = -1;\n while (++pairIndex < pairs.length) {\n visitParents(tree, \"text\", visitor);\n }\n function visitor(node, parents) {\n let index = -1;\n let grandparent;\n while (++index < parents.length) {\n const parent = parents[index];\n const siblings = grandparent ? grandparent.children : void 0;\n if (ignored(\n parent,\n siblings ? siblings.indexOf(parent) : void 0,\n grandparent\n )) {\n return;\n }\n grandparent = parent;\n }\n if (grandparent) {\n return handler(node, parents);\n }\n }\n function handler(node, parents) {\n const parent = parents[parents.length - 1];\n const find = pairs[pairIndex][0];\n const replace2 = pairs[pairIndex][1];\n let start = 0;\n const siblings = parent.children;\n const index = siblings.indexOf(node);\n let change = false;\n let nodes = [];\n find.lastIndex = 0;\n let match = find.exec(node.value);\n while (match) {\n const position = match.index;\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n };\n let value = replace2(...match, matchObject);\n if (typeof value === \"string\") {\n value = value.length > 0 ? { type: \"text\", value } : void 0;\n }\n if (value === false) {\n find.lastIndex = position + 1;\n } else {\n if (start !== position) {\n nodes.push({\n type: \"text\",\n value: node.value.slice(start, position)\n });\n }\n if (Array.isArray(value)) {\n nodes.push(...value);\n } else if (value) {\n nodes.push(value);\n }\n start = position + match[0].length;\n change = true;\n }\n if (!find.global) {\n break;\n }\n match = find.exec(node.value);\n }\n if (change) {\n if (start < node.value.length) {\n nodes.push({ type: \"text\", value: node.value.slice(start) });\n }\n parent.children.splice(index, 1, ...nodes);\n } else {\n nodes = [node];\n }\n return index + nodes.length;\n }\n}\nfunction toPairs(tupleOrList) {\n const result = [];\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError(\"Expected find and replace tuple or list of tuples\");\n }\n const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];\n let index = -1;\n while (++index < list2.length) {\n const tuple = list2[index];\n result.push([toExpression(tuple[0]), toFunction(tuple[1])]);\n }\n return result;\n}\nfunction toExpression(find) {\n return typeof find === \"string\" ? new RegExp(escapeStringRegexp(find), \"g\") : find;\n}\nfunction toFunction(replace2) {\n return typeof replace2 === \"function\" ? replace2 : function() {\n return replace2;\n };\n}\nconst inConstruct = \"phrasing\";\nconst notInConstruct = [\"autolink\", \"link\", \"image\", \"label\"];\nfunction gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n };\n}\nfunction gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: \"@\",\n before: \"[+\\\\-.\\\\w]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \".\",\n before: \"[Ww]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \":\",\n before: \"[ps]\",\n after: \"\\\\/\",\n inConstruct,\n notInConstruct\n }\n ]\n };\n}\nfunction enterLiteralAutolink(token) {\n this.enter({ type: \"link\", title: null, url: \"\", children: [] }, token);\n}\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token);\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"link\");\n node.url = \"http://\" + this.sliceSerialize(token);\n}\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token);\n}\nfunction exitLiteralAutolink(token) {\n this.exit(token);\n}\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n { ignore: [\"link\", \"linkReference\"] }\n );\n}\nfunction findUrl(_, protocol, domain2, path2, match) {\n let prefix = \"\";\n if (!previous(match)) {\n return false;\n }\n if (/^w/i.test(protocol)) {\n domain2 = protocol + domain2;\n protocol = \"\";\n prefix = \"http://\";\n }\n if (!isCorrectDomain(domain2)) {\n return false;\n }\n const parts = splitUrl(domain2 + path2);\n if (!parts[0]) return false;\n const result = {\n type: \"link\",\n title: null,\n url: prefix + protocol + parts[0],\n children: [{ type: \"text\", value: protocol + parts[0] }]\n };\n if (parts[1]) {\n return [result, { type: \"text\", value: parts[1] }];\n }\n return result;\n}\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) || // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false;\n }\n return {\n type: \"link\",\n title: null,\n url: \"mailto:\" + atext + \"@\" + label,\n children: [{ type: \"text\", value: atext + \"@\" + label }]\n };\n}\nfunction isCorrectDomain(domain2) {\n const parts = domain2.split(\".\");\n if (parts.length < 2 || parts[parts.length - 1] && (/_/.test(parts[parts.length - 1]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 1])) || parts[parts.length - 2] && (/_/.test(parts[parts.length - 2]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 2]))) {\n return false;\n }\n return true;\n}\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url);\n if (!trailExec) {\n return [url, void 0];\n }\n url = url.slice(0, trailExec.index);\n let trail2 = trailExec[0];\n let closingParenIndex = trail2.indexOf(\")\");\n const openingParens = ccount(url, \"(\");\n let closingParens = ccount(url, \")\");\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail2.slice(0, closingParenIndex + 1);\n trail2 = trail2.slice(closingParenIndex + 1);\n closingParenIndex = trail2.indexOf(\")\");\n closingParens++;\n }\n return [url, trail2];\n}\nfunction previous(match, email) {\n const code2 = match.input.charCodeAt(match.index - 1);\n return (match.index === 0 || unicodeWhitespace(code2) || unicodePunctuation(code2)) && (!email || code2 !== 47);\n}\nfunction normalizeIdentifier(value) {\n return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nfootnoteReference.peek = footnoteReferencePeek;\nfunction gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n };\n}\nfunction gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{ character: \"[\", inConstruct: [\"phrasing\", \"label\", \"reference\"] }],\n handlers: { footnoteDefinition, footnoteReference }\n };\n}\nfunction enterFootnoteDefinition(token) {\n this.enter(\n { type: \"footnoteDefinition\", identifier: \"\", label: \"\", children: [] },\n token\n );\n}\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer();\n}\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"footnoteDefinition\");\n node.label = label;\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteDefinition(token) {\n this.exit(token);\n}\nfunction enterFootnoteCall(token) {\n this.enter({ type: \"footnoteReference\", identifier: \"\", label: \"\" }, token);\n}\nfunction enterFootnoteCallString() {\n this.buffer();\n}\nfunction exitFootnoteCallString(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"footnoteReference\");\n node.label = label;\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteCall(token) {\n this.exit(token);\n}\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteReference\");\n const subexit = state.enter(\"reference\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n exit2();\n value += tracker.move(\"]\");\n return value;\n}\nfunction footnoteReferencePeek() {\n return \"[\";\n}\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteDefinition\");\n const subexit = state.enter(\"label\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n value += tracker.move(\n \"]:\" + (node.children && node.children.length > 0 ? \" \" : \"\")\n );\n tracker.shift(4);\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map$2)\n );\n exit2();\n return value;\n}\nfunction map$2(line, index, blank) {\n if (index === 0) {\n return line;\n }\n return (blank ? \"\" : \" \") + line;\n}\nconst constructsWithoutStrikethrough = [\n \"autolink\",\n \"destinationLiteral\",\n \"destinationRaw\",\n \"reference\",\n \"titleQuote\",\n \"titleApostrophe\"\n];\nhandleDelete.peek = peekDelete;\nfunction gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: [\"delete\"],\n enter: { strikethrough: enterStrikethrough },\n exit: { strikethrough: exitStrikethrough }\n };\n}\nfunction gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: \"~\",\n inConstruct: \"phrasing\",\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: { delete: handleDelete }\n };\n}\nfunction enterStrikethrough(token) {\n this.enter({ type: \"delete\", children: [] }, token);\n}\nfunction exitStrikethrough(token) {\n this.exit(token);\n}\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info);\n const exit2 = state.enter(\"strikethrough\");\n let value = tracker.move(\"~~\");\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: \"~\"\n });\n value += tracker.move(\"~~\");\n exit2();\n return value;\n}\nfunction peekDelete() {\n return \"~\";\n}\nfunction markdownTable(table, options = {}) {\n const align = (options.align || []).concat();\n const stringLength = options.stringLength || defaultStringLength;\n const alignments = [];\n const cellMatrix = [];\n const sizeMatrix = [];\n const longestCellByColumn = [];\n let mostCellsPerRow = 0;\n let rowIndex = -1;\n while (++rowIndex < table.length) {\n const row2 = [];\n const sizes2 = [];\n let columnIndex2 = -1;\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length;\n }\n while (++columnIndex2 < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex2]);\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell);\n sizes2[columnIndex2] = size;\n if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) {\n longestCellByColumn[columnIndex2] = size;\n }\n }\n row2.push(cell);\n }\n cellMatrix[rowIndex] = row2;\n sizeMatrix[rowIndex] = sizes2;\n }\n let columnIndex = -1;\n if (typeof align === \"object\" && \"length\" in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex]);\n }\n } else {\n const code2 = toAlignment(align);\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code2;\n }\n }\n columnIndex = -1;\n const row = [];\n const sizes = [];\n while (++columnIndex < mostCellsPerRow) {\n const code2 = alignments[columnIndex];\n let before = \"\";\n let after = \"\";\n if (code2 === 99) {\n before = \":\";\n after = \":\";\n } else if (code2 === 108) {\n before = \":\";\n } else if (code2 === 114) {\n after = \":\";\n }\n let size = options.alignDelimiters === false ? 1 : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n );\n const cell = before + \"-\".repeat(size) + after;\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length;\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size;\n }\n sizes[columnIndex] = size;\n }\n row[columnIndex] = cell;\n }\n cellMatrix.splice(1, 0, row);\n sizeMatrix.splice(1, 0, sizes);\n rowIndex = -1;\n const lines = [];\n while (++rowIndex < cellMatrix.length) {\n const row2 = cellMatrix[rowIndex];\n const sizes2 = sizeMatrix[rowIndex];\n columnIndex = -1;\n const line = [];\n while (++columnIndex < mostCellsPerRow) {\n const cell = row2[columnIndex] || \"\";\n let before = \"\";\n let after = \"\";\n if (options.alignDelimiters !== false) {\n const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0);\n const code2 = alignments[columnIndex];\n if (code2 === 114) {\n before = \" \".repeat(size);\n } else if (code2 === 99) {\n if (size % 2) {\n before = \" \".repeat(size / 2 + 0.5);\n after = \" \".repeat(size / 2 - 0.5);\n } else {\n before = \" \".repeat(size / 2);\n after = before;\n }\n } else {\n after = \" \".repeat(size);\n }\n }\n if (options.delimiterStart !== false && !columnIndex) {\n line.push(\"|\");\n }\n if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === \"\") && (options.delimiterStart !== false || columnIndex)) {\n line.push(\" \");\n }\n if (options.alignDelimiters !== false) {\n line.push(before);\n }\n line.push(cell);\n if (options.alignDelimiters !== false) {\n line.push(after);\n }\n if (options.padding !== false) {\n line.push(\" \");\n }\n if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {\n line.push(\"|\");\n }\n }\n lines.push(\n options.delimiterEnd === false ? line.join(\"\").replace(/ +$/, \"\") : line.join(\"\")\n );\n }\n return lines.join(\"\\n\");\n}\nfunction serialize(value) {\n return value === null || value === void 0 ? \"\" : String(value);\n}\nfunction defaultStringLength(value) {\n return value.length;\n}\nfunction toAlignment(value) {\n const code2 = typeof value === \"string\" ? value.codePointAt(0) : 0;\n return code2 === 67 || code2 === 99 ? 99 : code2 === 76 || code2 === 108 ? 108 : code2 === 82 || code2 === 114 ? 114 : 0;\n}\nfunction blockquote(node, _, state, info) {\n const exit2 = state.enter(\"blockquote\");\n const tracker = state.createTracker(info);\n tracker.move(\"> \");\n tracker.shift(2);\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map$1\n );\n exit2();\n return value;\n}\nfunction map$1(line, _, blank) {\n return \">\" + (blank ? \"\" : \" \") + line;\n}\nfunction patternInScope(stack, pattern) {\n return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);\n}\nfunction listInScope(stack, list2, none) {\n if (typeof list2 === \"string\") {\n list2 = [list2];\n }\n if (!list2 || list2.length === 0) {\n return none;\n }\n let index = -1;\n while (++index < list2.length) {\n if (stack.includes(list2[index])) {\n return true;\n }\n }\n return false;\n}\nfunction hardBreak(_, _1, state, info) {\n let index = -1;\n while (++index < state.unsafe.length) {\n if (state.unsafe[index].character === \"\\n\" && patternInScope(state.stack, state.unsafe[index])) {\n return /[ \\t]/.test(info.before) ? \"\" : \" \";\n }\n }\n return \"\\\\\\n\";\n}\nfunction longestStreak(value, substring) {\n const source = String(value);\n let index = source.indexOf(substring);\n let expected = index;\n let count = 0;\n let max = 0;\n if (typeof substring !== \"string\") {\n throw new TypeError(\"Expected substring\");\n }\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count;\n }\n } else {\n count = 1;\n }\n expected = index + substring.length;\n index = source.indexOf(substring, expected);\n }\n return max;\n}\nfunction formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false && node.value && // If there’s no info…\n !node.lang && // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) && // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n );\n}\nfunction checkFence(state) {\n const marker = state.options.fence || \"`\";\n if (marker !== \"`\" && marker !== \"~\") {\n throw new Error(\n \"Cannot serialize code with `\" + marker + \"` for `options.fence`, expected `` ` `` or `~`\"\n );\n }\n return marker;\n}\nfunction code$1(node, _, state, info) {\n const marker = checkFence(state);\n const raw = node.value || \"\";\n const suffix = marker === \"`\" ? \"GraveAccent\" : \"Tilde\";\n if (formatCodeAsIndented(node, state)) {\n const exit3 = state.enter(\"codeIndented\");\n const value2 = state.indentLines(raw, map);\n exit3();\n return value2;\n }\n const tracker = state.createTracker(info);\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));\n const exit2 = state.enter(\"codeFenced\");\n let value = tracker.move(sequence);\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`);\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: \" \",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`);\n value += tracker.move(\" \");\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: \"\\n\",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n value += tracker.move(\"\\n\");\n if (raw) {\n value += tracker.move(raw + \"\\n\");\n }\n value += tracker.move(sequence);\n exit2();\n return value;\n}\nfunction map(line, _, blank) {\n return (blank ? \"\" : \" \") + line;\n}\nfunction checkQuote(state) {\n const marker = state.options.quote || '\"';\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n \"Cannot serialize title with `\" + marker + \"` for `options.quote`, expected `\\\"`, or `'`\"\n );\n }\n return marker;\n}\nfunction definition(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"definition\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"]: \");\n subexit();\n if (\n // If there’s no url, or…\n !node.url || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \"\\n\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n exit2();\n return value;\n}\nfunction checkEmphasis(state) {\n const marker = state.options.emphasis || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize emphasis with `\" + marker + \"` for `options.emphasis`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nfunction encodeCharacterReference(code2) {\n return \"&#x\" + code2.toString(16).toUpperCase() + \";\";\n}\nfunction classifyCharacter(code2) {\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return 1;\n }\n if (unicodePunctuation(code2)) {\n return 2;\n }\n}\nfunction encodeInfo(outside, inside, marker) {\n const outsideKind = classifyCharacter(outside);\n const insideKind = classifyCharacter(inside);\n if (outsideKind === void 0) {\n return insideKind === void 0 ? (\n // Letter inside:\n // we have to encode *both* letters for `_` as it is looser.\n // it already forms for `*` (and GFMs `~`).\n marker === \"_\" ? { inside: true, outside: true } : { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode both (letter, whitespace).\n { inside: true, outside: true }\n ) : (\n // Punctuation inside: encode outer (letter)\n { inside: false, outside: true }\n );\n }\n if (outsideKind === 1) {\n return insideKind === void 0 ? (\n // Letter inside: already forms.\n { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode both (whitespace).\n { inside: true, outside: true }\n ) : (\n // Punctuation inside: already forms.\n { inside: false, outside: false }\n );\n }\n return insideKind === void 0 ? (\n // Letter inside: already forms.\n { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode inner (whitespace).\n { inside: true, outside: false }\n ) : (\n // Punctuation inside: already forms.\n { inside: false, outside: false }\n );\n}\nemphasis.peek = emphasisPeek;\nfunction emphasis(node, _, state, info) {\n const marker = checkEmphasis(state);\n const exit2 = state.enter(\"emphasis\");\n const tracker = state.createTracker(info);\n const before = tracker.move(marker);\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n );\n const betweenHead = between.charCodeAt(0);\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n );\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1);\n }\n const betweenTail = between.charCodeAt(between.length - 1);\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail);\n }\n const after = tracker.move(marker);\n exit2();\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n };\n return before + between + after;\n}\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || \"*\";\n}\nfunction visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n let reverse;\n let test;\n let visitor;\n if (typeof testOrVisitor === \"function\" && typeof visitorOrReverse !== \"function\") {\n test = void 0;\n visitor = testOrVisitor;\n reverse = visitorOrReverse;\n } else {\n test = testOrVisitor;\n visitor = visitorOrReverse;\n reverse = maybeReverse;\n }\n visitParents(tree, test, overload, reverse);\n function overload(node, parents) {\n const parent = parents[parents.length - 1];\n const index = parent ? parent.children.indexOf(node) : void 0;\n return visitor(node, index, parent);\n }\n}\nfunction formatHeadingAsSetext(node, state) {\n let literalWithBreak = false;\n visit(node, function(node2) {\n if (\"value\" in node2 && /\\r?\\n|\\r/.test(node2.value) || node2.type === \"break\") {\n literalWithBreak = true;\n return EXIT;\n }\n });\n return Boolean(\n (!node.depth || node.depth < 3) && toString(node) && (state.options.setext || literalWithBreak)\n );\n}\nfunction heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1);\n const tracker = state.createTracker(info);\n if (formatHeadingAsSetext(node, state)) {\n const exit3 = state.enter(\"headingSetext\");\n const subexit2 = state.enter(\"phrasing\");\n const value2 = state.containerPhrasing(node, {\n ...tracker.current(),\n before: \"\\n\",\n after: \"\\n\"\n });\n subexit2();\n exit3();\n return value2 + \"\\n\" + (rank === 1 ? \"=\" : \"-\").repeat(\n // The whole size…\n value2.length - // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value2.lastIndexOf(\"\\r\"), value2.lastIndexOf(\"\\n\")) + 1)\n );\n }\n const sequence = \"#\".repeat(rank);\n const exit2 = state.enter(\"headingAtx\");\n const subexit = state.enter(\"phrasing\");\n tracker.move(sequence + \" \");\n let value = state.containerPhrasing(node, {\n before: \"# \",\n after: \"\\n\",\n ...tracker.current()\n });\n if (/^[\\t ]/.test(value)) {\n value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1);\n }\n value = value ? sequence + \" \" + value : sequence;\n if (state.options.closeAtx) {\n value += \" \" + sequence;\n }\n subexit();\n exit2();\n return value;\n}\nhtml.peek = htmlPeek;\nfunction html(node) {\n return node.value || \"\";\n}\nfunction htmlPeek() {\n return \"<\";\n}\nimage.peek = imagePeek;\nfunction image(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"image\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n value += tracker.move(\n state.safe(node.alt, { before: value, after: \"]\", ...tracker.current() })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node.url && node.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction imagePeek() {\n return \"!\";\n}\nimageReference.peek = imageReferencePeek;\nfunction imageReference(node, _, state, info) {\n const type = node.referenceType;\n const exit2 = state.enter(\"imageReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n const alt = state.safe(node.alt, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(alt + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !alt || alt !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction imageReferencePeek() {\n return \"!\";\n}\ninlineCode.peek = inlineCodePeek;\nfunction inlineCode(node, _, state) {\n let value = node.value || \"\";\n let sequence = \"`\";\n let index = -1;\n while (new RegExp(\"(^|[^`])\" + sequence + \"([^`]|$)\").test(value)) {\n sequence += \"`\";\n }\n if (/[^ \\r\\n]/.test(value) && (/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value) || /^`|`$/.test(value))) {\n value = \" \" + value + \" \";\n }\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index];\n const expression = state.compilePattern(pattern);\n let match;\n if (!pattern.atBreak) continue;\n while (match = expression.exec(value)) {\n let position = match.index;\n if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {\n position--;\n }\n value = value.slice(0, position) + \" \" + value.slice(match.index + 1);\n }\n }\n return sequence + value + sequence;\n}\nfunction inlineCodePeek() {\n return \"`\";\n}\nfunction formatLinkAsAutolink(node, state) {\n const raw = toString(node);\n return Boolean(\n !state.options.resourceLink && // If there’s a url…\n node.url && // And there’s a no title…\n !node.title && // And the content of `node` is a single text node…\n node.children && node.children.length === 1 && node.children[0].type === \"text\" && // And if the url is the same as the content…\n (raw === node.url || \"mailto:\" + raw === node.url) && // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) && // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n );\n}\nlink.peek = linkPeek;\nfunction link(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const tracker = state.createTracker(info);\n let exit2;\n let subexit;\n if (formatLinkAsAutolink(node, state)) {\n const stack = state.stack;\n state.stack = [];\n exit2 = state.enter(\"autolink\");\n let value2 = tracker.move(\"<\");\n value2 += tracker.move(\n state.containerPhrasing(node, {\n before: value2,\n after: \">\",\n ...tracker.current()\n })\n );\n value2 += tracker.move(\">\");\n exit2();\n state.stack = stack;\n return value2;\n }\n exit2 = state.enter(\"link\");\n subexit = state.enter(\"label\");\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: \"](\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node.url && node.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? \"<\" : \"[\";\n}\nlinkReference.peek = linkReferencePeek;\nfunction linkReference(node, _, state, info) {\n const type = node.referenceType;\n const exit2 = state.enter(\"linkReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n const text2 = state.containerPhrasing(node, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(text2 + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !text2 || text2 !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction linkReferencePeek() {\n return \"[\";\n}\nfunction checkBullet(state) {\n const marker = state.options.bullet || \"*\";\n if (marker !== \"*\" && marker !== \"+\" && marker !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bullet`, expected `*`, `+`, or `-`\"\n );\n }\n return marker;\n}\nfunction checkBulletOther(state) {\n const bullet = checkBullet(state);\n const bulletOther = state.options.bulletOther;\n if (!bulletOther) {\n return bullet === \"*\" ? \"-\" : \"*\";\n }\n if (bulletOther !== \"*\" && bulletOther !== \"+\" && bulletOther !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + bulletOther + \"` for `options.bulletOther`, expected `*`, `+`, or `-`\"\n );\n }\n if (bulletOther === bullet) {\n throw new Error(\n \"Expected `bullet` (`\" + bullet + \"`) and `bulletOther` (`\" + bulletOther + \"`) to be different\"\n );\n }\n return bulletOther;\n}\nfunction checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || \".\";\n if (marker !== \".\" && marker !== \")\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bulletOrdered`, expected `.` or `)`\"\n );\n }\n return marker;\n}\nfunction checkRule(state) {\n const marker = state.options.rule || \"*\";\n if (marker !== \"*\" && marker !== \"-\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize rules with `\" + marker + \"` for `options.rule`, expected `*`, `-`, or `_`\"\n );\n }\n return marker;\n}\nfunction list(node, parent, state, info) {\n const exit2 = state.enter(\"list\");\n const bulletCurrent = state.bulletCurrent;\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state);\n const bulletOther = node.ordered ? bullet === \".\" ? \")\" : \".\" : checkBulletOther(state);\n let useDifferentMarker = parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false;\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : void 0;\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === \"*\" || bullet === \"-\") && // Empty first list item:\n firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:\n state.stack[state.stack.length - 1] === \"list\" && state.stack[state.stack.length - 2] === \"listItem\" && state.stack[state.stack.length - 3] === \"list\" && state.stack[state.stack.length - 4] === \"listItem\" && // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true;\n }\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1;\n while (++index < node.children.length) {\n const item = node.children[index];\n if (item && item.type === \"listItem\" && item.children && item.children[0] && item.children[0].type === \"thematicBreak\") {\n useDifferentMarker = true;\n break;\n }\n }\n }\n }\n if (useDifferentMarker) {\n bullet = bulletOther;\n }\n state.bulletCurrent = bullet;\n const value = state.containerFlow(node, info);\n state.bulletLastUsed = bullet;\n state.bulletCurrent = bulletCurrent;\n exit2();\n return value;\n}\nfunction checkListItemIndent(state) {\n const style = state.options.listItemIndent || \"one\";\n if (style !== \"tab\" && style !== \"one\" && style !== \"mixed\") {\n throw new Error(\n \"Cannot serialize items with `\" + style + \"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`\"\n );\n }\n return style;\n}\nfunction listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state);\n let bullet = state.bulletCurrent || checkBullet(state);\n if (parent && parent.type === \"list\" && parent.ordered) {\n bullet = (typeof parent.start === \"number\" && parent.start > -1 ? parent.start : 1) + (state.options.incrementListMarker === false ? 0 : parent.children.indexOf(node)) + bullet;\n }\n let size = bullet.length + 1;\n if (listItemIndent === \"tab\" || listItemIndent === \"mixed\" && (parent && parent.type === \"list\" && parent.spread || node.spread)) {\n size = Math.ceil(size / 4) * 4;\n }\n const tracker = state.createTracker(info);\n tracker.move(bullet + \" \".repeat(size - bullet.length));\n tracker.shift(size);\n const exit2 = state.enter(\"listItem\");\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map2\n );\n exit2();\n return value;\n function map2(line, index, blank) {\n if (index) {\n return (blank ? \"\" : \" \".repeat(size)) + line;\n }\n return (blank ? bullet : bullet + \" \".repeat(size - bullet.length)) + line;\n }\n}\nfunction paragraph(node, _, state, info) {\n const exit2 = state.enter(\"paragraph\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node, info);\n subexit();\n exit2();\n return value;\n}\nconst phrasing = (\n /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n convert([\n \"break\",\n \"delete\",\n \"emphasis\",\n // To do: next major: removed since footnotes were added to GFM.\n \"footnote\",\n \"footnoteReference\",\n \"image\",\n \"imageReference\",\n \"inlineCode\",\n // Enabled by `mdast-util-math`:\n \"inlineMath\",\n \"link\",\n \"linkReference\",\n // Enabled by `mdast-util-mdx`:\n \"mdxJsxTextElement\",\n // Enabled by `mdast-util-mdx`:\n \"mdxTextExpression\",\n \"strong\",\n \"text\",\n // Enabled by `mdast-util-directive`:\n \"textDirective\"\n ])\n);\nfunction root(node, _, state, info) {\n const hasPhrasing = node.children.some(function(d) {\n return phrasing(d);\n });\n const container = hasPhrasing ? state.containerPhrasing : state.containerFlow;\n return container.call(state, node, info);\n}\nfunction checkStrong(state) {\n const marker = state.options.strong || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize strong with `\" + marker + \"` for `options.strong`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nstrong.peek = strongPeek;\nfunction strong(node, _, state, info) {\n const marker = checkStrong(state);\n const exit2 = state.enter(\"strong\");\n const tracker = state.createTracker(info);\n const before = tracker.move(marker + marker);\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n );\n const betweenHead = between.charCodeAt(0);\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n );\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1);\n }\n const betweenTail = between.charCodeAt(between.length - 1);\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail);\n }\n const after = tracker.move(marker + marker);\n exit2();\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n };\n return before + between + after;\n}\nfunction strongPeek(_, _1, state) {\n return state.options.strong || \"*\";\n}\nfunction text$1(node, _, state, info) {\n return state.safe(node.value, info);\n}\nfunction checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3;\n if (repetition < 3) {\n throw new Error(\n \"Cannot serialize rules with repetition `\" + repetition + \"` for `options.ruleRepetition`, expected `3` or more\"\n );\n }\n return repetition;\n}\nfunction thematicBreak(_, _1, state) {\n const value = (checkRule(state) + (state.options.ruleSpaces ? \" \" : \"\")).repeat(checkRuleRepetition(state));\n return state.options.ruleSpaces ? value.slice(0, -1) : value;\n}\nconst handle = {\n blockquote,\n break: hardBreak,\n code: code$1,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text: text$1,\n thematicBreak\n};\nfunction gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n };\n}\nfunction enterTable(token) {\n const align = token._align;\n this.enter(\n {\n type: \"table\",\n align: align.map(function(d) {\n return d === \"none\" ? null : d;\n }),\n children: []\n },\n token\n );\n this.data.inTable = true;\n}\nfunction exitTable(token) {\n this.exit(token);\n this.data.inTable = void 0;\n}\nfunction enterRow(token) {\n this.enter({ type: \"tableRow\", children: [] }, token);\n}\nfunction exit(token) {\n this.exit(token);\n}\nfunction enterCell(token) {\n this.enter({ type: \"tableCell\", children: [] }, token);\n}\nfunction exitCodeText(token) {\n let value = this.resume();\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace);\n }\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"inlineCode\");\n node.value = value;\n this.exit(token);\n}\nfunction replace($0, $1) {\n return $1 === \"|\" ? $1 : $0;\n}\nfunction gfmTableToMarkdown(options) {\n const settings = options || {};\n const padding = settings.tableCellPadding;\n const alignDelimiters = settings.tablePipeAlign;\n const stringLength = settings.stringLength;\n const around = padding ? \" \" : \"|\";\n return {\n unsafe: [\n { character: \"\\r\", inConstruct: \"tableCell\" },\n { character: \"\\n\", inConstruct: \"tableCell\" },\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n { atBreak: true, character: \"|\", after: \"[\t :-]\" },\n // A pipe in a cell must be encoded.\n { character: \"|\", inConstruct: \"tableCell\" },\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n { atBreak: true, character: \":\", after: \"-\" },\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n { atBreak: true, character: \"-\", after: \"[:|-]\" }\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n };\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align);\n }\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info);\n const value = serializeData([row]);\n return value.slice(0, value.indexOf(\"\\n\"));\n }\n function handleTableCell(node, _, state, info) {\n const exit2 = state.enter(\"tableCell\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n });\n subexit();\n exit2();\n return value;\n }\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n });\n }\n function handleTableAsData(node, state, info) {\n const children = node.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"table\");\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info);\n }\n subexit();\n return result;\n }\n function handleTableRowAsData(node, state, info) {\n const children = node.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"tableRow\");\n while (++index < children.length) {\n result[index] = handleTableCell(children[index], node, state, info);\n }\n subexit();\n return result;\n }\n function inlineCodeWithTable(node, parent, state) {\n let value = handle.inlineCode(node, parent, state);\n if (state.stack.includes(\"tableCell\")) {\n value = value.replace(/\\|/g, \"\\\\$&\");\n }\n return value;\n }\n}\nfunction gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n };\n}\nfunction gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{ atBreak: true, character: \"-\", after: \"[:|-]\" }],\n handlers: { listItem: listItemWithTaskListItem }\n };\n}\nfunction exitCheck(token) {\n const node = this.stack[this.stack.length - 2];\n ok$1(node.type === \"listItem\");\n node.checked = token.type === \"taskListCheckValueChecked\";\n}\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2];\n if (parent && parent.type === \"listItem\" && typeof parent.checked === \"boolean\") {\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"paragraph\");\n const head = node.children[0];\n if (head && head.type === \"text\") {\n const siblings = parent.children;\n let index = -1;\n let firstParaghraph;\n while (++index < siblings.length) {\n const sibling = siblings[index];\n if (sibling.type === \"paragraph\") {\n firstParaghraph = sibling;\n break;\n }\n }\n if (firstParaghraph === node) {\n head.value = head.value.slice(1);\n if (head.value.length === 0) {\n node.children.shift();\n } else if (node.position && head.position && typeof head.position.start.offset === \"number\") {\n head.position.start.column++;\n head.position.start.offset++;\n node.position.start = Object.assign({}, head.position.start);\n }\n }\n }\n }\n this.exit(token);\n}\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0];\n const checkable = typeof node.checked === \"boolean\" && head && head.type === \"paragraph\";\n const checkbox = \"[\" + (node.checked ? \"x\" : \" \") + \"] \";\n const tracker = state.createTracker(info);\n if (checkable) {\n tracker.move(checkbox);\n }\n let value = handle.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n });\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check);\n }\n return value;\n function check($0) {\n return $0 + checkbox;\n }\n}\nfunction gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ];\n}\nfunction gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n };\n}\nfunction splice(list2, start, remove, items) {\n const end = list2.length;\n let chunkStart = 0;\n let parameters;\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n if (items.length < 1e4) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n list2.splice(...parameters);\n } else {\n if (remove) list2.splice(start, remove);\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 1e4);\n parameters.unshift(start, 0);\n list2.splice(...parameters);\n chunkStart += 1e4;\n start += 1e4;\n }\n }\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n const all = {};\n let index = -1;\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index]);\n }\n return all;\n}\nfunction syntaxExtension(all, extension) {\n let hook;\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : void 0;\n const left = maybe || (all[hook] = {});\n const right = extension[hook];\n let code2;\n if (right) {\n for (code2 in right) {\n if (!hasOwnProperty.call(left, code2)) left[code2] = [];\n const value = right[code2];\n constructs(\n // @ts-expect-error Looks like a list.\n left[code2],\n Array.isArray(value) ? value : value ? [value] : []\n );\n }\n }\n }\n}\nfunction constructs(existing, list2) {\n let index = -1;\n const before = [];\n while (++index < list2.length) {\n (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n }\n splice(existing, 0, 0, before);\n}\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\nconst text = {};\nfunction gfmAutolinkLiteral() {\n return {\n text\n };\n}\nlet code = 48;\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;\n else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok2, nok) {\n const self = this;\n let dot;\n let data;\n return start;\n function start(code2) {\n if (!gfmAtext(code2) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkEmail\");\n return atext(code2);\n }\n function atext(code2) {\n if (gfmAtext(code2)) {\n effects.consume(code2);\n return atext;\n }\n if (code2 === 64) {\n effects.consume(code2);\n return emailDomain;\n }\n return nok(code2);\n }\n function emailDomain(code2) {\n if (code2 === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code2);\n }\n if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n data = true;\n effects.consume(code2);\n return emailDomain;\n }\n return emailDomainAfter(code2);\n }\n function emailDomainDot(code2) {\n effects.consume(code2);\n dot = true;\n return emailDomain;\n }\n function emailDomainAfter(code2) {\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit(\"literalAutolinkEmail\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n return nok(code2);\n }\n}\nfunction tokenizeWwwAutolink(effects, ok2, nok) {\n const self = this;\n return wwwStart;\n function wwwStart(code2) {\n if (code2 !== 87 && code2 !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkWww\");\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code2);\n }\n function wwwAfter(code2) {\n effects.exit(\"literalAutolinkWww\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeProtocolAutolink(effects, ok2, nok) {\n const self = this;\n let buffer = \"\";\n let seen = false;\n return protocolStart;\n function protocolStart(code2) {\n if ((code2 === 72 || code2 === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkHttp\");\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n return nok(code2);\n }\n function protocolPrefixInside(code2) {\n if (asciiAlpha(code2) && buffer.length < 5) {\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n if (code2 === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === \"http\" || protocol === \"https\") {\n effects.consume(code2);\n return protocolSlashesInside;\n }\n }\n return nok(code2);\n }\n function protocolSlashesInside(code2) {\n if (code2 === 47) {\n effects.consume(code2);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code2);\n }\n function afterProtocol(code2) {\n return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n }\n function protocolAfter(code2) {\n effects.exit(\"literalAutolinkHttp\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeWwwPrefix(effects, ok2, nok) {\n let size = 0;\n return wwwPrefixInside;\n function wwwPrefixInside(code2) {\n if ((code2 === 87 || code2 === 119) && size < 3) {\n size++;\n effects.consume(code2);\n return wwwPrefixInside;\n }\n if (code2 === 46 && size === 3) {\n effects.consume(code2);\n return wwwPrefixAfter;\n }\n return nok(code2);\n }\n function wwwPrefixAfter(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction tokenizeDomain(effects, ok2, nok) {\n let underscoreInLastSegment;\n let underscoreInLastLastSegment;\n let seen;\n return domainInside;\n function domainInside(code2) {\n if (code2 === 46 || code2 === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n return domainAfter(code2);\n }\n seen = true;\n effects.consume(code2);\n return domainInside;\n }\n function domainAtPunctuation(code2) {\n if (code2 === 95) {\n underscoreInLastSegment = true;\n } else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = void 0;\n }\n effects.consume(code2);\n return domainInside;\n }\n function domainAfter(code2) {\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code2);\n }\n return ok2(code2);\n }\n}\nfunction tokenizePath(effects, ok2) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n function pathInside(code2) {\n if (code2 === 40) {\n sizeOpen++;\n effects.consume(code2);\n return pathInside;\n }\n if (code2 === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code2);\n }\n if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n return effects.check(trail, ok2, pathAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n effects.consume(code2);\n return pathInside;\n }\n function pathAtPunctuation(code2) {\n if (code2 === 41) {\n sizeClose++;\n }\n effects.consume(code2);\n return pathInside;\n }\n}\nfunction tokenizeTrail(effects, ok2, nok) {\n return trail2;\n function trail2(code2) {\n if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n effects.consume(code2);\n return trail2;\n }\n if (code2 === 38) {\n effects.consume(code2);\n return trailCharRefStart;\n }\n if (code2 === 93) {\n effects.consume(code2);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code2 === 60 || // So is whitespace.\n code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)\n ) {\n return ok2(code2);\n }\n return nok(code2);\n }\n function trailBracketAfter(code2) {\n if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n return trail2(code2);\n }\n function trailCharRefStart(code2) {\n return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n }\n function trailCharRefInside(code2) {\n if (code2 === 59) {\n effects.consume(code2);\n return trail2;\n }\n if (asciiAlpha(code2)) {\n effects.consume(code2);\n return trailCharRefInside;\n }\n return nok(code2);\n }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok2, nok) {\n return start;\n function start(code2) {\n effects.consume(code2);\n return after;\n }\n function after(code2) {\n return asciiAlphanumeric(code2) ? nok(code2) : ok2(code2);\n }\n}\nfunction previousWww(code2) {\n return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n result = true;\n break;\n }\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}\nfunction resolveAll(constructs2, events, context) {\n const called = [];\n let index = -1;\n while (++index < constructs2.length) {\n const resolve = constructs2[index].resolveAll;\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context);\n called.push(resolve);\n }\n }\n return events;\n}\nfunction factorySpace(effects, ok2, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n function start(code2) {\n if (markdownSpace(code2)) {\n effects.enter(type);\n return prefix(code2);\n }\n return ok2(code2);\n }\n function prefix(code2) {\n if (markdownSpace(code2) && size++ < limit) {\n effects.consume(code2);\n return prefix;\n }\n effects.exit(type);\n return ok2(code2);\n }\n}\nconst blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n};\nfunction tokenizeBlankLine(effects, ok2, nok) {\n return start;\n function start(code2) {\n return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n }\n function after(code2) {\n return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);\n }\n}\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\nfunction gfmFootnote() {\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: \"after\",\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let labelStart;\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n function start(code2) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code2);\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n );\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return ok2(code2);\n }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n events[index][1];\n break;\n }\n }\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n const call = {\n type: \"gfmFootnoteCall\",\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const marker = {\n type: \"gfmFootnoteCallMarker\",\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n const string = {\n type: \"gfmFootnoteCallString\",\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n const chunk = {\n type: \"chunkString\",\n contentType: \"string\",\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n [\"enter\", call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n [\"enter\", marker, context],\n [\"exit\", marker, context],\n // Everything in between.\n [\"enter\", string, context],\n [\"enter\", chunk, context],\n [\"exit\", chunk, context],\n [\"exit\", string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n [\"exit\", call, context]\n ];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteCall\");\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return callStart;\n }\n function callStart(code2) {\n if (code2 !== 94) return nok(code2);\n effects.enter(\"gfmFootnoteCallMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallMarker\");\n effects.enter(\"gfmFootnoteCallString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return callData;\n }\n function callData(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteCallString\");\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n effects.exit(\"gfmFootnoteCall\");\n return ok2;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? callEscape : callData;\n }\n function callEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return callData;\n }\n return callData(code2);\n }\n}\nfunction tokenizeDefinitionStart(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let identifier;\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteDefinition\")._container = true;\n effects.enter(\"gfmFootnoteDefinitionLabel\");\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n return labelAtMarker;\n }\n function labelAtMarker(code2) {\n if (code2 === 94) {\n effects.enter(\"gfmFootnoteDefinitionMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionMarker\");\n effects.enter(\"gfmFootnoteDefinitionLabelString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return labelInside;\n }\n return nok(code2);\n }\n function labelInside(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n effects.exit(\"gfmFootnoteDefinitionLabel\");\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? labelEscape : labelInside;\n }\n function labelEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return labelInside;\n }\n return labelInside(code2);\n }\n function labelAfter(code2) {\n if (code2 === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code2);\n effects.exit(\"definitionMarker\");\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n return factorySpace(\n effects,\n whitespaceAfter,\n \"gfmFootnoteDefinitionWhitespace\"\n );\n }\n return nok(code2);\n }\n function whitespaceAfter(code2) {\n return ok2(code2);\n }\n}\nfunction tokenizeDefinitionContinuation(effects, ok2, nok) {\n return effects.check(blankLine, ok2, effects.attempt(indent, ok2, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok2, nok) {\n const self = this;\n return factorySpace(\n effects,\n afterPrefix,\n \"gfmFootnoteDefinitionIndent\",\n 4 + 1\n );\n function afterPrefix(code2) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok2(code2) : nok(code2);\n }\n}\nfunction gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === void 0) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n while (++index < events.length) {\n if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n let open = index;\n while (open--) {\n if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = \"strikethroughSequence\";\n events[open][1].type = \"strikethroughSequence\";\n const strikethrough = {\n type: \"strikethrough\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n const text2 = {\n type: \"strikethroughText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n const nextEvents = [\n [\"enter\", strikethrough, context],\n [\"enter\", events[open][1], context],\n [\"exit\", events[open][1], context],\n [\"enter\", text2, context]\n ];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n );\n }\n splice(nextEvents, nextEvents.length, 0, [\n [\"exit\", text2, context],\n [\"enter\", events[index][1], context],\n [\"exit\", events[index][1], context],\n [\"exit\", strikethrough, context]\n ]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n function tokenizeStrikethrough(effects, ok2, nok) {\n const previous2 = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n function start(code2) {\n if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code2);\n }\n effects.enter(\"strikethroughSequenceTemporary\");\n return more(code2);\n }\n function more(code2) {\n const before = classifyCharacter(previous2);\n if (code2 === 126) {\n if (size > 1) return nok(code2);\n effects.consume(code2);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code2);\n const token = effects.exit(\"strikethroughSequenceTemporary\");\n const after = classifyCharacter(code2);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok2(code2);\n }\n }\n}\nclass EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n this.map = [];\n }\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add);\n }\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array<Event>} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n /**\n * Done, change the events.\n *\n * @param {Array<Event>} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function(a, b) {\n return a[0] - b[0];\n });\n if (this.map.length === 0) {\n return;\n }\n let index = this.map.length;\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n );\n events.length = this.map[index][0];\n }\n vecs.push([...events]);\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n events.push(...slice);\n slice = vecs.pop();\n }\n this.map.length = 0;\n }\n}\nfunction addImpl(editMap, at, remove, add) {\n let index = 0;\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n editMap.map[index][2].push(...add);\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\nfunction gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === \"enter\") {\n if (event[1].type === \"tableContent\") {\n align.push(\n events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n );\n }\n } else if (event[1].type === \"tableContent\") {\n if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n }\n } else if (event[1].type === \"tableDelimiterRow\") {\n break;\n }\n } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}\nfunction gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\nfunction tokenizeTable(effects, ok2, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n let seen;\n return start;\n function start(code2) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\")\n index--;\n else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n return next(code2);\n }\n function headRowBefore(code2) {\n effects.enter(\"tableHead\");\n effects.enter(\"tableRow\");\n return headRowStart(code2);\n }\n function headRowStart(code2) {\n if (code2 === 124) {\n return headRowBreak(code2);\n }\n seen = true;\n sizeB += 1;\n return headRowBreak(code2);\n }\n function headRowBreak(code2) {\n if (code2 === null) {\n return nok(code2);\n }\n if (markdownLineEnding(code2)) {\n if (sizeB > 1) {\n sizeB = 0;\n self.interrupt = true;\n effects.exit(\"tableRow\");\n effects.enter(\"lineEnding\");\n effects.consume(code2);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n return nok(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n size += 1;\n }\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n seen = true;\n return headRowBreak;\n }\n effects.enter(\"data\");\n return headRowData(code2);\n }\n function headRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return headRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? headRowEscape : headRowData;\n }\n function headRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return headRowData;\n }\n return headRowData(code2);\n }\n function headDelimiterStart(code2) {\n self.interrupt = false;\n if (self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n effects.enter(\"tableDelimiterRow\");\n seen = false;\n if (markdownSpace(code2)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n \"linePrefix\",\n self.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n )(code2);\n }\n return headDelimiterBefore(code2);\n }\n function headDelimiterBefore(code2) {\n if (code2 === 45 || code2 === 58) {\n return headDelimiterValueBefore(code2);\n }\n if (code2 === 124) {\n seen = true;\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return headDelimiterCellBefore;\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterCellBefore(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n }\n return headDelimiterValueBefore(code2);\n }\n function headDelimiterValueBefore(code2) {\n if (code2 === 58) {\n sizeB += 1;\n seen = true;\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterLeftAlignmentAfter;\n }\n if (code2 === 45) {\n sizeB += 1;\n return headDelimiterLeftAlignmentAfter(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n return headDelimiterCellAfter(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterLeftAlignmentAfter(code2) {\n if (code2 === 45) {\n effects.enter(\"tableDelimiterFiller\");\n return headDelimiterFiller(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterFiller(code2) {\n if (code2 === 45) {\n effects.consume(code2);\n return headDelimiterFiller;\n }\n if (code2 === 58) {\n seen = true;\n effects.exit(\"tableDelimiterFiller\");\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit(\"tableDelimiterFiller\");\n return headDelimiterRightAlignmentAfter(code2);\n }\n function headDelimiterRightAlignmentAfter(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n }\n return headDelimiterCellAfter(code2);\n }\n function headDelimiterCellAfter(code2) {\n if (code2 === 124) {\n return headDelimiterBefore(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code2);\n }\n effects.exit(\"tableDelimiterRow\");\n effects.exit(\"tableHead\");\n return ok2(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterNok(code2) {\n return nok(code2);\n }\n function bodyRowStart(code2) {\n effects.enter(\"tableRow\");\n return bodyRowBreak(code2);\n }\n function bodyRowBreak(code2) {\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return bodyRowBreak;\n }\n if (code2 === null || markdownLineEnding(code2)) {\n effects.exit(\"tableRow\");\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n }\n effects.enter(\"data\");\n return bodyRowData(code2);\n }\n function bodyRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return bodyRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? bodyRowEscape : bodyRowData;\n }\n function bodyRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return bodyRowData;\n }\n return bodyRowData(code2);\n }\n}\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n let rowKind = 0;\n let lastCell = [0, 0, 0, 0];\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n let currentTable;\n let currentBody;\n let currentCell;\n const map2 = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === \"enter\") {\n if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = false;\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n currentBody = void 0;\n lastTableEnd = 0;\n }\n currentTable = {\n type: \"table\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentTable, context]]);\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n inFirstCellAwaitingPipe = true;\n currentCell = void 0;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: \"tableBody\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentBody, context]]);\n }\n rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n inFirstCellAwaitingPipe = false;\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === \"tableCellDivider\") {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n } else if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n );\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map2, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n }\n map2.consume(context.events);\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === \"enter\" && event[1].type === \"table\") {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\nfunction flushCell(map2, context, range, rowKind, rowEnd, previousCell) {\n const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n const valueName = \"tableContent\";\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map2.add(range[0], 0, [[\"exit\", previousCell, context]]);\n }\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map2.add(range[1], 0, [[\"enter\", previousCell, context]]);\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map2.add(range[2], 0, [[\"enter\", valueToken, context]]);\n if (rowKind !== 2) {\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map2.add(a, b, []);\n }\n }\n map2.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n }\n if (rowEnd !== void 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map2.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n previousCell = void 0;\n }\n return previousCell;\n}\nfunction flushTableEnd(map2, context, index, table, tableBody) {\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push([\"exit\", tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push([\"exit\", table, context]);\n map2.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === \"enter\" ? \"start\" : \"end\";\n return event[1][side];\n}\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n};\nfunction gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\nfunction tokenizeTasklistCheck(effects, ok2, nok) {\n const self = this;\n return open;\n function open(code2) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null || // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code2);\n }\n effects.enter(\"taskListCheck\");\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n return inside;\n }\n function inside(code2) {\n if (markdownLineEndingOrSpace(code2)) {\n effects.enter(\"taskListCheckValueUnchecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueUnchecked\");\n return close;\n }\n if (code2 === 88 || code2 === 120) {\n effects.enter(\"taskListCheckValueChecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueChecked\");\n return close;\n }\n return nok(code2);\n }\n function close(code2) {\n if (code2 === 93) {\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n effects.exit(\"taskListCheck\");\n return after;\n }\n return nok(code2);\n }\n function after(code2) {\n if (markdownLineEnding(code2)) {\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok2,\n nok\n )(code2);\n }\n return nok(code2);\n }\n}\nfunction spaceThenNonSpace(effects, ok2, nok) {\n return factorySpace(effects, after, \"whitespace\");\n function after(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ]);\n}\nconst emptyOptions = {};\nfunction remarkGfm(options) {\n const self = (\n /** @type {Processor<Root>} */\n this\n );\n const settings = options || emptyOptions;\n const data = self.data();\n const micromarkExtensions = data.micromarkExtensions || (data.micromarkExtensions = []);\n const fromMarkdownExtensions = data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []);\n const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);\n micromarkExtensions.push(gfm(settings));\n fromMarkdownExtensions.push(gfmFromMarkdown());\n toMarkdownExtensions.push(gfmToMarkdown(settings));\n}\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextCopyButton\",\n props: {\n contentId: null\n },\n setup(__props) {\n const props = __props;\n const { copy, icon, altText } = useCopy(() => document.getElementById(props.contentId).textContent);\n return { __sfc: true, props, copy, icon, altText, NcButton, NcIconSvgWrapper };\n }\n});\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcButton, { attrs: { \"variant\": \"tertiary\", \"size\": \"small\", \"aria-label\": _setup.altText, \"title\": _setup.altText }, on: { \"click\": _setup.copy }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.icon, \"inline\": \"\" } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst NcRichTextCopyButton = __component__$1.exports;\nfunction remarkPlaceholder() {\n return function(ast) {\n visitParents(ast, (node) => node.type === \"text\", visitor);\n function visitor(node, ancestors) {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n const placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return u(\"text\", entry);\n }\n const [, component] = matches;\n return u(\"element\", {\n tagName: `#${component}`\n });\n });\n parent.children.splice(index, 1, ...placeholders);\n }\n };\n}\nfunction prepareTextNode({ h, context }, text2) {\n if (context.autolink) {\n text2 = parseUrl(text2);\n }\n if (Array.isArray(text2)) {\n return text2.map((entry) => {\n if (typeof entry === \"string\") {\n return entry;\n }\n const { component, props } = entry;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n });\n }\n return text2;\n}\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction isCodeNode(node) {\n return [\"code\", \"inlineCode\"].includes(node.type);\n}\nconst remarkStripCode = function() {\n return function(tree) {\n visitParents(tree, isCodeNode, (node, ancestors) => {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n parent.children.splice(index, 1, {\n ...node,\n value: \"\"\n });\n return [SKIP, index + 1];\n });\n };\n};\nfunction remarkUnescape() {\n return function(tree) {\n visitParents(tree, (node) => [\"text\", \"code\", \"inlineCode\"].includes(node.type), (node, ancestors) => {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n parent.children.splice(index, 1, {\n ...node,\n value: node.value.replace(/</gmi, \"<\").replace(/>/gmi, \">\")\n });\n return [SKIP, index + 1];\n });\n };\n}\nconst LINK_PROTOCOLS = [\"http\", \"https\", \"mailto\", \"tel\"];\nconst rehypeHighlight = ref(null);\nasync function importRehypeHighlightLibrary() {\n const module = await import(\"rehype-highlight\");\n rehypeHighlight.value = module.default;\n}\nconst _sfc_main = {\n name: \"NcRichText\",\n components: {\n NcReferenceList\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n arguments: {\n type: Object,\n default: () => {\n return {};\n }\n },\n referenceLimit: {\n type: Number,\n default: 0\n },\n referenceInteractive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n referenceInteractiveOptIn: {\n type: Boolean,\n default: false\n },\n /** Provide data upfront to avoid extra http request */\n references: {\n type: Array,\n default: null\n },\n /** Provide basic Markdown syntax */\n useMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide GitHub Flavored Markdown syntax */\n useExtendedMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide event from rendered markdown inputs */\n interactive: {\n type: Boolean,\n default: false\n },\n autolink: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"interact-todo\",\n \"interact:todo\"\n ],\n data() {\n return {\n parentId: GenRandomId(5)\n };\n },\n methods: {\n renderPlaintext(h) {\n const placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return prepareTextNode({ h, context: this }, entry);\n }\n const argumentId = matches[1];\n const argument = this.arguments[argumentId];\n if (typeof argument === \"object\") {\n const { component, props } = argument;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n }\n if (argument) {\n return h(\"span\", { class: \"rich-text--fallback\" }, argument);\n }\n return entry;\n });\n return h(\"div\", { class: \"rich-text--wrapper\" }, [\n h(\"div\", {}, placeholders.flat()),\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.text,\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n renderMarkdown(h) {\n const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {\n autolink: this.autolink,\n useMarkdown: this.useMarkdown,\n useExtendedMarkdown: this.useExtendedMarkdown\n }).use(remarkUnescape).use(this.useExtendedMarkdown ? remarkGfm : void 0).use(breaks).use(remarkUnlinkProtocols, { except: LINK_PROTOCOLS }).use(remark2rehype, {\n handlers: {\n component(toHast, node) {\n return toHast(node, node.component, { value: node.value });\n }\n }\n }).use(this.useExtendedMarkdown ? rehypeHighlight.value : void 0).use(remarkPlaceholder).use(rehypeExternalLinks, {\n target: \"_blank\",\n rel: [\"noopener noreferrer\"]\n }).use(rehype2react, {\n createElement: (tag, attrs, children) => {\n if (!tag.startsWith(\"#\")) {\n if ([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(tag)) {\n tag = `h${Math.min(+String(tag)[1] + 3, 6)}`;\n }\n if (this.useExtendedMarkdown) {\n if (tag === \"code\" && !rehypeHighlight.value && attrs?.attrs?.class?.includes(\"language\")) {\n importRehypeHighlightLibrary();\n }\n if (tag === \"pre\" && Array.isArray(children) && children[0].tag === \"code\") {\n const id = this.parentId + \"-code-block-\" + GenRandomId(5);\n return h(\"p\", { class: \"rich-text__code-block\" }, [\n h(tag, { attrs: { ...attrs, id } }, children),\n h(NcRichTextCopyButton, {\n props: { contentId: id },\n class: \"rich-text__code-block-button\"\n })\n ]);\n }\n let nestedNode = null;\n if (tag === \"li\" && Array.isArray(children) && children[0].tag === \"input\" && children[0].data.attrs.type === \"checkbox\") {\n const [inputNode, ...labelParts] = children;\n const nestedNodeIndex = labelParts.findIndex((child) => [\"ul\", \"ol\", \"li\", \"blockquote\", \"pre\"].includes(child.tag));\n if (nestedNodeIndex !== -1) {\n nestedNode = labelParts[nestedNodeIndex];\n labelParts.splice(nestedNodeIndex);\n }\n const id = this.parentId + \"-markdown-input-\" + GenRandomId(5);\n const inputComponent = h(NcCheckboxRadioSwitch, {\n attrs: {\n ...inputNode.data.attrs,\n id,\n disabled: !this.interactive\n },\n on: {\n \"update:checked\": () => {\n this.$emit(\"interact-todo\", id);\n this.$emit(\"interact:todo\", id);\n }\n }\n }, labelParts);\n return h(tag, attrs, [inputComponent, nestedNode]);\n }\n }\n if (tag === \"a\") {\n const route = getRoute(this.$router, attrs.attrs.href);\n if (route) {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(RouterLink, {\n ...attrs,\n props: {\n to: route\n }\n }, children);\n }\n const isAllowedScheme = /^(https?:\\/\\/|tel:|mailto:)/.test(attrs.attrs.href);\n if (isAllowedScheme) {\n attrs.attrs.href = attrs.attrs.href.trim();\n return h(NcRichTextExternalLink, attrs, children);\n } else {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(\"span\", attrs, children);\n }\n }\n return h(tag, attrs, children);\n }\n const placeholder = this.arguments[tag.slice(1)];\n if (!placeholder) {\n return h(\"span\", { ...{ attrs }, ...{ class: \"rich-text--fallback\" } }, [`{${tag.slice(1)}}`]);\n }\n if (!placeholder.component) {\n return h(\"span\", attrs, [placeholder]);\n }\n return h(\n placeholder.component,\n {\n attrs,\n props: placeholder.props,\n class: \"rich-text--component\"\n },\n children\n );\n },\n prefix: false\n }).processSync(this.text.replace(/<[^>]+>/g, (match) => match.replace(/</g, \"<\")).replace(/>/gmi, \">\")).result;\n return h(\"div\", { class: \"rich-text--wrapper rich-text--wrapper-markdown\" }, [\n renderedMarkdown,\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.prepareReferenceSource(this.text),\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n /**\n * Strip content of inline code and code blocks for reference widgets\n * (e.g. ignore fenced links from being added as reference)\n *\n * @param {string} text - Content of the node\n */\n prepareReferenceSource(text2) {\n if (!this.useMarkdown && !this.useExtendedMarkdown) {\n return text2;\n }\n const processor = unified();\n processor.compiler = (tree) => toString(tree);\n return processor.use(remarkParse).use(remarkStripCode).processSync(text2.replace(/\\s/g, \" \")).value;\n }\n },\n render(h) {\n return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown(h) : this.renderPlaintext(h);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e55203a2\"\n);\nconst NcRichText = __component__.exports;\nexport {\n NcRichText as N,\n NcReferenceList as a\n};\n//# sourceMappingURL=NcRichText-K2ZjNIbK.mjs.map\n","import '../assets/NcProfileHoverCard-D3V682nS.css';\nimport { defineComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { generateUrl, generateOcsUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport NcActionLink from \"../Components/NcActionLink.mjs\";\nimport NcActionRouter from \"../Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcRichText } from \"./NcRichText-K2ZjNIbK.mjs\";\nimport { useIsSmallMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, U as t1, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nconst _sfc_main$5 = {\n name: \"AccountOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$5 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon account-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n null\n);\nconst AccountIcon = __component__$5.exports;\nconst _sfc_main$4 = {\n name: \"BriefcaseOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon briefcase-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst BriefcaseIcon = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"ClockOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon clock-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst ClockIcon = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"MapMarkerOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon map-marker-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst MapMarkerIcon = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"PencilOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pencil-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst PencilIcon = __component__$1.exports;\nregister(t1);\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst PROFILE_CACHE_TTL_MS = 30 * 60 * 1e3;\nconst cache = /* @__PURE__ */ new Map();\nconst inflight = /* @__PURE__ */ new Map();\nfunction getCachedProfile(userId) {\n const entry = cache.get(userId);\n if (!entry) {\n return null;\n }\n if (Date.now() >= entry.expiresAt) {\n cache.delete(userId);\n return null;\n }\n return entry.data;\n}\nfunction setCachedProfile(userId, data, ttlMs = PROFILE_CACHE_TTL_MS) {\n cache.set(userId, {\n data,\n expiresAt: Date.now() + ttlMs\n });\n}\nasync function fetchProfileCached(userId, fetcher, ttlMs = PROFILE_CACHE_TTL_MS) {\n const cached = getCachedProfile(userId);\n if (cached) {\n return cached;\n }\n const pending = inflight.get(userId);\n if (pending) {\n return pending;\n }\n const promise = (async () => {\n try {\n const data = await fetcher();\n if (data) {\n setCachedProfile(userId, data, ttlMs);\n }\n return data;\n } finally {\n inflight.delete(userId);\n }\n })();\n inflight.set(userId, promise);\n return promise;\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProfileHoverCard\",\n props: {\n user: { default: null },\n profile: { default: null },\n preloadedUserStatus: { default: null },\n open: { type: Boolean, default: false },\n actions: { default: null },\n actionsLoading: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n const loading = ref(false);\n const error = ref(false);\n const profileData = ref(props.profile);\n const userStatus = ref(props.preloadedUserStatus ?? {});\n const isMobile = useIsSmallMobile();\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n const isCurrentUser = computed(() => !!props.user && getCurrentUser()?.uid === props.user);\n const settingsUrl = generateUrl(\"/settings/user\");\n const resolvedActions = computed(() => {\n if (props.actions && props.actions.length > 0) {\n return props.actions.filter((action) => action.appId !== \"timezone\");\n }\n return (profileData.value?.actions ?? []).filter((action) => action.appId !== \"timezone\").map((action) => ({\n id: action.id,\n appId: action.appId,\n text: action.title,\n href: action.target || void 0,\n icon: action.icon,\n target: action.id === \"phone\" ? \"_self\" : \"_blank\",\n rel: action.id === \"fediverse\" ? \"me\" : void 0\n }));\n });\n const localTimeLabel = computed(() => {\n const time = formatProfileLocalTime(/* @__PURE__ */ new Date());\n if (!time) {\n return null;\n }\n return t(\"Local time: {time}\", { time });\n });\n const primaryAction = computed(() => resolvedActions.value[0]);\n const otherActions = computed(() => resolvedActions.value.slice(1));\n const primaryActionButtonProps = computed(() => {\n const action = primaryAction.value;\n if (!action) {\n return {};\n }\n if (action.to) {\n return { to: action.to };\n }\n if (action.href) {\n return {\n href: action.href,\n target: action.target ?? (action.href.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel\n };\n }\n return {};\n });\n const emptyProfileMessage = computed(() => {\n if (isCurrentUser.value) {\n return t(\"You have not added any info yet\");\n }\n const name = profileData.value?.displayname || props.user || \"\";\n return t(\"{user} has not added any info yet\", { user: name });\n });\n const avatarUserStatus = computed(() => ({\n status: userStatus.value.status ?? null,\n icon: userStatus.value.icon ?? null,\n message: userStatus.value.message ?? null\n }));\n function formatProfileLocalTime(date) {\n const timeZone = profileData.value?.timezone;\n if (timeZone) {\n try {\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone,\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(date);\n } catch {\n }\n }\n if (typeof profileData.value?.timezoneOffset === \"number\") {\n const shifted = new Date(date.getTime() + profileData.value.timezoneOffset * 1e3);\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone: \"UTC\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(shifted);\n }\n return null;\n }\n function isIconUrl(icon) {\n return !!icon && (/^(https?:)?\\/\\//.test(icon) || icon.startsWith(\"/\") || icon.startsWith(\"data:\"));\n }\n function otherActionComponent(action) {\n if (action.to) {\n return NcActionRouter;\n }\n if (action.onClick && !action.href) {\n return NcActionButton;\n }\n return NcActionLink;\n }\n function otherActionProps(action) {\n if (action.to) {\n return { to: action.to, closeAfterClick: true };\n }\n if (action.onClick && !action.href) {\n return { closeAfterClick: true };\n }\n return {\n href: action.href,\n target: action.target ?? (action.href?.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel,\n closeAfterClick: true\n };\n }\n watch(() => props.profile, (value) => {\n if (value) {\n profileData.value = value;\n if (props.user) {\n setCachedProfile(props.user, value);\n }\n error.value = false;\n }\n });\n watch(() => props.preloadedUserStatus, (value) => {\n if (value) {\n userStatus.value = value;\n }\n });\n watch(() => props.user, () => {\n profileData.value = props.profile;\n userStatus.value = props.preloadedUserStatus ?? {};\n error.value = false;\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n if (props.open) {\n loadProfile();\n }\n });\n watch(() => props.open, (isOpen) => {\n if (isOpen) {\n loadProfile();\n }\n });\n onMounted(() => {\n if (props.open) {\n loadProfile();\n }\n });\n function hasPreloadedUserStatus() {\n return props.preloadedUserStatus !== null || !!(userStatus.value.icon || userStatus.value.message || userStatus.value.status);\n }\n async function ensureUserStatus(userId) {\n if (!hasPreloadedUserStatus()) {\n userStatus.value = await fetchUserStatus(userId);\n }\n }\n async function loadProfile() {\n if (!props.user || loading.value) {\n return;\n }\n const userId = props.user;\n if (!profileData.value) {\n const cached = getCachedProfile(userId);\n if (cached) {\n profileData.value = cached;\n }\n }\n if (profileData.value) {\n await ensureUserStatus(userId);\n return;\n }\n loading.value = true;\n error.value = false;\n try {\n const [profile, status] = await Promise.all([\n fetchProfileCached(userId, async () => {\n const { data } = await axios.get(generateOcsUrl(\"/profile/{userId}\", { userId }));\n return data.ocs?.data ?? null;\n }),\n hasPreloadedUserStatus() ? Promise.resolve(userStatus.value) : fetchUserStatus(userId)\n ]);\n profileData.value = profile;\n userStatus.value = status;\n if (!profileData.value) {\n error.value = true;\n }\n } catch (e) {\n logger.debug(\"Failed to load profile for hovercard\", { error: e, user: userId });\n error.value = true;\n } finally {\n loading.value = false;\n }\n }\n async function fetchUserStatus(userId) {\n try {\n if (!getCapabilities()?.user_status?.enabled || !getCurrentUser()) {\n return {};\n }\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{userId}\", { userId }));\n return data.ocs?.data ?? {};\n } catch (e) {\n logger.debug(\"Failed to load user status for hovercard\", { error: e, userId });\n return {};\n }\n }\n return { __sfc: true, props, loading, error, profileData, userStatus, isMobile, isCurrentUser, settingsUrl, resolvedActions, localTimeLabel, primaryAction, otherActions, primaryActionButtonProps, emptyProfileMessage, avatarUserStatus, formatProfileLocalTime, isIconUrl, otherActionComponent, otherActionProps, hasPreloadedUserStatus, ensureUserStatus, loadProfile, fetchUserStatus, AccountIcon, BriefcaseIcon, ClockIcon, MapMarkerIcon, PencilIcon, NcActions, NcAvatar, NcButton, NcEmptyContent, NcLoadingIcon, NcRichText, t, NcIconSvgWrapper };\n }\n});\nvar _sfc_render = function render6() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"profile-hover-card\", attrs: { \"role\": \"dialog\", \"aria-label\": _setup.t(\"Profile of {user}\", { user: _setup.profileData?.displayname || _vm.user || \"\" }) } }, [_setup.loading ? _c(\"div\", { staticClass: \"profile-hover-card__loading\" }, [_c(_setup.NcLoadingIcon, { attrs: { \"size\": 32, \"name\": _setup.t(\"Loading profile\") } })], 1) : _setup.profileData && !_setup.error ? [_c(\"div\", { staticClass: \"profile-hover-card__header\" }, [_setup.isCurrentUser ? _c(_setup.NcButton, { staticClass: \"profile-hover-card__header__edit\", attrs: { \"variant\": \"tertiary\", \"aria-label\": _setup.t(\"Edit profile\"), \"title\": _setup.t(\"Edit profile\"), \"href\": _setup.settingsUrl, \"target\": \"_blank\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.PencilIcon, { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3660207582) }) : _vm._e(), _c(\"div\", { staticClass: \"profile-hover-card__header__container\" }, [_setup.isMobile ? _c(_setup.NcAvatar, { staticClass: \"avatar profile-hover-card__header__container__avatar\", attrs: { \"user\": _setup.profileData.userId, \"size\": 96, \"disableMenu\": \"\", \"disableTooltip\": \"\", \"preloadedUserStatus\": _setup.avatarUserStatus, \"isNoUser\": !_setup.profileData.isUserAvatarVisible } }) : _c(\"div\", { staticClass: \"profile-hover-card__header__container__placeholder\" }), _c(\"div\", { staticClass: \"profile-hover-card__header__container__identity\" }, [_c(\"div\", { staticClass: \"profile-hover-card__header__container__displayname\" }, [_c(\"h2\", [_vm._v(_vm._s(_setup.profileData.displayname || _setup.profileData.userId))]), _setup.profileData.pronouns ? _c(\"span\", { staticClass: \"profile-hover-card__header__container__pronoun-separator\" }, [_vm._v(\"·\")]) : _vm._e(), _setup.profileData.pronouns ? _c(\"span\", { staticClass: \"profile-hover-card__header__container__pronouns\" }, [_vm._v(_vm._s(_setup.profileData.pronouns))]) : _vm._e()]), _setup.userStatus.icon || _setup.userStatus.message ? _c(\"div\", { staticClass: \"profile-hover-card__header__container__status\" }, [_c(\"span\", { staticClass: \"profile-hover-card__header__container__status-content\" }, [_c(\"span\", [_vm._v(_vm._s(_setup.userStatus.icon) + \" \" + _vm._s(_setup.userStatus.message))])])]) : _vm._e()])], 1)], 1), _c(\"div\", { staticClass: \"profile-hover-card__body\" }, [_c(\"div\", { staticClass: \"profile-hover-card__content\" }, [_c(\"div\", { staticClass: \"profile-hover-card__sidebar\" }, [!_setup.isMobile ? _c(_setup.NcAvatar, { staticClass: \"avatar\", attrs: { \"user\": _setup.profileData.userId, \"size\": 135, \"disableMenu\": \"\", \"disableTooltip\": \"\", \"preloadedUserStatus\": _setup.avatarUserStatus, \"isNoUser\": !_setup.profileData.isUserAvatarVisible } }) : _vm._e(), _c(\"div\", { staticClass: \"user-actions\" }, [_vm.actionsLoading && _setup.resolvedActions.length === 0 ? _c(\"div\", { staticClass: \"user-actions__loading\" }, [_c(_setup.NcLoadingIcon, { attrs: { \"size\": 20, \"name\": _setup.t(\"Loading actions\") } })], 1) : [_setup.primaryAction ? _c(_setup.NcButton, _vm._b({ staticClass: \"user-actions__primary\", attrs: { \"variant\": \"primary\" }, on: { \"click\": _setup.primaryAction.onClick }, scopedSlots: _vm._u([_setup.primaryAction.iconSvg || _setup.primaryAction.icon ? { key: \"icon\", fn: function() {\n return [_setup.primaryAction.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": _setup.primaryAction.iconSvg } }) : _setup.isIconUrl(_setup.primaryAction.icon) ? _c(\"img\", { staticClass: \"user-actions__primary__icon\", attrs: { \"src\": _setup.primaryAction.icon, \"alt\": \"\" } }) : _c(\"span\", { staticClass: \"user-actions__primary__icon-class\", class: _setup.primaryAction.icon, attrs: { \"aria-hidden\": \"true\" } })];\n }, proxy: true } : null], null, true) }, \"NcButton\", _setup.primaryActionButtonProps, false), [_vm._v(\" \" + _vm._s(_setup.primaryAction.text) + \" \")]) : _vm._e(), _setup.otherActions.length > 0 ? _c(_setup.NcActions, { staticClass: \"user-actions__other\", attrs: { \"inline\": _setup.isMobile ? 5 : 4 } }, _vm._l(_setup.otherActions, function(action, index) {\n return _c(_setup.otherActionComponent(action), _vm._b({ key: action.id || action.href || index, tag: \"component\", on: { \"click\": action.onClick }, scopedSlots: _vm._u([action.iconSvg || action.icon ? { key: \"icon\", fn: function() {\n return [action.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": action.iconSvg } }) : _setup.isIconUrl(action.icon) ? _c(\"img\", { staticClass: \"user-actions__other__icon\", attrs: { \"src\": action.icon, \"alt\": \"\" } }) : _c(\"span\", { staticClass: \"user-actions__other__icon-class\", class: action.icon, attrs: { \"aria-hidden\": \"true\" } })];\n }, proxy: true } : null], null, true) }, \"component\", _setup.otherActionProps(action), false), [_vm._v(\" \" + _vm._s(action.text) + \" \")]);\n }), 1) : _vm._e()]], 2)], 1), _c(\"div\", { staticClass: \"profile-hover-card__blocks\" }, [_setup.profileData.organisation || _setup.profileData.role || _setup.profileData.address || _setup.localTimeLabel ? _c(\"div\", { staticClass: \"profile-hover-card__blocks-details\" }, [_setup.profileData.organisation || _setup.profileData.role ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.BriefcaseIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.profileData.organisation) + \" \"), _setup.profileData.organisation && _setup.profileData.role ? _c(\"span\", [_vm._v(\"•\")]) : _vm._e(), _vm._v(\" \" + _vm._s(_setup.profileData.role) + \" \")], 1)]) : _vm._e(), _setup.profileData.address ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.MapMarkerIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.profileData.address) + \" \")], 1)]) : _vm._e(), _setup.localTimeLabel ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.ClockIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.localTimeLabel) + \" \")], 1)]) : _vm._e()]) : _vm._e(), _setup.profileData.headline || _setup.profileData.biography ? [_setup.profileData.headline ? _c(\"h3\", { staticClass: \"profile-hover-card__blocks-headline\" }, [_vm._v(\" \" + _vm._s(_setup.profileData.headline) + \" \")]) : _vm._e(), _setup.profileData.biography ? _c(\"div\", { staticClass: \"profile-hover-card__blocks-biography\" }, [_c(_setup.NcRichText, { attrs: { \"text\": _setup.profileData.biography, \"useExtendedMarkdown\": \"\" } })], 1) : _vm._e()] : _c(_setup.NcEmptyContent, { staticClass: \"profile-hover-card__blocks-empty-info\", attrs: { \"name\": _setup.emptyProfileMessage, \"description\": _setup.t(\"The headline and about sections will show up here\") }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.AccountIcon, { attrs: { \"size\": 40 } })];\n }, proxy: true }]) })], 2)])])] : _c(\"div\", { staticClass: \"profile-hover-card__error\" }, [_vm._v(\" \" + _vm._s(_setup.t(\"Failed to load profile\")) + \" \")])], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"cf5e55fe\"\n);\nconst NcProfileHoverCard = __component__.exports;\nexport {\n NcProfileHoverCard as default\n};\n//# sourceMappingURL=NcProfileHoverCard-DK5YkGF0.mjs.map\n","import '../assets/NcProgressBar-CU_ib_HL.css';\nimport { useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n name: \"NcProgressBar\",\n props: {\n /**\n * An integer between 1 and 100\n */\n value: {\n type: Number,\n default: 0,\n validator(value) {\n return value >= 0 && value <= 100;\n }\n },\n /**\n * Determines the height of the progressbar.\n * Possible values:\n * - 'small' (default)\n * - 'medium'\n * - Number\n *\n * @type {'small'|'medium'|number}\n */\n size: {\n type: [String, Number],\n default: \"small\",\n validator(value) {\n return [\"small\", \"medium\"].includes(value) || typeof value === \"number\";\n }\n },\n /**\n * Applies an error color to the progressbar if true.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * ProgressBar type\n */\n type: {\n type: String,\n default: \"linear\",\n validator(value) {\n return [\"linear\", \"circular\"].includes(value);\n }\n },\n /**\n * The color of the progress bar\n */\n color: {\n type: String,\n default: null\n }\n },\n data() {\n return {\n stroke: 4\n };\n },\n computed: {\n height() {\n if (this.type === \"circular\") {\n if (Number.isInteger(this.size)) {\n return this.size;\n }\n return 44;\n }\n if (this.size === \"small\") {\n return 4;\n } else if (this.size === \"medium\") {\n return 6;\n }\n return this.size;\n },\n progress() {\n return this.value / 100;\n },\n radius() {\n return this.height / 2;\n },\n radiusNormalized() {\n return this.radius - 3 * this.stroke;\n },\n circumference() {\n return this.radiusNormalized * 2 * Math.PI;\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"15a054de\": _vm.color\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.type === \"circular\" ? _c(\"span\", { staticClass: \"progress-bar progress-bar--circular\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"role\": \"progressbar\", \"aria-valuenow\": _vm.value } }, [_c(\"svg\", { attrs: { \"height\": _vm.height, \"width\": _vm.height } }, [_c(\"circle\", { attrs: { \"stroke\": \"currentColor\", \"fill\": \"transparent\", \"stroke-dasharray\": `${_vm.progress * _vm.circumference} ${(1 - _vm.progress) * _vm.circumference}`, \"stroke-dashoffset\": 0.25 * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } }), _c(\"circle\", { attrs: { \"stroke\": \"var(--color-background-darker)\", \"fill\": \"transparent\", \"stroke-dasharray\": `${(1 - _vm.progress) * _vm.circumference} ${_vm.progress * _vm.circumference}`, \"stroke-dashoffset\": (0.25 - _vm.progress) * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } })])]) : _c(\"progress\", { staticClass: \"progress-bar progress-bar--linear vue\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"max\": \"100\" }, domProps: { \"value\": _vm.value } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"06c9abdc\"\n);\nconst NcProgressBar = __component__.exports;\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-D7zYeXBH.mjs.map\n","if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the <li> container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"<li>No Match Found!</li>\";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"<li>No Match Found!</li>\";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '<span class=\"tribute-mention\">' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"</span>\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"<span>\",\n post: this.current.collection.searchOpts.post || \"</span>\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcRelatedResourcesPanel-D5DxWJPc.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, V as t39, a as t, W as t43, X as t10 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-C7Dy9Bph.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t39);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n icon: {\n type: String,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"resource\" }, [_c(\"NcButton\", { staticClass: \"resource__button\", attrs: { \"aria-label\": _vm.labelTranslated, \"to\": _vm.route, \"href\": _vm.route ? null : _vm.url, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"div\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": _vm.icon } })])];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"2660b55a\"\n);\nconst NcResource = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon account-group-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst AccountGroup = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon open-in-new-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst OpenInNew = __component__$2.exports;\nregister(t43);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n providerId: {\n type: String,\n default: null\n },\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"Could not fetch Teams resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"team-resources\" }, [_c(\"h5\", { staticClass: \"team-resources__header\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Related team resources\")) + \" \")]), _vm._l(_vm.teamResources, function(team) {\n return _c(\"details\", { key: team.teamId, staticClass: \"related-team\", attrs: { \"name\": \"Team resources\", \"open\": _vm.open(team.teamId) }, on: { \"toggle\": (event) => _vm.toggleOpen(team.teamId, event.target.open) } }, [_c(\"summary\", { staticClass: \"related-team__header\" }, [_c(\"h5\", { staticClass: \"related-team__name\" }, [_c(\"AccountGroup\", { attrs: { \"size\": 20 } }), _vm._v(\" \" + _vm._s(team.displayName) + \" \")], 1), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"View team\"), \"href\": team.link, \"title\": _vm.t(\"View team\"), \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"OpenInNew\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }), _vm.open(team.teamId) ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })], 1), _c(\"div\", _vm._l(_vm.teamProviders(team.teamId), function(provider) {\n return _c(\"div\", { key: provider.id, staticClass: \"related-team-provider\" }, [provider.resources.length > 0 ? _c(\"h6\", [_vm._v(\" \" + _vm._s(provider.name) + \" \")]) : _vm._e(), _c(\"ul\", _vm._l(provider.resources, function(resource) {\n return _c(\"li\", { key: resource.url, staticClass: \"related-team-resource\" }, [_c(\"a\", { staticClass: \"related-team-resource__link\", attrs: { \"href\": resource.url } }, [resource.iconEmoji ? _c(\"span\", { staticClass: \"resource__icon\" }, [_vm._v(\" \" + _vm._s(resource.iconEmoji) + \" \")]) : resource.iconSvg ? _c(\"NcIconSvgWrapper\", { staticClass: \"resource__icon\", attrs: { \"svg\": resource.iconSvg, \"size\": 20 } }) : resource.iconURL ? _c(\"span\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": resource.iconURL, \"alt\": \"\" } })]) : _vm._e(), _c(\"span\", { staticClass: \"resource__name\" }, [_vm._v(\" \" + _vm._s(resource.label) + \" \")])], 1)]);\n }), 0)]);\n }), 0)]);\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"82938a03\"\n);\nconst NcTeamResources = __component__$1.exports;\nregister(t10);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * Make the header name dynamic\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"has-error\",\n \"has-resources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId;\n let itemId;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"has-error\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"has-resources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = e;\n logger.error(\"Could not fetch related resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_c(\"NcTeamResources\", { attrs: { \"provider-id\": _vm.providerId, \"item-id\": _vm.itemId } }), _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"related-resources\" }, [_c(\"div\", { staticClass: \"related-resources__header\" }, [_c(\"h5\", [_vm._v(_vm._s(_vm.header))]), _c(\"p\", [_vm._v(_vm._s(_vm.subline))])]), _vm._l(_vm.resources, function(resource) {\n return _c(\"NcResource\", { key: resource.itemId, staticClass: \"related-resources__entry\", attrs: { \"icon\": resource.icon, \"name\": resource.title, \"url\": resource.url } });\n })], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3ca2fd14\"\n);\nconst NcRelatedResourcesPanel = __component__.exports;\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-BKygMHvP.mjs.map\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_custom_picker_elements ??= {};\nwindow._registerCustomPickerElement ??= registerCustomPickerElement;\nclass NcCustomPickerRenderResult {\n element;\n object;\n /**\n * @param element - The HTML element\n * @param object - The object\n */\n constructor(element, object) {\n this.element = element;\n this.object = object;\n }\n}\nfunction isCustomPickerElementRegistered(id) {\n return !!window._vue_richtext_custom_picker_elements[id];\n}\nfunction getCustomPickerElementSize(id) {\n const size = window._vue_richtext_custom_picker_elements[id]?.size;\n if ([\"small\", \"normal\", \"large\", \"full\"].includes(size)) {\n return size;\n }\n return null;\n}\nfunction registerCustomPickerElement(id, callback, onDestroy = () => {\n}, size = \"large\") {\n if (window._vue_richtext_custom_picker_elements[id]) {\n logger.error(`Custom reference picker element for id ${id} already registered`);\n return;\n }\n window._vue_richtext_custom_picker_elements[id] = {\n id,\n callback,\n onDestroy,\n size\n };\n}\nfunction renderCustomPickerElement(el, options) {\n const { providerId, accessible } = options;\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n logger.error(`Custom reference picker element for reference provider ID ${providerId} not registered`);\n return;\n }\n return window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible });\n}\nfunction destroyCustomPickerElement(providerId, el, renderResult) {\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n return;\n }\n window._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult);\n}\nexport {\n NcCustomPickerRenderResult as N,\n renderCustomPickerElement as a,\n destroyCustomPickerElement as d,\n getCustomPickerElementSize as g,\n isCustomPickerElementRegistered as i,\n registerCustomPickerElement as r\n};\n//# sourceMappingURL=customPickerElements-CYpmyl0b.mjs.map\n","import '../assets/referencePickerModal-0oYth4rX.css';\nimport Vue from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { a as renderCustomPickerElement, d as destroyCustomPickerElement, i as isCustomPickerElementRegistered, g as getCustomPickerElementSize } from \"./customPickerElements-CYpmyl0b.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { imagePath, generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, _ as t9, a as t, $ as t48, a0 as t42, a1 as t25, A as t44, a2 as t32, n as t19, a3 as t13 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { N as NcHighlight } from \"./index-CxTT94_h.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { N as NcReferenceWidget } from \"./NcReferenceWidget-CMq5QVka.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CQp8XS4C.mjs\";\nimport { D as DotsHorizontalIcon } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nconst _sfc_main$7 = {\n name: \"NcCustomPickerElement\",\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n isRegistered: isCustomPickerElementRegistered(this.provider.id),\n renderResult: null\n };\n },\n mounted() {\n if (this.isRegistered) {\n this.renderElement();\n }\n },\n beforeDestroy() {\n if (this.isRegistered) {\n destroyCustomPickerElement(this.provider.id, this.$el, this.renderResult);\n }\n },\n methods: {\n renderElement() {\n if (this.$refs.domElement) {\n this.$refs.domElement.innerHTML = \"\";\n }\n const renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false });\n Promise.resolve(renderFunctionResult).then((result) => {\n this.renderResult = result;\n if (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n this.renderResult.object.$on(\"submit\", this.onSubmit);\n this.renderResult.object.$on(\"cancel\", this.onCancel);\n }\n this.renderResult.element.addEventListener(\"submit\", (e) => {\n this.onSubmit(e.detail);\n });\n this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n });\n },\n onSubmit(value) {\n this.$emit(\"submit\", value);\n },\n onCancel() {\n this.$emit(\"cancel\");\n }\n }\n};\nvar _sfc_render$7 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"domElement\" });\n};\nvar _sfc_staticRenderFns$7 = [];\nvar __component__$7 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$7,\n _sfc_render$7,\n _sfc_staticRenderFns$7,\n false,\n null,\n \"0547d92f\"\n);\nconst NcCustomPickerElement = __component__$7.exports;\nconst _sfc_main$6 = {\n name: \"LinkVariantIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst LinkVariantIcon = __component__$6.exports;\nregister(t9);\nconst anyLinkProviderId = \"any-link\";\nconst anyLinkProvider = {\n id: anyLinkProviderId,\n title: t(\"Any link\"),\n order: 0,\n icon_url: imagePath(\"core\", \"filetypes/link.svg\")\n};\nwindow._vue_richtext_reference_providers ??= loadState(\"core\", \"reference-provider-list\", []);\nwindow._vue_richtext_reference_provider_timestamps ??= loadState(\"core\", \"reference-provider-timestamps\", {});\nfunction getProvider(providerId) {\n if (providerId === anyLinkProviderId) {\n return anyLinkProvider;\n }\n return getProviders().find((p) => p.id === providerId);\n}\nfunction getProviders() {\n return window._vue_richtext_reference_providers.filter((p) => {\n const keep = !!p.search_providers_ids && p.search_providers_ids.length > 0 || isCustomPickerElementRegistered(p.id);\n if (!keep) {\n logger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`);\n }\n return keep;\n });\n}\nfunction sortProviders(providerList) {\n const timestamps = window._vue_richtext_reference_provider_timestamps;\n return providerList.sort((a, b) => {\n return a.order === b.order ? 0 : a.order > b.order ? 1 : -1;\n }).sort((a, b) => {\n const ta = timestamps[a.id];\n const tb = timestamps[b.id];\n return ta === tb ? 0 : tb === void 0 ? -1 : ta === void 0 ? 1 : ta > tb ? -1 : 1;\n });\n}\nfunction searchProvider(query, limit) {\n const providers = getProviders();\n const escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const regexp = new RegExp(escapedQuery, \"i\");\n const sortedProviders = sortProviders(providers);\n const filteredSortedProviders = sortedProviders.filter((p) => {\n return p.title.match(regexp);\n });\n const searchResult = limit ? filteredSortedProviders.slice(0, limit) : filteredSortedProviders;\n if (query === \"\" || searchResult.length === 0) {\n searchResult.push(anyLinkProvider);\n }\n return searchResult;\n}\nasync function touchProvider(providerId) {\n const timestamp = Math.floor(Date.now() / 1e3);\n const url = generateOcsUrl(\"references/provider/{providerId}\", { providerId });\n await axios.put(url, { timestamp });\n window._vue_richtext_reference_provider_timestamps[providerId] = timestamp;\n}\nregister(t42, t48);\nlet mytimer = 0;\nfunction delay(callback, ms) {\n return function() {\n const context = this;\n const args = arguments;\n clearTimeout(mytimer);\n mytimer = setTimeout(function() {\n callback.apply(context, args);\n }, ms);\n };\n}\nfunction isUrl(str) {\n try {\n return Boolean(new URL(str));\n } catch {\n return false;\n }\n}\nconst _sfc_main$5 = {\n name: \"NcProviderList\",\n components: {\n NcSelect,\n NcHighlight,\n NcEmptyContent,\n LinkVariantIcon\n },\n emits: [\n \"select-provider\",\n \"submit\"\n ],\n data() {\n return {\n selectedProvider: null,\n query: \"\",\n multiselectPlaceholder: t(\"Select provider\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n options() {\n const result = [];\n if (this.query !== \"\" && isUrl(this.query)) {\n result.push({\n id: this.query,\n title: this.query,\n isLink: true\n });\n }\n result.push(...searchProvider(this.query));\n return result;\n }\n },\n methods: {\n focus() {\n setTimeout(() => {\n this.$refs[\"provider-select\"]?.$el?.querySelector(\"#provider-select-input\")?.focus();\n }, 300);\n },\n onProviderSelected(p) {\n if (p !== null) {\n if (p.isLink) {\n this.$emit(\"submit\", p.title);\n } else {\n this.$emit(\"select-provider\", p);\n }\n this.selectedProvider = null;\n }\n },\n onSearch(query) {\n this.query = query;\n }\n }\n};\nvar _sfc_render$5 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"provider-list\" }, [_c(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", \"label\": \"title\", \"placeholder\": _vm.multiselectPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"clear-search-on-select\": true, \"clear-search-on-blur\": () => false, \"filterable\": false }, on: { \"search\": _vm.onSearch, \"input\": _vm.onProviderSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isLink ? _c(\"div\", { staticClass: \"provider\" }, [_c(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { \"size\": 20 } }), _c(\"span\", [_vm._v(_vm._s(option.title))])], 1) : _c(\"div\", { staticClass: \"provider\" }, [_c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": option.icon_url, \"alt\": _vm.providerIconAlt } }), _c(\"NcHighlight\", { staticClass: \"option-text\", attrs: { \"search\": _vm.query, \"text\": option.title } })], 1)];\n } }]), model: { value: _vm.selectedProvider, callback: function($$v) {\n _vm.selectedProvider = $$v;\n }, expression: \"selectedProvider\" } }), _c(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n \"f39d58d9\"\n);\nconst NcProviderList = __component__$5.exports;\nregister(t25);\nconst _sfc_main$4 = {\n name: \"NcRawLinkInput\",\n components: {\n LinkVariantIcon,\n NcEmptyContent,\n NcLoadingIcon,\n NcReferenceWidget,\n NcTextField\n },\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n inputValue: \"\",\n loading: false,\n reference: null,\n abortController: null,\n inputPlaceholder: t(\"Enter link\")\n };\n },\n computed: {\n isLinkValid() {\n return isUrl(this.inputValue);\n }\n },\n methods: {\n focus() {\n this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]?.focus();\n },\n onSubmit(e) {\n const value = e.target.value;\n if (this.isLinkValid) {\n this.$emit(\"submit\", value);\n }\n },\n onClear() {\n this.inputValue = \"\";\n this.reference = null;\n },\n onInput() {\n this.reference = null;\n if (this.abortController) {\n this.abortController.abort();\n }\n if (this.isLinkValid) {\n delay(() => {\n this.updateReference();\n }, 500)();\n }\n },\n updateReference() {\n this.loading = true;\n this.abortController = new AbortController();\n axios.get(generateOcsUrl(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n signal: this.abortController.signal\n }).then((response) => {\n this.reference = response.data.ocs.data.references[this.inputValue];\n }).catch((error) => {\n logger.error(\"Could not update reference\", { error });\n }).then(() => {\n this.loading = false;\n });\n }\n }\n};\nvar _sfc_render$4 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"raw-link\" }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"NcTextField\", { ref: \"url-input\", attrs: { \"value\": _vm.inputValue, \"show-trailing-button\": _vm.inputValue !== \"\", \"label\": _vm.inputPlaceholder }, on: { \"update:value\": [function($event) {\n _vm.inputValue = $event;\n }, _vm.onInput], \"trailing-button-click\": _vm.onClear }, nativeOn: { \"keyup\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_vm.loading ? _c(\"NcLoadingIcon\", { attrs: { \"size\": 16 } }) : _c(\"LinkVariantIcon\", { attrs: { \"size\": 16 } })], 1)], 1), _vm.reference !== null ? _c(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { \"reference\": _vm.reference } }) : _c(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"be630586\"\n);\nconst NcRawLinkInput = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"NcSearchResult\",\n components: {\n NcHighlight\n },\n props: {\n /**\n * Unified search result entry\n */\n entry: {\n type: Object,\n required: true\n },\n /**\n * The query that led to getting this result\n * Used to highlight the entry text\n */\n query: {\n type: String,\n required: true\n }\n }\n};\nvar _sfc_render$3 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"result\" }, [_vm.entry.icon ? _c(\"div\", { staticClass: \"result--icon-class\", class: { [_vm.entry.icon]: true, rounded: _vm.entry.rounded } }) : _c(\"img\", { staticClass: \"result--image\", class: { rounded: _vm.entry.rounded }, attrs: { \"src\": _vm.entry.thumbnailUrl } }), _c(\"div\", { staticClass: \"result--content\" }, [_c(\"span\", { staticClass: \"result--content--name\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.title } })], 1), _c(\"span\", { staticClass: \"result--content--subline\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.subline } })], 1)])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n \"995c2758\"\n);\nconst NcSearchResult = __component__$3.exports;\nregister(t32, t42, t44);\nconst LIMIT = 5;\nconst _sfc_main$2 = {\n name: \"NcSearch\",\n components: {\n LinkVariantIcon,\n DotsHorizontalIcon,\n NcEmptyContent,\n NcSelect,\n NcSearchResult\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The selected reference provider\n */\n provider: {\n type: Object,\n required: true\n },\n showEmptyContent: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Placeholder of the search\n */\n searchPlaceholder: {\n type: String,\n default: null\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n searchQuery: \"\",\n selectedResult: null,\n resultsBySearchProvider: {},\n searching: false,\n searchingMoreOf: null,\n abortController: null,\n noOptionsText: t(\"Start typing to search\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n mySearchPlaceholder() {\n return this.searchPlaceholder || t(\"Search\");\n },\n searchProviderIds() {\n return this.provider.search_providers_ids;\n },\n options() {\n if (this.searchQuery === \"\") {\n return [];\n }\n const options = [];\n if (isUrl(this.searchQuery)) {\n options.push(this.rawLinkEntry);\n }\n options.push(...this.formattedSearchResults);\n return options;\n },\n rawLinkEntry() {\n return {\n id: \"rawLinkEntry\",\n resourceUrl: this.searchQuery,\n isRawLink: true\n };\n },\n formattedSearchResults() {\n const results = [];\n this.searchProviderIds.forEach((pid) => {\n if (this.resultsBySearchProvider[pid].entries.length > 0) {\n if (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n results.push({\n id: \"groupTitle-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isCustomGroupTitle: true,\n providerId: pid\n });\n }\n const providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n return {\n id: \"provider-\" + pid + \"-entry-\" + index,\n ...entry\n };\n });\n results.push(...providerEntriesWithId);\n if (this.resultsBySearchProvider[pid].isPaginated) {\n results.push({\n id: \"moreOf-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isMore: true,\n providerId: pid,\n isLoading: this.searchingMoreOf === pid\n });\n }\n }\n });\n return results;\n }\n },\n mounted() {\n this.resetResults();\n },\n beforeDestroy() {\n this.cancelSearchRequests();\n },\n methods: {\n t,\n resetResults() {\n const resultsBySearchProvider = {};\n this.searchProviderIds.forEach((pid) => {\n resultsBySearchProvider[pid] = {\n entries: []\n };\n });\n this.resultsBySearchProvider = resultsBySearchProvider;\n },\n focus() {\n setTimeout(() => {\n this.$refs[\"search-select\"]?.$el?.querySelector(\"#search-select-input\")?.focus();\n }, 300);\n },\n cancelSearchRequests() {\n if (this.abortController) {\n this.abortController.abort();\n }\n },\n onSearchInput(query) {\n this.searchQuery = query;\n delay(() => {\n this.updateSearch();\n }, 500)();\n },\n onSelectResultSelected(item) {\n if (item !== null) {\n if (item.resourceUrl) {\n this.cancelSearchRequests();\n this.$emit(\"submit\", item.resourceUrl);\n } else if (item.isMore) {\n this.searchMoreOf(item.providerId).then(() => {\n this.selectedResult = null;\n });\n }\n }\n },\n searchMoreOf(searchProviderId) {\n this.searchingMoreOf = searchProviderId;\n this.cancelSearchRequests();\n return this.searchProviders(searchProviderId);\n },\n updateSearch() {\n this.cancelSearchRequests();\n this.resetResults();\n if (this.searchQuery === \"\") {\n this.searching = false;\n return;\n }\n return this.searchProviders();\n },\n searchProviders(searchProviderId = null) {\n this.abortController = new AbortController();\n this.searching = true;\n const searchPromises = searchProviderId === null ? [...this.searchProviderIds].map((pid) => {\n return this.searchOneProvider(pid);\n }) : [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)];\n return Promise.allSettled(searchPromises).then((promises) => {\n const isOneCanceled = !!promises.find((p) => {\n return p.status === \"rejected\" && (p.reason.name === \"CanceledError\" || p.reason.code === \"ERR_CANCELED\");\n });\n if (!isOneCanceled) {\n this.searching = false;\n this.searchingMoreOf = null;\n }\n });\n },\n searchOneProvider(providerId, cursor = null) {\n const url = cursor === null ? generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId, term: this.searchQuery, limit: LIMIT }) : generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId, term: this.searchQuery, limit: LIMIT, cursor });\n return axios.get(url, {\n signal: this.abortController.signal\n }).then((response) => {\n const data = response.data.ocs.data;\n this.resultsBySearchProvider[providerId].name = data.name;\n this.resultsBySearchProvider[providerId].cursor = data.cursor;\n this.resultsBySearchProvider[providerId].isPaginated = data.isPaginated;\n this.resultsBySearchProvider[providerId].entries.push(...data.entries);\n });\n }\n }\n};\nvar _sfc_render$2 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": _vm.showEmptyContent } }, [_c(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", \"label\": \"name\", \"placeholder\": _vm.mySearchPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"close-on-select\": false, \"clear-search-on-select\": false, \"clear-search-on-blur\": () => false, \"reset-focus-on-options-change\": false, \"filterable\": false, \"autoscroll\": true, \"reset-on-options-change\": false, \"loading\": _vm.searching }, on: { \"search\": _vm.onSearchInput, \"input\": _vm.onSelectResultSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isRawLink ? _c(\"div\", { staticClass: \"custom-option\" }, [_c(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Raw link {options}\", { options: option.resourceUrl })) + \" \")])], 1) : option.resourceUrl ? _c(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { \"entry\": option, \"query\": _vm.searchQuery } }) : option.isCustomGroupTitle ? _c(\"span\", { staticClass: \"custom-option group-name\" }, [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _vm._e(), _c(\"span\", { staticClass: \"option-text\" }, [_c(\"strong\", [_vm._v(_vm._s(option.name))])])]) : option.isMore ? _c(\"span\", { staticClass: \"custom-option\" }, [option.isLoading ? _c(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : _c(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t('Load more \"{options}\"', { options: option.name })) + \" \")])], 1) : _vm._e()];\n } }, { key: \"no-options\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.noOptionsText) + \" \")];\n }, proxy: true }]), model: { value: _vm.selectedResult, callback: function($$v) {\n _vm.selectedResult = $$v;\n }, expression: \"selectedResult\" } }), _vm.showEmptyContent ? _c(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"alt\": _vm.providerIconAlt, \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }], null, false, 2922132592) }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"e61f71e3\"\n);\nconst NcSearch = __component__$2.exports;\nconst MODES = {\n providerList: 1,\n standardLinkInput: 2,\n searchInput: 3,\n customElement: 4\n};\nconst _sfc_main$1 = {\n name: \"NcReferencePicker\",\n components: {\n NcCustomPickerElement,\n NcProviderList,\n NcRawLinkInput,\n NcSearch\n },\n props: {\n /**\n * Provider to select on creation\n * Default: null. Show the provider list\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Optional width in pixels\n * Default: 100%\n */\n width: {\n type: Number,\n default: null\n },\n /**\n * Focus on the provider list select input on creation\n * Default: true\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"cancel\",\n \"cancel-raw-link\",\n \"cancel-search\",\n \"provider-selected\",\n \"submit\"\n ],\n data() {\n return {\n MODES,\n selectedProvider: this.initialProvider\n };\n },\n computed: {\n mode() {\n return this.selectedProvider === null ? MODES.providerList : isCustomPickerElementRegistered(this.selectedProvider.id) ? MODES.customElement : this.selectedProvider.search_providers_ids ? MODES.searchInput : MODES.standardLinkInput;\n },\n pickerWrapperStyle() {\n return {\n width: this.width ? this.width + \"px\" : void 0\n };\n }\n },\n mounted() {\n if (this.focusOnCreate) {\n if (this.initialProvider) {\n setTimeout(() => {\n this.$refs[\"url-input\"]?.focus();\n }, 300);\n } else {\n this.$nextTick(() => {\n this.$refs[\"provider-list\"]?.focus();\n });\n }\n }\n },\n methods: {\n onEscapePressed() {\n if (this.selectedProvider !== null) {\n this.deselectProvider();\n } else {\n this.cancelProviderSelection();\n }\n },\n onProviderSelected(provider) {\n this.selectedProvider = provider;\n this.$emit(\"provider-selected\", provider);\n this.$nextTick(() => {\n this.$refs[\"url-input\"]?.focus();\n });\n },\n cancelCustomElement() {\n this.deselectProvider();\n },\n cancelSearch() {\n this.$emit(\"cancel-search\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelRawLinkInput() {\n this.$emit(\"cancel-raw-link\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelProviderSelection() {\n this.$emit(\"cancel\");\n },\n submitLink(link) {\n if (this.selectedProvider !== null) {\n touchProvider(this.selectedProvider.id);\n }\n this.$emit(\"submit\", link);\n this.deselectProvider();\n },\n deselectProvider() {\n this.selectedProvider = null;\n this.$emit(\"provider-selected\", null);\n setTimeout(() => {\n this.$refs[\"provider-list\"]?.focus();\n }, 300);\n }\n }\n};\nvar _sfc_render$1 = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"reference-picker\", style: _vm.pickerWrapperStyle, attrs: { \"tabindex\": \"-1\" }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onEscapePressed.apply(null, arguments);\n } } }, [_vm.mode === _vm.MODES.providerList ? _c(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": _vm.onProviderSelected, \"submit\": _vm.submitLink, \"cancel\": _vm.cancelProviderSelection } }) : _vm.mode === _vm.MODES.standardLinkInput ? _c(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelRawLinkInput } }) : _vm.mode === _vm.MODES.searchInput ? _c(\"NcSearch\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"cancel\": _vm.cancelSearch, \"submit\": _vm.submitLink } }) : _vm.mode === _vm.MODES.customElement ? _c(\"div\", { staticClass: \"custom-element-wrapper\" }, [_c(\"NcCustomPickerElement\", { staticClass: \"custom-element\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelCustomElement } })], 1) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"646d5538\"\n);\nconst NcReferencePicker = __component__$1.exports;\nregister(t13, t19);\nconst _sfc_main = {\n name: \"NcReferencePickerModal\",\n components: {\n NcReferencePicker,\n NcModal,\n NcButton,\n ArrowLeftIcon: ArrowLeft,\n CloseIcon: Close\n },\n props: {\n /**\n * Provider to select on creation\n * Show the provider list if no initial one is provided\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Focus on the input item on create\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * If true, add the modal content to the Viewer trap elements via the event-bus\n */\n isInsideViewer: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n show: true,\n selectedProvider: this.initialProvider,\n backButtonTitle: t(\"Back to provider selection\"),\n closeButtonTitle: t(\"Close\"),\n closeButtonLabel: t(\"Close Smart Picker\")\n };\n },\n computed: {\n isProviderSelected() {\n return this.selectedProvider !== null;\n },\n showBackButton() {\n return this.initialProvider === null && this.isProviderSelected;\n },\n modalSize() {\n return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? getCustomPickerElementSize(this.selectedProvider.id) ?? \"large\" : \"normal\";\n },\n showModalName() {\n return !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id);\n },\n modalName() {\n return this.isProviderSelected ? this.selectedProvider.title : t(\"Smart Picker\");\n }\n },\n mounted() {\n if (this.isInsideViewer) {\n const elem = this.$refs.modal_content;\n emit(\"viewer:trapElements:changed\", elem);\n }\n },\n methods: {\n onCancel() {\n this.show = false;\n this.$emit(\"cancel\");\n },\n onSubmit(value) {\n this.show = false;\n this.$emit(\"submit\", value);\n },\n onProviderSelect(provider) {\n this.selectedProvider = provider;\n if (provider === null && this.initialProvider !== null) {\n this.onCancel();\n }\n },\n onBackClicked() {\n this.$refs.referencePicker.deselectProvider();\n }\n }\n};\nvar _sfc_render = function render8() {\n var _vm = this, _c = _vm._self._c;\n return _vm.show ? _c(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { \"size\": _vm.modalSize, \"can-close\": true }, on: { \"close\": _vm.onCancel } }, [_c(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [_vm.showBackButton ? _c(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": _vm.backButtonTitle, \"title\": _vm.backButtonTitle }, on: { \"click\": _vm.onBackClicked }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowLeftIcon\")];\n }, proxy: true }], null, false, 3001860362) }) : _vm._e(), _c(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": _vm.closeButtonLabel, \"title\": _vm.closeButtonTitle, \"variant\": \"tertiary\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"CloseIcon\")];\n }, proxy: true }], null, false, 2491825086) }), _vm.showModalName ? _c(\"h2\", [_vm._v(\" \" + _vm._s(_vm.modalName) + \" \")]) : _vm._e(), _c(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": _vm.initialProvider, \"focus-on-create\": _vm.focusOnCreate }, on: { \"provider-selected\": _vm.onProviderSelect, \"submit\": _vm.onSubmit, \"cancel\": _vm.onCancel } })], 1)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"00990f2a\"\n);\nconst NcReferencePickerModal = __component__.exports;\nasync function getLinkWithPicker(providerId, isInsideViewer) {\n const modalId = \"referencePickerModal\";\n const modalElement = document.createElement(\"div\");\n modalElement.id = modalId;\n document.body.append(modalElement);\n const { promise, reject, resolve } = Promise.withResolvers();\n const initialProvider = providerId && getProvider(providerId) || null;\n const View = Vue.extend(NcReferencePickerModal);\n const view = new View({\n propsData: {\n initialProvider,\n isInsideViewer\n }\n }).$mount(modalElement);\n view.$on(\"cancel\", () => {\n view.$destroy();\n reject(new Error(\"User cancellation\"));\n });\n view.$on(\"submit\", (link) => {\n view.$destroy();\n resolve(link);\n });\n return promise;\n}\nexport {\n NcReferencePicker as N,\n anyLinkProviderId as a,\n getProvider as b,\n getProviders as c,\n sortProviders as d,\n NcReferencePickerModal as e,\n NcSearch as f,\n getLinkWithPicker as g,\n searchProvider as s\n};\n//# sourceMappingURL=referencePickerModal-P_15xB7f.mjs.map\n","import '../assets/NcRichContenteditable-DRPzKa4Z.css';\nimport debounce from \"debounce\";\nimport stringLength from \"string-length\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-BGOeDmNO.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-gpl3yJFX.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { e as emojiSearch, a as emojiAddRecent } from \"./emoji-Dtn2mDf7.mjs\";\nimport { r as register, B as t37, I as t34, a as t, J as n } from \"./_l10n-CAnZaLWU.mjs\";\nimport { r as richEditor } from \"./index-BCqXu_og.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"./NcRichText-K2ZjNIbK.mjs\";\nimport \"./customPickerElements-CYpmyl0b.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-P_15xB7f.mjs\";\nimport \"./createElementId-DhjFt1I9.mjs\";\nimport \"../Components/NcEmptyContent.mjs\";\nimport \"./NcSelect-CxHfXvZV.mjs\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"./NcReferenceWidget-CMq5QVka.mjs\";\nimport \"../Components/NcLoadingIcon.mjs\";\nimport \"./NcTextField-CQp8XS4C.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"./legacy-Cy3dCXuB.mjs\";\nimport \"vue\";\nimport \"./NcButton-DAGirW_B.mjs\";\nimport \"../Components/NcModal.mjs\";\nimport \"./widgets-XxirL-2f.mjs\";\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * @deprecated Use `label` instead\n */\n title: {\n type: String,\n required: false,\n default: null\n },\n label: {\n type: String,\n required: false,\n default: null\n },\n subline: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: null\n },\n icon: {\n type: String,\n required: true\n },\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n // For backwards compatibility\n labelWithFallback() {\n return this.label || this.title;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"autocomplete-result\" }, [_c(\"div\", { staticClass: \"autocomplete-result__icon\", class: [_vm.icon, `autocomplete-result__icon--${_vm.avatarUrl ? \"with-avatar\" : \"\"}`], style: _vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null }, [_vm.status.icon ? _c(\"span\", { staticClass: \"autocomplete-result__status autocomplete-result__status--icon\" }, [_vm._v(\" \" + _vm._s(_vm.status && _vm.status.icon || \"\") + \" \")]) : _vm.status.status && _vm.status.status !== \"offline\" ? _c(\"NcUserStatusIcon\", { staticClass: \"autocomplete-result__status\", attrs: { \"status\": _vm.status.status } }) : _vm._e()], 1), _c(\"span\", { staticClass: \"autocomplete-result__content\" }, [_c(\"span\", { staticClass: \"autocomplete-result__title\", attrs: { \"title\": _vm.labelWithFallback } }, [_vm._v(\" \" + _vm._s(_vm.labelWithFallback) + \" \")]), _vm.subline ? _c(\"span\", { staticClass: \"autocomplete-result__subline\" }, [_vm._v(\" \" + _vm._s(_vm.subline) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"ef14f1ec\"\n);\nconst NcAutoCompleteResult = __component__$1.exports;\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_zixlO\",\n \"tribute-container\": \"_tribute-container_v5Jrn\",\n \"tribute-container__item\": \"_tribute-container__item_pWyWv\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_-ySA2\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_Cw6vn\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_9wjvV\",\n \"tribute-container-link\": \"_tribute-container-link_tv648\",\n \"tribute-item\": \"_tribute-item_GdOxt\",\n \"tribute-item__title\": \"_tribute-item__title_Q03Nj\",\n \"tribute-item__icon\": \"_tribute-item__icon_UvP7g\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => GenRandomId(7)\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element or selector for the tribute (menu popover)\n * Defaults to `body` element\n */\n menuContainer: {\n type: [String, Element, null],\n default: null\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"submit\",\n \"paste\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"smart-picker-submit\"\n ],\n setup() {\n const uid = GenRandomId(5);\n const model = useModelMigration(\"value\", \"update:value\", true);\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n model,\n // Constants\n labelId: `nc-rich-contenteditable-${uid}-label`,\n tributeId: `nc-rich-contenteditable-${uid}-tribute`,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.model,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n return stringLength(this.localValue) > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Proxied native event handlers without custom event handlers\n *\n * @return {Record<string, Function>}\n */\n listeners() {\n const listeners = { ...this.$listeners };\n delete listeners.paste;\n return listeners;\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n model() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.model.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.model);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.model);\n },\n beforeDestroy() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `<div id=\"nc-rich-contenteditable-tribute-item-${GenRandomId(5)}\" class=\"${this.$style[\"tribute-item\"]}\" role=\"option\">${content}</div>`;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '<span class=\"hidden\"></span>',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`<span class=\"${this.$style[\"tribute-item__emoji\"]}\">${item.original.native}</span> :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(`<img class=\"${this.$style[\"tribute-item__icon\"]}\" src=\"${item.original.icon_url}\"> <span class=\"${this.$style[\"tribute-item__title\"]}\">${item.original.title}</span>`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n const menuContainer = typeof this.menuContainer === \"string\" ? document.querySelector(this.menuContainer) : this.menuContainer;\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smart-picker-submit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"Smart picker promise rejected\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '<span id=\"tmp-smart-picker-result-node\"></span>';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.model = text;\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"rich-contenteditable\" }, [_c(\"div\", _vm._g(_vm._b({ ref: \"contenteditable\", staticClass: \"rich-contenteditable__input\", class: {\n \"rich-contenteditable__input--empty\": _vm.isEmptyValue,\n \"rich-contenteditable__input--multiline\": _vm.multiline,\n \"rich-contenteditable__input--has-label\": _vm.label,\n \"rich-contenteditable__input--overflow\": _vm.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": _vm.disabled\n }, attrs: { \"id\": _vm.id, \"contenteditable\": _vm.contenteditableAttributeValue, \"aria-labelledby\": _vm.label ? _vm.labelId : void 0, \"aria-placeholder\": _vm.placeholder, \"aria-multiline\": \"true\", \"role\": \"textbox\", \"aria-haspopup\": \"listbox\", \"aria-autocomplete\": \"inline\", \"aria-controls\": _vm.tributeId, \"aria-expanded\": _vm.isAutocompleteOpen ? \"true\" : \"false\", \"aria-activedescendant\": _vm.autocompleteActiveId, \"title\": _vm.tooltipString }, on: { \"focus\": _vm.moveCursorToEnd, \"input\": _vm.onInput, \"compositionstart\": function($event) {\n _vm.isComposing = true;\n }, \"compositionend\": function($event) {\n _vm.isComposing = false;\n }, \"!keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeyEsc.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.onEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if (!$event.ctrlKey) return null;\n if ($event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onCtrlEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }], \"paste\": _vm.onPaste, \"!keyup\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onKeyUp.apply(null, arguments);\n }, \"tribute-active-true\": function($event) {\n return _vm.onTributeActive(true);\n }, \"tribute-active-false\": function($event) {\n return _vm.onTributeActive(false);\n } } }, \"div\", _vm.$attrs, false), _vm.listeners)), _vm.label ? _c(\"div\", { staticClass: \"rich-contenteditable__label\", attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style1\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n \"2d84a6b6\"\n);\nconst NcRichContenteditable = __component__.exports;\nexport {\n NcAutoCompleteResult as N,\n NcRichContenteditable as a\n};\n//# sourceMappingURL=NcRichContenteditable-rJPX28V6.mjs.map\n","import { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, k as t0, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEllipsisedOption from \"../Components/NcEllipsisedOption.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [Number, Array, Object],\n default: void 0\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n */\n \"input\",\n /**\n * Emitted on input events of the multiselect field\n *\n * @type {number|number[]}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n const noop = () => {\n };\n return {\n model,\n noop\n };\n },\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.model.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.model);\n }\n },\n propsToForward() {\n const {\n // Props handled by this component\n fetchTags,\n optionsFilter,\n passthru,\n // Props to forward\n ...propsToForward\n } = this.$props;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"Loading systemtags failed\", { error });\n }\n },\n methods: {\n handleInput(value) {\n if (this.multiple) {\n this.model = value.map((element) => element.id);\n } else {\n if (value === null) {\n this.model = null;\n } else {\n this.model = value.id;\n }\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcSelect\", _vm._g(_vm._b({ attrs: { \"options\": _vm.availableOptions, \"close-on-select\": !_vm.multiple, \"value\": _vm.passthru ? _vm.model : _vm.localValue }, on: { \"search\": (searchString) => _vm.search = searchString }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(option), \"search\": _vm.search } })];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(selectedOption), \"search\": _vm.search } })];\n } }, _vm._l(_vm.$scopedSlots, function(_, name) {\n return { key: name, fn: function(data) {\n return [_vm._t(name, null, null, data)];\n } };\n })], null, true) }, \"NcSelect\", _vm.propsToForward, false), {\n ..._vm.$listeners,\n input: _vm.passthru ? _vm.$listeners.input : _vm.noop,\n \"update:modelValue\": _vm.passthru ? _vm.$listeners[\"update:modelValue\"] : _vm.handleInput,\n \"update:model-value\": _vm.passthru ? _vm.$listeners[\"update:model-value\"] : _vm.noop\n }));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSelectTags = __component__.exports;\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-BWTTPN2O.mjs.map\n","import '../assets/NcSelectUsers-BDh2CSCJ.css';\nimport { defineComponent, ref, watch } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DIecVacf.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { r as register, x as t47, h as t17, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t17, t47);\nconst __default__ = {\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcSelectUsers\",\n props: {\n /**\n * `aria-label` for the clear input button\n */\n ariaLabelClearSelected: {\n type: String,\n default: t(\"Clear selected\")\n },\n /**\n * `aria-label` for the listbox element\n */\n ariaLabelListbox: {\n type: String,\n default: t(\"Options\")\n },\n /**\n * Allows to customize the `aria-label` for the deselect-option button\n * The default is \"Deselect \" + optionLabel\n */\n ariaLabelDeselectOption: {\n type: Function,\n default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n },\n /**\n * Keep the dropdown open after selecting an entry.\n */\n keepOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the component\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Callback to determine if the provided option should match the current search text.\n * Used to determine if the option should be displayed.\n *\n * By default it filters by the `displayName` and `subname` properties of the user\n * option object unless this prop is set explicitly\n */\n filterBy: {\n type: Function,\n default: null\n },\n /**\n * Input element id\n */\n inputId: {\n type: String,\n default: () => GenRandomId()\n },\n /**\n * Visible label for the input element\n *\n * @default 'Select account'\n */\n inputLabel: {\n type: String,\n default: t(\"Select account\")\n },\n /**\n * Pass true if you are using an external label.\n * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Show a loading icon.\n *\n * @default false\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Allow selection of multiple options\n *\n * @default false\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Disable automatic wrapping when selected options overflow the width.\n *\n * @default false\n */\n noWrap: {\n type: Boolean,\n default: false\n },\n /**\n * Array of users.\n */\n options: {\n type: Array,\n default: () => []\n },\n /**\n * Placeholder text.\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * Enable if a value is required for native form validation\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Currently selected value\n *\n * The `v-model` directive may be used for two-way data binding\n */\n modelValue: {\n type: Object,\n default: null\n }\n },\n emits: [\"search\", \"update:modelValue\"],\n setup(__props, { emit }) {\n const props = __props;\n const search = ref(\"\");\n watch(search, () => {\n emit(\"search\", search.value);\n });\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function localFilterBy(option, label, search2) {\n if (props.filterBy) {\n return props.filterBy;\n }\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return { __sfc: true, props, emit, search, clickableArea, gridBaseLine, avatarSize, localFilterBy, NcListItemIcon, NcSelect };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcSelect, _vm._b({ staticClass: \"nc-select-users\", attrs: { \"filter-by\": _setup.localFilterBy, \"label\": \"displayName\" }, on: { \"search\": function($event) {\n _setup.search = $event;\n }, \"update:model-value\": function($event) {\n return _vm.$emit(\"update:modelValue\", $event);\n } }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(_setup.NcListItemIcon, _vm._b({ attrs: { \"avatar-size\": 32, \"name\": option.displayName, \"search\": _setup.search } }, \"NcListItemIcon\", option, false))];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(_setup.NcListItemIcon, _vm._b({ attrs: { \"avatar-size\": _setup.avatarSize, \"name\": selectedOption.displayName, \"no-margin\": \"\", \"search\": _setup.search } }, \"NcListItemIcon\", selectedOption, false))];\n } }]) }, \"NcSelect\", _vm.$props, false));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7f7ecbfe\"\n);\nconst NcSelectUsers = __component__.exports;\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-D2jOjPs4.mjs.map\n","import '../assets/NcSettingsInputText-18lfGViv.css';\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, j as t51, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t51);\nconst _sfc_main = {\n name: \"NcSettingsInputText\",\n model: {\n prop: \"value\",\n event: \"update:value\"\n },\n props: {\n /**\n * label of the select group element\n */\n label: {\n type: String,\n required: true\n },\n /**\n * hint of the select group input\n */\n hint: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * value of the select group input\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"settings-input-text-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n *\n * @type {string}\n */\n \"update:modelValue\",\n /* Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"input\",\n \"submit\",\n \"change\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n data() {\n return {\n submitTranslated: t(\"Submit\")\n };\n },\n computed: {\n /**\n * @return {string}\n */\n idSubmit() {\n return this.id + \"-submit\";\n }\n },\n methods: {\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target.value;\n },\n onSubmit(event) {\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n }\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"form\", { ref: \"form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"label\", { staticClass: \"action-input__label\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _c(\"input\", { attrs: { \"id\": _vm.id, \"type\": \"text\", \"disabled\": _vm.disabled }, domProps: { \"value\": _vm.model }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }), _c(\"input\", { staticClass: \"action-input__submit\", attrs: { \"id\": _vm.idSubmit, \"type\": \"submit\" }, domProps: { \"value\": _vm.submitTranslated } }), _vm.hint ? _c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.hint) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9938ac79\"\n);\nconst NcSettingsInputText = __component__.exports;\nexport {\n NcSettingsInputText as N\n};\n//# sourceMappingURL=NcSettingsInputText-Cc7cCwNm.mjs.map\n","import '../assets/NcSettingsSection-Fyy2lFk_.css';\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, w as t26, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon help-circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst HelpCircle = __component__$1.exports;\nregister(t26);\nconst [major] = loadState(\"core\", \"config\", { version: \"30.0\" }).version.split(\".\", 2) ?? [];\nconst isLegacy = major && Number.parseInt(major) < 30;\nconst _sfc_main = {\n name: \"NcSettingsSection\",\n components: {\n HelpCircle\n },\n props: {\n /**\n * The name of the settings section.\n * This is used for the headline and needs to be set.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Further informational description of the section.\n */\n description: {\n type: String,\n default: \"\"\n },\n /**\n * The URL for the documentation about this section\n */\n docUrl: {\n type: String,\n default: \"\"\n },\n /**\n * Limit the width of the setting's content\n *\n * Setting this to false allows unrestricted (width) settings content.\n * Note that the name and description have always a width limit.\n *\n * @deprecated Will be removed with next version and will not be used on Nextcloud 30+ (always forced to true)\n */\n limitWidth: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n data() {\n return {\n docNameTranslated: t(\"External documentation for {name}\", {\n name: this.name\n })\n };\n },\n computed: {\n forceLimitWidth() {\n return this.limitWidth || !isLegacy;\n },\n hasDescription() {\n return this.description.length > 0;\n },\n hasDocUrl() {\n return this.docUrl.length > 0;\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"settings-section\", class: { \"settings-section--limit-width\": _vm.forceLimitWidth } }, [_c(\"h2\", { staticClass: \"settings-section__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \"), _vm.hasDocUrl ? _c(\"a\", { staticClass: \"settings-section__info\", attrs: { \"href\": _vm.docUrl, \"title\": _vm.docNameTranslated, \"aria-label\": _vm.docNameTranslated, \"target\": \"_blank\", \"rel\": \"noreferrer nofollow\" } }, [_c(\"HelpCircle\", { attrs: { \"size\": 20 } })], 1) : _vm._e()]), _vm.hasDescription ? _c(\"p\", { staticClass: \"settings-section__desc\" }, [_vm._v(\" \" + _vm._s(_vm.description) + \" \")]) : _vm._e(), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9fdd9dcb\"\n);\nconst NcSettingsSection = __component__.exports;\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-D9qxzYDc.mjs.map\n","import '../assets/NcSettingsSelectGroup-B9FlWQVH.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, i as t52, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t52);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: Array,\n default: void 0\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /** Emitted when the groups selection changes<br />**Payload:** `value` (`Array`) - *Ids of selected groups */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"error\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: GenRandomId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.model.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.model.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n value: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.model = value;\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_vm.label ? _c(\"label\", { staticClass: \"hidden-visually\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.label))]) : _vm._e(), _c(\"NcSelect\", { attrs: { \"value\": _vm.inputValue, \"options\": _vm.groupsArray, \"placeholder\": _vm.placeholder || _vm.label, \"filter-by\": _vm.filterGroups, \"input-id\": _vm.id, \"limit\": 5, \"label\": \"displayname\", \"multiple\": true, \"close-on-select\": false, \"disabled\": _vm.disabled }, on: { \"update:model-value\": _vm.update, \"search\": _vm.onSearch } }), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasError, expression: \"hasError\" }], staticClass: \"select-group-error\" }, [_vm._v(\" \" + _vm._s(_vm.errorMessage) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9d59765b\"\n);\nconst NcSettingsSelectGroup = __component__.exports;\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-DzzNyHN_.mjs.map\n","import '../assets/Tooltip-C-QZMStp.css';\nimport { options } from \"floating-vue\";\nimport { VTooltip, options as options2 } from \"floating-vue\";\noptions.themes.tooltip.html = false;\noptions.themes.tooltip.delay = { show: 500, hide: 200 };\noptions.themes.tooltip.distance = 10;\noptions.themes.tooltip[\"arrow-padding\"] = 3;\nexport {\n VTooltip as default,\n options2 as options\n};\n//# sourceMappingURL=Tooltip.mjs.map\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Translations file from library source\n * We also use that to edit the end strings of\n * some buttons, like resetOperations\n *\n * @see https://raw.githubusercontent.com/scaleflex/filerobot-image-editor/v4.8.1/packages/react-filerobot-image-editor/src/context/defaultTranslations.js\n */\nexport default {\n\tname: t('viewer', 'Name'),\n\tsave: t('viewer', 'Save'),\n\tsaveAs: t('viewer', 'Save as'),\n\tback: t('viewer', 'Back'),\n\tloading: t('viewer', 'Loading …'),\n\t// resetOperations: 'Reset/delete all operations',\n\tresetOperations: t('viewer', 'Reset'),\n\tchangesLoseWarningHint: t('viewer', 'All changes will be lost.'),\n\tdiscardChangesWarningHint: t('viewer', 'Are you sure you want to continue?'),\n\tcancel: t('viewer', 'Cancel'),\n\tapply: t('viewer', 'Apply'),\n\twarning: t('viewer', 'Warning'),\n\tconfirm: t('viewer', 'Confirm'),\n\tdiscardChanges: t('viewer', 'Discard changes'),\n\tundoTitle: t('viewer', 'Undo'),\n\tredoTitle: t('viewer', 'Redo'),\n\tshowImageTitle: t('viewer', 'Show original image'),\n\tzoomInTitle: t('viewer', 'Zoom in'),\n\tzoomOutTitle: t('viewer', 'Zoom out'),\n\ttoggleZoomMenuTitle: t('viewer', 'Toggle zoom menu'),\n\tadjustTab: t('viewer', 'Adjust'),\n\tfinetuneTab: t('viewer', 'Fine-tune'),\n\tfiltersTab: t('viewer', 'Filters'),\n\twatermarkTab: t('viewer', 'Watermark'),\n\tannotateTabLabel: t('viewer', 'Draw'),\n\tresize: t('viewer', 'Resize'),\n\tresizeTab: t('viewer', 'Resize'),\n\timageName: t('viewer', 'Image name'),\n\tinvalidImageError: t('viewer', 'Invalid image.'),\n\tuploadImageError: t('viewer', 'Error while uploading the image.'),\n\tareNotImages: t('viewer', 'are not images'),\n\tisNotImage: t('viewer', 'is not an image'),\n\ttoBeUploaded: t('viewer', 'to be uploaded'),\n\tcropTool: t('viewer', 'Crop'),\n\toriginal: t('viewer', 'Original'),\n\tcustom: t('viewer', 'Custom'),\n\tsquare: t('viewer', 'Square'),\n\tlandscape: t('viewer', 'Landscape'),\n\tportrait: t('viewer', 'Portrait'),\n\tellipse: t('viewer', 'Ellipse'),\n\tclassicTv: t('viewer', 'Classic TV'),\n\tcinemascope: t('viewer', 'CinemaScope'),\n\tarrowTool: t('viewer', 'Arrow'),\n\tblurTool: t('viewer', 'Blur'),\n\tbrightnessTool: t('viewer', 'Brightness'),\n\tcontrastTool: t('viewer', 'Contrast'),\n\tellipseTool: t('viewer', 'Ellipse'),\n\tunFlipX: t('viewer', 'Un-flip X'),\n\tflipX: t('viewer', 'Flip X'),\n\tunFlipY: t('viewer', 'Un-flip Y'),\n\tflipY: t('viewer', 'Flip Y'),\n\thsvTool: t('viewer', 'HSV'),\n\thue: t('viewer', 'Hue'),\n\tbrightness: t('viewer', 'Brightness'),\n\tsaturation: t('viewer', 'Saturation'),\n\tvalue: t('viewer', 'Value'),\n\timageTool: t('viewer', 'Image'),\n\timporting: t('viewer', 'Importing …'),\n\taddImage: t('viewer', '+ Add image'),\n\tuploadImage: t('viewer', 'Upload image'),\n\tfromGallery: t('viewer', 'From gallery'),\n\tlineTool: t('viewer', 'Line'),\n\tpenTool: t('viewer', 'Pen'),\n\tpolygonTool: t('viewer', 'Polygon'),\n\tsides: t('viewer', 'Sides'),\n\trectangleTool: t('viewer', 'Rectangle'),\n\tcornerRadius: t('viewer', 'Corner Radius'),\n\tresizeWidthTitle: t('viewer', 'Width in pixels'),\n\tresizeHeightTitle: t('viewer', 'Height in pixels'),\n\ttoggleRatioLockTitle: t('viewer', 'Toggle ratio lock'),\n\tresetSize: t('viewer', 'Reset to original image size'),\n\trotateTool: t('viewer', 'Rotate'),\n\ttextTool: t('viewer', 'Text'),\n\ttextSpacings: t('viewer', 'Text spacing'),\n\ttextAlignment: t('viewer', 'Text alignment'),\n\tfontFamily: t('viewer', 'Font family'),\n\tsize: t('viewer', 'Size'),\n\tletterSpacing: t('viewer', 'Letter spacing'),\n\tlineHeight: t('viewer', 'Line height'),\n\twarmthTool: t('viewer', 'Warmth'),\n\taddWatermark: t('viewer', '+ Add watermark'),\n\taddTextWatermark: t('viewer', '+ Add text watermark'),\n\taddWatermarkTitle: t('viewer', 'Choose watermark type'),\n\tuploadWatermark: t('viewer', 'Upload watermark'),\n\taddWatermarkAsText: t('viewer', 'Add as text'),\n\tpadding: t('viewer', 'Padding'),\n\tpaddings: t('viewer', 'Paddings'),\n\tshadow: t('viewer', 'Shadow'),\n\thorizontal: t('viewer', 'Horizontal'),\n\tvertical: t('viewer', 'Vertical'),\n\tblur: t('viewer', 'Blur'),\n\topacity: t('viewer', 'Opacity'),\n\ttransparency: t('viewer', 'Transparency'),\n\tposition: t('viewer', 'Position'),\n\tstroke: t('viewer', 'Stroke'),\n\tsaveAsModalTitle: t('viewer', 'Save image as'),\n\textension: t('viewer', 'Extension'),\n\tformat: t('viewer', 'Format'),\n\tnameIsRequired: t('viewer', 'Name is required.'),\n\tquality: t('viewer', 'Quality'),\n\timageDimensionsHoverTitle: t('viewer', 'Saved image size (width x height)'),\n\tcropSizeLowerThanResizedWarning: t('viewer', 'Note that the selected crop area is lower than the applied resize which might cause quality decrease'),\n\tactualSize: t('viewer', 'Actual size (100%)'),\n\tfitSize: t('viewer', 'Fit size'),\n\taddImageTitle: t('viewer', 'Select image to add …'),\n\tmutualizedFailedToLoadImg: t('viewer', 'Failed to load image.'),\n\ttabsMenu: t('viewer', 'Menu'),\n\tdownload: t('viewer', 'Download'),\n\twidth: t('viewer', 'Width'),\n\theight: t('viewer', 'Height'),\n\tplus: '+',\n\tcropItemNoEffect: t('viewer', 'No preview available for this crop item'),\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div>\n\t\t<div ref=\"editor\" class=\"viewer__image-editor\" v-bind=\"themeDataAttr\" />\n\t</div>\n</template>\n<script>\nimport { showConfirmation, showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { Node } from '@nextcloud/files'\nimport { linkTo } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport { basename, dirname, extname, join } from 'path'\nimport translations from '../models/editorTranslations.js'\nimport { rawStat } from '../services/FileInfo.ts'\nimport logger from '../services/logger.js'\n\nlet TABS, TOOLS\n\nexport default {\n\tname: 'ImageEditor',\n\n\tprops: {\n\t\tfileid: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsrc: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\timageEditor: null,\n\t\t\tobserver: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tconfig() {\n\t\t\treturn {\n\t\t\t\tsource: this.src,\n\n\t\t\t\tdefaultSavedImageName: this.defaultSavedImageName,\n\t\t\t\tdefaultSavedImageType: this.defaultSavedImageType,\n\t\t\t\t// We use our own translations\n\t\t\t\tuseBackendTranslations: false,\n\n\t\t\t\t// Watch resize\n\t\t\t\tobservePluginContainerSize: true,\n\n\t\t\t\t// Default tab and tool\n\t\t\t\tdefaultTabId: TABS.ADJUST,\n\t\t\t\tdefaultToolId: TOOLS.CROP,\n\n\t\t\t\t// Displayed tabs, disabling watermark\n\t\t\t\ttabsIds: Object.values(TABS)\n\t\t\t\t\t.filter(tab => tab !== TABS.WATERMARK)\n\t\t\t\t\t.sort((a, b) => a.localeCompare(b)),\n\n\t\t\t\t// onBeforeSave: this.onBeforeSave,\n\t\t\t\tonClose: this.onClose,\n\t\t\t\t// onModify: this.onModify,\n\t\t\t\tonSave: this.onSave,\n\n\t\t\t\t// Translations\n\t\t\t\ttranslations,\n\n\t\t\t\ttheme: {\n\t\t\t\t\tpalette: {\n\t\t\t\t\t\t'bg-secondary': 'var(--color-main-background)',\n\t\t\t\t\t\t'bg-primary': 'var(--color-background-dark)',\n\t\t\t\t\t\t'bg-hover': 'var(--color-background-hover)',\n\t\t\t\t\t\t'bg-stateless': 'var(--color-background-dark)',\n\t\t\t\t\t\t// Accent\n\t\t\t\t\t\t'accent-primary': 'var(--color-primary-element)',\n\t\t\t\t\t\t'accent-stateless': 'var(--color-primary-element)',\n\t\t\t\t\t\t'border-active-bottom': 'var(--color-primary-element)',\n\t\t\t\t\t\t// Active state\n\t\t\t\t\t\t'bg-primary-active': 'var(--color-background-dark)',\n\t\t\t\t\t\t'bg-primary-hover': 'var(--color-background-hover)',\n\t\t\t\t\t\t'accent-primary-active': 'var(--color-main-text)',\n\t\t\t\t\t\t'accent-primary-hover': 'var(--color-primary-element)',\n\n\t\t\t\t\t\twarning: 'var(--color-error)',\n\t\t\t\t\t},\n\t\t\t\t\ttypography: {\n\t\t\t\t\t\tfontFamily: 'var(--font-face)',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tText: {\n\t\t\t\t\t// this must be the value of one of the fonts\n\t\t\t\t\tfontFamily: '\"NotoSans\", \"Noto Sans\", \"Arial\", \"Roboto\"',\n\t\t\t\t\tfonts: [\n\t\t\t\t\t\t{ label: 'Sans-serif', value: '\"NotoSans\", \"Noto Sans\", \"Arial\", \"Roboto\"' },\n\t\t\t\t\t\t{ label: 'Serif', value: '\"PTSerif\", \"Georgia\", \"Times New Roman\"' },\n\t\t\t\t\t\t{ label: 'Comic', value: '\"Comic Neue\", \"Comic Sans\"' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\t\tdecodedSourceName() {\n\t\t\treturn decodeURIComponent(basename(this.src))\n\t\t},\n\t\tdefaultSavedImageName() {\n\t\t\treturn basename(this.decodedSourceName, extname(this.decodedSourceName))\n\t\t},\n\t\tdefaultSavedImageType() {\n\t\t\treturn extname(this.decodedSourceName).slice(1) || 'jpeg'\n\t\t},\n\n\t\thasHighContrastEnabled() {\n\t\t\tconst themes = OCA?.Theming?.enabledThemes || []\n\t\t\treturn themes.find(theme => theme.indexOf('highcontrast') !== -1)\n\t\t},\n\n\t\tthemeDataAttr() {\n\t\t\tif (this.hasHighContrastEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\t'data-theme-dark-highcontrast': true,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'data-theme-dark': true,\n\t\t\t}\n\t\t},\n\t},\n\n\tcreated() {\n\t\t// we need to apply our fonts on the root, but we cannot do this from Vue as we can only access the component.\n\t\t// so we do this manually\n\t\tif (document.getElementById('oca-viewer_image-editor-fonts')) {\n\t\t\treturn\n\t\t}\n\n\t\tconst styleElement = document.createElement('style')\n\t\tstyleElement.id = 'oca-viewer_image-editor-fonts'\n\t\tstyleElement.appendChild(document.createTextNode(`\n\t\t@font-face {\n\t\t\tfont-display: swap;\n\t\t\tfont-family: 'Comic Neue';\n\t\t\tfont-style: normal;\n\t\t\tfont-weight: 400;\n\t\t\tsrc: url('${linkTo('viewer', 'css/fonts/comic-neue-regular.woff2')}') format('woff2');\n\t\t}\n\t\t@font-face {\n\t\t\tfont-display: swap;\n\t\t\tfont-family: 'NotoSans';\n\t\t\tfont-style: normal;\n\t\t\tfont-weight: 400;\n\t\t\tsrc: url('${linkTo('core', 'fonts/NotoSans-Regular-latin.woff2')}') format('woff2');\n\t\t}\n\t\t@font-face {\n\t\t\tfont-display: swap;\n\t\t\tfont-family: 'PTSerif';\n\t\t\tfont-style: normal;\n\t\t\tfont-weight: 400;\n\t\t\tsrc: url('${linkTo('viewer', 'css/fonts/pt-serif-regular.woff2')}') format('woff2');\n\t\t}\n\t\t`))\n\t\tdocument.head.appendChild(styleElement)\n\t},\n\n\tasync mounted() {\n\t\t// Lazy load the image editor\n\t\tconst FilerobotImageEditor = (await import(/* webpackChunkName: 'filerobot' */'filerobot-image-editor')).default\n\t\tTABS = FilerobotImageEditor.TABS\n\t\tTOOLS = FilerobotImageEditor.TOOLS\n\n\t\tthis.imageEditor = new FilerobotImageEditor(\n\t\t\tthis.$refs.editor,\n\t\t\tthis.config,\n\t\t)\n\t\tthis.imageEditor.render()\n\t\twindow.addEventListener('keydown', this.handleKeydown, true)\n\n\t\tthis.observer = new MutationObserver((mutations) => {\n\t\t\tmutations.forEach((mutation) => {\n\t\t\t\tif (mutation.type === 'childList') {\n\t\t\t\t\tmutation.addedNodes.forEach((node) => {\n\t\t\t\t\t\tif (node.classList?.contains('FIE_root') || node.classList?.contains('SfxModal-Wrapper')) {\n\t\t\t\t\t\t\temit('viewer:trapElements:changed', node)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t\t// using body instead of the editor ref because save modal is not mounted in editor\n\t\tthis.observer.observe(document.body, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t})\n\n\t},\n\n\tbeforeDestroy() {\n\t\tif (this.imageEditor) {\n\t\t\tthis.imageEditor.terminate()\n\t\t}\n\t\tthis.observer.disconnect()\n\t\twindow.removeEventListener('keydown', this.handleKeydown, true)\n\t},\n\n\tmethods: {\n\t\tonClose() {\n\t\t\twindow.removeEventListener('keydown', this.handleKeydown, true)\n\t\t\tthis.$emit('close')\n\t\t},\n\t\t/**\n\t\t * Check if a file exists at the given URL\n\t\t * @param {string} url The URL to check\n\t\t * @return {Promise<boolean>} True if the file exists, false otherwise\n\t\t */\n\t\t async fileExists(url) {\n\t\t\ttry {\n\t\t\t\tawait axios.head(url, { validateStatus: status => status === 200 || status === 404 })\n\t\t\t\tconst response = await axios.head(url)\n\t\t\t\treturn response.status === 200\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * User saved the image\n\t\t *\n\t\t * @see https://github.com/scaleflex/filerobot-image-editor#onsave\n\t\t * @param {object} props destructuring object\n\t\t * @param {string} props.fullName the file name\n\t\t * @param {HTMLCanvasElement} props.imageCanvas the image canvas\n\t\t * @param {string} props.mimeType the image mime type\n\t\t * @param {number} props.quality the image saving quality\n\t\t */\n\t\tasync onSave({ fullName, imageCanvas, mimeType, quality }) {\n\t\t\tconst { origin, pathname } = new URL(this.src)\n\t\t\tconst putUrl = origin + join(dirname(pathname), fullName)\n\t\t\tlogger.debug('Saving image...', { putUrl, src: this.src, fullName })\n\n\t\t\tconst fileExists = await this.fileExists(putUrl)\n\t\t\tlogger.debug('File exists', { fileExists })\n\t\t\tif (fileExists) {\n\t\t\t\tlogger.debug('File exists, showing confirmation dialog')\n\t\t\t\ttry {\n\t\t\t\t\tconst isOriginal = fullName === basename(this.src)\n\t\t\t\t\tconst message = isOriginal\n\t\t\t\t\t\t? t('viewer', 'You are about to overwrite the original file. Are you sure you want to continue?')\n\t\t\t\t\t\t: t('viewer', 'A file with this name already exists. Do you want to overwrite it?')\n\n\t\t\t\t\tconst confirmed = await showConfirmation({\n\t\t\t\t\t\tname: t('viewer', 'Confirm overwrite'),\n\t\t\t\t\t\ttext: message,\n\t\t\t\t\t\tlabelConfirm: t('viewer', 'Overwrite'),\n\t\t\t\t\t\tlabelReject: t('viewer', 'Cancel'),\n\t\t\t\t\t})\n\n\t\t\t\t\tif (!confirmed) {\n\t\t\t\t\t\tlogger.debug('User cancelled overwrite')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Error showing confirmation dialog', { error })\n\t\t\t\t\tshowError(t('viewer', 'An error occurred while trying to confirm the file overwrite.'))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// toBlob is not very smart...\n\t\t\tmimeType = mimeType.replace('jpg', 'jpeg')\n\n\t\t\t// Sanity check, 0 < quality < 1\n\t\t\tquality = Math.max(Math.min(quality, 1), 0) || 1\n\n\t\t\ttry {\n\t\t\t\tconst blob = await new Promise(resolve => imageCanvas.toBlob(resolve, mimeType, quality))\n\t\t\t\tconst response = await axios.put(putUrl, new File([blob], fullName))\n\t\t\t\tlogger.info('Edited image saved!', { response })\n\t\t\t\tshowSuccess(t('viewer', 'Image saved'))\n\t\t\t\tif (putUrl !== this.src) {\n\t\t\t\t\tconst fileId = parseInt(response?.headers?.['oc-fileid']?.split('oc')[0]) || null\n\t\t\t\t\temit('editor:file:created', putUrl)\n\t\t\t\t\tif (fileId) {\n\t\t\t\t\t\tconst newParams = window.OCP.Files.Router.params\n\t\t\t\t\t\tnewParams.fileId = fileId\n\t\t\t\t\t\twindow.OCP.Files.Router.goToRoute(null, newParams, window.OCP.Files.Router.query)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('updated')\n\t\t\t\t\tconst updatedFile = await rawStat(origin, decodeURI(pathname))\n\n\t\t\t\t\tconst node = new Node({\n\t\t\t\t\t\tid: Number.parseInt(this.fileid),\n\t\t\t\t\t\tsource: this.src,\n\t\t\t\t\t\tmtime: new Date(updatedFile.lastmod),\n\t\t\t\t\t\t...updatedFile,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...updatedFile,\n\t\t\t\t\t\t\t...updatedFile.props,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\temit('files:node:updated', node)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Error saving image', { error })\n\t\t\t\tshowError(t('viewer', 'Error saving image'))\n\t\t\t}\n\t\t},\n\n\t\t// Key Handlers, override default Viewer arrow and escape key\n\t\thandleKeydown(event) {\n\t\t\t// Enter needs to be reached through as otherwise saving text does not work\n\t\t\tif (event.key !== 'Enter') {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t}\n\t\t\t// escape key\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\t// Since we cannot call the closeMethod and know if there\n\t\t\t\t// are unsaved changes, let's fake a close button trigger.\n\t\t\t\tevent.preventDefault()\n\t\t\t\tdocument.querySelector('.FIE_topbar-close-button').click()\n\t\t\t}\n\n\t\t\t// ctrl + S = save\n\t\t\tif (event.ctrlKey && event.key === 's') {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tdocument.querySelector('.FIE_topbar-save-button').click()\n\t\t\t}\n\n\t\t\t// ctrl + Z = undo\n\t\t\tif (event.ctrlKey && event.key === 'z') {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tdocument.querySelector('.FIE_topbar-undo-button').click()\n\t\t\t}\n\t\t},\n\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Take full screen size ()\n.viewer__image-editor {\n\tposition: absolute;\n\tz-index: 10100;\n\ttop: calc(var(--header-height) * -1);\n\tbottom: calc(var(--header-height) * -1);\n\tleft: 0;\n\twidth: 100%;\n\theight: 100dvh;\n}\n</style>\n\n<style lang=\"scss\">\n// Make sure the editor and its modals are above everything\n.SfxModal-Wrapper {\n\tz-index: 10102 !important;\n}\n\n#SfxPopper {\n\tz-index: 10102;\n\tposition: relative;\n}\n\n// Default styling\n.viewer__image-editor,\n.SfxModal-Wrapper,\n.SfxPopper-wrapper {\n\t* {\n\t\t// Fix font size for the entire image editor\n\t\tfont-size: var(--default-font-size) !important;\n\t}\n\n\tlabel,\n\tbutton {\n\t\tcolor: var(--color-main-text);\n\t\tline-height: var(--default-line-height, 1.5) !important;\n\t\t> span {\n\t\t\tfont-size: var(--default-font-size) !important;\n\t\t}\n\t}\n\n\t// Fix button ratio and center content\n\tbutton {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tmin-width: var(--default-clickable-area);\n\t\tmin-height: var(--default-clickable-area);\n\t\tpadding: 6px 12px;\n\t}\n}\n\n// Input styling\n.SfxInput-root {\n\theight: auto !important;\n\tpadding: 0 !important;\n\t.SfxInput-Base {\n\t\tmargin: 0 !important;\n\t}\n}\n\n// Select styling\n.SfxSelect-root {\n\tpadding: 8px !important;\n}\n\n// Global buttons\n.SfxButton-root {\n\tmin-height: var(--default-clickable-area) !important;\n\tmargin: 0 !important;\n\tborder: transparent !important;\n\t&[color='error'] {\n\t\tcolor: white !important;\n\t\tbackground-color: var(--color-error) !important;\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder-color: white !important;\n\t\t\tbackground-color: var(--color-error-hover) !important;\n\t\t}\n\t}\n\t&[color='primary'] {\n\t\tcolor: var(--color-primary-element-text) !important;\n\t\tbackground-color: var(--color-primary-element) !important;\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-primary-element-hover) !important;\n\t\t}\n\t}\n}\n\n// Menu items\n.SfxMenuItem-root {\n\theight: var(--default-clickable-area);\n\tpadding-inline-start: 8px !important;\n\t// Center the menu entry icon and fix width\n\t> div {\n\t\tmargin-inline-end: 0;\n\t\tpadding: 14px;\n\t\t// Minus the parent padding-left\n\t\tpadding: calc(14px - 8px);\n\t\tcursor: pointer;\n\t}\n\n\t// Disable jpeg saving (jpg is already here)\n\t&[value='jpeg'] {\n\t\tdisplay: none;\n\t}\n}\n\n// Modal\n.SfxModal-Container {\n\tmin-height: 300px;\n\tpadding: 22px;\n\n\t// Fill height\n\t.SfxModal-root,\n\t.SfxModalTitle-root {\n\t\tflex: 1 1 100%;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.SfxModalTitle-Icon {\n\t\tmargin-bottom: 22px !important;\n\t\tbackground: none !important;\n\t\t// Fit EmptyContent styling\n\t\tsvg {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\t\t\topacity: .4;\n\t\t\t// Override all coloured icons\n\n\t\t\t--color-primary: var(--color-main-text);\n\t\t\t--color-error: var(--color-main-text);\n\t\t}\n\t}\n\t// Hide close icon (use cancel button)\n\t.SfxModalTitle-Close {\n\t\tdisplay: none !important;\n\t}\n\t// Modal actions buttons display\n\t.SfxModalActions-root {\n\t\tjustify-content: space-evenly !important;\n\t}\n}\n\n// Header buttons\n.FIE_topbar-center-options > button,\n.FIE_topbar-center-options > label {\n\tmargin-inline-start: 6px !important;\n}\n\n.FIE_tabs_toggle_btn{\n\tdisplay: none !important;\n}\n\n// Tabs\n.FIE_tabs {\n\tpadding: 6px !important;\n\toverflow: hidden;\n\toverflow-y: auto;\n}\n\n.FIE_tab {\n\twidth: 80px !important;\n\theight: 80px !important;\n\tpadding: 8px;\n\tborder-radius: var(--border-radius-large) !important;\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n\t&-label {\n\t\tmargin-top: 8px !important;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tmax-width: 100%;\n\t\twhite-space: nowrap;\n\t\tdisplay: block !important;\n\t}\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover) !important;\n\t}\n\n\t&[aria-selected=true] {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t\tbox-shadow: 0 0 0 2px var(--color-primary-element);\n\t}\n}\n\n// Tools bar\n.FIE_tools-bar {\n\t&-wrapper {\n\t\tmax-height: max-content !important;\n\t}\n\n\t// Matching buttons tools\n\t& > div[class$='-tool-button'],\n\t& > div[class$='-tool'] {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tmin-width: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\tpadding: 6px 16px;\n\t\tborder-radius: var(--border-radius-pill);\n\t}\n}\n\n// Crop preset select button\n.FIE_crop-presets-opener-button {\n\t// override default button width\n\tmin-width: 0 !important;\n\tpadding: 5px !important;\n\tpadding-inline-start: 10px !important;\n\tborder: none !important;\n\tbackground-color: transparent !important;\n}\n\n// Force icon-only style\n.FIE_topbar-history-buttons button,\n.FIE_topbar-close-button,\n.FIE_resize-ratio-locker {\n\tborder: none !important;\n\tbackground-color: transparent !important;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover) !important;\n\t}\n\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n}\n\n// Left top bar buttons\n.FIE_topbar-history-buttons button {\n\t&.FIE_topbar-reset-button {\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t\tfont-weight: normal;\n\t\t}\n\t\tsvg {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n// Save button fixes\n.FIE_topbar-save-wrapper {\n\twidth: auto !important;\n}\n\n.FIE_topbar-save-button {\n\tcolor: var(--color-primary-text) !important;\n\tborder: none !important;\n\tbackground-color: var(--color-primary-element) !important;\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-primary-element-hover) !important;\n\t}\n}\n\n// Save Modal fixes\n.FIE_resize-tool-options {\n\t.FIE_resize-width-option,\n\t.FIE_resize-height-option {\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t}\n}\n\n// Resize lock\n.FIE_resize-ratio-locker {\n\tmargin-inline-end: 8px !important;\n\t// Icon is very thin\n\tsvg {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tpath {\n\t\t\tstroke-width: 1;\n\t\t\tstroke: var(--color-main-text);\n\t\t\tfill: var(--color-main-text);\n\t\t}\n\t}\n}\n\n// Canvas container\n.FIE_canvas-container {\n\tbackground-color: var(--color-main-background) !important;\n}\n\n// Loader\n.FIE_spinner::after,\n.FIE_spinner-label {\n\tdisplay: none !important;\n}\n\n.FIE_spinner-wrapper {\n\tbackground-color: transparent !important;\n}\n\n.FIE_spinner::before {\n\tposition: absolute;\n\tz-index: 2;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 28px;\n\theight: 28px;\n\tmargin: -16px 0 0 -16px;\n\tcontent: '';\n\t-webkit-transform-origin: center;\n\t-ms-transform-origin: center;\n\ttransform-origin: center;\n\t-webkit-animation: rotate .8s infinite linear;\n\tanimation: rotate .8s infinite linear;\n\tborder: 2px solid var(--color-loading-light);\n\tborder-top-color: var(--color-loading-dark);\n\tborder-radius: 100%;\n\n\tfilter: var(--background-invert-if-dark);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { BasicFileInfo } from './models'\n\nconst livePictureExt = ['jpg', 'jpeg', 'png']\nconst livePictureExtRegex = new RegExp(`\\\\.(${livePictureExt.join('|')})$`, 'i')\n\n/**\n * Return the peer live photo from a list of files based on its fileId\n * @param peerFileId\n * @param fileList\n */\nexport function findLivePhotoPeerFromFileId(peerFileId: number, fileList: BasicFileInfo[]): BasicFileInfo | undefined {\n\treturn fileList.find(file => file.fileid === peerFileId)\n}\n\n/**\n * Return the peer live photo from a list of files based on the original file name.\n * @param referenceFile\n * @param fileList\n */\nexport function findLivePhotoPeerFromName(referenceFile: BasicFileInfo, fileList: BasicFileInfo[]): BasicFileInfo | undefined {\n\treturn fileList.find(comparedFile => {\n\t\t// if same filename and extension is allowed\n\t\treturn comparedFile.filename !== referenceFile.filename\n\t\t\t\t&& (comparedFile.basename.startsWith(referenceFile.name) && livePictureExtRegex.test(comparedFile.basename))\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ResponseDataDetailed } from 'webdav'\n\nimport { getClient, getRootPath } from '@nextcloud/files/dav'\n\n/**\n * Manually load a WebDAV media from its filename, then expose the received Blob as an object URL.\n * This is needed for E2EE files that will error when loading them directly from the HTML element's src attribute.\n * Can be removed if we ever move the E2EE proxy to a service worker.\n *\n * @param filename - The file's path\n */\nexport async function preloadMedia(filename: string): Promise<string> {\n\tconst client = getClient()\n\tconst response = await client.getFileContents(`${getRootPath()}${filename}`, { details: true }) as ResponseDataDetailed<ArrayBuffer>\n\treturn URL.createObjectURL(new Blob([response.data], { type: response.headers['content-type'] }))\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"image_container\">\n\t\t<ImageEditor v-if=\"editing\"\n\t\t\t:mime=\"mime\"\n\t\t\t:src=\"src\"\n\t\t\t:fileid=\"fileid\"\n\t\t\t@close=\"onClose\" />\n\n\t\t<template v-else-if=\"data !== null\">\n\t\t\t<img v-if=\"!livePhotoCanBePlayed\"\n\t\t\t\tref=\"image\"\n\t\t\t\t:alt=\"alt\"\n\t\t\t\t:class=\"{\n\t\t\t\t\tdragging,\n\t\t\t\t\tloaded,\n\t\t\t\t\tzoomed: zoomRatio > 1\n\t\t\t\t}\"\n\t\t\t\t:src=\"data\"\n\t\t\t\t:style=\"imgStyle\"\n\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t@load=\"updateImgSize\"\n\t\t\t\t@wheel.stop.prevent=\"updateZoom\"\n\t\t\t\t@dblclick.prevent=\"onDblclick\"\n\t\t\t\t@pointerdown.prevent=\"pointerDown\"\n\t\t\t\t@pointerup.prevent=\"pointerUp\"\n\t\t\t\t@pointermove.prevent=\"pointerMove\">\n\n\t\t\t<template v-if=\"livePhoto\">\n\t\t\t\t<video v-show=\"livePhotoCanBePlayed\"\n\t\t\t\t\tref=\"video\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\tdragging,\n\t\t\t\t\t\tloaded,\n\t\t\t\t\t\tzoomed: zoomRatio > 1\n\t\t\t\t\t}\"\n\t\t\t\t\t:style=\"imgStyle\"\n\t\t\t\t\t:playsinline=\"true\"\n\t\t\t\t\t:poster=\"data\"\n\t\t\t\t\t:src=\"livePhotoSrc\"\n\t\t\t\t\tpreload=\"metadata\"\n\t\t\t\t\t@canplaythrough=\"doneLoadingLivePhoto\"\n\t\t\t\t\t@loadedmetadata=\"updateImgSize\"\n\t\t\t\t\t@wheel.stop.prevent=\"updateZoom\"\n\t\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t\t@dblclick.prevent=\"onDblclick\"\n\t\t\t\t\t@pointerdown.prevent=\"pointerDown\"\n\t\t\t\t\t@pointerup.prevent=\"pointerUp\"\n\t\t\t\t\t@pointermove.prevent=\"pointerMove\"\n\t\t\t\t\t@ended=\"stopLivePhoto\" />\n\t\t\t\t<button v-if=\"width !== 0\"\n\t\t\t\t\tclass=\"live-photo_play_button\"\n\t\t\t\t\t:style=\"{left: `calc(50% - ${width/2}px)`}\"\n\t\t\t\t\t:disabled=\"!livePhotoCanBePlayed\"\n\t\t\t\t\t:aria-description=\"t('viewer', 'Play the live photo')\"\n\t\t\t\t\t@click=\"playLivePhoto\"\n\t\t\t\t\t@pointerenter=\"playLivePhoto\"\n\t\t\t\t\t@focus=\"playLivePhoto\"\n\t\t\t\t\t@pointerleave=\"stopLivePhoto\"\n\t\t\t\t\t@blur=\"stopLivePhoto\">\n\t\t\t\t\t<PlayCircleOutline v-if=\"livePhotoCanBePlayed\" />\n\t\t\t\t\t<NcLoadingIcon v-else />\n\t\t\t\t\t<!-- TRANSLATORS Label of the button used at the top left corner of live photos to play them -->\n\t\t\t\t\t{{ t('viewer', 'LIVE') }}\n\t\t\t\t</button>\n\t\t\t</template>\n\t\t</template>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport AsyncComputed from 'vue-async-computed'\nimport PlayCircleOutline from 'vue-material-design-icons/PlayCircleOutline.vue'\nimport DOMPurify from 'dompurify'\n\nimport axios from '@nextcloud/axios'\nimport { basename } from '@nextcloud/paths'\nimport { translate } from '@nextcloud/l10n'\nimport { NcLoadingIcon } from '@nextcloud/vue'\n\nimport ImageEditor from './ImageEditor.vue'\nimport { findLivePhotoPeerFromFileId } from '../utils/livePhotoUtils'\nimport { getDavPath } from '../utils/fileUtils'\nimport { preloadMedia } from '../services/mediaPreloader'\n\nVue.use(AsyncComputed)\n\nexport default {\n\tname: 'Images',\n\n\tcomponents: {\n\t\tImageEditor,\n\t\tPlayCircleOutline,\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\tediting: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdragging: false,\n\t\t\tshiftX: 0,\n\t\t\tshiftY: 0,\n\t\t\tzoomRatio: 1,\n\t\t\tfallback: false,\n\t\t\tlivePhotoCanBePlayed: false,\n\t\t\tzooming: false,\n\t\t\tpinchDistance: 0,\n\t\t\tpinchStartZoomRatio: 1,\n\t\t\tpointerCache: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tsrc() {\n\t\t\treturn this.source ?? this.davPath\n\t\t},\n\t\tzoomHeight() {\n\t\t\treturn Math.round(this.height * this.zoomRatio)\n\t\t},\n\t\tzoomWidth() {\n\t\t\treturn Math.round(this.width * this.zoomRatio)\n\t\t},\n\t\talt() {\n\t\t\treturn this.basename\n\t\t},\n\t\timgStyle() {\n\t\t\tif (this.zoomRatio === 1) {\n\t\t\t\treturn {\n\t\t\t\t\theight: this.zoomHeight + 'px',\n\t\t\t\t\twidth: this.zoomWidth + 'px',\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmarginTop: Math.round(this.shiftY * 2) + 'px',\n\t\t\t\tmarginLeft: Math.round(this.shiftX * 2) + 'px',\n\t\t\t\theight: this.zoomHeight + 'px',\n\t\t\t\twidth: this.zoomWidth + 'px',\n\t\t\t}\n\t\t},\n\t\tlivePhoto() {\n\t\t\tif (this.metadataFilesLivePhoto === undefined) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn findLivePhotoPeerFromFileId(this.metadataFilesLivePhoto, this.fileList)\n\t\t},\n\t\tlivePhotoSrc() {\n\t\t\treturn this.livePhoto?.source ?? this.livePhotoDavPath\n\t\t},\n\t\t/** @return {string|null} */\n\t\tlivePhotoDavPath() {\n\t\t\treturn this.livePhoto\n\t\t\t\t? getDavPath({\n\t\t\t\t\tfilename: this.livePhoto.filename,\n\t\t\t\t\tbasename: this.livePhoto.basename,\n\t\t\t\t})\n\t\t\t\t: null\n\t\t},\n\t},\n\n\tasyncComputed: {\n\t\tdata() {\n\t\t\t// Avoid svg xss attack vector\n\t\t\tif (this.mime === 'image/svg+xml') {\n\t\t\t\treturn this.getBase64FromImage()\n\t\t\t}\n\n\t\t\t// Load the raw gif instead of the static preview\n\t\t\tif (this.mime === 'image/gif') {\n\t\t\t\treturn this.src\n\t\t\t}\n\n\t\t\t// If there is no preview and we have a direct source\n\t\t\t// load it instead\n\t\t\tif (this.source && !this.hasPreview && !this.previewUrl) {\n\t\t\t\t// If loading the source failed once, let's try fetching it by had\n\t\t\t\tif (this.fallback) {\n\t\t\t\t\treturn preloadMedia(this.filename)\n\t\t\t\t} else {\n\t\t\t\t\treturn this.source\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If loading the preview failed once, let's load the original file\n\t\t\tif (this.fallback) {\n\t\t\t\treturn this.src\n\t\t\t}\n\n\t\t\treturn this.previewPath\n\t\t},\n\t},\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\tthis.resetZoom()\n\t\t\t\t// end the dragging if your pointer (mouse or touch) go out of the content\n\t\t\t\t// Not sure why ???\n\t\t\t\twindow.addEventListener('pointerout', this.pointerUp)\n\t\t\t// the item is not displayed\n\t\t\t} else if (val === false) {\n\t\t\t\t// Not sure why ???\n\t\t\t\twindow.removeEventListener('pointerout', this.pointerUp)\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t// Updates the dimensions of the modal\n\t\tupdateImgSize() {\n\t\t\tif (this.$refs.image) {\n\t\t\t\tthis.naturalHeight = this.$refs.image.naturalHeight\n\t\t\t\tthis.naturalWidth = this.$refs.image.naturalWidth\n\t\t\t} else if (this.$refs.video) {\n\t\t\t\tthis.naturalHeight = this.$refs.video.videoHeight\n\t\t\t\tthis.naturalWidth = this.$refs.video.videoWidth\n\t\t\t}\n\n\t\t\tthis.updateHeightWidth()\n\t\t\tthis.doneLoading()\n\t\t},\n\n\t\t/**\n\t\t * Manually retrieve the path and return its base64\n\t\t *\n\t\t * @return {Promise<string>}\n\t\t */\n\t\tasync getBase64FromImage() {\n\t\t\tconst file = await axios.get(this.src)\n\t\t\tconst sanitized = DOMPurify.sanitize(file.data)\n\t\t\treturn `data:${this.mime};base64,${btoa(unescape(encodeURIComponent(sanitized)))}`\n\t\t},\n\n\t\t// Helper methods for zoom/pan operations\n\t\tupdateShift(newShiftX, newShiftY, newZoomRatio) {\n\t\t\tconst maxShiftX = this.width * newZoomRatio - this.width\n\t\t\tconst maxShiftY = this.height * newZoomRatio - this.height\n\t\t\tthis.shiftX = Math.min(Math.max(newShiftX, -maxShiftX / 2), maxShiftX / 2)\n\t\t\tthis.shiftY = Math.min(Math.max(newShiftY, -maxShiftY / 2), maxShiftY / 2)\n\t\t},\n\n\t\t// Change zoom ratio of the image to newZoomRatio.\n\t\t// Try to make sure that image position at stableX, stableY\n\t\t// in client coordinates stays in the same place on the screen.\n\t\tupdateZoomAndShift(stableX, stableY, newZoomRatio) {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// scrolling position relative to the image\n\t\t\tconst element = this.$refs.image ?? this.$refs.video\n\t\t\tconst scrollX = stableX - element.getBoundingClientRect().x - (this.width * this.zoomRatio / 2)\n\t\t\tconst scrollY = stableY - element.getBoundingClientRect().y - (this.height * this.zoomRatio / 2)\n\t\t\tconst scrollPercX = scrollX / (this.width * this.zoomRatio)\n\t\t\tconst scrollPercY = scrollY / (this.height * this.zoomRatio)\n\n\t\t\t// calc how much the img grow from its current size\n\t\t\t// and adjust the margin accordingly\n\t\t\tconst growX = this.width * newZoomRatio - this.width * this.zoomRatio\n\t\t\tconst growY = this.height * newZoomRatio - this.height * this.zoomRatio\n\n\t\t\t// compensate for existing margins\n\t\t\tconst newShiftX = this.shiftX - scrollPercX * growX\n\t\t\tconst newShiftY = this.shiftY - scrollPercY * growY\n\t\t\tthis.updateShift(newShiftX, newShiftY, newZoomRatio)\n\t\t\tthis.zoomRatio = newZoomRatio\n\t\t},\n\n\t\tdistanceBetweenTouches() {\n\t\t\tconst t0 = this.pointerCache[0]\n\t\t\tconst t1 = this.pointerCache[1]\n\t\t\tconst diffX = (t1.x - t0.x)\n\t\t\tconst diffY = (t1.y - t0.y)\n\t\t\treturn Math.sqrt(diffX * diffX + diffY * diffY)\n\t\t},\n\n\t\t/**\n\t\t * Handle zooming\n\t\t *\n\t\t * @param {WheelEvent} event the scroll event\n\t\t * @return {void}\n\t\t */\n\t\tupdateZoom(event) {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst isZoomIn = event.deltaY < 0\n\t\t\tconst newZoomRatio = isZoomIn\n\t\t\t\t? Math.min(this.zoomRatio * 1.1, 5) // prevent too big zoom\n\t\t\t\t: Math.max(this.zoomRatio / 1.1, 1) // prevent too small zoom\n\n\t\t\t// do not continue, img is back to its original state\n\t\t\tif (newZoomRatio === 1) {\n\t\t\t\treturn this.resetZoom()\n\t\t\t}\n\n\t\t\tthis.disableSwipe()\n\t\t\tthis.updateZoomAndShift(event.clientX, event.clientY, newZoomRatio)\n\t\t},\n\n\t\tresetZoom() {\n\t\t\tthis.enableSwipe()\n\t\t\tthis.zoomRatio = 1\n\t\t\tthis.shiftX = 0\n\t\t\tthis.shiftY = 0\n\t\t},\n\n\t\t// Pinch-zoom implementation based on:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events/Pinch_zoom_gestures\n\n\t\t/**\n\t\t * Dragging and (pinch) zooming handlers\n\t\t *\n\t\t * @param {DragEvent} event the event\n\t\t */\n\t\tpointerDown(event) {\n\t\t\t// New pointer - mouse down or additional touch --> store client coordinates in the pointer cache\n\t\t\tthis.pointerCache.push({ pointerId: event.pointerId, x: event.clientX, y: event.clientY })\n\n\t\t\t// Single touch or mouse down --> start dragging\n\t\t\tif (this.pointerCache.length === 1) {\n\t\t\t\tthis.dragX = event.clientX\n\t\t\t\tthis.dragY = event.clientY\n\t\t\t\tthis.dragging = true\n\t\t\t}\n\n\t\t\t// Two touches --> start (pinch) zooming\n\t\t\tif (this.pointerCache.length === 2) {\n\t\t\t\t// Calculate base (reference) distance between touches\n\t\t\t\tthis.pinchDistance = this.distanceBetweenTouches()\n\t\t\t\tthis.pinchStartZoomRatio = this.zoomRatio\n\t\t\t\tthis.zooming = true\n\t\t\t\tthis.disableSwipe()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * @param {DragEvent} event the event\n\t\t */\n\t\t pointerUp(event) {\n\t\t\t// Remove pointer from the pointer cache\n\t\t\tconst index = this.pointerCache.findIndex(\n\t\t\t\t(cachedEv) => cachedEv.pointerId === event.pointerId,\n\t\t\t)\n\t\t\tthis.pointerCache.splice(index, 1)\n\t\t\tthis.dragging = false\n\t\t\tthis.zooming = false\n\t\t},\n\t\t/**\n\t\t * @param {DragEvent} event the event\n\t\t */\n\t\t pointerMove(event) {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.pointerCache.length > 0) {\n\t\t\t\t// Update pointer position in the pointer cache\n\t\t\t\tconst index = this.pointerCache.findIndex(\n\t\t\t\t\t(cachedEv) => cachedEv.pointerId === event.pointerId,\n\t\t\t\t)\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tthis.pointerCache[index].x = event.clientX\n\t\t\t\t\tthis.pointerCache[index].y = event.clientY\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Single touch or mouse down --> dragging\n\t\t\tif (this.pointerCache.length === 1 && this.dragging && !this.zooming && this.zoomRatio > 1) {\n\t\t\t\tconst { clientX, clientY } = event\n\t\t\t\tconst newShiftX = this.shiftX + (clientX - this.dragX)\n\t\t\t\tconst newShiftY = this.shiftY + (clientY - this.dragY)\n\n\t\t\t\tthis.updateShift(newShiftX, newShiftY, this.zoomRatio)\n\n\t\t\t\tthis.dragX = clientX\n\t\t\t\tthis.dragY = clientY\n\t\t\t}\n\n\t\t\t// Two touches --> (pinch) zooming\n\t\t\tif (this.pointerCache.length === 2 && this.zooming) {\n\t\t\t\t// Calculate current distance between touches\n\t\t\t\tconst newDistance = this.distanceBetweenTouches()\n\n\t\t\t\t// Calculate new zoom ratio - keep it between 1 and 5\n\t\t\t\tconst newZoomRatio = Math.min(Math.max(this.pinchStartZoomRatio * (newDistance / this.pinchDistance), 1), 5)\n\n\t\t\t\t// Calculate \"stable\" point - in the middle between touches\n\t\t\t\tconst t0 = this.pointerCache[0]\n\t\t\t\tconst t1 = this.pointerCache[1]\n\t\t\t\tconst stableX = (t0.x + t1.x) / 2\n\t\t\t\tconst stableY = (t0.y + t1.y) / 2\n\n\t\t\t\tthis.updateZoomAndShift(stableX, stableY, newZoomRatio)\n\t\t\t}\n\n\t\t},\n\t\tonDblclick() {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.zoomRatio > 1) {\n\t\t\t\tthis.resetZoom()\n\t\t\t} else {\n\t\t\t\tthis.zoomRatio = 1.3\n\t\t\t}\n\t\t},\n\n\t\tonClose() {\n\t\t\tthis.$emit('update:editing', false)\n\t\t},\n\n\t\t// Fallback to the original image if not already done\n\t\tonFail() {\n\t\t\tif (!this.fallback) {\n\t\t\t\tconsole.error(`Loading of file preview ${basename(this.src)} failed, falling back to original file`)\n\t\t\t\tthis.fallback = true\n\t\t\t}\n\t\t},\n\t\tdoneLoadingLivePhoto() {\n\t\t\tthis.livePhotoCanBePlayed = true\n\t\t\tthis.doneLoading()\n\t\t},\n\t\tplayLivePhoto() {\n\t\t\tif (!this.livePhotoCanBePlayed) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t/** @type {HTMLVideoElement} */\n\t\t\tconst video = this.$refs.video\n\t\t\tvideo.play()\n\t\t},\n\t\tstopLivePhoto() {\n\t\t\t/** @type {HTMLVideoElement} */\n\t\t\tconst video = this.$refs.video\n\t\t\tvideo.load()\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n$checkered-size: 8px;\n$checkered-color: #efefef;\n\n.image_container {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 100%;\n\tjustify-content: center;\n}\n\nimg, video {\n\talign-self: center;\n\tjustify-self: center;\n\t// black while loading\n\tbackground-color: #000;\n\t// disable animations during zooming/resize\n\ttransition: none !important;\n\ttouch-action: none;\n\t// show checkered bg on hover if not currently zooming (but ok if zoomed)\n\t&:hover {\n\t\tbackground-image: linear-gradient(45deg, #{$checkered-color} 25%, transparent 25%),\n\t\t\tlinear-gradient(45deg, transparent 75%, #{$checkered-color} 75%),\n\t\t\tlinear-gradient(45deg, transparent 75%, #{$checkered-color} 75%),\n\t\t\tlinear-gradient(45deg, #{$checkered-color} 25%, #fff 25%);\n\t\tbackground-size: #{2 * $checkered-size} #{2 * $checkered-size};\n\t\tbackground-position: 0 0, 0 0, -#{$checkered-size} -#{$checkered-size}, $checkered-size $checkered-size;\n\t}\n\t&.loaded {\n\t\t// white once done loading\n\t\tbackground-color: #fff;\n\t}\n\t&.zoomed {\n\t\tz-index: 10010;\n\t\tcursor: move;\n\t}\n\n\t&.dragging {\n\t\ttransition: none !important;\n\t\tcursor: move;\n\t}\n}\n\n.live-photo_play_button {\n\tposition: absolute;\n\ttop: 0;\n\t// left: is set dynamically on the element itself\n\tmargin: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n\tborder: none;\n\tgap: 4px;\n\tborder-radius: var(--border-radius);\n\tpadding: 4px 8px;\n\tbackground-color: var(--color-main-background-blur);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../services/logger.js'\nimport Images from '../components/Images.vue'\n\nconst enabledPreviewProviders = loadState(appName, 'enabled_preview_providers', [])\n\n/**\n * Those mimes needs a proper preview to be displayed\n * if they are not enabled on the server, let's not activate them.\n */\nconst previewSupportedMimes = [\n\t'image/heic',\n\t'image/heif',\n\t'image/tiff',\n\t'image/x-xbitmap',\n\t'image/emf',\n]\n\n/**\n * Those mimes are always supported by the browser\n * Since we fallback to the source image if there is no\n * preview, we can always include them.\n */\nconst browserSupportedMimes = [\n\t'image/apng',\n\t'image/bmp',\n\t'image/gif',\n\t'image/jpeg',\n\t'image/png',\n\t'image/svg+xml',\n\t'image/webp',\n\t'image/x-icon',\n]\n\n// Filter out supported mimes that are _not_\n// enabled in the preview API\nconst filterEnabledMimes = () => {\n\treturn previewSupportedMimes.filter(filter => {\n\t\treturn enabledPreviewProviders.findIndex(mimeRegex => {\n\t\t\t// Remove leading and trailing slash from string regex\n\t\t\tconst regex = new RegExp(mimeRegex.replace(/^\\/|\\/$/g, ''), 'i')\n\t\t\treturn filter.match(regex)\n\t\t}) > -1\n\t})\n}\n\nconst enabledMimes = filterEnabledMimes()\nconst ignoredMimes = previewSupportedMimes.filter(x => !enabledMimes.includes(x))\nif (ignoredMimes.length > 0) {\n\tlogger.warn('Some mimes were ignored because they are not enabled in the server previews config', { ignoredMimes })\n}\n\nexport default {\n\tid: 'images',\n\tgroup: 'media',\n\tmimes: [\n\t\t...browserSupportedMimes,\n\t\t...enabledMimes,\n\t],\n\tcomponent: Images,\n}\n","/**\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCanonicalLocale, translate as t } from '@nextcloud/l10n'\n\n/**\n * Plyr `i18n` option so the player controls and menus\n * (e.g. the settings/speed dropdown) are translated.\n *\n * Plyr ships English defaults only; passing this map makes it use the\n * Nextcloud translations instead.\n */\nexport const plyrTranslations: Record<string, string> = {\n\trestart: t('viewer', 'Restart'),\n\trewind: t('viewer', 'Rewind {seektime}s'),\n\tplay: t('viewer', 'Play'),\n\tpause: t('viewer', 'Pause'),\n\tfastForward: t('viewer', 'Forward {seektime}s'),\n\tseek: t('viewer', 'Seek'),\n\tseekLabel: t('viewer', '{currentTime} of {duration}'),\n\tplayed: t('viewer', 'Played'),\n\tbuffered: t('viewer', 'Buffered'),\n\tcurrentTime: t('viewer', 'Current time'),\n\tduration: t('viewer', 'Duration'),\n\tvolume: t('viewer', 'Volume'),\n\tmute: t('viewer', 'Mute'),\n\tunmute: t('viewer', 'Unmute'),\n\tenableCaptions: t('viewer', 'Enable captions'),\n\tdisableCaptions: t('viewer', 'Disable captions'),\n\tdownload: t('viewer', 'Download'),\n\tenterFullscreen: t('viewer', 'Enter fullscreen'),\n\texitFullscreen: t('viewer', 'Exit fullscreen'),\n\tframeTitle: t('viewer', 'Player for {title}'),\n\tcaptions: t('viewer', 'Captions'),\n\tsettings: t('viewer', 'Settings'),\n\tpip: t('viewer', 'PIP'),\n\tmenuBack: t('viewer', 'Go back to previous menu'),\n\tspeed: t('viewer', 'Speed'),\n\tnormal: t('viewer', 'Normal'),\n\tquality: t('viewer', 'Quality'),\n\tloop: t('viewer', 'Loop'),\n\tstart: t('viewer', 'Start'),\n\tend: t('viewer', 'End'),\n\tall: t('viewer', 'All'),\n\treset: t('viewer', 'Reset'),\n\tdisabled: t('viewer', 'Disabled'),\n\tenabled: t('viewer', 'Enabled'),\n\tadvertisement: t('viewer', 'Ad'),\n}\n\n/**\n * Plyr renders speed values via a plain template literal (`` `${speed}×` ``),\n * which always uses a `.` decimal separator regardless of locale — so German\n * shows `1.5×` instead of `1,5×`. Plyr exposes no hook for this, so we\n * re-format the rendered labels using the user's locale.\n *\n * The speed panel's id always ends in `-speed`. Each entry is a\n * `button[role=\"menuitemradio\"]` carrying the numeric speed in its `value`\n * attribute (the source of truth). The home-pane `.plyr__menu__value` badge\n * shows the current speed as a bare `<number>×` string, which we match by\n * pattern so we never touch the quality/captions badges.\n *\n * @param root the Plyr root element to localize labels within\n */\nexport function localizeSpeedLabels(root: ParentNode): void {\n\tconst formatter = new Intl.NumberFormat(getCanonicalLocale())\n\tconst speedLabel = (value: number): string =>\n\t\tvalue === 1 ? t('viewer', 'Normal') : `${formatter.format(value)}×`\n\n\t// Speed submenu radio items, scoped to the speed panel so we don't touch\n\t// quality (e.g. \"1080\") or captions entries.\n\tconst items = root.querySelectorAll<HTMLButtonElement>(\n\t\t'.plyr__menu__container [id$=\"-speed\"] [role=\"menuitemradio\"]',\n\t)\n\titems.forEach((item) => {\n\t\tconst value = Number.parseFloat(item.value)\n\t\tif (Number.isNaN(value)) {\n\t\t\treturn\n\t\t}\n\t\tconst label = item.querySelector('span')\n\t\tif (label) {\n\t\t\tlabel.textContent = speedLabel(value)\n\t\t}\n\t})\n\n\t// Home-pane badge showing the current speed (e.g. \"Speed: 1,5×\"). Match the\n\t// bare \"<number>×\" form so quality/captions badges are left untouched.\n\troot.querySelectorAll<HTMLElement>('.plyr__menu__value').forEach((badge) => {\n\t\tconst match = /^(\\d+(?:\\.\\d+)?)×$/.exec((badge.textContent ?? '').trim())\n\t\tif (match) {\n\t\t\tbadge.textContent = `${formatter.format(Number.parseFloat(match[1]))}×`\n\t\t}\n\t})\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<!-- Plyr currently replaces the parent. Wrapping to prevent this\n\thttps://github.com/redxtech/vue-plyr/issues/259 -->\n\t<div v-if=\"url\">\n\t\t<VuePlyr ref=\"plyr\"\n\t\t\t:options=\"options\"\n\t\t\t:style=\"{\n\t\t\t\theight: height + 'px',\n\t\t\t\twidth: width + 'px'\n\t\t\t}\">\n\t\t\t<video ref=\"video\"\n\t\t\t\t:autoplay=\"active ? true : null\"\n\t\t\t\t:playsinline=\"true\"\n\t\t\t\t:poster=\"livePhotoPath\"\n\t\t\t\t:src=\"url\"\n\t\t\t\tpreload=\"metadata\"\n\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t@ended=\"donePlaying\"\n\t\t\t\t@canplay=\"doneLoading\"\n\t\t\t\t@loadedmetadata=\"onLoadedMetadata\">\n\n\t\t\t\t<!-- Omitting `type` on purpose because most of the\n\t\t\t\t\tbrowsers auto detect the appropriate codec.\n\t\t\t\t\tHaving it set force the browser to comply to\n\t\t\t\t\tthe provided mime instead of detecting a potential\n\t\t\t\t\tcompatibility. -->\n\n\t\t\t\t{{ t('viewer', 'Your browser does not support videos.') }}\n\t\t\t</video>\n\t\t</VuePlyr>\n\t</div>\n</template>\n\n<script lang='ts'>\n// eslint-disable-next-line n/no-missing-import\nimport Vue from 'vue'\nimport AsyncComputed from 'vue-async-computed'\nimport '@skjnldsv/vue-plyr/dist/vue-plyr.css'\n\nimport { imagePath } from '@nextcloud/router'\n\nimport logger from '../services/logger.js'\nimport { findLivePhotoPeerFromName } from '../utils/livePhotoUtils'\nimport { getPreviewIfAny } from '../utils/previewUtils'\nimport { preloadMedia } from '../services/mediaPreloader.js'\nimport { localizeSpeedLabels, plyrTranslations } from '../utils/plyrTranslations'\n\nconst VuePlyr = () => import(/* webpackChunkName: 'plyr' */'@skjnldsv/vue-plyr')\n\nconst blankVideo = imagePath('viewer', 'blank.mp4')\n\nVue.use(AsyncComputed)\n\nexport default {\n\tname: 'Videos',\n\n\tcomponents: {\n\t\tVuePlyr,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisFullscreenButtonVisible: false,\n\t\t\tfallback: false,\n\t\t\tspeedListenerBound: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tlivePhotoPath() {\n\t\t\tconst peerFile = findLivePhotoPeerFromName(this, this.fileList)\n\n\t\t\tif (peerFile === undefined) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn getPreviewIfAny(peerFile)\n\t\t},\n\t\tplayer() {\n\t\t\treturn this.$refs.plyr.player\n\t\t},\n\t\toptions() {\n\t\t\treturn {\n\t\t\t\tautoplay: this.active === true,\n\t\t\t\t// Used to reset the video streams https://github.com/sampotts/plyr#javascript-1\n\t\t\t\tblankVideo,\n\t\t\t\tcontrols: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'captions', 'settings', 'fullscreen'],\n\t\t\t\tloadSprite: false,\n\t\t\t\ti18n: plyrTranslations,\n\t\t\t\tfullscreen: {\n\t\t\t\t\tiosNative: true,\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t},\n\n\tasyncComputed: {\n\t\tasync url(): Promise<string> {\n\t\t\tif (this.fallback) {\n\t\t\t\treturn preloadMedia(this.filename)\n\t\t\t} else {\n\t\t\t\treturn this.src\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\tthis.player.play()\n\n\t\t\t// the item was playing before and is now hidden\n\t\t\t} else if (val === false && old === true) {\n\t\t\t\tthis.player.pause()\n\t\t\t}\n\t\t},\n\t},\n\n\t// for some reason the video controls don't get mounted to the dom until after the component (Videos) is mounted,\n\t// using the mounted() hook will leave us with an empty array\n\tupdated() {\n\t\t// Prevent swiping to the next/previous item when scrubbing the timeline or changing volume\n\t\tconst plyrControls = this.$el.querySelectorAll('.plyr__controls__item')\n\t\tif (!plyrControls || !plyrControls.length) {\n\t\t\treturn\n\t\t}\n\t\t[...plyrControls].forEach(control => {\n\t\t\tif (control.getAttribute('data-plyr') === 'fullscreen') {\n\t\t\t\tcontrol.addEventListener('click', this.hideHeaderAndFooter)\n\t\t\t}\n\t\t\tif (!control?.addEventListener) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontrol.addEventListener('mouseenter', this.disableSwipe)\n\t\t\tcontrol.addEventListener('mouseleave', this.enableSwipe)\n\t\t})\n\n\t\t// The Plyr menu is only in the DOM once the controls are mounted (see\n\t\t// above), so wire up the speed-label localization here rather than in\n\t\t// mounted(). Register the rate-change listener once.\n\t\tif (!this.speedListenerBound && this.$refs.plyr?.player) {\n\t\t\tthis.$refs.plyr.player.on('ratechange', this.localizeSpeed)\n\t\t\tthis.speedListenerBound = true\n\t\t}\n\t\tthis.localizeSpeed()\n\t},\n\n\tbeforeDestroy() {\n\t\t// Force stop any ongoing request\n\t\tlogger.debug('Closing video stream', { filename: this.filename })\n\t\tthis.$refs.video?.pause?.()\n\t\tthis.player.stop()\n\t\tthis.player.destroy()\n\t},\n\n\tmethods: {\n\t\tlocalizeSpeed() {\n\t\t\t// Defer so we run after Plyr's own label/badge update for this event.\n\t\t\tthis.$nextTick(() => localizeSpeedLabels(this.$el))\n\t\t},\n\n\t\thideHeaderAndFooter() {\n\t\t\t// work arround to get the state of the fullscreen button, aria-selected attribute is not reliable\n\t\t\tthis.isFullscreenButtonVisible = !this.isFullscreenButtonVisible\n\t\t\tif (this.isFullscreenButtonVisible) {\n\t\t\t\tdocument.body.querySelector('main').classList.add('viewer__hidden-fullscreen')\n\t\t\t\tdocument.body.querySelector('footer').classList.add('viewer__hidden-fullscreen')\n\t\t\t} else {\n\t\t\t\tdocument.body.querySelector('main').classList.remove('viewer__hidden-fullscreen')\n\t\t\t\tdocument.body.querySelector('footer').classList.remove('viewer__hidden-fullscreen')\n\t\t\t}\n\t\t},\n\t\t// Updates the dimensions of the modal\n\t\tupdateVideoSize() {\n\t\t\tthis.naturalHeight = this.$refs.video?.videoHeight\n\t\t\tthis.naturalWidth = this.$refs.video?.videoWidth\n\t\t\tthis.updateHeightWidth()\n\t\t},\n\n\t\tdonePlaying() {\n\t\t\t// reset and show poster after play\n\t\t\tthis.$refs.video.autoplay = false\n\t\t\tthis.$refs.video.load()\n\t\t},\n\n\t\tonLoadedMetadata() {\n\t\t\tthis.updateVideoSize()\n\t\t\t// Force any further loading once we have the metadata\n\t\t\tif (!this.active) {\n\t\t\t\tthis.player.stop()\n\t\t\t}\n\t\t},\n\n\t\t// Fallback to the original image if not already done\n\t\tonFail() {\n\t\t\tif (!this.fallback) {\n\t\t\t\tconsole.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`)\n\t\t\t\tthis.fallback = true\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\nvideo {\n\t/* over arrows in tiny screens */\n\tz-index: 20050;\n\talign-self: center;\n\tmax-width: 100%;\n\tmax-height: 100% !important;\n\tbackground-color: black;\n\n\tjustify-self: center;\n}\n\n:deep() {\n\t.plyr:-webkit-full-screen video {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n\t.plyr:fullscreen video {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n\t.plyr__progress__container {\n\t\tflex: 1 1;\n\t}\n\n\t@import '../mixins/Plyr.scss';\n\n\t// Override server font style\n\t.plyr button {\n\t\tcolor: white;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n}\n</style>\n\n<style lang=\"scss\">\nmain.viewer__hidden-fullscreen {\n\theight: 100vh !important;\n\twidth: 100vw !important;\n\tmargin: 0 !important;\n}\n\nfooter.viewer__hidden-fullscreen {\n\tdisplay: none !important;\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Videos from '../components/Videos.vue'\n\nexport default {\n\tid: 'videos',\n\tgroup: 'media',\n\tmimes: [\n\t\t'video/mpeg',\n\t\t'video/ogg',\n\t\t'video/webm',\n\t\t'video/mp4',\n\t\t'video/x-m4v',\n\t\t'video/x-flv',\n\t\t'video/quicktime',\n\t],\n\tmimesAliases: {\n\t\t'video/x-matroska': 'video/webm',\n\t},\n\tcomponent: Videos,\n}\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<!-- Plyr currently replaces the parent. Wrapping to prevent this\n\thttps://github.com/redxtech/vue-plyr/issues/259 -->\n\t<div v-if=\"url\">\n\t\t<VuePlyr ref=\"plyr\"\n\t\t\t:options=\"options\">\n\t\t\t<audio ref=\"audio\"\n\t\t\t\t:autoplay=\"active\"\n\t\t\t\t:src=\"url\"\n\t\t\t\tpreload=\"metadata\"\n\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t@ended=\"donePlaying\"\n\t\t\t\t@canplay=\"doneLoading\">\n\n\t\t\t\t<!-- Omitting `type` on purpose because most of the\n\t\t\t\t\tbrowsers auto detect the appropriate codec.\n\t\t\t\t\tHaving it set force the browser to comply to\n\t\t\t\t\tthe provided mime instead of detecting a potential\n\t\t\t\t\tcompatibility. -->\n\n\t\t\t\t{{ t('viewer', 'Your browser does not support audio.') }}\n\t\t\t</audio>\n\t\t</VuePlyr>\n\t</div>\n</template>\n\n<script lang='ts'>\nimport Vue from 'vue'\nimport AsyncComputed from 'vue-async-computed'\n// eslint-disable-next-line n/no-missing-import\nimport '@skjnldsv/vue-plyr/dist/vue-plyr.css'\n\nimport logger from '../services/logger.js'\nimport { preloadMedia } from '../services/mediaPreloader'\nimport { localizeSpeedLabels, plyrTranslations } from '../utils/plyrTranslations'\n\nconst VuePlyr = () => import(/* webpackChunkName: 'plyr' */'@skjnldsv/vue-plyr')\n\nVue.use(AsyncComputed)\n\nexport default {\n\tname: 'Audios',\n\n\tcomponents: {\n\t\tVuePlyr,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfallback: false,\n\t\t\tspeedListenerBound: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tplayer() {\n\t\t\treturn this.$refs.plyr.player\n\t\t},\n\t\toptions() {\n\t\t\treturn {\n\t\t\t\tautoplay: this.active === true,\n\t\t\t\t// Used to reset the audio streams https://github.com/sampotts/plyr#javascript-1\n\t\t\t\tblankVideo: '/blank.aac',\n\t\t\t\tcontrols: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'settings'],\n\t\t\t\tloadSprite: false,\n\t\t\t\ti18n: plyrTranslations,\n\t\t\t}\n\t\t},\n\t},\n\n\tasyncComputed: {\n\t\tasync url(): Promise<string> {\n\t\t\tif (this.fallback) {\n\t\t\t\treturn preloadMedia(this.filename)\n\t\t\t} else {\n\t\t\t\treturn this.src\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\tthis.player.play()\n\n\t\t\t// the item was playing before and is now hidden\n\t\t\t} else if (val === false && old === true) {\n\t\t\t\tthis.player.pause()\n\t\t\t}\n\t\t},\n\t},\n\n\t// for some reason the video controls don't get mounted to the dom until after the component (Videos) is mounted,\n\t// using the mounted() hook will leave us with an empty array\n\tupdated() {\n\t\t// Prevent swiping to the next/previous item when scrubbing the timeline or changing volume\n\t\tconst plyrControls = this.$el.querySelectorAll('.plyr__controls__item')\n\t\tif (!plyrControls || !plyrControls.length) {\n\t\t\treturn\n\t\t}\n\n\t\t[...plyrControls].forEach(control => {\n\t\t\tif (!control?.addEventListener) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontrol.addEventListener('mouseenter', this.disableSwipe)\n\t\t\tcontrol.addEventListener('mouseleave', this.enableSwipe)\n\t\t})\n\n\t\t// The Plyr menu is only in the DOM once the controls are mounted (see\n\t\t// above), so wire up the speed-label localization here rather than in\n\t\t// mounted(). Register the rate-change listener once.\n\t\tif (!this.speedListenerBound && this.$refs.plyr?.player) {\n\t\t\tthis.$refs.plyr.player.on('ratechange', this.localizeSpeed)\n\t\t\tthis.speedListenerBound = true\n\t\t}\n\t\tthis.localizeSpeed()\n\t},\n\n\tbeforeDestroy() {\n\t\t// Force stop any ongoing request\n\t\tlogger.debug('Closing audio stream', { filename: this.filename })\n\t\tthis.$refs.audio.pause()\n\t\tthis.player.stop()\n\t\tthis.player.destroy()\n\t},\n\n\tmethods: {\n\t\tlocalizeSpeed() {\n\t\t\t// Defer so we run after Plyr's own label/badge update for this event.\n\t\t\tthis.$nextTick(() => localizeSpeedLabels(this.$el))\n\t\t},\n\n\t\tdonePlaying() {\n\t\t\tthis.$refs.audio.autoplay = false\n\t\t\tthis.$refs.audio.load()\n\t\t},\n\n\t\t// Fallback to the original image if not already done\n\t\tonFail() {\n\t\t\tif (!this.fallback) {\n\t\t\t\tconsole.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`)\n\t\t\t\tthis.fallback = true\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\naudio {\n\t/* over arrows in tiny screens */\n\tz-index: 20050;\n\talign-self: center;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tbackground-color: black;\n\n\tjustify-self: center;\n}\n\n:deep() {\n\t@import '../mixins/Plyr.scss';\n\n\t.plyr__progress__container {\n\t\tflex: 1 1;\n\t}\n\n\t// The settings menu (e.g. speed selection) is absolutely positioned and\n\t// opens upward from the controls. On short viewports its full height does\n\t// not fit and options get clipped off-screen. Cap its height to the\n\t// available viewport space and let it scroll internally so no option is\n\t// ever clipped, regardless of where the centered player sits.\n\t.plyr__menu__container {\n\t\t// The player is vertically centered, so the controls bar sits at\n\t\t// ~50vh and the menu opens upward into the top half of the viewport.\n\t\t// Cap to that available space (half the viewport, minus half the\n\t\t// controls bar and a top margin) so options never clip off-screen.\n\t\tmax-height: calc(40vh - var(--plyr-button-size, 44px) / 2 - 20px);\n\t\toverflow-y: auto;\n\t}\n\n\t// make it a bit off-center in order to fix mobile controls\n\t@media only screen and (max-width: 500px) {\n\t\t.plyr--audio {\n\t\t\ttop: calc(35vw / 2 + 60px / 2);\n\t\t}\n\t}\n}\n\n</style>\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Audios from '../components/Audios.vue'\n\nexport default {\n\tid: 'audios',\n\tgroup: 'media',\n\tmimes: [\n\t\t'audio/aac',\n\t\t'audio/aacp',\n\t\t'audio/flac',\n\t\t'audio/mp4',\n\t\t'audio/mpeg',\n\t\t'audio/ogg',\n\t\t'audio/vorbis',\n\t\t'audio/wav',\n\t\t'audio/webm',\n\t],\n\tcomponent: Audios,\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Images from '../models/images.js'\nimport Videos from '../models/videos.js'\nimport Audios from '../models/audios.js'\nimport logger from './logger.js'\n\n/**\n * Handler type definition\n *\n * @typedef {object} Handler\n * @property {string} id unique identifier for the handler\n * @property {string[]} mimes list of mime types that are supported for opening\n * @property {object} component Vue component to render the file\n * @property {string} group group identifier to combine for navigating to the next/previous files\n * @property {?string} theme viewer modal theme (one of 'dark', 'light', 'default')\n * @property {boolean} canCompare Indicate support for comparing two files\n * @property {?Function} downloadCallback Optional callback to be called before download\n */\n\n/**\n * File info type definition\n *\n * @typedef {object} Fileinfo\n * @property {string} filename File path of the remote item\n * @property {string} basename Base filename of the remote item, no path\n * @property {?string} source absolute path of a non-dav file, e.g. a static resource or provided by an app route\n * @property {string} mime file MIME type in the format type/sub-type\n * @property {string} [previewUrl] URL of the file preview\n * @property {boolean} hasPreview is there a WebDAV preview of this file?\n * @property {number} fileid Nextcloud file ID\n */\n\nexport default class Viewer {\n\n\t_state\n\t_mimetypes\n\t_mimetypesCompare\n\n\tconstructor() {\n\t\tthis._mimetypes = []\n\t\tthis._mimetypesCompare = []\n\t\tthis._state = {}\n\t\tthis._state.file = ''\n\t\tthis._state.fileInfo = null\n\t\tthis._state.compareFileInfo = null\n\t\tthis._state.files = []\n\t\tthis._state.enableSidebar = true\n\t\tthis._state.el = null\n\t\tthis._state.loadMore = () => ([])\n\t\tthis._state.onPrev = () => {}\n\t\tthis._state.onNext = () => {}\n\t\tthis._state.onClose = () => {}\n\t\tthis._state.canLoop = true\n\t\tthis._state.handlers = []\n\t\tthis._state.overrideHandlerId = null\n\n\t\t// ! built-in handlers\n\t\tthis.registerHandler(Images)\n\t\tthis.registerHandler(Videos)\n\t\tthis.registerHandler(Audios)\n\n\t\tlogger.debug('OCA.Viewer initialized')\n\t}\n\n\t/**\n\t * Return the registered handlers\n\t *\n\t * @readonly\n\t * @memberof Viewer\n\t * @return {Handler[]}\n\t */\n\tget availableHandlers() {\n\t\treturn this._state.handlers\n\t}\n\n\t/**\n\t * Register a new handler\n\t *\n\t * @memberof Viewer\n\t * @param {Handler} handler a new unregistered handler\n\t */\n\tregisterHandler(handler) {\n\t\tconst error = this.validateHandler(handler)\n\t\tif (error) {\n\t\t\tlogger.error('Could not register handler', { error, handler })\n\t\t\treturn\n\t\t}\n\n\t\t// Set default empty function for downloadCallback if not provided\n\t\tif (!handler.downloadCallback) {\n\t\t\thandler.downloadCallback = () => {}\n\t\t}\n\n\t\tthis._state.handlers.push(handler)\n\t\tconst handledMimes = [\n\t\t\t...handler.mimes,\n\t\t\t...Object.keys(handler.mimesAliases || {}),\n\t\t]\n\t\tthis._mimetypes.push.apply(this._mimetypes, handledMimes)\n\t\tif (handler?.canCompare === true) {\n\t\t\tthis._mimetypesCompare.push.apply(this._mimetypesCompare, handledMimes)\n\t\t}\n\t}\n\n\tvalidateHandler({ id, mimes, mimesAliases, component }) {\n\t\t// checking valid handler id\n\t\tif (!id || id.trim() === '' || typeof id !== 'string') {\n\t\t\treturn 'The handler doesn\\'t have a valid id'\n\t\t}\n\n\t\t// checking if handler is not already registered\n\t\tif (this._state.handlers.find(h => h.id === id)) {\n\t\t\treturn 'The handler is already registered'\n\t\t}\n\n\t\t// Nothing available to process! Failure\n\t\tif (!(mimes && Array.isArray(mimes)) && !mimesAliases) {\n\t\t\treturn 'Handler needs a valid mime array or mimesAliases'\n\t\t}\n\n\t\t// checking valid handler component data\n\t\tif ((!component || (typeof component !== 'object' && typeof component !== 'function'))) {\n\t\t\treturn 'The handler doesn\\'t have a valid component'\n\t\t}\n\t}\n\n\t/**\n\t * Get the current opened file\n\t *\n\t * @memberof Viewer\n\t * @return {string} the currently opened file\n\t */\n\tget file() {\n\t\treturn this._state.file\n\t}\n\n\t/**\n\t * Get the current opened file fileInfo\n\t *\n\t * @memberof Viewer\n\t * @return {?Fileinfo} the currently opened file fileInfo\n\t */\n\tget fileInfo() {\n\t\treturn this._state.fileInfo\n\t}\n\n\t/**\n\t * Get the current comparison view opened file fileInfo\n\t *\n\t * @memberof Viewer\n\t * @return {?Fileinfo} the currently opened file fileInfo\n\t */\n\tget compareFileInfo() {\n\t\treturn this._state.compareFileInfo\n\t}\n\n\t/**\n\t * Get the current files list\n\t *\n\t * @memberof Viewer\n\t * @return {Fileinfo[]} the current files list\n\t */\n\tget files() {\n\t\treturn this._state.files\n\t}\n\n\t/**\n\t * Whether to enable the sidebar or not\n\t *\n\t * @memberof Viewer\n\t * @return {boolean} whether to enable the sidebar or not\n\t */\n\tget enableSidebar() {\n\t\treturn this._state.enableSidebar\n\t}\n\n\t/**\n\t * Get the element to render the current file in\n\t *\n\t * @memberof Viewer\n\t * @return {string} selector of the element\n\t */\n\tget el() {\n\t\treturn this._state.el\n\t}\n\n\t/**\n\t * Get the supported mimetypes that can be opened with the viewer\n\t *\n\t * @memberof Viewer\n\t * @return {Array} list of mimetype strings that the viewer can open\n\t */\n\tget mimetypes() {\n\t\treturn this._mimetypes\n\t}\n\n\t/**\n\t * Get the supported mimetypes that can be opened side by side for comparison\n\t *\n\t * @memberof Viewer\n\t * @return {Array} list of mimetype strings that the viewer can open side by side for comparison\n\t */\n\tget mimetypesCompare() {\n\t\treturn this._mimetypesCompare\n\t}\n\n\t/**\n\t * Return the method provided to fetch more results\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget loadMore() {\n\t\treturn this._state.loadMore\n\t}\n\n\t/**\n\t * Get the method to run on previous navigation\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget onPrev() {\n\t\treturn this._state.onPrev\n\t}\n\n\t/**\n\t * Get the method to run on next navigation\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget onNext() {\n\t\treturn this._state.onNext\n\t}\n\n\t/**\n\t * Get the method to run on viewer close\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget onClose() {\n\t\treturn this._state.onClose\n\t}\n\n\t/**\n\t * Is looping over the provided list allowed?\n\t *\n\t * @memberof Viewer\n\t * @return {boolean}\n\t */\n\tget canLoop() {\n\t\treturn this._state.canLoop\n\t}\n\n\t/**\n\t * If this handler is set, it should be used for viewing the next file.\n\t *\n\t * @memberof Viewer\n\t */\n\tget overrideHandlerId() {\n\t\treturn this._state.overrideHandlerId\n\t}\n\n\t/**\n\t * Set element to open viewer in\n\t *\n\t * @memberof Viewer\n\t * @param {string} el selector of the element to render the file in\n\t */\n\tsetRootElement(el = null) {\n\t\tif (this._state.file) {\n\t\t\tthrow new Error('Please set root element before calling Viewer.open().')\n\t\t}\n\t\tthis._state.el = el\n\t}\n\n\t/**\n\t * Open the path into the viewer\n\t *\n\t * @memberof Viewer\n\t * @param {object} options Options for opening the viewer\n\t * @param {?string} options.path path of the file to open\n\t * @param {?Fileinfo} options.fileInfo file info of the file to open\n\t * @param {Fileinfo[]} [options.list] the list of files as objects (fileinfo) format\n\t * @param {boolean} options.enableSidebar whether to enable the sidebar or not\n\t * @param {Function} options.loadMore callback for loading more files\n\t * @param {boolean} options.canLoop can the viewer loop over the array\n\t * @param {Function} options.onPrev callback when navigating back to previous file\n\t * @param {Function} options.onNext callback when navigation forward to next file\n\t * @param {Function} options.onClose callback when closing the viewer\n\t */\n\topen({ path, fileInfo, list = [], enableSidebar = true, loadMore = () => ([]), canLoop = true, onPrev = () => {}, onNext = () => {}, onClose = () => {} } = {}) {\n\t\tif (typeof arguments[0] === 'string') {\n\t\t\tthrow new Error('Opening the viewer with a single string parameter is deprecated. Please use a destructuring object instead', `OCA.Viewer.open({ path: '${path}' })`)\n\t\t}\n\t\tif (!path && !fileInfo) {\n\t\t\tthrow new Error('Viewer needs either an URL or path to open. None given')\n\t\t}\n\n\t\tif (path && !path.startsWith('/')) {\n\t\t\tthrow new Error('Please use an absolute path')\n\t\t}\n\n\t\tif (!Array.isArray(list)) {\n\t\t\tthrow new Error('The files list must be an array')\n\t\t}\n\n\t\tif (typeof loadMore !== 'function') {\n\t\t\tthrow new Error('The loadMore method must be a function')\n\t\t}\n\n\t\t// Only assign the one that is used to prevent false watcher runs\n\t\tif (path) {\n\t\t\tthis._state.file = path\n\t\t} else {\n\t\t\tthis._state.fileInfo = fileInfo\n\t\t}\n\n\t\tif (!this._state.el) {\n\t\t\tthis._state.files = list\n\t\t\tthis._state.enableSidebar = enableSidebar\n\t\t\tthis._state.loadMore = loadMore\n\t\t\tthis._state.onPrev = onPrev\n\t\t\tthis._state.onNext = onNext\n\t\t\tthis._state.onClose = onClose\n\t\t\tthis._state.canLoop = canLoop\n\t\t}\n\t}\n\n\t/**\n\t * Open the path into the viewer\n\t *\n\t * @memberof Viewer\n\t * @param {object} handlerId ID of the handler with which to open the files\n\t * @param {object} options Options for opening the viewer\n\t * @param {string} options.path path of the file to open\n\t * @param {object[]} [options.list] the list of files as objects (fileinfo) format\n\t * @param {boolean} [options.enableSidebar] Whether to enable the sidebar or not\n\t * @param {Function} options.loadMore callback for loading more files\n\t * @param {boolean} options.canLoop can the viewer loop over the array\n\t * @param {Function} options.onPrev callback when navigating back to previous file\n\t * @param {Function} options.onNext callback when navigation forward to next file\n\t * @param {Function} options.onClose callback when closing the viewer\n\t */\n\topenWith(handlerId, options = {}) {\n\t\tthis._state.overrideHandlerId = handlerId\n\t\tthis.open(options)\n\t}\n\n\t/**\n\t * Open the viewer with two files side by side\n\t *\n\t * @memberof Viewer\n\t * @param {Fileinfo} fileInfo current file\n\t * @param {Fileinfo} compareFileInfo older file to compare\n\t */\n\tcompare(fileInfo, compareFileInfo) {\n\t\tthis.open({\n\t\t\tfileInfo,\n\t\t})\n\t\tthis._state.compareFileInfo = compareFileInfo\n\t}\n\n\t/**\n\t * Close the opened file\n\t *\n\t * @memberof Viewer\n\t */\n\tclose() {\n\t\tthis._state.file = ''\n\t\tthis._state.fileInfo = null\n\t\tthis._state.files = []\n\t\tthis._state.enableSidebar = true\n\t\tthis._state.canLoop = true\n\t\tthis._state.loadMore = () => ([])\n\t\tthis._state.overrideHandlerId = null\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerViewerAction } from './files_actions/viewerAction'\nimport ViewerService from './services/Viewer.js'\n\n// Register the files action\nregisterViewerAction()\n\n// Init Viewer Service\nwindow.OCA = window.OCA ?? {}\nwindow.OCA.Viewer = new ViewerService()\nwindow.OCA.Viewer.version = appVersion\n\n// Eagerly register any handlers queued before the viewer was initialized.\n// This must happen synchronously so that OCA.Viewer.mimetypes is complete\n// before the file action's enabled() callback is evaluated by the files app.\nif (window._oca_viewer_handlers) {\n\twindow._oca_viewer_handlers.forEach((handler) => {\n\t\tif (!window.OCA.Viewer.availableHandlers.some((h) => h.id === handler.id)) {\n\t\t\twindow.OCA.Viewer.registerHandler(handler)\n\t\t}\n\t})\n}\n"],"file":"viewer-init.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["getFirstDay","intl","getCanonicalLocale","weekInfo","getDayNames","locale","getDayNamesShort","getDayNamesMin","getMonthNames","getMonthNamesShort","setAsyncState","vm","stateObject","state","getterOnly","fn","hasOwnProperty","object","property","isComputedLazy","item","isLazyActive","key","lazyActivePrefix","lazyDataPrefix","initLazy","data","value","makeLazyComputed","silentSetLazy","silentGetLazy","getGetterWatchedByArray","computedAsyncProperty","_this","splittedByDot","start","part","error","getGetterWatchedByFunction","getWatchedGetter","DidNotUpdate","getGetterWithShouldUpdate","asyncProprety","currentGetter","shouldNotUpdate","prefix","AsyncComputed","Vue","pluginOptions","asyncComputed","getter","getterFn","initDataWithAsyncComputed","generateDefault","_key","handleAsyncComputedPropetyChanges","promiseId","watcher","newPromise","thisPromise","err","handler","options","optionData","nonLazy","defaultValue","_sfc_main","register","useModelMigration","oldModelName","oldModelEvent","required","getCurrentInstance","computed","inputDateTypes","GenRandomId","id","name","$event","time","yyyy","MM","dd","hh","mm","timezoneOffsetSeconds","inputDateWithTimezone","startDate","daysSinceBeginningOfYear","weekNumber","_sfc_render","_vm","_c","_sfc_staticRenderFns","__component__","normalizeComponent","NcDateTimePickerNative","ScopeComponent","AlertCircle","Check","NcButton","model","isLegacy32","isValidLabel","logger","ariaDescribedby","event","newValue","NcInputField","t29","loadState","debounce","password","axios","generateOcsUrl","t","e","t18","t53","t51","defineAsyncComponent","__vitePreload","NcColorPicker","NcDateTimePicker$1","NcSelect","ActionTextMixin","NcActionRouter","NcActionText","realAppName","appName","realAppVersion","appVersion","t27","getBuilder","getCapabilities","t20","ChevronDown","t14","colors","NcLoadingIcon","t21","t23","t16","t45","defaultWindow","isClient","unrefElement","elRef","_a","plain","toValue","useEventListener","args","target","events","listeners","noop","cleanups","cleanup","el","listener","options2","stopWatch","watch","optionsClone","isObject","stop","tryOnScopeDispose","_iOSWorkaround","onClickOutside","window","ignore","capture","detectIframe","isIOS","shouldListen","shouldIgnore","target2","hasMultipleRoots","checkMultipleRoots","children","child","isProcessingClick","vOnClickOutside","directiveHooks","binding","resolveElement","checkOverflowScroll","ele","style","parent","preventDefault","rawEvent","_target","elInitialOverflow","useScrollLock","element","initialState","isLocked","ref","stopTouchMoveListener","initialOverflow","toRef","lock","unlock","v","onScrollLock","isMounted","global","Symbol","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","html","allowable_tags","tag_replacement","context","init_context","striptags_internal","init_striptags_stream","parse_allowable_tags","tag_buffer","depth","in_quote_char","output","idx","length","char","normalize_tag","tag_set","match","module","this","checkIfDarkTheme","backgroundInvertIfDark","INJECTION_KEY_THEME","useIsDarkThemeElement","isDarkTheme","isDarkSystemTheme","usePreferredDark","updateIsDarkTheme","useMutationObserver","readonly","useInternalIsDarkTheme","createSharedComposable","useIsDarkTheme","enforcedTheme","inject","t49","t33","t50","t31","urlAlphabet","nanoid","size","i","_typeof","obj","config","setSelector","selector","isBrowser","TargetContainer","h","nodes","Portal","disabled","targetEl","install","_Vue","svg","defineComponent","__props","props","useCssVars","_setup","color","cx","NcIconSvgWrapper","iconToggleSwitch","style0","__cssModules","_sfc_injectStyles","ctx","NcIconToggleSwitch","INSIDE_RADIO_GROUP_KEY","useInsideRadioGroup","_sfc_main$6","_sfc_render$6","_sfc_staticRenderFns$6","__component__$6","CheckboxBlankOutline","_sfc_main$5","_sfc_render$5","_sfc_staticRenderFns$5","__component__$5","CheckboxMarked","_sfc_main$4","_sfc_render$4","_sfc_staticRenderFns$4","__component__$4","MinusBox","_sfc_main$3","_sfc_render$3","_sfc_staticRenderFns$3","__component__$3","RadioboxBlank","_sfc_main$2","_sfc_render$2","_sfc_staticRenderFns$2","__component__$2","RadioboxMarked","TYPE_CHECKBOX","TYPE_RADIO","TYPE_SWITCH","TYPE_BUTTON","_sfc_main$1","type","_sfc_render$1","_sfc_staticRenderFns$1","__component__$1","NcCheckboxContent","__default__","radioGroup","internalType","onMounted","internalModelValue","n","__injectCSSVars__","__setup__","NcCheckboxRadioSwitch","encodedTlds","encodedUtlds","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","groups","addToGroups","flags","k","group","flagsForToken","result","c","State","token","input","nextState","regex","exactOnly","inputs","next","regexp","len","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","CR","LF","EMOJI_VARIATION","EMOJI_JOINER","OBJECT_REPLACEMENT","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Asciinumeric","Alphanumeric","Word","UWord","Nl","Cr","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","sch","run$1","str","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","operator","isCallable","option","val","MultiToken","truncate","formatted","protocol","href","formattedHref","tagName","content","attributes","className","rel","attrs","eventListeners","createTokenClass","Token","p","Email","Text","Url","makeState","arg","init$1","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","escapeText","text","escapeAttr","attributesToString","attr","linkifyStr","createElementId","NcEmptyContent","t15","u","node","convert","test","ok","castFactory","anyFactory","propertiesFactory","typeFactory","tests","checks","any","parameters","check","checkAsRecord","all","nodeAsRecord","testFunction","looksLikeANode","empty","CONTINUE","EXIT","SKIP","visitParents","tree","visitor","reverse","is","step","factory","parents","visit","subresult","offset","grandparents","toResult","nodeAsParent","decorateExternal","externalLink","externalLink_decorated","NcRichTextExternalLink","URL_PATTERN","URL_PATTERN_AUTOLINK","remarkAutolink","autolink","useMarkdown","useExtendedMarkdown","ancestors","ancestor","parsed","parseUrl","x","list","textAfter","textBefore","lastChar","joinedText","getRoute","router","url","removePrefix","removePrefixes","prefixes","acc","isAbsoluteURL","isNonHttpLink","getBaseUrl","relativeUrl","relativeRouterBase","getRootUrl","potentialRouterPath","route","getEnabledContactsMenuActions","entry","action","base64map","crypt","b","bytes","hex","base64","triplet","j","imod4","cryptModule","charenc","charenc_1","isBuffer_1","isBuffer","isSlowBuffer","require$$0","utf8","require$$1","require$$2","bin","md5","message","m","d","FF","GG","HH","II","aa","bb","cc","s","md5Module","digestbytes","t4","Color","r","g","toHex","int","calculateStepIncrement","steps","color1","color2","mixPalette","palette","increment","COLOR_RED","COLOR_YELLOW","COLOR_BLUE","COLOR_BLACK","COLOR_WHITE","defaultPalette","generatePalette","palette1","palette2","palette3","usernameToColor","username","hash","finalPalette","hashToInt","hash2","maximum","finalInt","getAvatarUrl","user","guestUrl","themeUrl","generateUrl","awayLegacySvg","awaySvg","busySvg","dndLegacySvg","dndSvg","invisibleLegacySvg","invisibleSvg","onlineLegacySvg","onlineSvg","t54","t12","getUserStatusText","status","matchSvg","NcUserStatusIcon","t11","userStatus","userId","capabilities","getCurrentUser","icon","browserStorage","getUserHasAvatar","flag","setUserHasAvatar","DotsHorizontalIcon","NcActions","NcPopover","NcProfileHoverCardDK5YkGF0","isLegacy35","initials","filteredChars","filtered","actions","NcActionLink","NcActionButton","escape","emojiIcon","shown","subscribe","unsubscribe","avatarUrl","srcset","userHasAvatar","img","NcAvatar","has","Events","EE","once","addListener","emitter","evt","clearEvent","EventEmitter","names","handlers","l","ee","a1","a2","a3","a4","a5","TimeoutError","AbortError","getDOMException","errorMessage","getAbortedReason","signal","reason","pTimeout","promise","milliseconds","fallback","customTimers","timer","abortHandler","cancelablePromise","resolve","reject","timeoutError","lowerBound","array","comparator","count","it","PriorityQueue","#queue","priority","PQueue","#carryoverConcurrencyCount","#isIntervalIgnored","#intervalCount","#intervalCap","#interval","#intervalEnd","#intervalId","#timeoutId","#queueClass","#pending","#concurrency","#isPaused","#throwOnTimeout","#idAssigner","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPaused","now","delay","canInitializeInterval","job","#processQueue","newConcurrency","#throwOnAbort","_resolve","function_","operation","functions","#onEvent","limit","filter","_","O","f","y","FindRanges","search","ranges","currentIndex","range","validRanges","mergedRanges","chunks","currentRange","chunk","NcHighlight","NcEllipsisedOption","margin","defaultSize","margin2","EMAIL_NOTATION","NcListItemIcon","t17","t38","VueSelect","allProps","mixin","optionLabel","createElement","Close","noDrop","open","map","clickableArea","gridBaseLine","avatarSize","dropdownMenu","component","width","addClass","togglePlacementClass","placement","updatePosition","computePosition","flip","shift","limitShift","autoUpdate","label","vueSelectKeys","searchString","selectedOption","spinner","t28","t7","w","S","C","F","A","E","M","L","P","R","G","U","N","H","D","V","q","B","T","J","I","$","W","z","X","Y","K","Z","Q","te","ne","t2","emit","currentColor","modelOpen","useVModel","HEX_REGEX","advanced","normalizedPalette","handleConfirm","hideCallback","toggleColor","pickCustomColor","getContrastColor","calculateLuma","red","green","blue","hexToRGB","mdiArrowLeft","mdiCheck","mdiCloseCircleOutline","mdiDotsHorizontal","Chrome","slotProps","t30","t35","t3","isDate","toDate","isValidDate","startOfWeek","firstDayOfWeek","date","day","diff","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","firstDateOfFirstWeek","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","REGEX_FORMAT","pad","sign","getOffset","formatTimezone","delimeter","absOffset","hours","minutes","meridiem","isLowercase","word","formatFlags","meridiemFunc","format","formatStr","defaultLocale","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","ownKeys","enumerableOnly","keys","symbols","sym","_objectSpread","source","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","callback","func","escapeStringRegExp","matchWordRegExp","localeKey","matchWordCallback","cent","matchMeridiem","defaultIsPM","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","to24hour","getFullInputArray","backupDate","backupArr","useBackup","createDate","ms","createUTCDate","_len","makeParser","dateString","mark","parseTo","parser","parse","_options$locale","_locale","_options$backupDate","parseResult","month","millisecond","weekday","week","inputArray","firstDate","parsedDate","_extends","_objectSpread2","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_unsupportedIterableToArray","minLen","_arrayLikeToArray","_extends$1","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","mergeFn","helper","isValidRangeDate","isValidDates","dates","getValidDate","backup","startOfYear","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","_i2","setMonth","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","assignTime","pick","res","prop","mergeDeep","unwrapExports","createCommonjsModule","en","exports","_default","en$1","lang","locales","isLocal","getLocale","rafThrottle","isRunning","getPopupElementSize","originalDisplay","originalVisibility","styles","height","getRelativePosition","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","dw","dh","getScrollParent","until","scroll","script","_this2","relativeElement","popup","appendToBody","_this$_popupRect","_getRelativePosition","template","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_h","__vue_staticRenderFns__","__vue_inject_styles__","__vue_component__","__vue_render__$1","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_component__$1","__vue_render__$2","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_component__$2","__vue_render__$3","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_component__$3","script$1","__vue_script__$1","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_component__$4","script$2","_this$getLocale","yearFormat","monthBeforeYear","_this$getLocale$month","monthFormat","yearLabel","monthLabel","days","panel","cell","_index$split$map","_index$split$map2","row","col","fmt","__vue_script__$2","__vue_render__$5","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_component__$5","script$3","monthsLocale","months","__vue_script__$3","__vue_render__$6","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_component__$6","script$4","last","firstYear","years","__vue_script__$4","__vue_render__$7","__vue_staticRenderFns__$7","__vue_inject_styles__$7","__vue_component__$7","CalendarPanel","panels","calendarDate","oldCalendar","oldPanel","_date","_date2","cellDate","notCurrentMonth","classes","_cellDate","_cellDate2","end","active","innerCalendar","CalendarRange","calendars","_this$innerValue","startValue","endValue","adjustIndex","gap","_calendars","calendarLeft","calendarRight","yearDiff","monthDiff","min","max","currentDates","classnames","inRange","_range$map","_range$map2","calendarRange","on","prefixClass","scrollBarWidth","getScrollbarWidth","outer","inner","script$5","wrap","heightPercentage","scrollHeight","scrollTop","offsetTop","clientY","clientHeight","__vue_script__$5","__vue_render__$8","__vue_staticRenderFns__$8","__vue_inject_styles__$8","__vue_component__$8","padNumber","generateOptions","scrollTo","to","duration","difference","tick","script$6","cols","num","_this3","_this4","_this5","elements","scrollElement","currentTarget","colIndex","cellIndex","__vue_script__$6","__vue_render__$9","__vue_staticRenderFns__$9","__vue_inject_styles__$9","__vue_component__$9","parseOption","values","scrollTo$1","script$7","startMinutes","endMinutes","stepMinutes","timeMinutes","__vue_script__$7","__vue_render__$a","__vue_staticRenderFns__$a","__vue_inject_styles__$a","__vue_component__$a","script$8","titleFormat","defaultProps","minHour","maxHour","__vue_script__$8","__vue_render__$b","__vue_staticRenderFns__$b","__vue_inject_styles__$b","__vue_component__$b","TimeRange","_this$value","defaultValues","DatetimePanel","datetime","calendarProps","timeProps","DatetimeRange","datetimes","componentMap","componentRangeMap","DatePicker","types","close","disabledDate","disabledTime","nextDates","keyCode","slotFn","calendarIcon","Component","_class","inline","sidedar","t46","formatTimezoneId","timezoneId","getTimezones","tz","formattedAdditionalTimezones","timezones","filterBy","terms","term","$$v","NcTimezonePicker","CalendarBlank","Web","t40","formatMap","firstThursday","yearStart","slot","scope","NcDateTimePicker","se","ie","re","oe","t6","t37","t44","t41","t22","DELAY","useCopy","isCopied","mdiContentCopy","altText","copy","t8","major","emptyOptions","toString","settings","includeImageAlt","includeHtml","one","VOID","PRIMITIVE","ARRAY","OBJECT","DATE","REGEXP","MAP","SET","ERROR","BIGINT","env","deserializer","as","out","unpair","set","buffer","deserialize","serialized","EMPTY","typeOf","asString","shouldSkip","TYPE","serializer","strict","json","pair","spread","entries","serialize","lossy","structuredClone$1","convertElement","tagNameFactory","looksLikeAnElement","ABSOLUTE_URL_REGEX","WINDOWS_PATH_REGEX","isAbsoluteUrl","stringify","testOrVisitor","visitorOrReverse","maybeReverse","overload","defaultProtocols","defaultRel","rehypeExternalLinks","protocols","contentRaw","createIfNeeded","relRaw","properties","structuredClone","Schema","normal","space","merge","definitions","normalize","Info","attribute","powers","boolean","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","DefinedInfo","mask","own","create","definition","info","xlink","xml","caseSensitiveTransform","caseInsensitiveTransform","xmlns","aria","valid","dash","cap","find","schema","Type","rest","camelcase","dashes","kebab","$0","hastToReact","htmlBase","svgBase","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","inlineStyleParser","lineno","column","lines","position","Position","msg","comments","rules","comment","pos","declaration","ret","trim","declarations","decls","decl","StyleToObject","iterator","hasIterator","styleToObjectModule","webNamespaces","toH","react","vue","vd","vdom","head","transform","hyperscript","parentSchema","addAttribute","subprop","commas","spaces","parseStyle","styleToObject","$1","error_","convert_1","matchesFactory","convertAll","results","matches","unistUtilVisitParents","unistUtilVisit","hastCssPropertyMap","hastUtilTableCellStyle","hastName","cssName","appendStyle","prevStyle","nextStyle","thing","tableElements","rehypeReact","fixTableCellAlign","compiler","tableCellStyle","escapeStringRegexp","string","findAndReplace","ignored","pairs","toPairs","pairIndex","grandparent","siblings","replace","change","matchObject","tupleOrList","tuple","toExpression","toFunction","newlineToBreak","remarkBreaks","decodeNamedCharacterReference","characterReference","character","splice","remove","items","chunkStart","push","combineExtensions","extensions","syntaxExtension","extension","hook","right","code","constructs","existing","before","decodeNumericCharacterReference","base","normalizeIdentifier","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","normalizeUri","skip","factorySpace","effects","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","previous","lineStart","document","initializeDocument","containerConstruct","tokenizeContainer","self","continued","childFlow","childToken","lineStartOffset","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","point","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","endOfFile","stream","seen","nok","classifyCharacter","resolveAll","called","attention","resolveAllAttention","tokenizeAttention","openingSequence","closingSequence","use","nextEvents","movePoint","attentionMarkers","marker","inside","after","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","blockQuote","tokenizeBlockQuoteContinuation","exit","tokenizeBlockQuoteStart","contStart","contBefore","characterEscape","tokenizeCharacterEscape","tokenizeCharacterReference","nonLazyContinuation","tokenizeNonLazyContinuation","codeFenced","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","startBefore","beforeSequenceClose","sequenceClose","sequenceCloseAfter","codeIndented","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","codeText","resolveCodeText","tokenizeCodeText","tailExitIndex","headEnterIndex","enter","between","SpliceBuffer","initial","deleteCount","removed","chunkedPush","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","slice","resolveContent","tokenizeContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","begin","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","resolveHeadingAtx","tokenizeHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","htmlFlow","resolveToHtmlFlow","tokenizeHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","continuation","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationAfter","continuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","resolveAllLabelEnd","resolveToLabelEnd","tokenizeLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","newEvents","media","labelStart","defined","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","sequence","tokenizeListContinuation","tokenizeListEnd","tokenizeListStart","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","kind","atMarker","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","resolveToSetextUnderline","tokenizeSetextUnderline","heading","paragraph","flow","initializeFlow","atBlankEnding","afterConstruct","resolver","createResolver","initializeFactory","field","resolveAllLineSuffixes","initializeText","notText","extraResolver","resolveAllText","bufferIndex","tabs","contentInitial","flowInitial","insideSpan","resolveText","disable","createTokenizer","initialize","from","columnStart","resolveAllConstructs","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","consume","defineSkip","sliceSerialize","sliceStream","write","main","addResult","expandTabs","serializeChunks","sliceChunks","_bufferIndex","_index","line","accountForPotentialSkip","chunkIndex","go","fields","construct","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","restore","startIndex","startBufferIndex","endIndex","endBufferIndex","view","atTab","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","encoding","endPosition","characterEscapeOrReference","decodeString","decode","$2","stringifyPosition","fromMarkdown","opener","link","onenterdata","codeFlow","emphasis","hardBreak","image","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","strong","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","compile","resume","listStack","prepareList","defaultOnError","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","and","errorHandler","onExitError","referenceType","fragment","combined","remarkParse","doc","blockquote","language","strikethrough","footnoteReference","clobberPrefix","safeId","counter","reuseCounter","sup","revert","subtype","suffix","contents","imageReference","inlineCode","linkReference","loose","listLoose","listItemLoose","root","pointEnd","pointStart","table","rows","firstRow","tableContent","body","tableRow","align","cells","alignValue","tableCell","tab","trimLines","trimLine","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","footer","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","tailTail","createState","definitionById","footnoteById","footnoteCounts","defaultHandlers","applyData","patch","handle","shallow","defaultUnknownHandler","trimMarkdownSpaceStart","hName","hChildren","hProperties","toHast","foot","remarkRehype","destination","file","hastTree","squeezeParagraphs","remarkUnlinkProtocols","proto","bail","hasOwn","toStr","defineProperty","gOPD","isArray","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","extend","src","copyIsArray","clone","deep","prototype","trough","fns","pipeline","middlewareIndex","middelware","middleware","wrapped","fnExpectsCallback","done","exception","then","VFileMessage","causeOrReason","optionsOrParentOrPlace","origin","legacyCause","minpath","basename","dirname","extname","join","path","assertPath","seenNonSlash","firstNonSlashEnd","extnameIndex","unmatchedSlash","startPart","startDot","preDotState","segments","joined","absolute","normalizeString","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","minproc","cwd","isUrl","fileUrlOrPath","urlToPath","getPathFromURLPosix","pathname","third","order","VFile","isUint8Array","assertNonEmpty","assertPart","stem","CallableInstance","apply","Processor","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","parseTree","realDone","compileTree","compileResult","looksLikeAValue","complete","assertDone","assertNode","transformers","outputTree","resultingTree","attachers","namespace","addPlugin","addList","addPreset","add","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","frozen","asyncName","looksLikeAVFile","encodeReserveRE","encodeReserveReplacer","commaRE","encode","resolveQuery","query","extraQuery","_parseQuery","parseQuery","parsedQuery","castQueryParamValue","param","parts","stringifyQuery","val2","trailingSlashRE","createRoute","record","location","redirectedFrom","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bKey","bVal","isIncludedRoute","queryIncludes","handleRouteEntered","instance","cbs","i$1","View","cache","inactive","vnodeData","cachedData","cachedComponent","fillPropsinData","matched","vnode","configProps","propsToPass","resolveProps","resolvePath","relative","append","firstChar","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","partial","repeat","optional","delimiter","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","attachKeys","regexpToRegexp","arrayToRegexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","params","routeMsg","filler","normalizeLocation","params$1","rawPath","parsedPath","basePath","toTypes","eventTypes","Link","this$1$1","globalActiveClass","globalExactActiveClass","activeClassFallback","exactActiveClassFallback","activeClass","exactActiveClass","compareTarget","ariaCurrentValue","guardEvent","scopedSlot","findAnchor","aData","handler$1","event$1","aAttrs","isDef","registerInstance","callVal","strats","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","compileRouteRegex","childMatchAs","aliases","alias","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","redirect","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","behavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","supportsPushState","ua","pushState","history","replaceState","NavigationFailureType","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","cb","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","resolvedDef","isESModule","comp","flatten","hasSymbol","History","normalizeBase","errorCb","onComplete","onAbort","prev","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","updated","deactivated","activated","extractLeaveGuards","extractUpdateHooks","enterGuards","extractEnterGuards","cleanupListener","baseEl","extractGuards","records","bind","guards","guard","extractGuard","bindGuard","bindEnterGuard","HTML5History","getLocation","expectScroll","supportsScroll","handleRoutingEvent","fromRoute","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","mode","prototypeAccessors","app","handleInitialScroll","routeOrError","setupListeners","registerHook","fullPath","createHref","onDestroy","registerWidget","propsWithDefaults","renderWidget","richObjectType","richObject","accessible","interactive","destroyWidget","isWidgetRegistered","hasInteractiveView","hasFullWidth","isResizable","t24","IDLE_TIMEOUT","RESIZE_KEYBOARD_STEP","widgetId","isVisible","widgetRoot","customWidget","useElementSize","customWidgetHeight","useIntersectionObserver","nextTick","lineClamp","RouterLink","widget","widgetEl","computedStyle","parsedMin","parsedMax","delta","deltaY","NcReferenceWidget","response","isPublic","getSharingToken","reference","NcReferenceList","ccount","code2","index2","list2","replace2","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","transformGfmAutolinkLiterals","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolink","exitLiteralAutolinkEmail","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","gfmAutolinkLiteralToMarkdown","findUrl","findEmail","domain2","path2","isCorrectDomain","splitUrl","atext","trailExec","trail2","closingParenIndex","openingParens","closingParens","email","footnoteReferencePeek","gfmFootnoteFromMarkdown","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","enterFootnoteCall","enterFootnoteCallString","exitFootnoteDefinition","exitFootnoteDefinitionLabelString","exitFootnoteCall","exitFootnoteCallString","gfmFootnoteToMarkdown","footnoteDefinition","tracker","exit2","subexit","map$2","blank","constructsWithoutStrikethrough","handleDelete","peekDelete","gfmStrikethroughFromMarkdown","enterStrikethrough","exitStrikethrough","gfmStrikethroughToMarkdown","markdownTable","stringLength","defaultStringLength","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","row2","sizes2","columnIndex2","columnIndex","toAlignment","sizes","map$1","patternInScope","listInScope","none","_1","longestStreak","substring","expected","formatCodeAsIndented","checkFence","code$1","exit3","value2","checkQuote","quote","checkEmphasis","encodeCharacterReference","encodeInfo","outside","outsideKind","insideKind","emphasisPeek","betweenHead","betweenTail","formatHeadingAsSetext","literalWithBreak","node2","rank","subexit2","htmlPeek","imagePeek","imageReferencePeek","alt","inlineCodePeek","expression","formatLinkAsAutolink","linkPeek","linkReferencePeek","text2","checkBullet","checkBulletOther","bullet","bulletOther","checkBulletOrdered","checkRule","bulletCurrent","useDifferentMarker","firstListItem","checkListItemIndent","listItemIndent","map2","phrasing","checkStrong","strongPeek","text$1","checkRuleRepetition","repetition","gfmTableFromMarkdown","enterTable","enterCell","enterRow","exitCodeText","exitTable","gfmTableToMarkdown","padding","alignDelimiters","around","inlineCodeWithTable","handleTable","handleTableCell","handleTableRow","serializeData","handleTableAsData","handleTableRowAsData","matrix","gfmTaskListItemFromMarkdown","exitCheck","exitParagraphWithTaskListItem","gfmTaskListItemToMarkdown","listItemWithTaskListItem","firstParaghraph","sibling","checkable","checkbox","gfmFromMarkdown","gfmToMarkdown","wwwPrefix","tokenizeWwwPrefix","tokenizeDomain","tokenizePath","trail","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","gfmAutolinkLiteral","ok2","dot","gfmAtext","previousUnbalanced","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","constructs2","indent","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","call","replacement","callStart","callData","callEscape","labelAtMarker","whitespaceAfter","gfmStrikethrough","single","tokenizeStrikethrough","resolveAllStrikethrough","previous2","EditMap","addImpl","vecs","editMap","at","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","currentTable","currentBody","currentCell","flushTableEnd","flushCell","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","side","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","NcRichTextCopyButton","remarkPlaceholder","ast","placeholders","prepareTextNode","isCodeNode","remarkStripCode","remarkUnescape","LINK_PROTOCOLS","rehypeHighlight","importRehypeHighlightLibrary","argumentId","argument","renderedMarkdown","remark2rehype","rehype2react","tag","nestedNode","inputNode","labelParts","nestedNodeIndex","inputComponent","placeholder","processor","NcRichText","AccountIcon","BriefcaseIcon","ClockIcon","MapMarkerIcon","PencilIcon","t1","PROFILE_CACHE_TTL_MS","inflight","getCachedProfile","setCachedProfile","ttlMs","fetchProfileCached","fetcher","cached","loading","profileData","isMobile","useIsSmallMobile","isCurrentUser","settingsUrl","resolvedActions","localTimeLabel","formatProfileLocalTime","primaryAction","otherActions","primaryActionButtonProps","emptyProfileMessage","avatarUserStatus","timeZone","shifted","isIconUrl","otherActionComponent","otherActionProps","loadProfile","isOpen","hasPreloadedUserStatus","ensureUserStatus","fetchUserStatus","profile","NcProfileHoverCard","t39","t43","t10","predicate","thisArg","CustomEvent$1","registerCustomPickerElement","t9","imagePath","t42","t48","t25","t32","t13","t19","t34","t0","t47","t26","t52","normalizeStringPosix","_format","sep","pathObject","dir","posix","resolvedAbsolute","process","isAbsolute","trailingSeparator","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","toCode","hasRoot","matchedSlash","ext","extIdx","pathBrowserify","translations","TABS","TOOLS","theme","styleElement","linkTo","FilerobotImageEditor","__vite_default__","mutations","mutation","fullName","imageCanvas","mimeType","quality","putUrl","fileExists","showConfirmation","showError","blob","showSuccess","fileId","newParams","updatedFile","rawStat","Node","livePictureExt","livePictureExtRegex","findLivePhotoPeerFromFileId","peerFileId","fileList","findLivePhotoPeerFromName","referenceFile","comparedFile","preloadMedia","filename","getClient","getRootPath","ImageEditor","PlayCircleOutline","getDavPath","old","sanitized","DOMPurify","newShiftX","newShiftY","newZoomRatio","maxShiftX","maxShiftY","stableX","stableY","scrollX","scrollY","scrollPercX","scrollPercY","growX","growY","diffX","diffY","cachedEv","clientX","newDistance","translate","enabledPreviewProviders","previewSupportedMimes","browserSupportedMimes","filterEnabledMimes","mimeRegex","enabledMimes","ignoredMimes","Images","plyrTranslations","localizeSpeedLabels","formatter","speedLabel","badge","VuePlyr","blankVideo","peerFile","getPreviewIfAny","plyrControls","control","Videos","Audios","Viewer","handledMimes","mimes","mimesAliases","fileInfo","enableSidebar","loadMore","canLoop","onPrev","onNext","onClose","handlerId","compareFileInfo","registerViewerAction","ViewerService"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246],"sources":["../node_modules/@nextcloud/l10n/dist/index.mjs","../node_modules/vue-async-computed/dist/vue-async-computed.esm.js","../node_modules/vue-material-design-icons/PlayCircleOutline.vue","../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-C3eUBbt4.mjs","../node_modules/@nextcloud/vue/dist/chunks/useModelMigration-EhAWvqDD.mjs","../node_modules/@nextcloud/vue/dist/Components/NcDateTimePickerNative.mjs","../node_modules/@nextcloud/vue/dist/chunks/AlertCircleOutline-DBxbepLy.mjs","../node_modules/@nextcloud/vue/dist/chunks/Check-BkThHPH7.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputField-Cym5GuvB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcPasswordField-2woxTjbl.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextField-CQp8XS4C.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionInput-CMLDgnF_.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionRouter.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionText.mjs","../node_modules/@nextcloud/vue/dist/chunks/appName-qk1L3dsY.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppContent-7ziLICwJ.mjs","../node_modules/@nextcloud/vue/dist/Composables/useHotKey.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationToggle-DQZ2LWw4.mjs","../node_modules/@nextcloud/vue/dist/chunks/ChevronDown-DFQfzh63.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-44rhjqEA.mjs","../node_modules/@nextcloud/vue/dist/Components/NcLoadingIcon.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-Dg-2s6bP.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-DIO0S2TU.mjs","../node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","../node_modules/@vueuse/components/index.mjs","../node_modules/striptags/src/striptags.js","../node_modules/@nextcloud/vue/dist/Functions/isDarkTheme.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-wIEKSp2G.mjs","../node_modules/@nextcloud/vue/dist/Composables/useIsDarkTheme.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-3jZKd9et.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDialogButton-D5yuDtSF.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-JB67n8yt.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-BpUlnEbQ.mjs","../node_modules/nanoid/non-secure/index.js","../node_modules/@linusborg/vue-simple-portal/dist/index.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcIconToggleSwitch-B19dt_oD.mjs","../node_modules/@nextcloud/vue/dist/chunks/useNcRadioGroup-D6llQmAl.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCheckboxRadioSwitch-BAjRm8PQ.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/linkify-string/dist/linkify-string.mjs","../node_modules/@nextcloud/vue/dist/chunks/createElementId-DhjFt1I9.mjs","../node_modules/@nextcloud/vue/dist/Components/NcEmptyContent.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-B2F66PCc.mjs","../node_modules/unist-builder/lib/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/@nextcloud/vue/dist/chunks/autolink-COrOqbJu.mjs","../node_modules/@nextcloud/vue/dist/Functions/contactsMenu.mjs","../node_modules/crypt/crypt.js","../node_modules/charenc/charenc.js","../node_modules/is-buffer/index.js","../node_modules/md5/md5.js","../node_modules/@nextcloud/vue/dist/chunks/colors-B_oqiKWY.mjs","../node_modules/@nextcloud/vue/dist/Functions/usernameToColor.mjs","../node_modules/@nextcloud/vue/dist/chunks/getAvatarUrl-BGOeDmNO.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcUserStatusIcon-gpl3yJFX.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAvatar-C1ty7wsG.mjs","../node_modules/eventemitter3/index.js","../node_modules/p-timeout/index.js","../node_modules/p-queue/dist/lower-bound.js","../node_modules/p-queue/dist/priority-queue.js","../node_modules/p-queue/dist/index.js","../node_modules/@nextcloud/vue/dist/Functions/preloadImage.mjs","../node_modules/@nextcloud/vue-select/dist/vue-select.js","../node_modules/@nextcloud/vue/dist/chunks/index-CxTT94_h.mjs","../node_modules/@nextcloud/vue/dist/Components/NcEllipsisedOption.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-DIecVacf.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelect-CxHfXvZV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-75D50pZU.mjs","../node_modules/vue-color/dist/vue-color.min.js","../node_modules/@nextcloud/vue/dist/chunks/NcColorPicker-BwqjqV32.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcContent-nvVwz9xO.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-d_eqooRR.mjs","../node_modules/@nextcloud/vue/dist/Composables/useFormatDateTime.mjs","../node_modules/date-format-parse/es/util.js","../node_modules/date-format-parse/es/locale/en.js","../node_modules/date-format-parse/es/format.js","../node_modules/date-format-parse/es/parse.js","../node_modules/vue2-datepicker/index.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcTimezonePicker-BfSjyBxq.mjs","../node_modules/@nextcloud/vue/dist/Components/NcDateTimePicker.mjs","../node_modules/emoji-mart-vue-fast/dist/emoji-mart.js","../node_modules/@nextcloud/vue/dist/chunks/emoji-Dtn2mDf7.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcEmojiPicker-C_88_f6x.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-Dg6UqMN1.mjs","../node_modules/@nextcloud/vue/dist/chunks/useCopy-C-jNoLry.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-D86qGvDb.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-BACQoMeA.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItem-DFrhF-DU.mjs","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/@ungap/structured-clone/esm/types.js","../node_modules/@ungap/structured-clone/esm/deserialize.js","../node_modules/@ungap/structured-clone/esm/serialize.js","../node_modules/@ungap/structured-clone/esm/index.js","../node_modules/hast-util-is-element/lib/index.js","../node_modules/is-absolute-url/index.js","../node_modules/space-separated-tokens/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/rehype-external-links/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/property-information/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/inline-style-parser/index.js","../node_modules/style-to-object/index.js","../node_modules/web-namespaces/index.js","../node_modules/hast-to-hyperscript/lib/index.js","../node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is/convert.js","../node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents/index.js","../node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit/index.js","../node_modules/@mapbox/hast-util-table-cell-style/index.js","../node_modules/hast-util-whitespace/index.js","../node_modules/rehype-react/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-newline-to-break/lib/index.js","../node_modules/remark-breaks/lib/index.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark/lib/parse.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/unist-util-position/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/remark-rehype/lib/index.js","../node_modules/mdast-squeeze-paragraphs/lib/index.js","../node_modules/remark-unlink-protocols/lib/index.js","../node_modules/bail/index.js","../node_modules/extend/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/unified/lib/callable-instance.js","../node_modules/unified/lib/index.js","../node_modules/vue-router/dist/vue-router.esm.js","../node_modules/@nextcloud/vue/dist/chunks/widgets-XxirL-2f.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcReferenceWidget-CMq5QVka.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRichText-K2ZjNIbK.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProfileHoverCard-DK5YkGF0.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-D7zYeXBH.mjs","../node_modules/tributejs/dist/tribute.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-BKygMHvP.mjs","../node_modules/@nextcloud/vue/dist/chunks/customPickerElements-CYpmyl0b.mjs","../node_modules/@nextcloud/vue/dist/chunks/referencePickerModal-P_15xB7f.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRichContenteditable-rJPX28V6.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectTags-BWTTPN2O.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-D2jOjPs4.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsInputText-Cc7cCwNm.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSection-D9qxzYDc.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-DzzNyHN_.mjs","../node_modules/@nextcloud/vue/dist/Directives/Tooltip.mjs","../node_modules/path-browserify/index.js","../src/models/editorTranslations.js","../src/components/ImageEditor.vue","../src/utils/livePhotoUtils.ts","../src/services/mediaPreloader.ts","../src/components/Images.vue","../src/models/images.js","../src/utils/plyrTranslations.ts","../src/components/Videos.vue","../src/models/videos.js","../src/components/Audios.vue","../src/models/audios.js","../src/services/Viewer.js","../src/init.ts"],"sourcesContent":["import { g as getCanonicalLocale, a as getLanguage } from \"./chunks/translation-DoG5ZELJ.mjs\";\nimport { b, e, i, l, d, r, c, s, t, t as t2, d as d2, u } from \"./chunks/translation-DoG5ZELJ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction getFirstDay() {\n if (typeof globalThis.firstDay !== \"undefined\") {\n return globalThis.firstDay;\n }\n const intl = new Intl.Locale(getCanonicalLocale());\n const weekInfo = intl.getWeekInfo?.() ?? intl.weekInfo;\n if (weekInfo) {\n return weekInfo.firstDay % 7;\n }\n return 1;\n}\nfunction getDayNames() {\n if (typeof globalThis.dayNames !== \"undefined\") {\n return globalThis.dayNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"long\" })\n ];\n}\nfunction getDayNamesShort() {\n if (typeof globalThis.dayNamesShort !== \"undefined\") {\n return globalThis.dayNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"short\" })\n ];\n}\nfunction getDayNamesMin() {\n if (typeof globalThis.dayNamesMin !== \"undefined\") {\n return globalThis.dayNamesMin;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"narrow\" })\n ];\n}\nfunction getMonthNames() {\n if (typeof globalThis.monthNames !== \"undefined\") {\n return globalThis.monthNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"long\" })\n ];\n}\nfunction getMonthNamesShort() {\n if (typeof globalThis.monthNamesShort !== \"undefined\") {\n return globalThis.monthNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"short\" })\n ];\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction formatRelativeTime(timestamp = Date.now(), opts = {}) {\n const options = {\n ignoreSeconds: false,\n language: getLanguage(),\n relativeTime: \"long\",\n ...opts\n };\n const date = new Date(timestamp);\n const formatter = new Intl.RelativeTimeFormat([options.language, getLanguage()], { numeric: \"auto\", style: options.relativeTime });\n const diff = date.getTime() - Date.now();\n const seconds = diff / 1e3;\n if (Math.abs(seconds) < 59.5) {\n return options.ignoreSeconds || formatter.format(Math.round(seconds), \"second\");\n }\n const minutes = seconds / 60;\n if (Math.abs(minutes) <= 59) {\n return formatter.format(Math.round(minutes), \"minute\");\n }\n const hours = minutes / 60;\n if (Math.abs(hours) < 23.5) {\n return formatter.format(Math.round(hours), \"hour\");\n }\n const days = hours / 24;\n if (Math.abs(days) < 6.5) {\n return formatter.format(Math.round(days), \"day\");\n }\n if (Math.abs(days) < 27.5) {\n const weeks = days / 7;\n return formatter.format(Math.round(weeks), \"week\");\n }\n const months = days / 30;\n const format = Math.abs(months) < 11 ? { month: options.relativeTime, day: \"numeric\" } : { year: options.relativeTime === \"narrow\" ? \"2-digit\" : \"numeric\", month: options.relativeTime };\n const dateTimeFormatter = new Intl.DateTimeFormat([options.language, getLanguage()], format);\n return dateTimeFormatter.format(date);\n}\nexport {\n formatRelativeTime,\n getCanonicalLocale,\n getDayNames,\n getDayNamesMin,\n getDayNamesShort,\n getFirstDay,\n getLanguage,\n b as getLocale,\n getMonthNames,\n getMonthNamesShort,\n e as getPlural,\n i as isRTL,\n l as loadTranslations,\n d as n,\n r as register,\n c as setLanguage,\n s as setLocale,\n t,\n t2 as translate,\n d2 as translatePlural,\n u as unregister\n};\n//# sourceMappingURL=index.mjs.map\n","function setAsyncState(vm, stateObject, state) {\n vm.$set(vm.$data._asyncComputed[stateObject], 'state', state);\n vm.$set(vm.$data._asyncComputed[stateObject], 'updating', state === 'updating');\n vm.$set(vm.$data._asyncComputed[stateObject], 'error', state === 'error');\n vm.$set(vm.$data._asyncComputed[stateObject], 'success', state === 'success');\n}\n\nfunction getterOnly(fn) {\n if (typeof fn === 'function') return fn;\n\n return fn.get;\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction isComputedLazy(item) {\n return hasOwnProperty(item, 'lazy') && item.lazy;\n}\n\nfunction isLazyActive(vm, key) {\n return vm[lazyActivePrefix + key];\n}\n\nvar lazyActivePrefix = 'async_computed$lazy_active$',\n lazyDataPrefix = 'async_computed$lazy_data$';\n\nfunction initLazy(data, key, value) {\n data[lazyActivePrefix + key] = false;\n data[lazyDataPrefix + key] = value;\n}\n\nfunction makeLazyComputed(key) {\n return {\n get: function get() {\n this[lazyActivePrefix + key] = true;\n return this[lazyDataPrefix + key];\n },\n set: function set(value) {\n this[lazyDataPrefix + key] = value;\n }\n };\n}\n\nfunction silentSetLazy(vm, key, value) {\n vm[lazyDataPrefix + key] = value;\n}\nfunction silentGetLazy(vm, key) {\n return vm[lazyDataPrefix + key];\n}\n\nvar getGetterWatchedByArray = function getGetterWatchedByArray(computedAsyncProperty) {\n return function getter() {\n var _this = this;\n\n computedAsyncProperty.watch.forEach(function (key) {\n // Check if nested key is watched.\n var splittedByDot = key.split('.');\n if (splittedByDot.length === 1) {\n // If not, just access it.\n // eslint-disable-next-line no-unused-expressions\n _this[key];\n } else {\n // Access the nested propety.\n try {\n var start = _this;\n splittedByDot.forEach(function (part) {\n start = start[part];\n });\n } catch (error) {\n console.error('AsyncComputed: bad path: ', key);\n throw error;\n }\n }\n });\n return computedAsyncProperty.get.call(this);\n };\n};\n\nvar getGetterWatchedByFunction = function getGetterWatchedByFunction(computedAsyncProperty) {\n return function getter() {\n computedAsyncProperty.watch.call(this);\n return computedAsyncProperty.get.call(this);\n };\n};\n\nfunction getWatchedGetter(computedAsyncProperty) {\n if (typeof computedAsyncProperty.watch === 'function') {\n return getGetterWatchedByFunction(computedAsyncProperty);\n } else if (Array.isArray(computedAsyncProperty.watch)) {\n computedAsyncProperty.watch.forEach(function (key) {\n if (typeof key !== 'string') {\n throw new Error('AsyncComputed: watch elemnts must be strings');\n }\n });\n return getGetterWatchedByArray(computedAsyncProperty);\n } else {\n throw Error('AsyncComputed: watch should be function or an array');\n }\n}\n\nvar DidNotUpdate = typeof Symbol === 'function' ? Symbol('did-not-update') : {};\n\nvar getGetterWithShouldUpdate = function getGetterWithShouldUpdate(asyncProprety, currentGetter) {\n return function getter() {\n return asyncProprety.shouldUpdate.call(this) ? currentGetter.call(this) : DidNotUpdate;\n };\n};\n\nvar shouldNotUpdate = function shouldNotUpdate(value) {\n return DidNotUpdate === value;\n};\n\nvar prefix = '_async_computed$';\n\nvar AsyncComputed = {\n install: function install(Vue, pluginOptions) {\n pluginOptions = pluginOptions || {};\n\n Vue.config.optionMergeStrategies.asyncComputed = Vue.config.optionMergeStrategies.computed;\n\n Vue.mixin({\n data: function data() {\n return {\n _asyncComputed: {}\n };\n },\n\n computed: {\n $asyncComputed: function $asyncComputed() {\n return this.$data._asyncComputed;\n }\n },\n beforeCreate: function beforeCreate() {\n var asyncComputed = this.$options.asyncComputed || {};\n\n if (!Object.keys(asyncComputed).length) return;\n\n for (var key in asyncComputed) {\n var getter = getterFn(key, asyncComputed[key]);\n this.$options.computed[prefix + key] = getter;\n }\n\n this.$options.data = initDataWithAsyncComputed(this.$options, pluginOptions);\n },\n created: function created() {\n for (var key in this.$options.asyncComputed || {}) {\n var item = this.$options.asyncComputed[key],\n value = generateDefault.call(this, item, pluginOptions);\n if (isComputedLazy(item)) {\n silentSetLazy(this, key, value);\n } else {\n this[key] = value;\n }\n }\n\n for (var _key in this.$options.asyncComputed || {}) {\n handleAsyncComputedPropetyChanges(this, _key, pluginOptions, Vue);\n }\n }\n });\n }\n};\n\nfunction handleAsyncComputedPropetyChanges(vm, key, pluginOptions, Vue) {\n var promiseId = 0;\n var watcher = function watcher(newPromise) {\n var thisPromise = ++promiseId;\n\n if (shouldNotUpdate(newPromise)) return;\n\n if (!newPromise || !newPromise.then) {\n newPromise = Promise.resolve(newPromise);\n }\n setAsyncState(vm, key, 'updating');\n\n newPromise.then(function (value) {\n if (thisPromise !== promiseId) return;\n setAsyncState(vm, key, 'success');\n vm[key] = value;\n }).catch(function (err) {\n if (thisPromise !== promiseId) return;\n\n setAsyncState(vm, key, 'error');\n Vue.set(vm.$data._asyncComputed[key], 'exception', err);\n if (pluginOptions.errorHandler === false) return;\n\n var handler = pluginOptions.errorHandler === undefined ? console.error.bind(console, 'Error evaluating async computed property:') : pluginOptions.errorHandler;\n\n if (pluginOptions.useRawError) {\n handler(err, vm, err.stack);\n } else {\n handler(err.stack);\n }\n });\n };\n Vue.set(vm.$data._asyncComputed, key, {\n exception: null,\n update: function update() {\n if (!vm._isDestroyed) {\n watcher(getterOnly(vm.$options.asyncComputed[key]).apply(vm));\n }\n }\n });\n setAsyncState(vm, key, 'updating');\n vm.$watch(prefix + key, watcher, { immediate: true });\n}\n\nfunction initDataWithAsyncComputed(options, pluginOptions) {\n var optionData = options.data;\n var asyncComputed = options.asyncComputed || {};\n\n return function vueAsyncComputedInjectedDataFn(vm) {\n var data = (typeof optionData === 'function' ? optionData.call(this, vm) : optionData) || {};\n for (var key in asyncComputed) {\n var item = this.$options.asyncComputed[key];\n\n var value = generateDefault.call(this, item, pluginOptions);\n if (isComputedLazy(item)) {\n initLazy(data, key, value);\n this.$options.computed[key] = makeLazyComputed(key);\n } else {\n data[key] = value;\n }\n }\n return data;\n };\n}\n\nfunction getterFn(key, fn) {\n if (typeof fn === 'function') return fn;\n\n var getter = fn.get;\n\n if (hasOwnProperty(fn, 'watch')) {\n getter = getWatchedGetter(fn);\n }\n\n if (hasOwnProperty(fn, 'shouldUpdate')) {\n getter = getGetterWithShouldUpdate(fn, getter);\n }\n\n if (isComputedLazy(fn)) {\n var nonLazy = getter;\n getter = function lazyGetter() {\n if (isLazyActive(this, key)) {\n return nonLazy.call(this);\n } else {\n return silentGetLazy(this, key);\n }\n };\n }\n return getter;\n}\n\nfunction generateDefault(fn, pluginOptions) {\n var defaultValue = null;\n\n if ('default' in fn) {\n defaultValue = fn.default;\n } else if ('default' in pluginOptions) {\n defaultValue = pluginOptions.default;\n }\n\n if (typeof defaultValue === 'function') {\n return defaultValue.call(this);\n } else {\n return defaultValue;\n }\n}\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.Vue) {\n // Auto install in dist mode\n window.Vue.use(AsyncComputed);\n}\n\nexport default AsyncComputed;\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon play-circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <title v-if=\"title\">{{ title }}\n \n \n \n\n\n","import '../assets/NcActionButtonGroup-DqR0weTf.css';\nimport { defineComponent } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: `nc-action-button-group-${GenRandomId()}`\n };\n },\n methods: {\n t\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"li\", { staticClass: \"nc-button-group-base\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_vm.name ? _c(\"div\", { attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _c(\"ul\", { staticClass: \"nc-button-group-content\", attrs: { \"role\": \"group\", \"aria-labelledby\": _vm.name ? _vm.labelId : void 0 } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"d5482fd6\"\n);\nconst NcActionButtonGroup = __component__.exports;\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-C3eUBbt4.mjs.map\n","import Vue, { getCurrentInstance, computed } from \"vue\";\nfunction useModelMigration(oldModelName, oldModelEvent, required = false) {\n const vm = getCurrentInstance().proxy;\n if (required && vm.$props[oldModelName] === void 0 && vm.$props.modelValue === void 0) {\n Vue.util.warn(`Missing required prop: \"modelValue\" or old \"${oldModelName}\"`);\n }\n const model = computed({\n get() {\n if (vm.$props[oldModelName] !== void 0) {\n return vm.$props[oldModelName];\n }\n return vm.$props.modelValue;\n },\n set(value) {\n vm.$emit(\"update:modelValue\", value);\n vm.$emit(\"update:model-value\", value);\n vm.$emit(oldModelEvent, value);\n }\n });\n return model;\n}\nexport {\n useModelMigration as u\n};\n//# sourceMappingURL=useModelMigration-EhAWvqDD.mjs.map\n","import '../assets/NcDateTimePickerNative-ZqMiOh_m.css';\nimport { u as useModelMigration } from \"../chunks/useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-Df3JYkxQ.mjs\";\nconst inputDateTypes = [\"date\", \"datetime-local\", \"month\", \"time\", \"week\"];\nconst _sfc_main = {\n name: \"NcDateTimePickerNative\",\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: Date,\n default: void 0\n },\n /**\n * The date is – like the `Date` object in JavaScript – tied to UTC.\n * The selected time zone does not have an influence of the selected time and date value.\n * You have to translate the time yourself when you want to factor in time zones.\n * Pass null to clear the input field.\n */\n modelValue: {\n type: Date,\n default: null\n },\n /**\n * id attribute of the input field\n */\n id: {\n type: String,\n default: () => \"date-time-picker-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * type attribute of the input field\n * default type: String\n * The type of the input element, it can be `date`, `datetime-local`, `month`, `time`, `week`\n */\n type: {\n type: String,\n default: \"date\",\n validate: (name) => inputDateTypes.includes(name)\n },\n /**\n * text inside the label element\n * default type: String\n */\n label: {\n type: String,\n default: \"Please choose a date\"\n },\n /**\n * min attribute of the input field\n * default type: null\n */\n min: {\n type: [Boolean, Date],\n default: null\n },\n /**\n * max attribute of the input field\n * default type: null\n */\n max: {\n type: [Boolean, Date],\n default: null\n },\n /**\n * Flag to hide the label\n * default type: String\n * The hidden input label for accessibility purposes.\n */\n hideLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcDateTimePickerNative in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /**\n * Emitted when the input value changes\n *\n * @return {Date} new chosen Date()\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n computed: {\n formattedValue() {\n return this.formatValue(this.model);\n },\n formattedMin() {\n if (this.min) {\n return this.formatValue(this.min);\n }\n return false;\n },\n formattedMax() {\n if (this.max) {\n return this.formatValue(this.max);\n }\n return false;\n },\n listeners() {\n return {\n ...this.$listeners,\n /**\n * Handle the input event\n *\n * @param {InputEvent} $event input event payloads\n */\n input: ($event) => {\n if (isNaN($event.target.valueAsNumber)) {\n this.model = null;\n } else if (this.type === \"time\") {\n const time = $event.target.value;\n if (this.model === \"\") {\n const { yyyy, MM, dd } = this.getReadableDate(/* @__PURE__ */ new Date());\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else {\n const { yyyy, MM, dd } = this.getReadableDate(this.model);\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n }\n } else if (this.type === \"month\") {\n const MM = (new Date($event.target.value).getMonth() + 1).toString().padStart(2, \"0\");\n if (this.model === \"\") {\n const { yyyy, dd, hh, mm } = this.getReadableDate(/* @__PURE__ */ new Date());\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const { yyyy, dd, hh, mm } = this.getReadableDate(this.model);\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n }\n } else {\n const timezoneOffsetSeconds = new Date($event.target.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = $event.target.valueAsNumber + timezoneOffsetSeconds;\n this.model = new Date(inputDateWithTimezone);\n }\n }\n };\n }\n },\n methods: {\n /**\n * Returns Object with string values of a Date\n *\n * @param {Date} value The selected value\n * @return {object|undefined}\n */\n getReadableDate(value) {\n if (value instanceof Date) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n },\n /**\n * Returns preformatted value for the input field\n *\n * @param {Date} value The selected value\n * @return {string|undefined}\n */\n formatValue(value) {\n if (value instanceof Date) {\n const { yyyy, MM, dd, hh, mm } = this.getReadableDate(value);\n if (this.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (this.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (this.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (this.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (this.type === \"week\") {\n const startDate = new Date(yyyy, 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value - startDate) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n } else {\n return \"\";\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"native-datetime-picker\" }, [_c(\"label\", { staticClass: \"native-datetime-picker--label\", class: { \"hidden-visually\": _vm.hideLabel }, attrs: { \"for\": _vm.id } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]), _c(\"input\", _vm._g(_vm._b({ staticClass: \"native-datetime-picker--input\", class: _vm.inputClass, attrs: { \"id\": _vm.id, \"type\": _vm.type, \"min\": _vm.formattedMin, \"max\": _vm.formattedMax }, domProps: { \"value\": _vm.formattedValue } }, \"input\", _vm.$attrs, false), _vm.listeners))]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"6c1feae8\"\n);\nconst NcDateTimePickerNative = __component__.exports;\nScopeComponent(NcDateTimePickerNative);\nexport {\n NcDateTimePickerNative as default\n};\n//# sourceMappingURL=NcDateTimePickerNative.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"AlertCircleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-circle-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst AlertCircle = __component__.exports;\nexport {\n AlertCircle as A\n};\n//# sourceMappingURL=AlertCircleOutline-DBxbepLy.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon check-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst Check = __component__.exports;\nexport {\n Check as C\n};\n//# sourceMappingURL=Check-BkThHPH7.mjs.map\n","import '../assets/NcInputField-KvlF4emB.css';\nimport { A as AlertCircle } from \"./AlertCircleOutline-DBxbepLy.mjs\";\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcInputField\",\n components: {\n NcButton,\n AlertCircle,\n Check\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The value of the input field\n * If type is 'number' and a number is passed as value than the type of `update:modelValue` will also be 'number'\n */\n modelValue: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The type of the input element\n */\n type: {\n type: String,\n default: \"text\",\n validator: (value) => [\n \"text\",\n \"password\",\n \"email\",\n \"tel\",\n \"url\",\n \"search\",\n \"number\"\n ].includes(value)\n },\n /**\n * The input label, always provide one for accessibility purposes.\n * This will also be used as a placeholder unless the placeholder\n * prop is populated with a different string.\n *\n * Note: If the background color is not `--color-main-background` consider using an external label instead (see `labelOutside`).\n */\n label: {\n type: String,\n default: void 0\n },\n /**\n * Pass in true if you want to use an external label. This is useful\n * if you need a label that looks different from the one provided by\n * this component\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * The placeholder of the input. This defaults as the string that's\n * passed into the label prop. In order to remove the placeholder,\n * pass in an empty string.\n */\n placeholder: {\n type: String,\n default: void 0\n },\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n default: false\n },\n /**\n * Label of the trailing button\n *\n * Required when showTrailingButton is set\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Toggles the success state of the component. Adds a checkmark icon.\n * this cannot be used together with canClear.\n */\n success: {\n type: Boolean,\n default: false\n },\n /**\n * Toggles the error state of the component. Adds an error icon.\n * this cannot be used together with canClear.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * Additional helper text message\n *\n * This will be displayed beneath the input field. In case the field is\n * also marked as having an error, the text will be displayed in red.\n */\n helperText: {\n type: String,\n default: \"\"\n },\n /**\n * Disable the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Specifies whether the input should have a pill form.\n * By default, input has rounded corners.\n */\n pill: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcInputField in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"trailing-button-click\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n isLegacy32,\n model\n };\n },\n computed: {\n computedId() {\n return this.$attrs.id && this.$attrs.id !== \"\" ? this.$attrs.id : this.inputName;\n },\n inputName() {\n return \"input\" + GenRandomId();\n },\n hasTrailingIcon() {\n return this.success;\n },\n computedPlaceholder() {\n if (this.placeholder) {\n return this.placeholder;\n }\n if (this.label) {\n return isLegacy32 ? this.label : \"\";\n }\n return void 0;\n },\n isValidLabel() {\n const isValidLabel = this.label || this.labelOutside;\n if (!isValidLabel) {\n logger.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel;\n },\n ariaDescribedby() {\n const ariaDescribedby = [];\n if (this.helperText.length > 0) {\n ariaDescribedby.push(`${this.inputName}-helper-text`);\n }\n if (this.$attrs[\"aria-describedby\"]) {\n ariaDescribedby.push(this.$attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby.join(\" \") || null;\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.input.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.input.select();\n },\n handleInput(event) {\n const newValue = this.type === \"number\" && typeof this.model === \"number\" ? parseFloat(event.target.value, 10) : event.target.value;\n this.model = newValue;\n },\n handleTrailingButtonClick(event) {\n this.$emit(\"trailing-button-click\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"input-field\", class: {\n \"input-field--disabled\": _vm.disabled,\n \"input-field--error\": _vm.error,\n \"input-field--label-outside\": _vm.labelOutside || !_vm.isValidLabel,\n \"input-field--leading-icon\": !!_vm.$scopedSlots.icon || !!_vm.$scopedSlots.default || !!_vm.$slots.default,\n \"input-field--success\": _vm.success,\n \"input-field--trailing-icon\": _vm.showTrailingButton || _vm.hasTrailingIcon,\n \"input-field--pill\": _vm.pill,\n \"input-field--legacy\": _vm.isLegacy32\n } }, [_c(\"div\", { staticClass: \"input-field__main-wrapper\" }, [_c(\"input\", _vm._g(_vm._b({ ref: \"input\", staticClass: \"input-field__input\", class: [\n _vm.inputClass,\n {\n \"input-field__input--success\": _vm.success,\n \"input-field__input--error\": _vm.error\n }\n ], attrs: { \"id\": _vm.computedId, \"type\": _vm.type, \"disabled\": _vm.disabled, \"placeholder\": _vm.computedPlaceholder, \"aria-describedby\": _vm.ariaDescribedby, \"aria-live\": \"polite\" }, domProps: { \"value\": _vm.model?.toString() }, on: { \"input\": _vm.handleInput } }, \"input\", _vm.$attrs, false), _vm.$listeners)), !_vm.labelOutside && _vm.isValidLabel ? _c(\"label\", { staticClass: \"input-field__label\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !!_vm.$scopedSlots.icon || !!_vm.$scopedSlots.default || !!_vm.$slots.default, expression: \"!!$scopedSlots.icon || !!$scopedSlots.default || !!$slots.default\" }], staticClass: \"input-field__icon input-field__icon--leading\" }, [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })], 2), _vm.showTrailingButton ? _c(\"NcButton\", { staticClass: \"input-field__trailing-button\", attrs: { \"aria-label\": _vm.trailingButtonLabel, \"disabled\": _vm.disabled, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.handleTrailingButtonClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"trailing-button-icon\")];\n }, proxy: true }], null, true) }) : _vm.success || _vm.error ? _c(\"div\", { staticClass: \"input-field__icon input-field__icon--trailing\" }, [_vm.success ? _c(\"Check\", { staticStyle: { \"color\": \"var(--color-success-text)\" }, attrs: { \"size\": 20 } }) : _vm.error ? _c(\"AlertCircle\", { staticStyle: { \"color\": \"var(--color-error-text)\" }, attrs: { \"size\": 20 } }) : _vm._e()], 1) : _vm._e()], 1), _vm.helperText.length > 0 ? _c(\"p\", { staticClass: \"input-field__helper-text-message\", class: {\n \"input-field__helper-text-message--error\": _vm.error,\n \"input-field__helper-text-message--success\": _vm.success\n }, attrs: { \"id\": `${_vm.inputName}-helper-text` } }, [_vm.success ? _c(\"Check\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm.error ? _c(\"AlertCircle\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm._e(), _vm._v(\" \" + _vm._s(_vm.helperText) + \" \")], 1) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"17c3f609\"\n);\nconst NcInputField = __component__.exports;\nexport {\n NcInputField as N\n};\n//# sourceMappingURL=NcInputField-Cym5GuvB.mjs.map\n","import '../assets/NcPasswordField-vrT0oftw.css';\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { useVModel } from \"@vueuse/core\";\nimport debounce from \"debounce\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcInputField } from \"./NcInputField-Cym5GuvB.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, G as t29, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _sfc_main$2 = {\n name: \"EyeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon eye-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconEye = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"EyeOffIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon eye-off-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconEyeOff = __component__$1.exports;\nregister(t29);\nconst passwordPolicy = loadState(\"core\", \"capabilities\", {}).password_policy || null;\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcPasswordField\",\n components: {\n NcInputField,\n IconEye,\n IconEyeOff\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n // Redefined props\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Removed NcInputField props, defined only by this component\n */\n trailingButtonLabel: void 0,\n // Custom props\n /**\n * Check if the user entered a valid password using the password_policy\n * app if available.\n *\n * Warning: this doesn't replace server side checking and will do nothing\n * if the password_policy app is disabled.\n */\n checkPasswordStrength: {\n type: Boolean,\n default: false\n },\n /**\n * The minlength property defines the minimum number of characters\n * (as UTF-16 code units) the user can enter\n */\n minlength: {\n type: Number,\n default: void 0\n },\n /**\n * The maxlength property defines the maximum number of characters\n * (as UTF-16 code units) the user can enter\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Render as input[type=text] that looks like password field.\n * Allows to avoid unwanted password-specific browser behavior,\n * such as save or generate password prompt.\n * Useful for secret token fields.\n * Note: autocomplete=\"off\" is ignored by browsers.\n */\n asText: {\n type: Boolean,\n default: false\n },\n /**\n * Visibility of the password.\n * If this is set to `true` then the password will be shown to the user (input type will be set to `text`).\n */\n visible: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"valid\",\n \"invalid\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Triggers when the value inside the password field is\n * updated.\n *\n * @property {string} The new value\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * Updated visibility of the password\n *\n * @property {boolean} visible the new visibility state\n */\n \"update:visible\"\n ],\n setup(props, { emit }) {\n const model = useModelMigration(\"value\", \"update:value\");\n const visibility = useVModel(props, \"visible\", emit, { passive: true });\n return {\n t,\n model,\n visibility\n };\n },\n data() {\n return {\n internalHelpMessage: \"\",\n isValid: null\n };\n },\n computed: {\n computedError() {\n return this.error || this.isValid === false;\n },\n computedSuccess() {\n return this.success || this.isValid === true;\n },\n computedHelperText() {\n if (this.helperText.length > 0) {\n return this.helperText;\n }\n return this.internalHelpMessage;\n },\n rules() {\n const { minlength } = this;\n return {\n minlength: minlength ?? (this.checkPasswordStrength ? passwordPolicy?.minLength : void 0)\n };\n },\n trailingButtonLabelPassword() {\n return this.visibility ? t(\"Hide password\") : t(\"Show password\");\n },\n propsAndAttrsToForward() {\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)))\n };\n }\n },\n watch: {\n model(newValue) {\n this.isValid = void 0;\n this.internalHelpMessage = \"\";\n if (newValue && this.checkPasswordStrength) {\n this.checkPassword(newValue);\n }\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n },\n handleInput(event) {\n this.model = event.target.value;\n },\n toggleVisibility() {\n this.visibility = !this.visibility;\n },\n checkPassword: debounce(async function(password) {\n try {\n const { data } = await axios.post(generateOcsUrl(\"apps/password_policy/api/v1/validate\"), { password });\n this.isValid = data.ocs.data.passed;\n if (data.ocs.data.passed) {\n this.internalHelpMessage = t(\"Password is secure\");\n this.$emit(\"valid\");\n return;\n }\n this.internalHelpMessage = data.ocs.data.reason;\n this.$emit(\"invalid\");\n } catch (e) {\n logger.error(\"Password policy returned an error\", e);\n }\n }, 500)\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", attrs: { \"type\": _vm.visibility || _vm.asText ? \"text\" : \"password\", \"trailing-button-label\": _vm.trailingButtonLabelPassword, \"helper-text\": _vm.computedHelperText, \"error\": _vm.computedError, \"success\": _vm.computedSuccess, \"minlength\": _vm.rules.minlength, \"input-class\": { \"password-field__input--secure-text\": !_vm.visibility && _vm.asText } }, on: { \"trailing-button-click\": _vm.toggleVisibility, \"input\": _vm.handleInput }, scopedSlots: _vm._u([!!_vm.$scopedSlots.icon || !!_vm.$slots.default || !!_vm.$scopedSlots.default ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })];\n }, proxy: true } : null, { key: \"trailing-button-icon\", fn: function() {\n return [_vm.visibility ? _c(\"IconEyeOff\", { attrs: { \"size\": 18 } }) : _c(\"IconEye\", { attrs: { \"size\": 18 } })];\n }, proxy: true }], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"0800cef1\"\n);\nconst NcPasswordField = __component__.exports;\nexport {\n NcPasswordField as N\n};\n//# sourceMappingURL=NcPasswordField-2woxTjbl.mjs.map\n","import { b as mdiUndo, c as mdiClose, d as mdiArrowRight } from \"./mdi-DkJglNiS.mjs\";\nimport { N as NcInputField } from \"./NcInputField-Cym5GuvB.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, b as t53, c as t18, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t18, t53);\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcTextField\",\n components: {\n NcIconSvgWrapper,\n NcInputField\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n /**\n * The `aria-label` to set on the trailing button\n * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n *\n * @default 'Clear text'|'Save changes'|'Undo changes'\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n // Custom props\n /**\n * Specifies which material design icon should be used for the trailing\n * button.\n *\n * The `'arrowRight'` value is deprecated and will be removed in the next major version.\n * Use `'arrowEnd'` instead.\n *\n * @type {'close'|'arrowEnd'|'arrowRight'|'undo'}\n */\n trailingButtonIcon: {\n type: String,\n default: \"close\",\n validator: (value) => [\n \"close\",\n \"arrowEnd\",\n \"arrowRight\",\n \"undo\"\n ].includes(value)\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n mdiArrowRight,\n mdiClose,\n mdiUndo\n };\n },\n computed: {\n /**\n * Is the trailing button icon directional.\n * Meaning the icon needs to be flipped on RTL text flow.\n */\n isArrow() {\n return this.trailingButtonIcon === \"arrowEnd\" || this.trailingButtonIcon === \"arrowRight\";\n },\n propsAndAttrsToForward() {\n const predefinedLabels = {\n arrowEnd: t(\"Save changes\"),\n arrowRight: t(\"Save changes\"),\n close: t(\"Clear text\"),\n undo: t(\"Undo changes\")\n };\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key))),\n // Adjust aria-label for predefined trailing buttons\n trailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon]\n };\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", scopedSlots: _vm._u([!!_vm.$scopedSlots.icon || !!_vm.$slots.default || !!_vm.$scopedSlots.default ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })];\n }, proxy: true } : null, _vm.type !== \"search\" ? { key: \"trailing-button-icon\", fn: function() {\n return [_vm.isArrow ? _c(\"NcIconSvgWrapper\", { attrs: { \"directional\": \"\", \"path\": _vm.mdiArrowRight } }) : _c(\"NcIconSvgWrapper\", { attrs: { \"path\": _vm.trailingButtonIcon === \"undo\" ? _vm.mdiUndo : _vm.mdiClose } })];\n }, proxy: true } : null], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTextField = __component__.exports;\nexport {\n NcTextField as N\n};\n//# sourceMappingURL=NcTextField-CQp8XS4C.mjs.map\n","import '../assets/NcActionInput-ESkvZDNh.css';\nimport { defineAsyncComponent } from \"vue\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, j as t51, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-DqVa7c7G.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport NcDateTimePickerNative from \"../Components/NcDateTimePickerNative.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-2woxTjbl.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CQp8XS4C.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t51);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../Components/NcColorPicker.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../Components/NcDateTimePicker.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../Components/NcSelect.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].indexOf(type) > -1;\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Date, Number, Array],\n default: void 0\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n * otherwise root element will inherit incorrect aria-hidden.\n */\n ariaHidden: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: null\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n }\n },\n emits: [\n \"input\",\n \"submit\",\n \"change\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n * ! DatetimePicker only send the value\n *\n * @type {string|Date}\n */\n \"update:modelValue\",\n /** Same as `update:modelValue` but with a different event name */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target ? event.target.value : event;\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled } }, [_c(\"span\", { staticClass: \"action-input\", class: {\n \"action-input-picker--disabled\": _vm.disabled,\n \"action-input--visible-label\": _vm.labelOutside && _vm.label\n }, on: { \"mouseleave\": _vm.onLeave } }, [_c(\"span\", { staticClass: \"action-input__icon-wrapper\" }, [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"action-input__icon\", class: [_vm.isIconUrl ? \"action-input__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } })];\n })], 2), _c(\"form\", { ref: \"form\", staticClass: \"action-input__form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"action-input__container\" }, [_vm.label && _vm.labelOutside && !_vm.isNativePicker ? _c(\"label\", { staticClass: \"action-input__text-label\", class: { \"action-input__text-label--hidden\": !_vm.labelOutside }, attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"action-input__input-container\" }, [_vm.datePickerType ? _c(\"NcDateTimePicker\", _vm._b({ ref: \"datetimepicker\", staticClass: \"action-input__datetimepicker\", staticStyle: { \"z-index\": \"99999999999\" }, attrs: { \"value\": _vm.model, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"type\": _vm.datePickerType, \"input-class\": [\"mx-input\", { focusable: _vm.isFocusable }] }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcDateTimePicker\", _vm.$attrs, false)) : _vm.isNativePicker ? _c(\"NcDateTimePickerNative\", _vm._b({ staticClass: \"action-input__datetimepicker\", attrs: { \"id\": _vm.idNativeDateTimePicker, \"value\": _vm.model, \"label\": _vm.label, \"type\": _vm.nativeDatePickerType, \"input-class\": { focusable: _vm.isFocusable } }, on: { \"update:model-value\": function($event) {\n _vm.model = $event;\n }, \"change\": function($event) {\n return _vm.$emit(\"change\", $event);\n } } }, \"NcDateTimePickerNative\", _vm.$attrs, false)) : _vm.isMultiselectType ? _c(\"NcSelect\", _vm._g(_vm._b({ staticClass: \"action-input__multi\", attrs: { \"value\": _vm.model, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"append-to-body\": _vm.$attrs.appendToBody || _vm.$attrs[\"append-to-body\"] || false, \"input-class\": { focusable: _vm.isFocusable } } }, \"NcSelect\", _vm.$attrs, false), _vm.$listeners)) : _vm.type === \"password\" ? _c(\"NcPasswordField\", _vm._g(_vm._b({ attrs: { \"id\": _vm.inputId, \"value\": _vm.model, \"label\": _vm.label, \"label-outside\": !_vm.label || _vm.labelOutside, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"input-class\": { focusable: _vm.isFocusable }, \"show-trailing-button\": _vm.showTrailingButton && !_vm.disabled }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcPasswordField\", _vm.$attrs, false), _vm.$listeners)) : _vm.type === \"color\" ? _c(\"div\", { staticClass: \"action-input__container\" }, [_vm.label && _vm.type === \"color\" ? _c(\"label\", { staticClass: \"action-input__text-label\", class: { \"action-input__text-label--hidden\": !_vm.labelOutside }, attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"action-input__input-container\" }, [_c(\"NcColorPicker\", _vm._g(_vm._b({ staticClass: \"colorpicker__trigger\", attrs: { \"id\": \"inputId\", \"value\": _vm.model }, on: { \"update:model-value\": _vm.onInput, \"submit\": function($event) {\n return _vm.$refs.form.requestSubmit();\n } } }, \"NcColorPicker\", _vm.$attrs, false), _vm.$listeners), [_c(\"button\", { staticClass: \"colorpicker__preview\", class: { focusable: _vm.isFocusable }, style: { \"background-color\": _vm.model } })])], 1)]) : _c(\"NcTextField\", _vm._g(_vm._b({ attrs: { \"id\": _vm.inputId, \"value\": _vm.model, \"label\": _vm.label, \"label-outside\": !_vm.label || _vm.labelOutside, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"input-class\": { focusable: _vm.isFocusable }, \"type\": _vm.type, \"trailing-button-icon\": \"arrowRight\", \"trailing-button-label\": _vm.trailingButtonLabel, \"show-trailing-button\": _vm.showTrailingButton && !_vm.disabled }, on: { \"trailing-button-click\": function($event) {\n return _vm.$refs.form.requestSubmit();\n }, \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcTextField\", _vm.$attrs, false), _vm.$listeners))], 1)])])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7f2f2ad1\"\n);\nconst NcActionInput = __component__.exports;\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-CMLDgnF_.mjs.map\n","import '../assets/NcActionRouter-CyyaRzft.css';\nimport { A as ActionTextMixin } from \"../chunks/actionText-BMig9Egt.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionRouter\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n props: {\n /**\n * router-link to prop [https://router.vuejs.org/api/#to](https://router.vuejs.org/api/#to)\n */\n to: {\n type: [String, Object],\n required: true\n },\n /**\n * router-link exact prop [https://router.vuejs.org/api/#exact](https://router.vuejs.org/api/#exact)\n */\n exact: {\n type: Boolean,\n default: false\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"RouterLink\", { staticClass: \"action-router focusable\", attrs: { \"to\": _vm.to, \"aria-label\": _vm.ariaLabel, \"exact\": _vm.exact, \"title\": _vm.title, \"rel\": \"nofollow noreferrer noopener\", \"role\": _vm.isInSemanticMenu && \"menuitem\" }, nativeOn: { \"click\": function($event) {\n return _vm.onClick.apply(null, arguments);\n } } }, [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"action-router__icon\", class: [_vm.isIconUrl ? \"action-router__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } })];\n }), _vm.name ? _c(\"span\", { staticClass: \"action-router__longtext-wrapper\" }, [_c(\"strong\", { staticClass: \"action-router__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _c(\"br\"), _c(\"span\", { staticClass: \"action-router__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } })]) : _vm.isLongText ? _c(\"span\", { staticClass: \"action-router__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } }) : _c(\"span\", { staticClass: \"action-router__text\" }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"4dae1ff7\"\n);\nconst NcActionRouter = __component__.exports;\nexport {\n NcActionRouter as default\n};\n//# sourceMappingURL=NcActionRouter.mjs.map\n","import '../assets/NcActionText-BMO_HKvg.css';\nimport { A as ActionTextMixin } from \"../chunks/actionText-BMig9Egt.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionText\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"span\", { staticClass: \"action-text\", on: { \"click\": _vm.onClick } }, [_vm._t(\"icon\", function() {\n return [_vm.icon !== \"\" ? _c(\"span\", { staticClass: \"action-text__icon\", class: [_vm.isIconUrl ? \"action-text__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } }) : _vm._e()];\n }), _vm.name ? _c(\"span\", { staticClass: \"action-text__longtext-wrapper\" }, [_c(\"strong\", { staticClass: \"action-text__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _c(\"span\", { staticClass: \"action-text__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } })]) : _vm.isLongText ? _c(\"span\", { staticClass: \"action-text__longtext\", domProps: { \"textContent\": _vm._s(_vm.text) } }) : _c(\"span\", { staticClass: \"action-text__text\" }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"2fe7eb92\"\n);\nconst NcActionText = __component__.exports;\nexport {\n NcActionText as default\n};\n//# sourceMappingURL=NcActionText.mjs.map\n","import { loadState } from \"@nextcloud/initial-state\";\nimport { inject } from \"vue\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction once(func) {\n let wasCalled = false;\n let result;\n return (...args) => {\n if (!wasCalled) {\n wasCalled = true;\n result = func(...args);\n }\n return result;\n };\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nlet realAppName = \"missing-app-name\";\ntry {\n realAppName = appName;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appName`.\");\n}\nconst APP_NAME = realAppName;\nlet realAppVersion = \"\";\ntry {\n realAppVersion = appVersion;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.\");\n}\nconst APP_VERSION = realAppVersion;\nfunction useAppName() {\n return inject(\"appName\", APP_NAME);\n}\nconst useLocalizedAppName = once(() => {\n const apps = loadState(\"core\", \"apps\", []);\n const realAppName2 = useAppName();\n return apps.find(({ id }) => id === realAppName2)?.name ?? realAppName2;\n});\nexport {\n APP_VERSION as A,\n useAppName as a,\n useLocalizedAppName as u\n};\n//# sourceMappingURL=appName-qk1L3dsY.mjs.map\n","import '../assets/NcAppContent-DyFYmhvX.css';\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { useSwipe } from \"@vueuse/core\";\nimport { Splitpanes, Pane } from \"splitpanes\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, H as t27, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useLocalizedAppName, a as useAppName } from \"./appName-qk1L3dsY.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"splitpanes/dist/splitpanes.css\";\nregister(t27);\nconst _sfc_main$1 = {\n name: \"NcAppContentDetailsToggle\",\n components: {\n ArrowRight,\n ArrowLeft,\n NcButton\n },\n setup() {\n return {\n isRtl,\n isMobile: useIsMobile()\n };\n },\n computed: {\n title() {\n return t(\"Go back to the list\");\n }\n },\n watch: {\n isMobile: function() {\n this.toggleAppNavigationButton(this.isMobile);\n }\n },\n mounted() {\n this.toggleAppNavigationButton(this.isMobile);\n },\n beforeDestroy() {\n if (this.isMobile) {\n this.toggleAppNavigationButton(false);\n }\n },\n methods: {\n toggleAppNavigationButton(hide = true) {\n const appNavigationToggle = document.querySelector(\".app-navigation .app-navigation-toggle\");\n if (appNavigationToggle) {\n appNavigationToggle.style.display = hide ? \"none\" : null;\n if (hide === true) {\n emit(\"toggle-navigation\", { open: false });\n }\n }\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcButton\", { staticClass: \"app-details-toggle\", class: { \"app-details-toggle--mobile\": _vm.isMobile }, attrs: { \"aria-label\": _vm.title, \"title\": _vm.title, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.isRtl ? _c(\"ArrowLeft\", { attrs: { \"size\": 20 } }) : _c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"d0b1a8bc\"\n);\nconst NcAppContentDetailsToggle = __component__$1.exports;\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nconst instanceName = getCapabilities().theming?.name ?? \"Nextcloud\";\nconst _sfc_main = {\n name: \"NcAppContent\",\n components: {\n NcAppContentDetailsToggle,\n Pane,\n Splitpanes\n },\n props: {\n /**\n * Allows to disable the control by swipe of the app navigation open state\n *\n * @deprecated will be removed with the next version - use `disableSwipe` instead\n */\n allowSwipeNavigation: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Allows to disable the control by swipe of the app navigation open state.\n */\n disableSwipe: {\n type: Boolean,\n default: false\n },\n /**\n * Allows you to set the default width of the resizable list in % on vertical-split\n * or respectively the default height on horizontal-split.\n *\n * Must be between `listMinWidth` and `listMaxWidth`.\n */\n listSize: {\n type: Number,\n default: 20\n },\n /**\n * Allows you to set the minimum width of the list column in % on vertical-split\n * or respectively the minimum height on horizontal-split.\n */\n listMinWidth: {\n type: Number,\n default: 15\n },\n /**\n * Allows you to set the maximum width of the list column in % on vertical-split\n * or respectively the maximum height on horizontal-split.\n */\n listMaxWidth: {\n type: Number,\n default: 40\n },\n /**\n * Specify the config key for the pane config sizes\n * Default is the global var appName if you use the webpack-vue-config\n */\n paneConfigKey: {\n type: String,\n default: \"\"\n },\n /**\n * When in mobile view, only the list or the details are shown.\n *\n * If you provide a list, you need to provide a variable\n * that will be set to true by the user when an element of\n * the list gets selected. The details will then show a back\n * arrow to return to the list that will update this prop to false.\n */\n showDetails: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Content layout used when there is a list together with content:\n * - `vertical-split` - a 2-column layout with list and default content separated vertically\n * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n * On mobile screen `no-split` layout is forced.\n */\n layout: {\n type: String,\n default: \"vertical-split\",\n validator(value) {\n return [\"no-split\", \"vertical-split\", \"horizontal-split\"].includes(value);\n }\n },\n /**\n * Specify the `

` page heading\n */\n pageHeading: {\n type: String,\n default: null\n },\n /**\n * Allow setting the page's ``\n *\n * If a page heading is set it defaults to `{pageHeading} - {appName} - {instanceName}` e.g. `Favorites - Files - MyPersonalCloud`.\n * When the page heading and the app name is the same only one is used, e.g. `Files - Files - MyPersonalCloud` is shown as `Files - MyPersonalCloud`.\n * When setting the prop then the following format will be used: `{pageTitle} - {instanceName}`\n */\n pageTitle: {\n type: String,\n default: null\n }\n },\n emits: [\n \"update:showDetails\",\n \"resize-list\",\n \"resize:list\"\n ],\n setup() {\n return {\n appName: useAppName(),\n localizedAppName: useLocalizedAppName(),\n isMobile: useIsMobile(),\n isRtl\n };\n },\n data() {\n return {\n contentHeight: 0,\n swiping: {},\n listPaneSize: this.restorePaneConfig()\n };\n },\n computed: {\n paneConfigID() {\n if (this.paneConfigKey !== \"\") {\n return `pane-list-size-${this.paneConfigKey}`;\n }\n try {\n return `pane-list-size-${this.appName}`;\n } catch {\n logger.info(\"[NcAppContent]: falling back to global nextcloud pane config\");\n return \"pane-list-size-nextcloud\";\n }\n },\n detailsPaneSize() {\n if (this.listPaneSize) {\n return 100 - this.listPaneSize;\n }\n return this.paneDefaults.details.size;\n },\n paneDefaults() {\n return {\n list: {\n size: this.listSize,\n min: this.listMinWidth,\n max: this.listMaxWidth\n },\n // set the inverse values of the details column\n // based on the provided (or default) values of the list column\n details: {\n size: 100 - this.listSize,\n min: 100 - this.listMaxWidth,\n max: 100 - this.listMinWidth\n }\n };\n },\n realPageTitle() {\n const entries = /* @__PURE__ */ new Set();\n if (this.pageTitle) {\n for (const part of this.pageTitle.split(\" - \")) {\n entries.add(part);\n }\n } else if (this.pageHeading) {\n for (const part of this.pageHeading.split(\" - \")) {\n entries.add(part);\n }\n if (entries.size > 0) {\n entries.add(this.localizedAppName);\n }\n } else {\n return null;\n }\n entries.add(instanceName);\n return [...entries.values()].join(\" - \");\n }\n },\n watch: {\n realPageTitle: {\n immediate: true,\n handler() {\n if (this.realPageTitle !== null) {\n document.title = this.realPageTitle;\n }\n }\n },\n paneConfigKey: {\n immediate: true,\n handler() {\n this.restorePaneConfig();\n }\n }\n },\n mounted() {\n if (this.allowSwipeNavigation && !this.disableSwipe) {\n this.swiping = useSwipe(this.$el, {\n onSwipeEnd: this.handleSwipe\n });\n }\n this.restorePaneConfig();\n },\n methods: {\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n */\n handleSwipe(e, direction) {\n const minSwipeX = 70;\n const touchZone = 300;\n if (Math.abs(this.swiping.lengthX) > minSwipeX) {\n if (this.swiping.coordsStart.x < touchZone / 2 && direction === \"right\") {\n emit(\"toggle-navigation\", {\n open: true\n });\n } else if (this.swiping.coordsStart.x < touchZone * 1.5 && direction === \"left\") {\n emit(\"toggle-navigation\", {\n open: false\n });\n }\n }\n },\n handlePaneResize(event) {\n const listPaneSize = parseInt(event[0].size, 10);\n browserStorage.setItem(this.paneConfigID, JSON.stringify(listPaneSize));\n this.listPaneSize = listPaneSize;\n this.$emit(\"resize:list\", { size: listPaneSize });\n this.$emit(\"resize-list\", { size: listPaneSize });\n logger.debug(\"AppContent pane config\", { size: listPaneSize });\n },\n // browserStorage is not reactive, we need to update this manually\n restorePaneConfig() {\n const listPaneSize = parseInt(browserStorage.getItem(this.paneConfigID), 10);\n if (!isNaN(listPaneSize) && listPaneSize !== this.listPaneSize) {\n logger.debug(\"AppContent pane config\", listPaneSize);\n this.listPaneSize = listPaneSize;\n return listPaneSize;\n }\n },\n /**\n * The user clicked the back arrow from the details view\n */\n hideDetails() {\n this.$emit(\"update:showDetails\", false);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"main\", { staticClass: \"app-content no-snapper\", class: { \"app-content--has-list\": !!_vm.$scopedSlots.list }, attrs: { \"id\": \"app-content-vue\" } }, [_vm.pageHeading ? _c(\"h1\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(_vm.pageHeading) + \" \")]) : _vm._e(), !!_vm.$scopedSlots.list ? [_vm.isMobile || _vm.layout === \"no-split\" ? _c(\"div\", { staticClass: \"app-content-wrapper app-content-wrapper--no-split\", class: {\n \"app-content-wrapper--show-details\": _vm.showDetails,\n \"app-content-wrapper--show-list\": !_vm.showDetails,\n \"app-content-wrapper--mobile\": _vm.isMobile\n } }, [_vm.showDetails ? _c(\"NcAppContentDetailsToggle\", { nativeOn: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.hideDetails.apply(null, arguments);\n } } }) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.showDetails, expression: \"!showDetails\" }], staticClass: \"app-content-wrapper__list\" }, [_vm._t(\"list\")], 2), _vm.showDetails ? _vm._t(\"default\") : _vm._e()], 2) : _vm.layout === \"vertical-split\" || _vm.layout === \"horizontal-split\" ? _c(\"div\", { staticClass: \"app-content-wrapper\" }, [_c(\"Splitpanes\", { staticClass: \"default-theme\", class: {\n \"splitpanes--horizontal\": _vm.layout === \"horizontal-split\",\n \"splitpanes--vertical\": _vm.layout === \"vertical-split\"\n }, attrs: { \"horizontal\": _vm.layout === \"horizontal-split\", \"rtl\": _vm.isRtl }, on: { \"resized\": _vm.handlePaneResize } }, [_c(\"Pane\", { staticClass: \"splitpanes__pane-list\", attrs: { \"size\": _vm.listPaneSize || _vm.paneDefaults.list.size, \"min-size\": _vm.paneDefaults.list.min, \"max-size\": _vm.paneDefaults.list.max } }, [_vm._t(\"list\")], 2), _c(\"Pane\", { staticClass: \"splitpanes__pane-details\", attrs: { \"size\": _vm.detailsPaneSize, \"min-size\": _vm.paneDefaults.details.min, \"max-size\": _vm.paneDefaults.details.max } }, [_vm._t(\"default\")], 2)], 1)], 1) : _vm._e()] : _vm._e(), !_vm.$scopedSlots.list ? _vm._t(\"default\") : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"42ca73dd\"\n);\nconst NcAppContent = __component__.exports;\nexport {\n NcAppContent as N\n};\n//# sourceMappingURL=NcAppContent-7ziLICwJ.mjs.map\n","import { onKeyStroke } from \"@vueuse/core\";\nimport { i as isMac } from \"../chunks/platform-CC2ecGvV.mjs\";\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst derivedKeysRegex = /^[a-zA-Z0-9]$/;\nconst nonAsciiPrintableRegex = /^[^\\x20-\\x7F]$/;\nfunction shouldIgnoreEvent(event) {\n if (!(event.target instanceof HTMLElement) || event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement || event.target.isContentEditable) {\n return true;\n }\n return Array.from(document.getElementsByClassName(\"modal-mask\")).filter((el) => el.checkVisibility()).length > 0;\n}\nfunction eventHandler(callback, options) {\n return (event) => {\n const ctrlKeyPressed = isMac ? event.metaKey : event.ctrlKey;\n if (ctrlKeyPressed !== Boolean(options.ctrl)) {\n return;\n } else if (event.altKey !== Boolean(options.alt)) {\n return;\n } else if (options.shift !== void 0 && event.shiftKey !== Boolean(options.shift)) {\n return;\n } else if (shouldIgnoreEvent(event)) {\n return;\n }\n if (options.prevent) {\n event.preventDefault();\n }\n if (options.stop) {\n event.stopPropagation();\n }\n callback(event);\n };\n}\nfunction useHotKey(keysOrFilter, callback = () => {\n}, options = {}) {\n if (disableKeyboardShortcuts) {\n return () => {\n };\n }\n const validateKeyEvent = (event, key) => {\n if (event.key === key) {\n return true;\n }\n if (options.caseSensitive) {\n const isKeyInLowerCase = key === key.toLowerCase();\n const isEventKeyInLowerCase = event.key === event.key.toLowerCase();\n if (isKeyInLowerCase !== isEventKeyInLowerCase) {\n return false;\n }\n }\n if (derivedKeysRegex.test(key) && nonAsciiPrintableRegex.test(event.key)) {\n return event.code.replace(/^(?:Key|Digit|Numpad)/, \"\") === key.toUpperCase();\n }\n return event.key.toLowerCase() === key.toLowerCase();\n };\n const keyFilter = (event) => {\n if (typeof keysOrFilter === \"function\") {\n return keysOrFilter(event);\n } else if (typeof keysOrFilter === \"string\") {\n return validateKeyEvent(event, keysOrFilter);\n } else if (Array.isArray(keysOrFilter)) {\n return keysOrFilter.some((key) => validateKeyEvent(event, key));\n } else {\n return true;\n }\n };\n const stopKeyDown = onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keydown\",\n dedupe: true,\n passive: !options.prevent\n });\n const stopKeyUp = options.push ? onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keyup\",\n passive: !options.prevent\n }) : () => {\n };\n return () => {\n stopKeyDown();\n stopKeyUp();\n };\n}\nexport {\n useHotKey\n};\n//# sourceMappingURL=useHotKey.mjs.map\n","import '../assets/NcAppNavigationToggle-D1K2TRZ-.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { D as DockRight } from \"./DockRight-B0D52yCO.mjs\";\nimport { r as register, E as t20, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nconst _sfc_main$1 = {\n name: \"DockLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon dock-left-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M20 18H9V6H20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst DockLeft = __component__$1.exports;\nregister(t20);\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst _sfc_main = {\n name: \"NcAppNavigationToggle\",\n components: {\n DockLeft,\n DockRight,\n NcButton\n },\n props: {\n /**\n * Tracks whether the toggle has been clicked or not.\n * If it has been clicked, emits a boolean indicating its opened status\n */\n open: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"update:open\"],\n setup() {\n return {\n isRtl,\n disableKeyboardShortcuts\n };\n },\n computed: {\n label() {\n return this.open ? t(\"Close navigation\") : t(\"Open navigation {shortcut}\", { shortcut: disableKeyboardShortcuts ? \"\" : \"[n]\" }).trim();\n }\n },\n methods: {\n /**\n * Once the toggle has been clicked, emits the toggle status\n * so parent components can gauge the status of the navigation button\n */\n toggleNavigation() {\n this.$emit(\"update:open\", !this.open);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-toggle-wrapper\" }, [_c(\"NcButton\", { staticClass: \"app-navigation-toggle\", attrs: { \"aria-controls\": \"app-navigation-vue\", \"aria-expanded\": _vm.open ? \"true\" : \"false\", \"aria-keyshortcuts\": _vm.disableKeyboardShortcuts ? \"\" : \"n\", \"aria-label\": _vm.label, \"title\": _vm.label, \"variant\": \"tertiary\" }, on: { \"click\": _vm.toggleNavigation }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.isRtl ? _c(\"DockRight\", { attrs: { \"size\": 20 } }) : _c(\"DockLeft\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"d28016dd\"\n);\nconst NcAppNavigationToggle = __component__.exports;\nexport {\n NcAppNavigationToggle as N\n};\n//# sourceMappingURL=NcAppNavigationToggle-DQZ2LWw4.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"ChevronDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon chevron-down-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst ChevronDown = __component__.exports;\nexport {\n ChevronDown as C\n};\n//# sourceMappingURL=ChevronDown-DFQfzh63.mjs.map\n","import '../assets/NcInputConfirmCancel-DRZviUxz.css';\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { r as register, s as t14, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t14);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n NcButton,\n ArrowRight,\n Close\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n value: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"input\",\n \"confirm\",\n \"cancel\"\n ],\n setup() {\n return { isLegacy34 };\n },\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.value;\n },\n set(newValue) {\n this.$emit(\"input\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-input-confirm\", class: { \"app-navigation-input-confirm--legacy\": _vm.isLegacy34 } }, [_c(\"form\", { on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.confirm.apply(null, arguments);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.cancel.apply(null, arguments);\n }, \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.valueModel, expression: \"valueModel\" }], ref: \"input\", staticClass: \"app-navigation-input-confirm__input\", attrs: { \"type\": \"text\", \"placeholder\": _vm.placeholder }, domProps: { \"value\": _vm.valueModel }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.valueModel = $event.target.value;\n } } }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.labelConfirm, \"type\": \"submit\", \"variant\": \"primary\" }, on: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.confirm.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.labelCancel, \"type\": \"reset\", \"variant\": _vm.primary ? \"primary\" : \"tertiary\" }, on: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.cancel.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) })], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"f9a3bb35\"\n);\nconst NcInputConfirmCancel = __component__.exports;\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-44rhjqEA.mjs.map\n","import '../assets/NcLoadingIcon-C7S2_wmi.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcLoadingIcon\",\n props: {\n /**\n * Specify the size of the loading icon.\n */\n size: {\n type: Number,\n default: 20\n },\n /**\n * The appearance of the loading icon.\n * 'auto' adjusts to the Nextcloud color scheme,\n * 'light' and 'dark' are static.\n */\n appearance: {\n type: String,\n validator(value) {\n return [\"auto\", \"light\", \"dark\"].includes(value);\n },\n default: \"auto\"\n },\n /**\n * Specify what is loading.\n */\n name: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n colors() {\n const colors = [\"#777\", \"#CCC\"];\n if (this.appearance === \"light\") {\n return colors;\n } else if (this.appearance === \"dark\") {\n return colors.reverse();\n }\n return [\"var(--color-loading-light)\", \"var(--color-loading-dark)\"];\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"material-design-icon loading-icon\", attrs: { \"aria-label\": _vm.name, \"role\": \"img\" } }, [_c(\"svg\", { attrs: { \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"fill\": _vm.colors[0], \"d\": \"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z\" } }), _c(\"path\", { attrs: { \"fill\": _vm.colors[1], \"d\": \"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z\" } }, [_vm.name ? _c(\"title\", [_vm._v(_vm._s(_vm.name))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"94ff8098\"\n);\nconst NcLoadingIcon = __component__.exports;\nexport {\n NcLoadingIcon as default\n};\n//# sourceMappingURL=NcLoadingIcon.mjs.map\n","import '../assets/NcAppNavigationItem-D4T7UQqz.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-C7Dy9Bph.mjs\";\nimport { r as register, S as t21, a as t, b as t53, T as t23 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-44rhjqEA.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pencil-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst Pencil = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon undo-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst Undo = __component__$2.exports;\nregister(t21);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n setup() {\n return { isLegacy34 };\n },\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcButton\", { staticClass: \"icon-collapse\", class: {\n \"icon-collapse--active\": _vm.active,\n \"icon-collapse--open\": _vm.open\n }, attrs: { \"aria-label\": _vm.labelButton, \"variant\": _vm.active && _vm.isLegacy34 ? \"tertiary-on-primary\" : \"tertiary\" }, on: { \"click\": _vm.onClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.open ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"3c547cb0\"\n);\nconst NcAppNavigationIconCollapsible = __component__$1.exports;\nregister(t23, t53);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => \"app-navigation-item-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `<router-link />` that points to that route.\n * By leaving this blank, the root element will be a `<li>`.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Pass in `true` if you want the matching behaviour to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile(),\n isLegacy34\n };\n },\n data() {\n return {\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false,\n actionsBoundariesElement: void 0\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n hasUtils() {\n if (this.$scopedSlots.actions || this.$scopedSlots.counter || this.editable || this.undo) {\n return true;\n }\n return false;\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Does this item have children and is collapsing allowed via the prop?\n *\n * @return {boolean} True, if the item can be collapsed\n */\n isCollapsible() {\n return this.allowCollapse && !!this.$scopedSlots.default;\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"app-navigation-entry-wrapper\", class: {\n \"app-navigation-entry--opened\": _vm.opened,\n \"app-navigation-entry--pinned\": _vm.pinned,\n \"app-navigation-entry--collapsible\": _vm.isCollapsible()\n }, attrs: { \"id\": _vm.id } }, [_c(_vm.isRouterLink ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.isRouterLink ? true : false, \"to\": _vm.to, \"exact\": _vm.isRouterLink ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"div\", { staticClass: \"app-navigation-entry\", class: {\n \"app-navigation-entry--editing\": _vm.editingActive,\n \"app-navigation-entry--deleted\": _vm.undo,\n \"app-navigation-entry--legacy\": _vm.isLegacy34,\n active: _vm.to && isActive || _vm.active\n } }, [!_vm.undo ? _c(\"a\", { staticClass: \"app-navigation-entry-link\", attrs: { \"aria-current\": _vm.active || _vm.to && isActive ? \"page\" : void 0, \"aria-description\": _vm.ariaDescription, \"aria-expanded\": _vm.$scopedSlots.default ? _vm.opened.toString() : void 0, \"href\": _vm.href || routerLinkHref || \"#\", \"target\": _vm.isExternal(_vm.href) ? \"_blank\" : void 0, \"title\": _vm.title || _vm.name }, on: { \"blur\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"focus\": _vm.handleFocus, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.handleTab.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"app-navigation-entry-icon\", class: { [_vm.icon]: _vm.icon } }, [_vm.loading ? _c(\"NcLoadingIcon\") : _vm._t(\"icon\", null, { \"active\": _vm.active || _vm.to && isActive })], 2), !_vm.editingActive ? _c(\"span\", { staticClass: \"app-navigation-entry__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _vm.editingActive ? _c(\"div\", { staticClass: \"editingContainer\" }, [_c(\"NcInputConfirmCancel\", { ref: \"editingInput\", attrs: { \"placeholder\": _vm.editPlaceholder !== \"\" ? _vm.editPlaceholder : _vm.name, \"primary\": _vm.to && isActive || _vm.active }, on: { \"cancel\": _vm.cancelEditing, \"confirm\": _vm.handleEditingDone }, model: { value: _vm.editingValue, callback: function($$v) {\n _vm.editingValue = $$v;\n }, expression: \"editingValue\" } })], 1) : _vm._e()]) : _vm._e(), _vm.undo ? _c(\"div\", { staticClass: \"app-navigation-entry__deleted\" }, [_c(\"div\", { staticClass: \"app-navigation-entry__deleted-description\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])]) : _vm._e(), _vm.hasUtils && !_vm.editingActive ? _c(\"div\", { staticClass: \"app-navigation-entry__utils\", class: { \"app-navigation-entry__utils--display-actions\": _vm.forceDisplayActions || _vm.menuOpenLocalValue || _vm.menuOpen } }, [_vm.$scopedSlots.counter ? _c(\"div\", { staticClass: \"app-navigation-entry__counter-wrapper\" }, [_vm._t(\"counter\")], 2) : _vm._e(), _vm.$scopedSlots.actions || _vm.editable && !_vm.editingActive || _vm.undo ? _c(\"NcActions\", { ref: \"actions\", staticClass: \"app-navigation-entry__actions\", attrs: { \"inline\": _vm.inlineActions, \"container\": \"#app-navigation-vue\", \"boundaries-element\": _vm.actionsBoundariesElement, \"placement\": _vm.menuPlacement, \"open\": _vm.menuOpen, \"type\": \"tertiary\", \"force-menu\": _vm.forceMenu, \"default-icon\": _vm.menuIcon }, on: { \"update:open\": _vm.onMenuToggle }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"menu-icon\")];\n }, proxy: true }], null, true) }, [_vm.editable && !_vm.editingActive ? _c(\"NcActionButton\", { attrs: { \"aria-label\": _vm.editButtonAriaLabel }, on: { \"click\": _vm.handleEdit }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Pencil\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.editLabel) + \" \")]) : _vm._e(), _vm.undo ? _c(\"NcActionButton\", { attrs: { \"aria-label\": _vm.undoButtonAriaLabel }, on: { \"click\": _vm.handleUndo }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Undo\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1) : _vm._e(), _vm.isCollapsible() ? _c(\"NcAppNavigationIconCollapsible\", { attrs: { \"active\": _vm.to && isActive || _vm.active, \"open\": _vm.opened }, on: { \"click\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.toggleCollapse.apply(null, arguments);\n } } }) : _vm._e(), _vm._t(\"extra\")], 2)];\n } }], null, true) }), _vm.canHaveChildren && _vm.$scopedSlots.default ? _c(\"ul\", { staticClass: \"app-navigation-entry__children\" }, [_vm._t(\"default\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"bcb47ab4\"\n);\nconst NcAppNavigationItem = __component__.exports;\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-Dg-2s6bP.mjs.map\n","import '../assets/NcAppNavigationSearch-DWhTZbjb.css';\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { useSlots, ref, watch, nextTick } from \"vue\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { N as NcInputField } from \"./NcInputField-Cym5GuvB.mjs\";\nimport { r as register, p as t45, q as t16, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t16, t45);\nconst __default__ = {\n name: \"NcAppNavigationSearch\",\n model: {\n event: \"update:modelValue\",\n prop: \"modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ Object.assign(__default__, {\n props: {\n /**\n * Current search input\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit }) {\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainer = ref();\n const hasActions = () => !!slots.actions;\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n });\n watch(showActions, (show) => {\n window.clearTimeout(timeoutId.value);\n if (show) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !show;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n emit(\"update:modelValue\", \"\");\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainer.value.querySelector(\"button\")?.focus());\n }\n }\n return { __sfc: true, emit, slots, inputElement, inputHasFocus, transitionTimeout, actionsContainer, hasActions, showActions, timeoutId, hideActions, onCloseSearch, IconClose: Close, NcInputField, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"app-navigation-search\", class: {\n \"app-navigation-search--has-actions\": _setup.hasActions()\n } }, [_c(_setup.NcInputField, { ref: \"inputElement\", staticClass: \"app-navigation-search__input\", attrs: { \"aria-label\": _vm.label, \"label-outside\": \"\", \"placeholder\": _vm.placeholder ?? _vm.label, \"show-trailing-button\": \"\", \"trailing-button-label\": _setup.t(\"Clear search\"), \"type\": \"search\", \"value\": _vm.modelValue }, on: { \"update:value\": function($event) {\n return _vm.$emit(\"update:modelValue\", $event);\n }, \"trailing-button-click\": _setup.onCloseSearch }, scopedSlots: _vm._u([{ key: \"trailing-button-icon\", fn: function() {\n return [_c(_setup.IconClose, { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _setup.hasActions() ? _c(\"div\", { ref: \"actionsContainer\", staticClass: \"app-navigation-search__actions\", class: {\n \"app-navigation-search__actions--hidden\": !_setup.showActions,\n \"hidden-visually\": _setup.hideActions\n } }, [_vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"df568544\"\n);\nconst NcAppNavigationSearch = __component__.exports;\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-DIO0S2TU.mjs.map\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useClipboard, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark as usePreferredDark$1, usePreferredLanguages, usePreferredReducedMotion, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';\nimport { defineComponent, ref, h, watch, computed, reactive, getCurrentInstance, onMounted, isVue2, watchEffect, shallowRef, nextTick, toRefs } from 'vue-demi';\nimport { isClient, toValue, noop, isObject, tryOnScopeDispose, isIOS, directiveHooks, pausableWatch, tryOnMounted, toRef, useToggle, notNullish, promiseTimeout, until, useDebounceFn, useThrottleFn, tryOnUnmounted } from '@vueuse/shared';\n\nconst OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnClickOutside\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onClickOutside$1(target, (e) => {\n emit(\"trigger\", e);\n }, props.options);\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst defaultWindow = isClient ? window : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst vOnClickOutside = {\n [directiveHooks.mounted](el, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === \"function\") {\n el.__onClickOutside_stop = onClickOutside(el, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n el.__onClickOutside_stop = onClickOutside(el, handler, Object.assign({ capture }, options));\n }\n },\n [directiveHooks.unmounted](el) {\n el.__onClickOutside_stop();\n }\n};\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\n\nconst vOnKeyStroke = {\n [directiveHooks.mounted](el, binding) {\n var _a, _b;\n const keys = (_b = (_a = binding.arg) == null ? void 0 : _a.split(\",\")) != null ? _b : true;\n if (typeof binding.value === \"function\") {\n onKeyStroke(keys, binding.value, {\n target: el\n });\n } else {\n const [handler, options] = binding.value;\n onKeyStroke(keys, handler, {\n target: el,\n ...options\n });\n }\n }\n};\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst OnLongPress = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnLongPress\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onLongPress(\n target,\n (e) => {\n emit(\"trigger\", e);\n },\n props.options\n );\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst vOnLongPress = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n onLongPress(el, binding.value, { modifiers: binding.modifiers });\n else\n onLongPress(el, ...binding.value);\n }\n};\n\nconst UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseActiveElement\",\n setup(props, { slots }) {\n const data = reactive({\n element: useActiveElement()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBattery = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBattery\",\n setup(props, { slots }) {\n const data = reactive(useBattery(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBrowserLocation\",\n setup(props, { slots }) {\n const data = reactive(useBrowserLocation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseClipboard = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseClipboard\",\n props: [\n \"source\",\n \"read\",\n \"navigator\",\n \"copiedDuring\",\n \"legacy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useClipboard(props));\n return () => {\n var _a;\n return (_a = slots.default) == null ? void 0 : _a.call(slots, data);\n };\n }\n});\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, isVue2 ? void 0 : instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update);\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(key);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nconst UseColorMode = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseColorMode\",\n props: [\"selector\", \"attribute\", \"modes\", \"onChanged\", \"storageKey\", \"storage\", \"emitAuto\"],\n setup(props, { slots }) {\n const mode = useColorMode(props);\n const data = reactive({\n mode,\n system: mode.system,\n store: mode.store\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDark\",\n props: [\"selector\", \"attribute\", \"valueDark\", \"valueLight\", \"onChanged\", \"storageKey\", \"storage\"],\n setup(props, { slots }) {\n const isDark = useDark(props);\n const data = reactive({\n isDark,\n toggleDark: useToggle(isDark)\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceMotion\",\n setup(props, { slots }) {\n const data = reactive(useDeviceMotion());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceOrientation\",\n setup(props, { slots }) {\n const data = reactive(useDeviceOrientation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicePixelRatio\",\n setup(props, { slots }) {\n const data = reactive({\n pixelRatio: useDevicePixelRatio()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicesList\",\n props: [\"onUpdated\", \"requestPermissions\", \"constraints\"],\n setup(props, { slots }) {\n const data = reactive(useDevicesList(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDocumentVisibility\",\n setup(props, { slots }) {\n const data = reactive({\n visibility: useDocumentVisibility()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDraggable = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDraggable\",\n props: [\n \"storageKey\",\n \"storageType\",\n \"initialValue\",\n \"exact\",\n \"preventDefault\",\n \"stopPropagation\",\n \"pointerTypes\",\n \"as\",\n \"handle\",\n \"axis\",\n \"onStart\",\n \"onMove\",\n \"onEnd\",\n \"disabled\",\n \"buttons\",\n \"containerElement\"\n ],\n setup(props, { slots }) {\n const target = ref();\n const handle = computed(() => {\n var _a;\n return (_a = props.handle) != null ? _a : target.value;\n });\n const containerElement = computed(() => {\n var _a;\n return (_a = props.containerElement) != null ? _a : void 0;\n });\n const disabled = computed(() => !!props.disabled);\n const storageValue = props.storageKey && useStorage$1(\n props.storageKey,\n toValue(props.initialValue) || { x: 0, y: 0 },\n isClient$1 ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0\n );\n const initialValue = storageValue || props.initialValue || { x: 0, y: 0 };\n const onEnd = (position, event) => {\n var _a;\n (_a = props.onEnd) == null ? void 0 : _a.call(props, position, event);\n if (!storageValue)\n return;\n storageValue.value.x = position.x;\n storageValue.value.y = position.y;\n };\n const data = reactive(useDraggable(target, {\n ...props,\n handle,\n initialValue,\n onEnd,\n disabled,\n containerElement\n }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));\n };\n }\n});\n\nconst UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementBounding\",\n props: [\"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementBounding(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nconst vElementHover = {\n [directiveHooks.mounted](el, binding) {\n const value = binding.value;\n if (typeof value === \"function\") {\n const isHovered = useElementHover(el);\n watch(isHovered, (v) => value(v));\n } else {\n const [handler, options] = value;\n const isHovered = useElementHover(el, options);\n watch(isHovered, (v) => handler(v));\n }\n }\n};\n\nconst UseElementSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementSize\",\n props: [\"width\", \"height\", \"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementSize$1(target, { width: props.width, height: props.height }, { box: props.box }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nconst vElementSize = {\n [directiveHooks.mounted](el, binding) {\n var _a;\n const handler = typeof binding.value === \"function\" ? binding.value : (_a = binding.value) == null ? void 0 : _a[0];\n const options = typeof binding.value === \"function\" ? [] : binding.value.slice(1);\n const { width, height } = useElementSize(el, ...options);\n watch([width, height], ([width2, height2]) => handler({ width: width2, height: height2 }));\n }\n};\n\nconst UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementVisibility\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive({\n isVisible: useElementVisibility$1(target)\n });\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold\n }\n );\n return elementIsVisible;\n}\n\nconst vElementVisibility = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const isVisible = useElementVisibility(el);\n watch(isVisible, (v) => handler(v), { immediate: true });\n } else {\n const [handler, options] = binding.value;\n const isVisible = useElementVisibility(el, options);\n watch(isVisible, (v) => handler(v), { immediate: true });\n }\n }\n};\n\nconst UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseEyeDropper\",\n props: {\n sRGBHex: String\n },\n setup(props, { slots }) {\n const data = reactive(useEyeDropper());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseFullscreen\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useFullscreen(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseGeolocation\",\n props: [\"enableHighAccuracy\", \"maximumAge\", \"timeout\", \"navigator\"],\n setup(props, { slots }) {\n const data = reactive(useGeolocation(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseIdle = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseIdle\",\n props: [\"timeout\", \"events\", \"listenForVisibilityChange\", \"initialState\"],\n setup(props, { slots }) {\n const data = reactive(useIdle(props.timeout, props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst UseImage = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseImage\",\n props: [\n \"src\",\n \"srcset\",\n \"sizes\",\n \"as\",\n \"alt\",\n \"class\",\n \"loading\",\n \"crossorigin\",\n \"referrerPolicy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useImage(props));\n return () => {\n if (data.isLoading && slots.loading)\n return slots.loading(data);\n else if (data.error && slots.error)\n return slots.error(data.error);\n if (slots.default)\n return slots.default(data);\n return h(props.as || \"img\", props);\n };\n }\n});\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst vInfiniteScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useInfiniteScroll(el, binding.value);\n else\n useInfiniteScroll(el, ...binding.value);\n }\n};\n\nconst vIntersectionObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useIntersectionObserver(el, binding.value);\n else\n useIntersectionObserver(el, ...binding.value);\n }\n};\n\nconst UseMouse = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouse\",\n props: [\"touch\", \"resetOnTouchEnds\", \"initialValue\"],\n setup(props, { slots }) {\n const data = reactive(useMouse(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouseElement\",\n props: [\"handleOutside\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMouseInElement(target, props));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMousePressed\",\n props: [\"touch\", \"initialValue\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMousePressed({ ...props, target }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseNetwork = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNetwork\",\n setup(props, { slots }) {\n const data = reactive(useNetwork());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseNow = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNow\",\n props: [\"interval\"],\n setup(props, { slots }) {\n const data = reactive(useNow({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseObjectUrl\",\n props: [\n \"object\"\n ],\n setup(props, { slots }) {\n const object = toRef(props, \"object\");\n const url = useObjectUrl(object);\n return () => {\n if (slots.default && url.value)\n return slots.default(url);\n };\n }\n});\n\nconst UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOffsetPagination\",\n props: [\n \"total\",\n \"page\",\n \"pageSize\",\n \"onPageChange\",\n \"onPageSizeChange\",\n \"onPageCountChange\"\n ],\n emits: [\n \"page-change\",\n \"page-size-change\",\n \"page-count-change\"\n ],\n setup(props, { slots, emit }) {\n const data = reactive(useOffsetPagination({\n ...props,\n onPageChange(...args) {\n var _a;\n (_a = props.onPageChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-change\", ...args);\n },\n onPageSizeChange(...args) {\n var _a;\n (_a = props.onPageSizeChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-size-change\", ...args);\n },\n onPageCountChange(...args) {\n var _a;\n (_a = props.onPageCountChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-count-change\", ...args);\n }\n }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseOnline = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOnline\",\n setup(props, { slots }) {\n const data = reactive({\n isOnline: useOnline()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePageLeave\",\n setup(props, { slots }) {\n const data = reactive({\n isLeft: usePageLeave()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePointer = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePointer\",\n props: [\n \"pointerTypes\",\n \"initialValue\",\n \"target\"\n ],\n setup(props, { slots }) {\n const el = ref(null);\n const data = reactive(usePointer({\n ...props,\n target: props.target === \"self\" ? el : defaultWindow\n }));\n return () => {\n if (slots.default)\n return slots.default(data, { ref: el });\n };\n }\n});\n\nconst UsePointerLock = /* #__PURE__ */ defineComponent({\n name: \"UsePointerLock\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(usePointerLock(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredColorScheme\",\n setup(props, { slots }) {\n const data = reactive({\n colorScheme: usePreferredColorScheme()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredContrast\",\n setup(props, { slots }) {\n const data = reactive({\n contrast: usePreferredContrast()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredDark\",\n setup(props, { slots }) {\n const data = reactive({\n prefersDark: usePreferredDark$1()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredLanguages\",\n setup(props, { slots }) {\n const data = reactive({\n languages: usePreferredLanguages()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredReducedMotion\",\n setup(props, { slots }) {\n const data = reactive({\n motion: usePreferredReducedMotion()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst vResizeObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useResizeObserver(el, binding.value);\n else\n useResizeObserver(el, ...binding.value);\n }\n};\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n const raw_prop = toValue(prop);\n if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) {\n if (val == null)\n elRef.value.style.removeProperty(raw_prop);\n else\n elRef.value.style.setProperty(raw_prop, val);\n }\n }\n );\n return variable;\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nconst UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseScreenSafeArea\",\n props: {\n top: Boolean,\n right: Boolean,\n bottom: Boolean,\n left: Boolean\n },\n setup(props, { slots }) {\n const {\n top,\n right,\n bottom,\n left\n } = useScreenSafeArea();\n return () => {\n if (slots.default) {\n return h(\"div\", {\n style: {\n paddingTop: props.top ? top.value : \"\",\n paddingRight: props.right ? right.value : \"\",\n paddingBottom: props.bottom ? bottom.value : \"\",\n paddingLeft: props.left ? left.value : \"\",\n boxSizing: \"border-box\",\n maxHeight: \"100vh\",\n maxWidth: \"100vw\",\n overflow: \"auto\"\n }\n }, slots.default());\n }\n };\n }\n});\n\nconst vScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const state = useScroll(el, {\n onScroll() {\n handler(state);\n },\n onStop() {\n handler(state);\n }\n });\n } else {\n const [handler, options] = binding.value;\n const state = useScroll(el, {\n ...options,\n onScroll(e) {\n var _a;\n (_a = options.onScroll) == null ? void 0 : _a.call(options, e);\n handler(state);\n },\n onStop(e) {\n var _a;\n (_a = options.onStop) == null ? void 0 : _a.call(options, e);\n handler(state);\n }\n });\n }\n }\n};\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction onScrollLock() {\n let isMounted = false;\n const state = ref(false);\n return (el, binding) => {\n state.value = binding.value;\n if (isMounted)\n return;\n isMounted = true;\n const isLocked = useScrollLock(el, binding.value);\n watch(state, (v) => isLocked.value = v);\n };\n}\nconst vScrollLock = onScrollLock();\n\nconst UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimeAgo\",\n props: [\"time\", \"updateInterval\", \"max\", \"fullDateFormatter\", \"messages\", \"showSecond\"],\n setup(props, { slots }) {\n const data = reactive(useTimeAgo(() => props.time, { ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimestamp\",\n props: [\"immediate\", \"interval\", \"offset\"],\n setup(props, { slots }) {\n const data = reactive(useTimestamp({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseVirtualList\",\n props: [\n \"list\",\n \"options\",\n \"height\"\n ],\n setup(props, { slots, expose }) {\n const { list: listRef } = toRefs(props);\n const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n expose({ scrollTo });\n if (containerProps.style && typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style))\n containerProps.style.height = props.height || \"300px\";\n return () => h(\"div\", { ...containerProps }, [\n h(\"div\", { ...wrapperProps.value }, list.value.map((item) => h(\"div\", { style: { overflow: \"hidden\", height: item.height } }, slots.default ? slots.default(item) : \"Please set content!\")))\n ]);\n }\n});\n\nconst UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowFocus\",\n setup(props, { slots }) {\n const data = reactive({\n focused: useWindowFocus()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowSize\",\n props: [\"initialWidth\", \"initialHeight\"],\n setup(props, { slots }) {\n const data = reactive(useWindowSize(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseClipboard, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vResizeObserver, vScroll, vScrollLock };\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '<!-') {\n state = STATE_COMMENT;\n }\n\n tag_buffer += char;\n break;\n\n case ' ':\n case '\\n':\n if (tag_buffer === '<') {\n state = STATE_PLAINTEXT;\n output += '< ';\n tag_buffer = '';\n\n break;\n }\n\n tag_buffer += char;\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n\n else if (state === STATE_COMMENT) {\n switch (char) {\n case '>':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","function checkIfDarkTheme(el = document.body) {\n const backgroundInvertIfDark = window.getComputedStyle(el).getPropertyValue(\"--background-invert-if-dark\");\n if (backgroundInvertIfDark !== void 0) {\n return backgroundInvertIfDark === \"invert(100%)\";\n }\n return false;\n}\nconst isDarkTheme = checkIfDarkTheme();\nexport {\n checkIfDarkTheme,\n isDarkTheme\n};\n//# sourceMappingURL=isDarkTheme.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INJECTION_KEY_THEME = /* @__PURE__ */ Symbol.for(\"nc:theme:enforced\");\nexport {\n INJECTION_KEY_THEME as I\n};\n//# sourceMappingURL=constants-wIEKSp2G.mjs.map\n","import { createSharedComposable, toValue, usePreferredDark, useMutationObserver } from \"@vueuse/core\";\nimport { computed, ref, watch, readonly, inject } from \"vue\";\nimport { checkIfDarkTheme } from \"../Functions/isDarkTheme.mjs\";\nimport { I as INJECTION_KEY_THEME } from \"../chunks/constants-wIEKSp2G.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction useIsDarkThemeElement(el) {\n const element = computed(() => toValue(el) ?? document.body);\n const isDarkTheme = ref(checkIfDarkTheme(element.value));\n const isDarkSystemTheme = usePreferredDark();\n function updateIsDarkTheme() {\n isDarkTheme.value = checkIfDarkTheme(element.value);\n }\n useMutationObserver(element, updateIsDarkTheme, { attributes: true });\n watch(element, updateIsDarkTheme);\n watch(isDarkSystemTheme, updateIsDarkTheme, { immediate: true });\n return readonly(isDarkTheme);\n}\nconst useInternalIsDarkTheme = createSharedComposable(() => useIsDarkThemeElement());\nfunction useIsDarkTheme() {\n const isDarkTheme = useInternalIsDarkTheme();\n const enforcedTheme = inject(INJECTION_KEY_THEME, void 0);\n return computed(() => {\n if (enforcedTheme?.value) {\n return enforcedTheme.value === \"dark\";\n }\n return isDarkTheme.value;\n });\n}\nexport {\n useIsDarkTheme,\n useIsDarkThemeElement\n};\n//# sourceMappingURL=useIsDarkTheme.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcAppNavigationSettings-DGkLlCyq.css';\nimport { k as mdiCogOutline, l as mdiCog } from \"./mdi-DkJglNiS.mjs\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { r as register, o as t49, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport clickOutsideOptions from \"../Mixins/clickOutsideOptions.mjs\";\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"vue\";\nimport \"../Composables/useIsDarkTheme.mjs\";\nimport \"@nextcloud/router\";\nimport \"../Functions/isDarkTheme.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/capabilities\";\nimport \"./logger-D3RVzcfQ.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nregister(t49);\nconst _sfc_main = {\n directives: {\n ClickOutside: vOnClickOutside\n },\n components: {\n NcButton,\n NcIconSvgWrapper\n },\n mixins: [\n clickOutsideOptions\n ],\n props: {\n /**\n * Text of the button\n *\n * @default 'Settings'\n */\n name: {\n type: String,\n required: false,\n default: t(\"Settings\")\n }\n },\n setup() {\n const contentId = GenRandomId();\n return {\n contentId,\n isLegacy32,\n mdiCog,\n mdiCogOutline\n };\n },\n data() {\n return {\n open: false\n };\n },\n computed: {\n clickOutsideConfig() {\n return [\n this.closeMenu,\n this.clickOutsideOptions\n ];\n }\n },\n methods: {\n closeMenu() {\n this.open = false;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: _vm.clickOutsideConfig, expression: \"clickOutsideConfig\" }], class: { open: _vm.open }, attrs: { \"id\": \"app-settings\" } }, [_c(\"div\", { attrs: { \"id\": \"app-settings__header\" } }, [_c(\"NcButton\", { staticClass: \"settings-button\", attrs: { \"aria-controls\": _vm.contentId, \"aria-expanded\": _vm.open ? \"true\" : \"false\", \"alignment\": \"start\", \"variant\": \"tertiary\", \"wide\": \"\" }, on: { \"click\": function($event) {\n _vm.open = !_vm.open;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { staticClass: \"settings-button__icon\", attrs: { \"path\": _vm.isLegacy32 ? _vm.mdiCog : _vm.mdiCogOutline } })];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1), _c(\"Transition\", { attrs: { \"name\": \"slide-up\" } }, [_c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.open, expression: \"open\" }], attrs: { \"id\": _vm.contentId } }, [_vm._t(\"default\")], 2)])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"ddd7d69d\"\n);\nconst NcAppNavigationSettings = __component__.exports;\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-3jZKd9et.mjs.map\n","import { ref } from \"vue\";\nimport { r as register, e as t33, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t33);\nconst _sfc_main = {\n __name: \"NcDialogButton\",\n props: {\n /**\n * The function that will be called when the button is pressed.\n * If the function returns `false` the click is ignored and the dialog will not be closed,\n * which is the default behavior of \"reset\"-buttons.\n *\n * @type {() => unknown|false|Promise<unknown|false>}\n */\n callback: {\n type: Function,\n required: false,\n default: () => {\n }\n },\n /**\n * The label of the button\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Optional inline SVG icon for the button\n */\n icon: {\n type: String,\n required: false,\n default: void 0\n },\n /**\n * The button type, see NcButton.\n *\n * @deprecated The usage for setting the color variant is deprecated and will be removed with v9.\n * @type {'button'|'submit'|'reset'|'primary'|'secondary'|'error'|'warning'|'success'}\n */\n type: {\n type: String,\n required: false,\n default: \"secondary\",\n validator: (type) => typeof type === \"string\" && [\"button\", \"submit\", \"reset\", \"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(type)\n },\n /**\n * See `nativeType` of `NcButton`.\n *\n * @deprecated use `type` instead - will removed with v9\n */\n nativeType: {\n type: String,\n required: false,\n default: \"button\",\n validator(value) {\n return [\"submit\", \"reset\", \"button\"].includes(value);\n }\n },\n /**\n * If the button should be shown as disabled\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * The button variant, see NcButton.\n *\n * @type {'primary'|'secondary'|'tertiary'|'error'|'warning'|'success'}\n * @since 8.24.0\n */\n variant: {\n type: String,\n required: false,\n default: \"secondary\",\n validator: (type) => typeof type === \"string\" && [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(type)\n }\n },\n emits: [\"click\"],\n setup(__props, { emit }) {\n const props = __props;\n const isLoading = ref(false);\n async function handleClick(e) {\n if (isLoading.value) {\n return;\n }\n isLoading.value = true;\n try {\n const fallback = props.nativeType === \"reset\" ? false : void 0;\n const result = await props.callback?.() ?? fallback;\n if (result !== false) {\n emit(\"click\", e, result);\n }\n } finally {\n isLoading.value = false;\n }\n }\n return { __sfc: true, props, emit, isLoading, handleClick, t, NcButton, NcIconSvgWrapper, NcLoadingIcon };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcButton, { attrs: { \"aria-label\": _vm.label, \"disabled\": _vm.disabled, \"type\": _vm.type, \"native-type\": _vm.nativeType, \"variant\": _vm.variant }, on: { \"click\": _setup.handleClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_setup.isLoading ? _c(_setup.NcLoadingIcon, { attrs: {\n \"name\": _setup.t(\"Loading …\")\n /* TRANSLATORS: The button is in a loading state*/\n } }) : _vm.icon !== void 0 ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": _vm.icon } }) : _vm._e()];\n })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcDialogButton = __component__.exports;\nexport {\n NcDialogButton as N\n};\n//# sourceMappingURL=NcDialogButton-D5yuDtSF.mjs.map\n","import '../assets/NcAppSettingsDialog-Cu7QAD8V.css';\nimport Vue, { defineComponent, inject, provide, ref, shallowRef, computed, onBeforeUnmount } from \"vue\";\nimport { useVModel, toRef } from \"@vueuse/core\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-DoGsI2_6.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-qk1L3dsY.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, N as t50, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialogVersion\",\n setup(__props) {\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const localizedAppName = useLocalizedAppName();\n return { __sfc: true, legacy, localizedAppName, APP_VERSION };\n }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_3gUpl\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_z65Mt\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_-HOSG\",\n appSettingsDialogVersion,\n appSettingsDialogVersion__legacy\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: [_vm.$style.appSettingsDialogVersion, { [_vm.$style.appSettingsDialogVersion__legacy]: _setup.legacy }] }, [_vm._v(\" \" + _vm._s(_setup.localizedAppName) + \" \" + _vm._s(_setup.APP_VERSION) + \" \")]);\n};\nvar _sfc_staticRenderFns$1 = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAppSettingsDialogVersion = __component__$1.exports;\nregister(t50);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: {\n open: { type: Boolean },\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: true },\n noVersion: { type: Boolean, default: false }\n },\n emits: [\"update:open\"],\n setup(__props, { emit }) {\n const props = __props;\n const open = useVModel(props, \"open\", emit, { passive: true });\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScroller = ref();\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = shallowRef([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScroller.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n Vue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return { __sfc: true, props, emit, open, settingsScroller, isMobile, selectedSection, linkClicked, registeredSections, hasNavigation, hasNavigationIcons, unfocusNavigationItem, sectionsOrderMap, handleSettingsNavigationClick, handleCloseModal, handleScroll, registerSection, unregisterSection, NcDialog, NcVNodes, NcAppSettingsDialogVersion, t, isLegacy34 };\n }\n});\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _setup.open ? _c(_setup.NcDialog, { staticClass: \"app-settings\", class: { \"app-settings--legacy\": _setup.isLegacy34 }, attrs: { \"content-classes\": [\"app-settings__content\", { \"app-settings__non-legacy\": !_vm.legacy }], \"navigation-classes\": \"app-settings__navigation\", \"additional-trap-elements\": _vm.additionalTrapElements, \"container\": _vm.container, \"close-on-click-outside\": \"\", \"navigation-aria-label\": _setup.t(\"Settings navigation\"), \"size\": \"large\", \"name\": _vm.name }, on: { \"update:open\": _setup.handleCloseModal }, scopedSlots: _vm._u([_setup.hasNavigation ? { key: \"navigation\", fn: function({ isCollapsed }) {\n return [!_setup.isLegacy34 ? _c(\"div\", { staticClass: \"app-settings__title\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), !isCollapsed ? _c(\"ul\", { staticClass: \"navigation-list\" }, _vm._l(_setup.registeredSections, function(section) {\n return _c(\"li\", { key: section.id }, [_c(\"a\", { staticClass: \"navigation-list__link\", class: {\n \"navigation-list__link--active\": section.id === _setup.selectedSection,\n \"navigation-list__link--icon\": _setup.hasNavigationIcons\n }, attrs: { \"aria-current\": `${section.id === _setup.selectedSection}`, \"href\": `#settings-section_${section.id}`, \"tabindex\": \"0\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _setup.handleSettingsNavigationClick(section.id);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _setup.handleSettingsNavigationClick(section.id);\n } } }, [_setup.hasNavigationIcons ? _c(\"div\", { staticClass: \"navigation-list__link-icon\" }, [section.icon ? _c(_setup.NcVNodes, { attrs: { \"vnodes\": section.icon } }) : _vm._e()], 1) : _vm._e(), _c(\"span\", { staticClass: \"navigation-list__link-text\" }, [_vm._v(\" \" + _vm._s(section.name) + \" \")])])]);\n }), 0) : _vm._e()];\n } } : null], null, true) }, [_c(\"div\", { ref: \"settingsScroller\", on: { \"scroll\": _setup.handleScroll } }, [_vm._t(\"default\"), !_vm.noVersion ? _c(_setup.NcAppSettingsDialogVersion) : _vm._e()], 2)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"1b265bb0\"\n);\nconst NcAppSettingsDialog = __component__.exports;\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-JB67n8yt.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-D-FcvAWd.css';\nimport { defineComponent } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-CsGyNFSh.mjs\";\nimport { r as register, z as t31, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return { __sfc: true, NcAppSettingsSection, t };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_mXEx-\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_wB7uY\",\n appSettingsSectionShortcuts\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcAppSettingsSection, { attrs: { \"id\": \"keyboard-shortcuts\", \"name\": _setup.t(\"Keyboard shortcuts\") } }, [_c(\"div\", { class: _vm.$style.appSettingsSectionShortcuts }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAppSettingsShortcutsSection = __component__.exports;\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-BpUlnEbQ.mjs.map\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nexport { nanoid, customAlphabet }\n","\n/**\n * vue-simple-portal\n * version: 0.1.5,\n * (c) Thorsten Lünborg, 2021 - present\n * LICENCE: Apache-2.0\n * http://github.com/linusborg/vue-simple-portal\n*/\nimport Vue from 'vue';\nimport { nanoid } from 'nanoid/non-secure';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar config = {\n selector: \"vue-portal-target-\".concat(nanoid())\n};\nvar setSelector = function setSelector(selector) {\n return config.selector = selector;\n};\nvar isBrowser = typeof window !== 'undefined' && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== undefined;\n\nvar TargetContainer = Vue.extend({\n // as an abstract component, it doesn't appear in\n // the $parent chain of components.\n // which means the next parent of any component rendered inside of this oen\n // will be the parent from which is was sent\n // @ts-expect-error\n abstract: true,\n name: 'PortalOutlet',\n props: ['nodes', 'tag'],\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n render: function render(h) {\n var nodes = this.updatedNodes && this.updatedNodes();\n if (!nodes) return h();\n return nodes.length === 1 && !nodes[0].text ? nodes : h(this.tag || 'DIV', nodes);\n },\n destroyed: function destroyed() {\n var el = this.$el;\n el && el.parentNode.removeChild(el);\n }\n});\n\nvar Portal = Vue.extend({\n name: 'VueSimplePortal',\n props: {\n disabled: {\n type: Boolean\n },\n prepend: {\n type: Boolean\n },\n selector: {\n type: String,\n default: function _default() {\n return \"#\".concat(config.selector);\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n }\n },\n render: function render(h) {\n if (this.disabled) {\n var nodes = this.$scopedSlots && this.$scopedSlots.default();\n if (!nodes) return h();\n return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag, nodes);\n }\n\n return h();\n },\n created: function created() {\n if (!this.getTargetEl()) {\n this.insertTargetEl();\n }\n },\n updated: function updated() {\n var _this = this;\n\n // We only update the target container component\n // if the scoped slot function is a fresh one\n // The new slot syntax (since Vue 2.6) can cache unchanged slot functions\n // and we want to respect that here.\n this.$nextTick(function () {\n if (!_this.disabled && _this.slotFn !== _this.$scopedSlots.default) {\n _this.container.updatedNodes = _this.$scopedSlots.default;\n }\n\n _this.slotFn = _this.$scopedSlots.default;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unmount();\n },\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmount() : this.$nextTick(this.mount);\n }\n }\n },\n methods: {\n // This returns the element into which the content should be mounted.\n getTargetEl: function getTargetEl() {\n if (!isBrowser) return;\n return document.querySelector(this.selector);\n },\n insertTargetEl: function insertTargetEl() {\n if (!isBrowser) return;\n var parent = document.querySelector('body');\n var child = document.createElement(this.tag);\n child.id = this.selector.substring(1);\n parent.appendChild(child);\n },\n mount: function mount() {\n if (!isBrowser) return;\n var targetEl = this.getTargetEl();\n var el = document.createElement('DIV');\n\n if (this.prepend && targetEl.firstChild) {\n targetEl.insertBefore(el, targetEl.firstChild);\n } else {\n targetEl.appendChild(el);\n }\n\n this.container = new TargetContainer({\n el: el,\n parent: this,\n propsData: {\n tag: this.tag,\n nodes: this.$scopedSlots.default\n }\n });\n },\n unmount: function unmount() {\n if (this.container) {\n this.container.$destroy();\n delete this.container;\n }\n }\n }\n});\n\nfunction install(_Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _Vue.component(options.name || 'portal', Portal);\n\n if (options.defaultSelector) {\n setSelector(options.defaultSelector);\n }\n}\n\nif (typeof window !== 'undefined' && window.Vue && window.Vue === Vue) {\n // plugin was inlcuded directly in a browser\n Vue.use(install);\n}\n\nexport default install;\nexport { Portal, config, setSelector };\n","import '../assets/NcIconToggleSwitch-DO_sv5_o.css';\nimport { defineComponent, useCssVars, computed } from \"vue\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst svg = `<svg\n\txmlns=\"http://www.w3.org/2000/svg\"\n\tviewBox=\"0 0 24 12\">\n\t<path d=\"M17,1H7A5,5 0 0,0 2,6 5,5 0 0,0 7,11H17A5,5 0 0,0 22,6 5,5 0 0,0 17,1Z\" />\n\t<circle\n\t\tcy=\"6\"\n\t\tr=\"3\"\n\t\tfill=\"var(--color-main-background)\" />\n</svg>`;\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcIconToggleSwitch\",\n props: {\n checked: { type: Boolean },\n size: { default: 34 },\n inline: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n useCssVars((_vm, _setup) => ({\n \"2d1b8583\": _setup.color,\n \"78386a55\": _setup.cx\n }));\n const color = computed(() => props.checked ? \"var(--color-primary-element)\" : \"var(--color-text-maxcontrast)\");\n const cx = computed(() => props.checked ? \"calc(17 / 24 * 100%)\" : \"calc(7 / 24 * 100%)\");\n return { __sfc: true, svg, props, color, cx, NcIconSvgWrapper };\n }\n});\nconst iconToggleSwitch = \"_iconToggleSwitch_NggOU\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_Tdewt\",\n iconToggleSwitch\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcIconSvgWrapper, { class: _vm.$style.iconToggleSwitch, attrs: { \"svg\": _setup.svg, \"size\": _vm.size, \"inline\": _vm.inline } });\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcIconToggleSwitch = __component__.exports;\nexport {\n NcIconToggleSwitch as N\n};\n//# sourceMappingURL=NcIconToggleSwitch-B19dt_oD.mjs.map\n","import { inject } from \"vue\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INSIDE_RADIO_GROUP_KEY = /* @__PURE__ */ Symbol.for(\"insideRadioGroup\");\nfunction useInsideRadioGroup() {\n return inject(INSIDE_RADIO_GROUP_KEY, void 0);\n}\nexport {\n INSIDE_RADIO_GROUP_KEY as I,\n useInsideRadioGroup as u\n};\n//# sourceMappingURL=useNcRadioGroup-D6llQmAl.mjs.map\n","import '../assets/NcCheckboxRadioSwitch-DCSWiHVq.css';\nimport { computed, onMounted, useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcIconToggleSwitch } from \"./NcIconToggleSwitch-B19dt_oD.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, J as n, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u as useInsideRadioGroup } from \"./useNcRadioGroup-D6llQmAl.mjs\";\nconst _sfc_main$6 = {\n name: \"CheckboxBlankOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-blank-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst CheckboxBlankOutline = __component__$6.exports;\nconst _sfc_main$5 = {\n name: \"CheckboxMarkedIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$5 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-marked-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n null\n);\nconst CheckboxMarked = __component__$5.exports;\nconst _sfc_main$4 = {\n name: \"MinusBoxIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon minus-box-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst MinusBox = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"RadioboxBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon radiobox-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst RadioboxBlank = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"RadioboxMarkedIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon radiobox-marked-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst RadioboxMarked = __component__$2.exports;\nconst TYPE_CHECKBOX = \"checkbox\";\nconst TYPE_RADIO = \"radio\";\nconst TYPE_SWITCH = \"switch\";\nconst TYPE_BUTTON = \"button\";\nconst _sfc_main$1 = {\n name: \"NcCheckboxContent\",\n components: {\n NcLoadingIcon,\n NcIconToggleSwitch\n },\n props: {\n /**\n * Class for the icon element\n */\n iconClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Class for the text element\n */\n textClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Type of the input. checkbox, radio, switch, or button.\n *\n * Only use button when used in a `tablist` container and the\n * `tab` role is set.\n *\n * @type {'checkbox'|'radio'|'switch'|'button'}\n */\n type: {\n type: String,\n default: \"checkbox\",\n validator: (type) => [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_SWITCH,\n TYPE_BUTTON\n ].includes(type)\n },\n /**\n * Toggle the alternative button style\n */\n buttonVariant: {\n type: Boolean,\n default: false\n },\n /**\n * True if the entry is checked\n */\n isChecked: {\n type: Boolean,\n default: false\n },\n /**\n * Indeterminate state\n */\n indeterminate: {\n type: Boolean,\n default: false\n },\n /**\n * Loading state\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Icon size\n */\n iconSize: {\n type: Number,\n default: 24\n },\n /**\n * Label id attribute\n */\n labelId: {\n type: String,\n required: true\n },\n /**\n * Description id attribute\n */\n descriptionId: {\n type: String,\n required: true\n }\n },\n computed: {\n isButtonType() {\n return this.type === TYPE_BUTTON;\n },\n isSwitchType() {\n return this.type === TYPE_SWITCH;\n },\n /**\n * Returns the proper Material icon depending on the select case\n *\n * @return {object}\n */\n checkboxRadioIconElement() {\n if (this.type === TYPE_RADIO) {\n if (this.isChecked) {\n return RadioboxMarked;\n }\n return RadioboxBlank;\n }\n if (this.indeterminate) {\n return MinusBox;\n }\n if (this.isChecked) {\n return CheckboxMarked;\n }\n return CheckboxBlankOutline;\n }\n }\n};\nvar _sfc_render$1 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"checkbox-content\", class: {\n [\"checkbox-content-\" + _vm.type]: true,\n \"checkbox-content--button-variant\": _vm.buttonVariant,\n \"checkbox-content--has-text\": !!_vm.$slots.default\n } }, [_c(\"span\", { staticClass: \"checkbox-content__icon\", class: {\n \"checkbox-content__icon--checked\": _vm.isChecked,\n [_vm.iconClass]: true\n }, attrs: { \"aria-hidden\": true, \"inert\": \"\" } }, [_vm._t(\"icon\", function() {\n return [_vm.loading ? _c(\"NcLoadingIcon\") : _vm.isSwitchType ? _c(\"NcIconToggleSwitch\", { attrs: { \"checked\": _vm.isChecked, \"size\": _vm.iconSize, \"inline\": \"\" } }) : !_vm.buttonVariant ? _c(_vm.checkboxRadioIconElement, { tag: \"component\", attrs: { \"size\": _vm.iconSize } }) : _vm._e()];\n }, { \"checked\": _vm.isChecked, \"loading\": _vm.loading })], 2), _vm.$slots.default || _vm.$slots.description ? _c(\"span\", { staticClass: \"checkbox-content__wrapper\" }, [_vm.$slots.default ? _c(\"span\", { staticClass: \"checkbox-content__text\", class: _vm.textClass, attrs: { \"id\": _vm.labelId } }, [_vm._t(\"default\")], 2) : _vm._e(), !_vm.isButtonType && _vm.$slots.description ? _c(\"span\", { staticClass: \"checkbox-content__description\", attrs: { \"id\": _vm.descriptionId } }, [_vm._t(\"description\")], 2) : _vm._e()]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"dc2e9d6a\"\n);\nconst NcCheckboxContent = __component__$1.exports;\nregister();\nconst __default__ = {\n name: \"NcCheckboxRadioSwitch\",\n components: {\n NcCheckboxContent\n },\n // We need to pass attributes to the input element\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Unique id attribute of the input\n */\n id: {\n type: String,\n default: () => \"checkbox-radio-switch-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Unique id attribute of the wrapper element\n */\n wrapperId: {\n type: String,\n default: null\n },\n /**\n * Input name. Required for radio, optional for checkbox, and ignored\n * for button.\n */\n name: {\n type: String,\n default: null\n },\n /**\n * Required if no text is set.\n * The aria-label is forwarded to the input or button.\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Type of the input. checkbox, radio, switch, or button.\n *\n * Only use button when used in a `tablist` container and the\n * `tab` role is set.\n *\n * @type {'checkbox'|'radio'|'switch'|'button'}\n */\n type: {\n type: String,\n default: \"checkbox\",\n validator: (type) => [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_SWITCH,\n TYPE_BUTTON\n ].includes(type)\n },\n /**\n * Toggle the alternative button style\n *\n * @deprecated - Use `NcRadioGroup` instead\n */\n buttonVariant: {\n type: Boolean,\n default: false\n },\n /**\n * Are the elements are all direct siblings?\n * If so they will be grouped horizontally or vertically\n *\n * @type {'no'|'horizontal'|'vertical'}\n * @deprecated - Use `NcRadioGroup` instead\n */\n buttonVariantGrouped: {\n type: String,\n default: \"no\",\n validator: (v) => [\"no\", \"vertical\", \"horizontal\"].includes(v)\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n checked: {\n type: [Boolean, Array, String],\n default: void 0\n },\n /**\n * Checkbox value\n */\n modelValue: {\n type: [Boolean, Array, String],\n default: false\n },\n /**\n * Value to be synced on check\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Disabled state\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Indeterminate state\n */\n indeterminate: {\n type: Boolean,\n default: false\n },\n /**\n * Required state\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Loading state\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Wrapping element tag\n *\n * When `type` is set to `button` this will be ignored\n *\n * Defaults to `span`\n */\n wrapperElement: {\n type: String,\n default: null\n },\n /**\n * Description\n *\n * This is unsupported when using button has type\n */\n description: {\n type: String,\n default: null\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:checked\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup(props) {\n const radioGroup = useInsideRadioGroup();\n const internalType = computed(() => radioGroup?.value ? TYPE_RADIO : props.type);\n onMounted(() => radioGroup?.value.register(false));\n const model = useModelMigration(\"checked\", \"update:checked\");\n const internalModelValue = computed({\n get() {\n if (radioGroup?.value) {\n return radioGroup.value.modelValue;\n }\n return model.value;\n },\n set(value) {\n if (radioGroup?.value) {\n radioGroup.value.onUpdate(value);\n } else {\n model.value = value;\n }\n }\n });\n return {\n internalType,\n internalModelValue,\n labelId: GenRandomId(),\n descriptionId: GenRandomId()\n };\n },\n computed: {\n dataAttrs() {\n return Object.fromEntries(Object.entries(this.$attrs).filter(([key]) => key.startsWith(\"data-\")));\n },\n nonDataAttrs() {\n return Object.fromEntries(Object.entries(this.$attrs).filter(([key]) => !key.startsWith(\"data-\")));\n },\n isButtonType() {\n return this.internalType === TYPE_BUTTON;\n },\n computedWrapperElement() {\n if (this.isButtonType) {\n return \"button\";\n }\n if (this.wrapperElement !== null) {\n return this.wrapperElement;\n }\n return \"span\";\n },\n listeners() {\n if (this.isButtonType) {\n return {\n click: this.onToggle\n };\n }\n return {\n change: this.onToggle\n };\n },\n iconSize() {\n return this.internalType === TYPE_SWITCH ? 36 : 24;\n },\n cssIconSize() {\n return this.iconSize + \"px\";\n },\n cssIconHeight() {\n return this.internalType === TYPE_SWITCH ? \"16px\" : this.cssIconSize;\n },\n /**\n * Return the input type.\n * Switch is not an official type\n *\n * @return {string}\n */\n inputType() {\n const nativeTypes = [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_BUTTON\n ];\n if (nativeTypes.includes(this.internalType)) {\n return this.internalType;\n }\n return TYPE_CHECKBOX;\n },\n /**\n * ARIA role for the input. A switch renders as a native checkbox, so it\n * needs an explicit `switch` role to be announced correctly.\n *\n * @return {string|undefined}\n */\n inputRole() {\n return this.internalType === TYPE_SWITCH ? \"switch\" : void 0;\n },\n /**\n * Check if that entry is checked\n * If value is defined, we use that as the checked value\n * If not, we expect true/false in checked state\n *\n * @return {boolean}\n */\n isChecked() {\n if (this.value !== null) {\n if (Array.isArray(this.internalModelValue)) {\n return [...this.internalModelValue].indexOf(this.value) > -1;\n }\n return this.internalModelValue === this.value;\n }\n return this.internalModelValue === true;\n },\n hasIndeterminate() {\n return [\n TYPE_CHECKBOX,\n TYPE_RADIO\n ].includes(this.inputType);\n }\n },\n mounted() {\n if (this.name && this.internalType === TYPE_CHECKBOX) {\n if (!Array.isArray(this.internalModelValue)) {\n throw new Error(\"When using groups of checkboxes, the updated value will be an array.\");\n }\n }\n if (this.name && this.internalType === TYPE_SWITCH) {\n throw new Error(\"Switches are not made to be used for data sets. Please use checkboxes instead.\");\n }\n if (typeof this.internalModelValue !== \"boolean\" && this.internalType === TYPE_SWITCH) {\n throw new Error(\"Switches can only be used with boolean as modelValue prop.\");\n }\n },\n methods: {\n t,\n n,\n onToggle(event) {\n if (this.disabled || event.target.tagName.toLowerCase() === \"a\") {\n return;\n }\n if (this.internalType === TYPE_RADIO) {\n this.internalModelValue = this.value;\n return;\n }\n if (this.internalType === TYPE_SWITCH) {\n this.internalModelValue = !this.isChecked;\n return;\n }\n if (typeof this.internalModelValue === \"boolean\") {\n this.internalModelValue = !this.internalModelValue;\n return;\n }\n if (this.isChecked) {\n this.internalModelValue = this.internalModelValue.filter((v) => v !== this.value);\n } else {\n this.internalModelValue = [...this.internalModelValue, this.value];\n }\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"739f019a\": _vm.cssIconSize,\n \"16409f00\": _vm.cssIconHeight\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.computedWrapperElement, _vm._g(_vm._b({ tag: \"component\", staticClass: \"checkbox-radio-switch\", class: {\n [\"checkbox-radio-switch-\" + _vm.internalType]: _vm.internalType,\n \"checkbox-radio-switch--checked\": _vm.isChecked,\n \"checkbox-radio-switch--disabled\": _vm.disabled,\n \"checkbox-radio-switch--indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : false,\n \"checkbox-radio-switch--button-variant\": _vm.buttonVariant,\n \"checkbox-radio-switch--button-variant-v-grouped\": _vm.buttonVariant && _vm.buttonVariantGrouped === \"vertical\",\n \"checkbox-radio-switch--button-variant-h-grouped\": _vm.buttonVariant && _vm.buttonVariantGrouped === \"horizontal\",\n \"button-vue\": _vm.isButtonType\n }, attrs: { \"id\": _vm.wrapperId, \"aria-label\": _vm.isButtonType && _vm.ariaLabel ? _vm.ariaLabel : void 0, \"type\": _vm.isButtonType ? \"button\" : null } }, \"component\", _vm.isButtonType ? _vm.$attrs : _vm.dataAttrs, false), _vm.isButtonType ? _vm.listeners : null), [!_vm.isButtonType ? _c(\"input\", _vm._g(_vm._b({ staticClass: \"checkbox-radio-switch__input\", attrs: { \"id\": _vm.id, \"aria-labelledby\": !_vm.isButtonType && !_vm.ariaLabel ? _vm.labelId : null, \"aria-describedby\": !_vm.isButtonType && (_vm.description || _vm.$slots.description) ? _vm.descriptionId : _vm.nonDataAttrs[\"aria-describedby\"], \"aria-label\": _vm.ariaLabel || void 0, \"disabled\": _vm.disabled, \"type\": _vm.inputType, \"role\": _vm.inputRole, \"required\": _vm.required, \"name\": _vm.name }, domProps: { \"value\": _vm.value, \"checked\": _vm.isChecked, \"indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : null } }, \"input\", _vm.nonDataAttrs, false), _vm.listeners)) : _vm._e(), _c(\"NcCheckboxContent\", { staticClass: \"checkbox-radio-switch__content\", attrs: { \"id\": !_vm.isButtonType ? `${_vm.id}-label` : void 0, \"icon-class\": \"checkbox-radio-switch__icon\", \"text-class\": \"checkbox-radio-switch__text\", \"type\": _vm.internalType, \"indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : false, \"button-variant\": _vm.buttonVariant, \"is-checked\": _vm.isChecked, \"loading\": _vm.loading, \"label-id\": _vm.labelId, \"description-id\": _vm.descriptionId, \"icon-size\": _vm.iconSize }, nativeOn: { \"click\": function($event) {\n return _vm.onToggle.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\")];\n }, proxy: true }, _vm.$slots.description || _vm.description ? { key: \"description\", fn: function() {\n return [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })];\n }, proxy: true } : null], null, true) }, [_vm._t(\"default\")], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"8cf5299e\"\n);\nconst NcCheckboxRadioSwitch = __component__.exports;\nexport {\n NcCheckboxRadioSwitch as N\n};\n//# sourceMappingURL=NcCheckboxRadioSwitch-BAjRm8PQ.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // URL that begins with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting, UrlOpenSyms);\n\n // Closing bracket component. This character WILL be included in the URL.\n // Must come after qsNonAccepting (which includes all close-bracket tokens)\n // so that CLOSE -> Url wins over CLOSE -> UrlOpenSyms.\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import { Options, tokenize } from 'linkifyjs';\n\n/**\n\tConvert strings of text into linkable HTML text\n*/\nfunction escapeText(text) {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction escapeAttr(href) {\n return href.replace(/\"/g, '"');\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n let val = attributes[attr] + '';\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(' ');\n}\nfunction defaultRender({\n tagName,\n attributes,\n content\n}) {\n return `<${tagName} ${attributesToString(attributes)}>${escapeText(content)}</${tagName}>`;\n}\n\n/**\n * Convert a plan text string to an HTML string with links. Expects that the\n * given strings does not contain any HTML entities. Use the linkify-html\n * interface if you need to parse HTML entities.\n *\n * @param {string} str string to linkify\n * @param {import('linkifyjs').Opts} [opts] overridable options\n * @returns {string}\n */\nfunction linkifyStr(str, opts = {}) {\n opts = new Options(opts, defaultRender);\n const tokens = tokenize(str);\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.t === 'nl' && opts.get('nl2br')) {\n result.push('<br>\\n');\n } else if (!token.isLink || !opts.check(token)) {\n result.push(escapeText(token.toString()));\n } else {\n result.push(opts.render(token));\n }\n }\n return result.join('');\n}\nif (!String.prototype.linkify) {\n Object.defineProperty(String.prototype, 'linkify', {\n writable: false,\n value: function linkify(options) {\n return linkifyStr(this, options);\n }\n });\n}\n\nexport { linkifyStr as default };\n","window._nc_vue_element_id = window._nc_vue_element_id ?? 0;\nfunction createElementId() {\n return `nc-vue-${window._nc_vue_element_id++}`;\n}\nexport {\n createElementId as c\n};\n//# sourceMappingURL=createElementId-DhjFt1I9.mjs.map\n","import '../assets/NcEmptyContent-DAR2ze6H.css';\nimport { c as createElementId } from \"../chunks/createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcEmptyContent\",\n props: {\n /**\n * A header message about an empty content shown\n *\n * @example 'No comments'\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Desription of the empty content\n *\n * @example 'No comments yet, start the conversation!'\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n setup() {\n return {\n nameId: createElementId()\n };\n },\n computed: {\n hasName() {\n return this.name !== \"\" || this.$slots.name;\n },\n /**\n * Check if a description is given as either property or slot\n */\n hasDescription() {\n return this.description !== \"\" || this.$slots.description?.[0];\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"empty-content\", attrs: { \"aria-labelledby\": _vm.nameId, \"role\": \"note\" } }, [_vm.$slots.icon ? _c(\"div\", { staticClass: \"empty-content__icon\", attrs: { \"aria-hidden\": \"true\" } }, [_vm._t(\"icon\")], 2) : _vm._e(), _vm.hasName ? _c(\"div\", { staticClass: \"empty-content__name\", attrs: { \"id\": _vm.nameId } }, [_vm._t(\"name\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.name) + \" \")];\n })], 2) : _vm._e(), _vm.hasDescription ? _c(\"p\", { staticClass: \"empty-content__description\" }, [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })], 2) : _vm._e(), _vm.$slots.action ? _c(\"div\", { staticClass: \"empty-content__action\" }, [_vm._t(\"action\")], 2) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"53618902\"\n);\nconst NcEmptyContent = __component__.exports;\nexport {\n NcEmptyContent as default\n};\n//# sourceMappingURL=NcEmptyContent.mjs.map\n","import '../assets/NcAppSidebar-DPorFaqk.css';\nimport { Portal } from \"@linusborg/vue-simple-portal\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport Vue, { ref, provide } from \"vue\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { D as DockRight } from \"./DockRight-B0D52yCO.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-BAjRm8PQ.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { useIsSmallMobile } from \"../Composables/useIsMobile.mjs\";\nimport directive from \"../Directives/Focus.mjs\";\nimport { r as register, R as t15, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcAppSidebarHeader } from \"./NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nconst _sfc_main$3 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon star-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst Star = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon star-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst StarOutline = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcCheckboxRadioSwitch,\n NcVNodes\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data() {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without active.sync\n */\n activeTab: \"\",\n isLegacy34\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some((tab) => tab.id === this.active) ? this.active : this.tabs.length > 0 ? this.tabs[0].id : \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return OC.Util.naturalSortCompare(a.name, b.name);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-sidebar-tabs\" }, [_vm.hasMultipleTabs || _vm.showForSingleTab ? _c(\"div\", { staticClass: \"app-sidebar-tabs__nav\", class: { \"app-sidebar-tabs__nav--legacy\": _vm.isLegacy34 }, attrs: { \"role\": \"tablist\" }, on: { \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"left\", 37, $event.key, [\"Left\", \"ArrowLeft\"])) return null;\n if (\"button\" in $event && $event.button !== 0) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusPreviousTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"right\", 39, $event.key, [\"Right\", \"ArrowRight\"])) return null;\n if (\"button\" in $event && $event.button !== 2) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusNextTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusActiveTabContent.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"home\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusFirstTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"end\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusLastTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"page-up\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusFirstTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"page-down\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusLastTab.apply(null, arguments);\n }] } }, _vm._l(_vm.tabs, function(tab) {\n return _c(\"NcCheckboxRadioSwitch\", { key: tab.id, staticClass: \"app-sidebar-tabs__tab\", class: { active: tab.id === _vm.activeTab }, attrs: { \"aria-controls\": `tab-${tab.id}`, \"aria-selected\": String(_vm.activeTab === tab.id), \"button-variant\": true, \"checked\": _vm.activeTab === tab.id, \"wrapper-id\": `tab-button-${tab.id}`, \"tabindex\": _vm.activeTab === tab.id ? 0 : -1, \"button-variant-grouped\": \"horizontal\", \"role\": \"tab\", \"type\": \"button\" }, on: { \"update:checked\": function($event) {\n return _vm.setActive(tab.id);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcVNodes\", { attrs: { \"vnodes\": tab.renderIcon() } }, [_c(\"span\", { staticClass: \"app-sidebar-tabs__tab-icon\", class: tab.icon })])];\n }, proxy: true }], null, true) }, [_c(\"span\", { staticClass: \"app-sidebar-tabs__tab-caption\" }, [_vm._v(\" \" + _vm._s(tab.name) + \" \")])]);\n }), 1) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-tabs__content\", class: { \"app-sidebar-tabs__content--multiple\": _vm.hasMultipleTabs } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"30dd628e\"\n);\nconst NcAppSidebarTabs = __component__$1.exports;\nregister(t15);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n Teleport: Portal,\n NcActions,\n NcAppSidebarHeader,\n NcAppSidebarTabs,\n ArrowRight,\n IconDockRight: DockRight,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n Close,\n Star,\n StarOutline\n },\n directives: {\n focus: directive,\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: \"NcContent:selector\",\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Note: in @nextcloud/vue v9 this prop is required\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closing\",\n \"closed\",\n \"opening\",\n \"opened\",\n \"figure-click\",\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submit-name\",\n \"dismiss-editing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: GenRandomId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigure() {\n return this.$slots.header || this.background;\n },\n hasFigureClickListener() {\n return this.$listeners[\"figure-click\"];\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeDestroy() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigarion\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onBeforeEnter(element) {\n this.$emit(\"opening\", element);\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onBeforeLeave(element) {\n this.$emit(\"closing\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figure-click\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n this.$nextTick(() => this.$refs.nameInput.focus());\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n Vue.util.warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submit-name\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismiss-editing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"transition\", { attrs: { \"appear\": \"\", \"name\": \"slide-right\" }, on: { \"before-enter\": _vm.onBeforeEnter, \"after-enter\": _vm.onAfterEnter, \"before-leave\": _vm.onBeforeLeave, \"after-leave\": _vm.onAfterLeave } }, [_c(\"aside\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.open, expression: \"open\" }], ref: \"sidebar\", staticClass: \"app-sidebar\", attrs: { \"id\": \"app-sidebar-vue\", \"aria-labelledby\": `app-sidebar-vue-${_vm.uid}__header` }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeydownEsc.apply(null, arguments);\n } } }, [_vm.ncContentSelector && !_vm.open && !_vm.noToggle ? _c(\"Teleport\", { attrs: { \"selector\": _vm.ncContentSelector } }, [_c(\"NcButton\", _vm._b({ ref: \"toggle\", staticClass: \"app-sidebar__toggle\", class: _vm.toggleClasses, attrs: { \"aria-label\": _vm.t(\"Open sidebar\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"update:open\", true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"toggle-icon\", function() {\n return [_c(\"IconDockRight\", { attrs: { \"size\": 20 } })];\n })];\n }, proxy: true }], null, true) }, \"NcButton\", _vm.toggleAttrs, false))], 1) : _vm._e(), _c(\"header\", { staticClass: \"app-sidebar-header\", class: {\n \"app-sidebar-header--with-figure\": _vm.hasFigure,\n \"app-sidebar-header--compact\": _vm.compact\n } }, [!_vm.empty ? _vm._t(\"info\", function() {\n return [_c(\"div\", { staticClass: \"app-sidebar-header__info\" }, [_vm.hasFigure ? _c(\"div\", { staticClass: \"app-sidebar-header__figure\", class: {\n \"app-sidebar-header__figure--with-action\": _vm.hasFigureClickListener\n }, style: {\n backgroundImage: `url(${_vm.background})`\n }, attrs: { \"tabindex\": \"0\" }, on: { \"click\": _vm.onFigureClick, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onFigureClick.apply(null, arguments);\n } } }, [_vm._t(\"header\")], 2) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-header__desc\", class: {\n \"app-sidebar-header__desc--with-tertiary-action\": _vm.canStar || _vm.$slots[\"tertiary-actions\"],\n \"app-sidebar-header__desc--editable\": _vm.nameEditable && !_vm.subname,\n \"app-sidebar-header__desc--with-subname--editable\": _vm.nameEditable && _vm.subname,\n \"app-sidebar-header__desc--without-actions\": !_vm.$slots[\"secondary-actions\"]\n } }, [_vm.canStar || _vm.$slots[\"tertiary-actions\"] ? _c(\"div\", { staticClass: \"app-sidebar-header__tertiary-actions\" }, [_vm._t(\"tertiary-actions\", function() {\n return [_vm.canStar ? _c(\"NcButton\", { staticClass: \"app-sidebar-header__star\", attrs: { \"aria-label\": _vm.favoriteTranslated, \"pressed\": _vm.isStarred, \"variant\": \"secondary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleStarred.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.starLoading ? _c(\"NcLoadingIcon\") : _vm.isStarred ? _c(\"Star\", { attrs: { \"size\": 20 } }) : _c(\"StarOutline\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 2575459756) }) : _vm._e()];\n })], 2) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-header__name-container\" }, [_c(\"div\", { staticClass: \"app-sidebar-header__mainname-container\" }, [_c(\"NcAppSidebarHeader\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.nameEditable, expression: \"!nameEditable\" }], staticClass: \"app-sidebar-header__mainname\", attrs: { \"name\": _vm.name, \"linkify\": _vm.linkifyName, \"title\": _vm.title, \"tabindex\": _vm.nameEditable ? 0 : -1 }, nativeOn: { \"click\": function($event) {\n if ($event.target !== $event.currentTarget) return null;\n return _vm.editName.apply(null, arguments);\n } } }), _vm.nameEditable ? [_c(\"form\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: (() => _vm.onSubmitName()), expression: \"() => onSubmitName()\" }], staticClass: \"app-sidebar-header__mainname-form\", on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmitName.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"focus\", rawName: \"v-focus\" }], ref: \"nameInput\", staticClass: \"app-sidebar-header__mainname-input\", attrs: { \"type\": \"text\", \"placeholder\": _vm.namePlaceholder }, domProps: { \"value\": _vm.name }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n return _vm.onDismissEditing.apply(null, arguments);\n }, \"input\": _vm.onNameInput } }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.changeNameTranslated, \"type\": \"submit\", \"variant\": \"tertiary-no-background\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1252225425) })], 1)] : _vm._e(), _vm.$slots[\"secondary-actions\"] ? _c(\"NcActions\", { staticClass: \"app-sidebar-header__menu\", attrs: { \"force-menu\": _vm.forceMenu } }, [_vm._t(\"secondary-actions\")], 2) : _vm._e()], 2), _vm.subname.trim() !== \"\" || _vm.$slots[\"subname\"] ? _c(\"p\", { staticClass: \"app-sidebar-header__subname\", attrs: { \"title\": _vm.subtitle || void 0 } }, [_vm._t(\"subname\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.subname) + \" \")];\n })], 2) : _vm._e()])])])];\n }) : _c(\"NcAppSidebarHeader\", { staticClass: \"app-sidebar-header__mainname--hidden\", attrs: { \"name\": _vm.name, \"tabindex\": \"-1\" } }), _c(\"NcButton\", { ref: \"closeButton\", staticClass: \"app-sidebar__close\", attrs: { \"aria-label\": _vm.closeTranslated, \"title\": _vm.closeTranslated, \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.closeSidebar.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _vm.$slots[\"description\"] && !_vm.empty ? _c(\"div\", { staticClass: \"app-sidebar-header__description\" }, [_vm._t(\"description\")], 2) : _vm._e()], 2), _c(\"NcAppSidebarTabs\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.loading, expression: \"!loading\" }], ref: \"tabs\", attrs: { \"active\": _vm.active, \"force-tabs\": _vm.forceTabs }, on: { \"update:active\": _vm.onUpdateActive } }, [_vm._t(\"default\")], 2), _vm.loading ? _c(\"NcEmptyContent\", { scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcLoadingIcon\", { attrs: { \"size\": 64 } })];\n }, proxy: true }], null, false, 826850984) }) : _vm._e()], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"82f4f9ef\"\n);\nconst NcAppSidebar = __component__.exports;\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-B2F66PCc.mjs.map\n","/**\n * @typedef {import('unist').Node} Node\n */\n\n/**\n * @typedef {Array<Node> | string} ChildrenOrValue\n * List to use as `children` or value to use as `value`.\n *\n * @typedef {Record<string, unknown>} Props\n * Other fields to add to the node.\n */\n\n/**\n * Build a node.\n *\n * @template {string} T\n * @template {Props} P\n * @template {Array<Node>} C\n *\n * @overload\n * @param {T} type\n * @returns {{type: T}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @returns {{type: T} & P}\n *\n * @overload\n * @param {T} type\n * @param {string} value\n * @returns {{type: T, value: string}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {string} value\n * @returns {{type: T, value: string} & P}\n *\n * @overload\n * @param {T} type\n * @param {C} children\n * @returns {{type: T, children: C}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {C} children\n * @returns {{type: T, children: C} & P}\n *\n * @param {string} type\n * Node type.\n * @param {ChildrenOrValue | Props | null | undefined} [props]\n * Fields assigned to node (default: `undefined`).\n * @param {ChildrenOrValue | null | undefined} [value]\n * Children of node or value of `node` (cast to string).\n * @returns {Node}\n * Built node.\n */\nexport function u(type, props, value) {\n /** @type {Node} */\n const node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n // @ts-expect-error: create a parent.\n node.children = value\n } else if (value !== undefined && value !== null) {\n // @ts-expect-error: create a literal.\n node.value = String(value)\n }\n\n return node\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","import '../assets/autolink-CEziQYgN.css';\nimport { getBaseUrl, getRootUrl } from \"@nextcloud/router\";\nimport { u } from \"unist-builder\";\nimport { visitParents, SKIP } from \"unist-util-visit-parents\";\nimport { defineComponent } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextExternalLink\",\n props: {\n href: null,\n decorateExternal: { type: Boolean }\n },\n setup(__props) {\n const { href, decorateExternal = false } = __props;\n return { __sfc: true };\n }\n});\nconst externalLink = \"_externalLink_qMkgj\";\nconst externalLink_decorated = \"_externalLink_decorated_Tm8HU\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_08-Q6\",\n externalLink,\n externalLink_decorated\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"a\", { class: [_vm.$style.externalLink, {\n [_vm.$style.externalLink_decorated]: _vm.decorateExternal\n }], attrs: { \"href\": _vm.href, \"rel\": \"noopener noreferrer\", \"target\": \"_blank\" } }, [_vm._t(\"default\", function() {\n return [_vm._v(_vm._s(_vm.href))];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcRichTextExternalLink = __component__.exports;\nconst URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig;\nconst URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig;\nfunction remarkAutolink({ autolink, useMarkdown, useExtendedMarkdown }) {\n return function(tree) {\n if (useExtendedMarkdown || !useMarkdown || !autolink) {\n return;\n }\n visitParents(tree, (node) => node.type === \"text\", (node, ancestors) => {\n if (ancestors.some((ancestor) => ancestor.type === \"link\" || ancestor.type === \"linkReference\")) {\n return;\n }\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node) ?? 0;\n let parsed = parseUrl(node.value);\n parsed = parsed.map((n) => {\n if (typeof n === \"string\") {\n return u(\"text\", n);\n }\n return u(\"link\", {\n url: n.props.href\n }, [u(\"text\", n.props.href)]);\n }).filter((x) => x);\n parent.children.splice(index, 1, ...parsed.flat());\n return [SKIP, index + parsed.flat().length];\n });\n };\n}\nfunction parseUrl(text) {\n let match = URL_PATTERN_AUTOLINK.exec(text);\n const list = [];\n let start = 0;\n while (match !== null) {\n let href = match[2];\n let textAfter;\n let textBefore = text.substring(start, match.index + match[1].length);\n if (href[0] === \" \") {\n textBefore += href[0];\n href = href.substring(1).trim();\n }\n const lastChar = href[href.length - 1];\n if (lastChar === \".\" || lastChar === \",\" || lastChar === \";\" || match[0][0] === \"(\" && lastChar === \")\") {\n href = href.substring(0, href.length - 1);\n textAfter = lastChar;\n }\n list.push(textBefore);\n list.push({ component: NcRichTextExternalLink, props: { href: href.trim(), decorateExternal: true } });\n if (textAfter) {\n list.push(textAfter);\n }\n start = match.index + match[0].length;\n match = URL_PATTERN_AUTOLINK.exec(text);\n }\n list.push(text.substring(start));\n const joinedText = list.map((item) => typeof item === \"string\" ? item : item.props.href).join(\"\");\n if (text === joinedText) {\n return list;\n }\n logger.error(\"Failed to reassemble the chunked text: \" + text);\n return text;\n}\nfunction getRoute(router, url) {\n const removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str;\n const removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str);\n if (!router) {\n return null;\n }\n const isAbsoluteURL = /^https?:\\/\\//.test(url);\n const isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url);\n if (!isAbsoluteURL && isNonHttpLink) {\n return null;\n }\n if (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n return null;\n }\n if (!isAbsoluteURL && !url.startsWith(\"/\")) {\n return null;\n }\n const relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), \"/index.php\") : url;\n const relativeRouterBase = removePrefixes(router.history.base, getRootUrl(), \"/index.php\");\n const potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || \"/\";\n const route = router.resolve(potentialRouterPath).route;\n if (!route.matched.length) {\n return null;\n }\n return route.fullPath;\n}\nexport {\n NcRichTextExternalLink as N,\n URL_PATTERN as U,\n getRoute as g,\n parseUrl as p,\n remarkAutolink as r\n};\n//# sourceMappingURL=autolink-COrOqbJu.mjs.map\n","import { l as logger } from \"../chunks/logger-D3RVzcfQ.mjs\";\nfunction registerContactsMenuAction(action) {\n window._nc_contacts_menu_hooks ??= {};\n if (window._nc_contacts_menu_hooks[action.id]) {\n logger.error(`ContactsMenu action for id ${action.id} has already been registered`, {\n action\n });\n return;\n }\n window._nc_contacts_menu_hooks[action.id] = action;\n}\nfunction getEnabledContactsMenuActions(entry) {\n if (!window._nc_contacts_menu_hooks) {\n return [];\n }\n return Object.values(window._nc_contacts_menu_hooks).filter((action) => action.enabled(entry));\n}\nexport {\n getEnabledContactsMenuActions,\n registerContactsMenuAction\n};\n//# sourceMappingURL=contactsMenu.mjs.map\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","import { r as register, t as t4, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nregister(t4);\nclass Color {\n /**\n * @param r - The red value\n * @param g - The green value\n * @param b - The blue value\n * @param name - The name of the color\n */\n constructor(r, g, b, name) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.name = name;\n this.r = Math.min(r, 255);\n this.g = Math.min(g, 255);\n this.b = Math.min(b, 255);\n this.name = name;\n }\n r;\n g;\n b;\n name;\n /**\n * The hexadecimal color string.\n */\n get color() {\n const toHex = (int) => `00${int.toString(16)}`.slice(-2);\n return `#${toHex(this.r)}${toHex(this.g)}${toHex(this.b)}`;\n }\n}\nfunction calculateStepIncrement(steps, color1, color2) {\n return {\n r: (color2.r - color1.r) / steps,\n g: (color2.g - color1.g) / steps,\n b: (color2.b - color1.b) / steps\n };\n}\nfunction mixPalette(steps, color1, color2) {\n const palette = [];\n palette.push(color1);\n const increment = calculateStepIncrement(steps, color1, color2);\n for (let i = 1; i < steps; i++) {\n const r = Math.floor(color1.r + increment.r * i);\n const g = Math.floor(color1.g + increment.g * i);\n const b = Math.floor(color1.b + increment.b * i);\n palette.push(new Color(r, g, b));\n }\n return palette;\n}\nconst COLOR_RED = new Color(182, 70, 157, t(\"Purple\"));\nconst COLOR_YELLOW = new Color(221, 203, 85, t(\"Gold\"));\nconst COLOR_BLUE = new Color(0, 130, 201, t(\"Nextcloud blue\"));\nconst COLOR_BLACK = new Color(0, 0, 0, t(\"Black\"));\nconst COLOR_WHITE = new Color(255, 255, 255, t(\"White\"));\nconst defaultPalette = [\n COLOR_RED,\n new Color(\n ...[191, 103, 139],\n t(\"Rosy brown\")\n // TRANSLATORS: A color name for RGB(191, 103, 139)\n ),\n new Color(\n ...[201, 136, 121],\n t(\"Feldspar\")\n // TRANSLATORS: A color name for RGB(201, 136, 121)\n ),\n new Color(\n ...[211, 169, 103],\n t(\"Whiskey\")\n // TRANSLATORS: A color name for RGB(211, 169, 103)\n ),\n COLOR_YELLOW,\n new Color(\n ...[165, 184, 114],\n t(\"Olivine\")\n // TRANSLATORS: A color name for RGB(165, 184, 114)\n ),\n new Color(\n ...[110, 166, 143],\n t(\"Acapulco\")\n // TRANSLATORS: A color name for RGB(110, 166, 143)\n ),\n new Color(\n ...[55, 148, 172],\n t(\"Boston Blue\")\n // TRANSLATORS: A color name for RGB(55, 148, 172)\n ),\n COLOR_BLUE,\n new Color(\n ...[45, 115, 190],\n t(\"Mariner\")\n // TRANSLATORS: A color name for RGB(45, 115, 190)\n ),\n new Color(\n ...[91, 100, 179],\n t(\"Blue Violet\")\n // TRANSLATORS: A color name for RGB(91, 100, 179)\n ),\n new Color(\n ...[136, 85, 168],\n t(\"Deluge\")\n // TRANSLATORS: A color name for RGB(136, 85, 168)\n )\n];\nfunction generatePalette(steps) {\n const palette1 = mixPalette(steps, COLOR_RED, COLOR_YELLOW);\n const palette2 = mixPalette(steps, COLOR_YELLOW, COLOR_BLUE);\n const palette3 = mixPalette(steps, COLOR_BLUE, COLOR_RED);\n return palette1.concat(palette2).concat(palette3);\n}\nexport {\n Color as C,\n COLOR_BLACK as a,\n COLOR_WHITE as b,\n defaultPalette as d,\n generatePalette as g\n};\n//# sourceMappingURL=colors-B_oqiKWY.mjs.map\n","import md5 from \"md5\";\nimport { g as generatePalette } from \"../chunks/colors-B_oqiKWY.mjs\";\nfunction usernameToColor(username) {\n let hash = username.toLowerCase();\n if (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n hash = md5(hash);\n }\n hash = hash.replace(/[^0-9a-f]/g, \"\");\n const steps = 6;\n const finalPalette = generatePalette(steps);\n function hashToInt(hash2, maximum) {\n let finalInt = 0;\n const result = [];\n for (let i = 0; i < hash2.length; i++) {\n result.push(parseInt(hash2.charAt(i), 16) % 16);\n }\n for (const j in result) {\n finalInt += result[j];\n }\n return parseInt(parseInt(finalInt, 10) % maximum, 10);\n }\n return finalPalette[hashToInt(hash, steps * 3)];\n}\nexport {\n usernameToColor as default,\n usernameToColor\n};\n//# sourceMappingURL=usernameToColor.mjs.map\n","import { generateUrl } from \"@nextcloud/router\";\nimport { checkIfDarkTheme } from \"../Functions/isDarkTheme.mjs\";\nfunction getAvatarUrl(user, options) {\n const size = (options?.size || 64) <= 64 ? 64 : 512;\n const guestUrl = options?.isGuest ? \"/guest\" : \"\";\n const themeUrl = options?.isDarkTheme ?? checkIfDarkTheme(document.body) ? \"/dark\" : \"\";\n return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}?guestFallback=true`, {\n user,\n size\n });\n}\nexport {\n getAvatarUrl as g\n};\n//# sourceMappingURL=getAvatarUrl-BGOeDmNO.mjs.map\n","import '../assets/NcUserStatusIcon-Bw8yMFMP.css';\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, Y as t54, Z as t12, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst awayLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"none\" d=\"M-4-4h24v24H-4z\" />\\n\t<path fill=\"var(--color-warning)\" d=\"M6.9.1C3 .6-.1 4-.1 8c0 4.4 3.6 8 8 8 4 0 7.4-3 8-6.9-1.2 1.3-2.9 2.1-4.7 2.1-3.5 0-6.4-2.9-6.4-6.4 0-1.9.8-3.6 2.1-4.7z\" />\\n</svg>\\n';\nconst awaySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-away, var(--color-warning, #C88800))\"\\n\t\td=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst busySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst dndLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"none\" d=\"M-4-4h24v24H-4V-4z\" />\\n\t<path fill=\"var(--color-border-error, var(--color-error))\" d=\"M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z\" />\\n\t<path fill=\"#fdffff\" d=\"M5 6.5h6c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5H5c-.8 0-1.5-.7-1.5-1.5S4.2 6.5 5 6.5z\" />\\n</svg>\\n';\nconst dndSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M280-440h400v-80H280v80ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst invisibleLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"none\" d=\"M-4-4h24v24H-4V-4z\" />\\n\t<path d=\"M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 3.2c2.7 0 4.8 2.1 4.8 4.8s-2.1 4.8-4.8 4.8S3.2 10.7 3.2 8 5.3 3.2 8 3.2z\" />\\n</svg>\\n';\nconst invisibleSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-offline, var(--color-text-maxcontrast, #6B6B6B))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/>\\n</svg>\\n';\nconst onlineLegacySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"-1 -1 18 18\" width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path fill=\"var(--color-success)\" d=\"M4.8 11.2h6.4V4.8H4.8v6.4zM8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z\" />\\n</svg>\\n';\nconst onlineSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-online, var(--color-success, #2D7B41))\"\\n\t\td=\"m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nregister(t54);\nregister(t12);\nfunction getUserStatusText(status) {\n switch (status) {\n case \"away\":\n return t(\"away\");\n // TRANSLATORS: User status if the user is currently away from keyboard\n case \"busy\":\n return t(\"busy\");\n case \"dnd\":\n return t(\"do not disturb\");\n case \"online\":\n return t(\"online\");\n case \"invisible\":\n return t(\"invisible\");\n case \"offline\":\n return t(\"offline\");\n default:\n return status;\n }\n}\nconst matchSvg = {\n online: isLegacy32 ? onlineLegacySvg : onlineSvg,\n away: isLegacy32 ? awayLegacySvg : awaySvg,\n busy: isLegacy32 ? awayLegacySvg : busySvg,\n dnd: isLegacy32 ? dndLegacySvg : dndSvg,\n invisible: isLegacy32 ? invisibleLegacySvg : invisibleSvg,\n offline: isLegacy32 ? invisibleLegacySvg : invisibleSvg\n};\nconst _sfc_main = {\n name: \"NcUserStatusIcon\",\n props: {\n /**\n * Set the user id to fetch the status\n */\n user: {\n type: String,\n default: null\n },\n /**\n * Set the status\n *\n * @type {'online' | 'away' | 'busy' | 'dnd' | 'invisible' | 'offline'}\n */\n status: {\n type: String,\n default: null,\n validator: (value) => [\n \"online\",\n \"away\",\n \"busy\",\n \"dnd\",\n \"invisible\",\n \"offline\"\n ].includes(value)\n },\n /**\n * Set the `aria-hidden` attribute\n *\n * @type {'true' | 'false'}\n */\n ariaHidden: {\n type: String,\n default: null,\n validator: (value) => [\n \"true\",\n \"false\"\n ].includes(value)\n }\n },\n data() {\n return {\n fetchedUserStatus: null\n };\n },\n computed: {\n activeStatus() {\n return this.status ?? this.fetchedUserStatus;\n },\n activeSvg() {\n return matchSvg[this.activeStatus] ?? null;\n },\n ariaLabel() {\n if (this.ariaHidden === \"true\") {\n return null;\n }\n return t(\"User status: {status}\", { status: getUserStatusText(this.activeStatus) });\n }\n },\n watch: {\n user: {\n immediate: true,\n async handler(user) {\n if (!user || !getCapabilities()?.user_status?.enabled) {\n this.fetchedUserStatus = null;\n return;\n }\n try {\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{user}\", { user }));\n this.fetchedUserStatus = data.ocs?.data?.status;\n } catch {\n this.fetchedUserStatus = null;\n }\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.activeStatus ? _c(\"span\", { staticClass: \"user-status-icon\", class: {\n \"user-status-icon--invisible\": [\"invisible\", \"offline\"].includes(_vm.status)\n }, attrs: { \"role\": \"img\", \"aria-hidden\": _vm.ariaHidden, \"aria-label\": _vm.ariaLabel }, domProps: { \"innerHTML\": _vm._s(_vm.activeSvg) } }) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"86b73d39\"\n);\nconst NcUserStatusIcon = __component__.exports;\nexport {\n NcUserStatusIcon as N,\n getUserStatusText as g\n};\n//# sourceMappingURL=NcUserStatusIcon-gpl3yJFX.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcAvatar-BdHHFwV3.css';\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport { generateOcsUrl, generateUrl } from \"@nextcloud/router\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport debounce from \"debounce\";\nimport { defineAsyncComponent } from \"vue\";\nimport { N as NcActions, D as DotsHorizontalIcon } from \"./NcActions-CX1MSord.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { getEnabledContactsMenuActions } from \"../Functions/contactsMenu.mjs\";\nimport { usernameToColor } from \"../Functions/usernameToColor.mjs\";\nimport { r as register, u as t11, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-BGOeDmNO.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { b as isLegacy35 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { N as NcUserStatusIcon, g as getUserStatusText } from \"./NcUserStatusIcon-gpl3yJFX.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport NcActionLink from \"../Components/NcActionLink.mjs\";\nimport NcActionRouter from \"../Components/NcActionRouter.mjs\";\nimport NcActionText from \"../Components/NcActionText.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcPopover } from \"./NcPopover-BaHX3QSG.mjs\";\nregister(t11);\nconst userStatus = {\n data() {\n return {\n hasStatus: false,\n userStatus: {\n status: null,\n message: null,\n icon: null\n }\n };\n },\n methods: {\n /**\n * Fetches the user-status from the server\n *\n * @param {string} userId UserId of the user to fetch the status for\n *\n * @return {Promise<void>}\n */\n async fetchUserStatus(userId) {\n if (!userId) {\n return;\n }\n const capabilities = getCapabilities();\n if (!Object.hasOwn(capabilities, \"user_status\") || !capabilities.user_status.enabled) {\n return;\n }\n if (!getCurrentUser()) {\n return;\n }\n try {\n const { data } = await axios.get(generateOcsUrl(\"apps/user_status/api/v1/statuses/{userId}\", { userId }));\n this.setUserStatus(data.ocs.data);\n } catch (error) {\n if (error.response.status === 404 && error.response.data.ocs?.data?.length === 0) {\n return;\n }\n logger.error(\"Could not fetch user status\", { error });\n }\n },\n /**\n * Sets the user status\n *\n * @param {string} status user's status\n * @param {string} message user's message\n * @param {string} icon user's icon\n */\n setUserStatus({ status, message, icon }) {\n this.userStatus.status = status || \"\";\n this.userStatus.message = message || \"\";\n this.userStatus.icon = icon || \"\";\n this.hasStatus = !!status;\n }\n }\n};\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nfunction getUserHasAvatar(userId) {\n const flag = browserStorage.getItem(\"user-has-avatar.\" + userId);\n if (typeof flag === \"string\") {\n return Boolean(flag);\n }\n return null;\n}\nfunction setUserHasAvatar(userId, flag) {\n if (userId) {\n browserStorage.setItem(\"user-has-avatar.\" + userId, flag);\n }\n}\nconst _sfc_main = {\n name: \"NcAvatar\",\n directives: {\n ClickOutside: vOnClickOutside\n },\n components: {\n IconDotsHorizontal: DotsHorizontalIcon,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcLoadingIcon,\n NcPopover,\n NcProfileHoverCard: defineAsyncComponent(() => import(\"./NcProfileHoverCard-DK5YkGF0.mjs\")),\n NcUserStatusIcon\n },\n mixins: [userStatus],\n props: {\n /**\n * Set a custom url to the avatar image\n * either the url, user or displayName property must be defined\n */\n url: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class for an icon to be used instead of the avatar.\n */\n iconClass: {\n type: String,\n default: void 0\n },\n /**\n * Set the user id to fetch the avatar\n * either the url, user or displayName property must be defined\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Do not show the user status on the avatar.\n */\n hideStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Whether or not to display the user-status.\n *\n * @deprecated - Use `hideStatus` instead. Will be removed with v9.\n */\n showUserStatus: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Show the verbose user status (e.g. \"online\" / \"away\") instead of just the status icon.\n */\n verboseStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Whether or not to the status-icon should be used instead of online/away\n *\n * @deprecated - Use `verboseStatus` instead. Will be removed with v9.\n */\n showUserStatusCompact: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * When the user status was preloaded via another source it can be handed in with this property to save the request.\n * If this property is not set the status will be fetched automatically.\n * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n */\n preloadedUserStatus: {\n type: Object,\n default: void 0\n },\n /**\n * Is the user a guest user (then we have to user a different endpoint)\n */\n isGuest: {\n type: Boolean,\n default: false\n },\n /**\n * Set a display name that will be rendered as a tooltip\n * either the url, user or displayName property must be defined\n * specify just the displayname to generate a placeholder avatar without\n * trying to fetch the avatar based on the user id\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Set a size in px for the rendered avatar\n */\n size: {\n type: Number,\n default: 32\n },\n /**\n * Do not automatically generate a placeholder avatars if there is no real avatar is available.\n */\n noPlaceholder: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder avatars will be automatically generated when this is set to true.\n *\n * @deprecated - Use `noPlaceholder` instead. Will be removed in v9.\n */\n allowPlaceholder: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the tooltip\n */\n disableTooltip: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the menu\n */\n disableMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Declares a custom tooltip when not null\n * Fallback will be the displayName\n *\n * requires disableTooltip not to be set to true\n */\n tooltipMessage: {\n type: String,\n default: null\n },\n /**\n * Declares username is not a user's name, when true.\n * Prevents loading user's avatar from server and forces generating colored initials,\n * i.e. if the user is a group\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Selector for the popover menu container\n */\n menuContainer: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme,\n isLegacy35\n };\n },\n data() {\n return {\n avatarUrlLoaded: null,\n avatarSrcSetLoaded: null,\n userDoesNotExist: false,\n isAvatarLoaded: false,\n isMenuLoaded: false,\n contactsMenuLoading: false,\n contactsMenuData: {},\n contactsMenuActions: [],\n contactsMenuOpenState: false\n };\n },\n computed: {\n avatarAriaLabel() {\n if (!this.hasMenu) {\n return;\n }\n if (this.canDisplayUserStatus || this.showUserStatusIconOnAvatar) {\n return t(\"Avatar of {displayName}, {status}\", { displayName: this.displayName ?? this.user, status: getUserStatusText(this.userStatus.status) });\n }\n return t(\"Avatar of {displayName}\", { displayName: this.displayName ?? this.user });\n },\n canDisplayUserStatus() {\n return !this.hideStatus && this.showUserStatus && this.hasStatus && [\"online\", \"away\", \"busy\", \"dnd\"].includes(this.userStatus.status);\n },\n showUserStatusIconOnAvatar() {\n return !this.hideStatus && this.showUserStatus && !this.verboseStatus && this.showUserStatusCompact && this.hasStatus && this.userStatus.status !== \"dnd\" && this.userStatus.icon;\n },\n /**\n * The user identifier, either the display name if set or the user property\n * If both properties are not set an empty string is returned\n */\n userIdentifier() {\n if (this.isDisplayNameDefined) {\n return this.displayName;\n }\n if (this.isUserDefined) {\n return this.user;\n }\n return \"\";\n },\n isUserDefined() {\n return typeof this.user !== \"undefined\";\n },\n isDisplayNameDefined() {\n return typeof this.displayName !== \"undefined\";\n },\n isUrlDefined() {\n return typeof this.url !== \"undefined\";\n },\n hasMenu() {\n if (this.disableMenu) {\n return false;\n }\n if (this.isLegacy35) {\n if (this.isMenuLoaded) {\n return this.menu.length > 0;\n }\n return !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url);\n }\n return Boolean(this.user) && !this.isNoUser && !this.url && !this.userDoesNotExist;\n },\n /**\n * True if initials should be shown as the user icon fallback\n */\n showInitials() {\n return !this.noPlaceholder && this.allowPlaceholder && this.userDoesNotExist && !(this.iconClass || this.$scopedSlots.icon);\n },\n avatarStyle() {\n return {\n \"--avatar-size\": this.size + \"px\",\n lineHeight: this.showInitials ? this.size + \"px\" : 0,\n fontSize: Math.round(this.size * 0.45) + \"px\"\n };\n },\n initialsWrapperStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n backgroundColor: `rgba(${r}, ${g}, ${b}, 0.1)`\n };\n },\n initialsStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n color: `rgb(${r}, ${g}, ${b})`\n };\n },\n tooltip() {\n if (this.disableTooltip) {\n return false;\n }\n if (this.tooltipMessage) {\n return this.tooltipMessage;\n }\n return this.displayName;\n },\n /**\n * Get the (max. two) initials of the user as uppcase string\n */\n initials() {\n let initials = \"?\";\n if (this.showInitials) {\n const user = this.userIdentifier.trim();\n if (user === \"\") {\n return initials;\n }\n const filteredChars = user.match(/[\\p{L}\\p{N}\\s]/gu);\n if (!filteredChars) {\n return initials;\n }\n const filtered = filteredChars.join(\"\").trim();\n const idx = filtered.lastIndexOf(\" \");\n initials = String.fromCodePoint(filtered.codePointAt(0));\n if (idx !== -1) {\n initials = initials.concat(String.fromCodePoint(filtered.codePointAt(idx + 1)));\n }\n }\n return initials.toLocaleUpperCase();\n },\n /**\n * Contacts menu actions for the hover card.\n * `null` until actions are loaded so the card can fall back to profile API actions.\n *\n * @return {Array|null}\n */\n hoverCardActions() {\n if (this.isLegacy35 || !this.isMenuLoaded) {\n return null;\n }\n return this.menu.length > 0 ? this.menu : null;\n },\n /**\n * Status already known by this avatar so the hover card does not fetch it again.\n * Omitted while status is still the empty default (fetch in progress).\n *\n * @return {object|undefined}\n */\n hoverCardPreloadedUserStatus() {\n if (this.preloadedUserStatus) {\n return this.userStatus;\n }\n if (this.userStatus.status || this.userStatus.icon || this.userStatus.message) {\n return this.userStatus;\n }\n return void 0;\n },\n menu() {\n if (this.isLegacy35) {\n return this.legacyMenu;\n }\n const actions = this.contactsMenuActions.map((item) => {\n const route = getRoute(this.$router, item.hyperlink);\n return {\n id: item.id,\n appId: item.appId,\n text: item.title,\n href: route ? void 0 : item.hyperlink,\n to: route || void 0,\n icon: item.icon\n };\n });\n for (const action of getEnabledContactsMenuActions(this.contactsMenuData)) {\n try {\n actions.push({\n id: action.id,\n text: action.displayName(this.contactsMenuData),\n iconSvg: action.iconSvg(this.contactsMenuData),\n onClick: () => action.callback(this.contactsMenuData)\n });\n } catch (error) {\n logger.error(`Failed to render ContactsMenu action ${action.id}`, {\n error,\n action\n });\n }\n }\n return actions;\n },\n /**\n * Legacy NcActions menu entries for Nextcloud 32–34.\n *\n * @return {Array}\n */\n legacyMenu() {\n const actions = this.contactsMenuActions.map((item) => {\n const route = getRoute(this.$router, item.hyperlink);\n return {\n ncActionComponent: route ? NcActionRouter : NcActionLink,\n ncActionComponentProps: route ? {\n to: route,\n icon: item.icon\n } : {\n href: item.hyperlink,\n icon: item.icon\n },\n text: item.title\n };\n });\n for (const action of getEnabledContactsMenuActions(this.contactsMenuData)) {\n try {\n actions.push({\n ncActionComponent: NcActionButton,\n ncActionComponentProps: {},\n ncActionComponentHandlers: {\n click: () => action.callback(this.contactsMenuData)\n },\n text: action.displayName(this.contactsMenuData),\n iconSvg: action.iconSvg(this.contactsMenuData)\n });\n } catch (error) {\n logger.error(`Failed to render ContactsMenu action ${action.id}`, {\n error,\n action\n });\n }\n }\n function escape(html) {\n const text = document.createTextNode(html);\n const p = document.createElement(\"p\");\n p.appendChild(text);\n return p.innerHTML;\n }\n if (!this.hideStatus && this.showUserStatus && (this.userStatus.icon || this.userStatus.message)) {\n const emojiIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t<text x=\"50%\" y=\"50%\" text-anchor=\"middle\" style=\"dominant-baseline: central; font-size: 85%\">${escape(this.userStatus.icon)}</text>\n\t\t\t\t</svg>`;\n return [{\n ncActionComponent: NcActionText,\n ncActionComponentProps: {},\n iconSvg: this.userStatus.icon ? emojiIcon : void 0,\n text: `${this.userStatus.message}`\n }].concat(actions);\n }\n return actions;\n }\n },\n watch: {\n url() {\n this.userDoesNotExist = false;\n this.loadAvatarUrl();\n },\n user() {\n this.userDoesNotExist = false;\n this.isMenuLoaded = false;\n this.loadAvatarUrl();\n },\n preloadedUserStatus(status) {\n if (status) {\n this.setUserStatus(status);\n }\n },\n contactsMenuOpenState(shown) {\n if (this.isLegacy35) {\n return;\n }\n if (shown) {\n this.debouncedFetchContactsMenu();\n } else {\n this.debouncedFetchContactsMenu.clear();\n }\n }\n },\n created() {\n this.debouncedFetchContactsMenu = debounce(this.fetchContactsMenu, 300);\n },\n mounted() {\n this.loadAvatarUrl();\n subscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n subscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n if (!this.hideStatus && this.showUserStatus && this.user && !this.isNoUser) {\n if (!this.preloadedUserStatus) {\n this.fetchUserStatus(this.user);\n } else {\n this.setUserStatus(this.preloadedUserStatus);\n }\n subscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n } else if (!this.hideStatus && this.preloadedUserStatus) {\n this.setUserStatus(this.preloadedUserStatus);\n }\n },\n beforeDestroy() {\n this.debouncedFetchContactsMenu.clear();\n unsubscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n unsubscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n unsubscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n },\n methods: {\n t,\n handleUserStatusUpdated(state) {\n if (this.user === state.userId) {\n this.userStatus = {\n status: state.status,\n icon: state.icon,\n message: state.message\n };\n this.hasStatus = state.status !== null;\n }\n },\n /**\n * Toggle the legacy popover menu on click or enter\n *\n * @param {KeyboardEvent|MouseEvent} event the UI event\n */\n async toggleMenu(event) {\n if (event.type === \"keydown\" && event.key !== \"Enter\") {\n return;\n }\n if (!this.contactsMenuOpenState) {\n await this.fetchContactsMenu();\n }\n this.contactsMenuOpenState = !this.contactsMenuOpenState;\n },\n closeMenu() {\n if (!this.isLegacy35) {\n return;\n }\n this.contactsMenuOpenState = false;\n },\n async fetchContactsMenu() {\n this.contactsMenuLoading = true;\n try {\n const user = encodeURIComponent(this.user);\n const { data } = await axios.post(generateUrl(\"contactsmenu/findOne\"), `shareType=0&shareWith=${user}`);\n this.contactsMenuData = data;\n this.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions;\n } catch {\n this.contactsMenuData = {};\n this.contactsMenuActions = [];\n if (this.isLegacy35) {\n this.contactsMenuOpenState = false;\n }\n }\n this.contactsMenuLoading = false;\n this.isMenuLoaded = true;\n },\n /**\n * Handle avatar loading if user or url defined\n */\n loadAvatarUrl() {\n this.isAvatarLoaded = false;\n if (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser || this.iconClass || this.$scopedSlots.icon)) {\n this.isAvatarLoaded = true;\n this.userDoesNotExist = true;\n return;\n }\n if (this.isUrlDefined) {\n this.updateImageIfValid(this.url);\n return;\n }\n if (this.size <= 64) {\n const avatarUrl = this.avatarUrlGenerator(this.user, 64);\n const srcset = [\n avatarUrl + \" 1x\",\n this.avatarUrlGenerator(this.user, 512) + \" 8x\"\n ].join(\", \");\n this.updateImageIfValid(avatarUrl, srcset);\n } else {\n const avatarUrl = this.avatarUrlGenerator(this.user, 512);\n this.updateImageIfValid(avatarUrl);\n }\n },\n /**\n * Generate an avatar url from the server's avatar endpoint\n *\n * @param {string} user the user id\n * @param {number} size the desired size\n * @return {string}\n */\n avatarUrlGenerator(user, size) {\n let avatarUrl = getAvatarUrl(user, {\n size,\n isDarkTheme: this.isDarkTheme,\n isGuest: this.isGuest\n });\n if (user === getCurrentUser()?.uid && typeof window.oc_userconfig !== \"undefined\") {\n avatarUrl += \"?v=\" + window.oc_userconfig.avatar.version;\n }\n return avatarUrl;\n },\n /**\n * Check if the provided url is valid and update Avatar if so\n *\n * @param {string} url the avatar url\n * @param {Array} srcset the avatar srcset\n */\n updateImageIfValid(url, srcset = null) {\n const userHasAvatar = getUserHasAvatar(this.user);\n if (this.isUserDefined && typeof userHasAvatar === \"boolean\") {\n this.isAvatarLoaded = true;\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n if (userHasAvatar === false) {\n this.userDoesNotExist = true;\n }\n return;\n }\n const img = new Image();\n img.onload = () => {\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n this.isAvatarLoaded = true;\n setUserHasAvatar(this.user, true);\n };\n img.onerror = (error) => {\n logger.debug(\"Invalid avatar url\", { error, url });\n this.avatarUrlLoaded = null;\n this.avatarSrcSetLoaded = null;\n this.userDoesNotExist = true;\n this.isAvatarLoaded = false;\n setUserHasAvatar(this.user, false);\n };\n if (srcset) {\n img.srcset = srcset;\n }\n img.src = url;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: _vm.closeMenu, expression: \"closeMenu\" }], staticClass: \"avatardiv popovermenu-wrapper\", class: {\n \"avatardiv--unknown\": _vm.userDoesNotExist,\n \"avatardiv--with-menu\": _vm.hasMenu,\n \"avatardiv--with-legacy-menu\": _vm.hasMenu && _vm.isLegacy35,\n \"avatardiv--with-menu-loading\": _vm.contactsMenuLoading\n }, style: _vm.avatarStyle, attrs: { \"title\": _vm.tooltip } }, [_vm._t(\"icon\", function() {\n return [_vm.iconClass ? _c(\"span\", { staticClass: \"avatar-class-icon\", class: _vm.iconClass }) : _vm.isAvatarLoaded && !_vm.userDoesNotExist ? _c(\"img\", { attrs: { \"src\": _vm.avatarUrlLoaded, \"srcset\": _vm.avatarSrcSetLoaded, \"alt\": \"\" } }) : _vm._e()];\n }), _vm.isLegacy35 && _vm.hasMenu ? [_vm.menu.length === 0 ? _c(\"NcButton\", { staticClass: \"action-item action-item__menutoggle\", attrs: { \"aria-label\": _vm.avatarAriaLabel, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.toggleMenu }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.contactsMenuLoading ? _c(\"NcLoadingIcon\") : _c(\"IconDotsHorizontal\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1269954734) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.avatarAriaLabel, \"container\": _vm.menuContainer, \"force-menu\": \"\", \"manual-open\": \"\", \"open\": _vm.contactsMenuOpenState, \"variant\": \"tertiary-no-background\" }, on: { \"update:open\": function($event) {\n _vm.contactsMenuOpenState = $event;\n }, \"click\": _vm.toggleMenu }, scopedSlots: _vm._u([_vm.contactsMenuLoading ? { key: \"icon\", fn: function() {\n return [_c(\"NcLoadingIcon\")];\n }, proxy: true } : null], null, true) }, _vm._l(_vm.menu, function(item, key) {\n return _c(item.ncActionComponent, _vm._g(_vm._b({ key, tag: \"component\", scopedSlots: _vm._u([item.iconSvg ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": item.iconSvg } })];\n }, proxy: true } : null], null, true) }, \"component\", item.ncActionComponentProps, false), item.ncActionComponentHandlers), [_vm._v(\" \" + _vm._s(item.text) + \" \")]);\n }), 1)] : _vm.hasMenu ? _c(\"NcPopover\", { staticClass: \"avatar-profile-popover\", attrs: { \"shown\": _vm.contactsMenuOpenState, \"container\": _vm.menuContainer, \"delay\": { show: 400, hide: 0 }, \"popover-triggers\": [\"hover\"], \"triggers\": [\"hover\", \"focus\", \"click\"], \"no-focus-trap\": \"\", \"popup-role\": \"dialog\" }, on: { \"update:shown\": function($event) {\n _vm.contactsMenuOpenState = $event;\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(\"span\", _vm._b({ staticClass: \"avatar-profile-popover__trigger\", attrs: { \"role\": \"button\", \"tabindex\": \"0\", \"aria-label\": _vm.avatarAriaLabel } }, \"span\", attrs, false))];\n } }]) }, [_c(\"NcProfileHoverCard\", { attrs: { \"user\": _vm.user, \"open\": _vm.contactsMenuOpenState, \"actions\": _vm.hoverCardActions, \"actions-loading\": _vm.contactsMenuLoading, \"preloaded-user-status\": _vm.hoverCardPreloadedUserStatus } })], 1) : _vm._e(), _vm.showUserStatusIconOnAvatar ? _c(\"span\", { staticClass: \"avatardiv__user-status avatardiv__user-status--icon\" }, [_vm._v(\" \" + _vm._s(_vm.userStatus.icon) + \" \")]) : _vm.canDisplayUserStatus ? _c(\"NcUserStatusIcon\", { staticClass: \"avatardiv__user-status\", attrs: { \"status\": _vm.userStatus.status, \"aria-hidden\": String(_vm.hasMenu) } }) : _vm._e(), _vm.showInitials ? _c(\"span\", { staticClass: \"avatardiv__initials-wrapper\", style: _vm.initialsWrapperStyle }, [_c(\"span\", { staticClass: \"avatardiv__initials\", style: _vm.initialsStyle }, [_vm._v(\" \" + _vm._s(_vm.initials) + \" \")])]) : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c3ee4dd7\"\n);\nconst NcAvatar = __component__.exports;\nexport {\n NcAvatar as N,\n userStatus as u\n};\n//# sourceMappingURL=NcAvatar-C1ty7wsG.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && options.signal) {\n\t\t\toptions.signal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n id: options.id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // In case `id` is not defined.\n options.id ??= (this.#idAssigner++).toString();\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n try {\n options.signal?.throwIfAborted();\n this.#intervalCount++;\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=preloadImage.mjs.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VueSelect=t():e.VueSelect=t()}(\"undefined\"!=typeof self?self:this,(function(){return(()=>{var e={646:e=>{e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}},713:e=>{e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},860:e=>{e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},206:e=>{e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},319:(e,t,n)=>{var o=n(646),i=n(860),s=n(206);e.exports=function(e){return o(e)||i(e)||s()}},8:e=>{function t(n){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?e.exports=t=function(e){return typeof e}:e.exports=t=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},t(n)}e.exports=t}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return(()=>{\"use strict\";n.r(o),n.d(o,{VueSelect:()=>m,default:()=>_,mixins:()=>O});var e=n(319),t=n.n(e),i=n(8),s=n.n(i),r=n(713),a=n.n(r);const l={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer:function(){this.autoscroll&&this.maybeAdjustScroll()},open:function(e){var t=this;this.autoscroll&&e&&this.$nextTick((function(){return t.maybeAdjustScroll()}))}},methods:{maybeAdjustScroll:function(){var e,t=(null===(e=this.$refs.dropdownMenu)||void 0===e?void 0:e.children[this.typeAheadPointer])||!1;if(t){var n=this.getDropdownViewport(),o=t.getBoundingClientRect(),i=o.top,s=o.bottom,r=o.height;if(i<n.top)return this.$refs.dropdownMenu.scrollTop=t.offsetTop;if(s>n.bottom)return this.$refs.dropdownMenu.scrollTop=t.offsetTop-(n.height-r)}},getDropdownViewport:function(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},c={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){if(this.resetFocusOnOptionsChange)for(var e=0;e<this.filteredOptions.length;e++)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},open:function(e){e&&this.typeAheadToLastSelected()},selectedValue:function(){this.open&&this.typeAheadToLastSelected()}},methods:{typeAheadUp:function(){for(var e=this.typeAheadPointer-1;e>=0;e--)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},typeAheadDown:function(){for(var e=this.typeAheadPointer+1;e<this.filteredOptions.length;e++)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},typeAheadSelect:function(){var e=this.filteredOptions[this.typeAheadPointer];e&&this.selectable(e)&&this.select(e)},typeAheadToLastSelected:function(){var e=0!==this.selectedValue.length?this.filteredOptions.indexOf(this.selectedValue[this.selectedValue.length-1]):-1;-1!==e&&(this.typeAheadPointer=e)}}},u={props:{loading:{type:Boolean,default:!1}},data:function(){return{mutableLoading:!1}},watch:{search:function(){this.$emit(\"search\",this.search,this.toggleLoading)},loading:function(e){this.mutableLoading=e}},methods:{toggleLoading:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return this.mutableLoading=null==e?!this.mutableLoading:e}}};function p(e,t,n,o,i,s,r,a){var l,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),s&&(c._scopeId=\"data-v-\"+s),r?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}const d={Deselect:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"10\",height:\"10\"}},[t(\"path\",{attrs:{d:\"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z\"}})])}),[],!1,null,null,null).exports,OpenIndicator:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"14\",height:\"10\"}},[t(\"path\",{attrs:{d:\"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z\"}})])}),[],!1,null,null,null).exports},h={inserted:function(e,t,n){var o=n.context;if(o.appendToBody){document.body.appendChild(e);var i=o.$refs.toggle.getBoundingClientRect(),s=i.height,r=i.top,a=i.left,l=i.width,c=window.scrollX||window.pageXOffset,u=window.scrollY||window.pageYOffset;e.unbindPosition=o.calculatePosition(e,o,{width:l+\"px\",left:c+a+\"px\",top:u+r+s+\"px\"})}},unbind:function(e,t,n){n.context.appendToBody&&(e.unbindPosition&&\"function\"==typeof e.unbindPosition&&e.unbindPosition(),e.parentNode&&e.parentNode.removeChild(e))}};const f=function(e){var t={};return Object.keys(e).sort().forEach((function(n){t[n]=e[n]})),JSON.stringify(t)};var y=0;const b=function(){return++y};function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function v(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){a()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const m=p({components:v({},d),directives:{appendToBody:h},mixins:[l,c,u],props:{value:{},components:{type:Object,default:function(){return{}}},options:{type:Array,default:function(){return[]}},limit:{type:Number,default:null},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:\"\"},transition:{type:String,default:\"vs__fade\"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:\"label\"},ariaLabelCombobox:{type:String,default:\"Search for options\"},ariaLabelListbox:{type:String,default:\"Options\"},ariaLabelClearSelected:{type:String,default:\"Clear selected\"},ariaLabelDeselectOption:{type:Function,default:function(e){return\"Deselect \".concat(e)}},autocomplete:{type:String,default:\"off\"},reduce:{type:Function,default:function(e){return e}},selectable:{type:Function,default:function(e){return!0}},getOptionLabel:{type:Function,default:function(e){return\"object\"===s()(e)?e.hasOwnProperty(this.label)?e[this.label]:console.warn('[vue-select warn]: Label key \"option.'.concat(this.label,'\" does not')+\" exist in options object \".concat(JSON.stringify(e),\".\\n\")+\"https://vue-select.org/api/props.html#getoptionlabel\"):e}},getOptionKey:{type:Function,default:function(e){if(\"object\"!==s()(e))return e;try{return e.hasOwnProperty(\"id\")?e.id:f(e)}catch(t){return console.warn(\"[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.\\nhttps://vue-select.org/api/props.html#getoptionkey\",e,t)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default:function(e,t,n){return(t||\"\").toLocaleLowerCase().indexOf(n.toLocaleLowerCase())>-1}},filter:{type:Function,default:function(e,t){var n=this;return e.filter((function(e){var o=n.getOptionLabel(e);return\"number\"==typeof o&&(o=o.toString()),n.filterBy(e,o,t)}))}},createOption:{type:Function,default:function(e){return\"object\"===s()(this.optionList[0])?a()({},this.label,e):e}},resetFocusOnOptionsChange:{type:Boolean,default:!0},resetOnOptionsChange:{default:!1,validator:function(e){return[\"function\",\"boolean\"].includes(s()(e))}},clearSearchOnBlur:{type:Function,default:function(e){var t=e.clearSearchOnSelect,n=e.multiple;return t&&!n}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:\"auto\"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:function(){return[13]}},searchInputQuerySelector:{type:String,default:\"[type=search]\"},mapKeydown:{type:Function,default:function(e,t){return e}},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default:function(e,t,n){var o=n.width,i=n.top,s=n.left;e.style.top=i,e.style.left=s,e.style.width=o}},dropdownShouldOpen:{type:Function,default:function(e){var t=e.noDrop,n=e.open,o=e.mutableLoading;return!t&&(n&&!o)}},keyboardFocusBorder:{type:Boolean,default:!1},uid:{type:[String,Number],default:function(){return b()}}},data:function(){return{search:\"\",open:!1,isComposing:!1,isKeyboardNavigation:!1,pushedTags:[],_value:[]}},computed:{isTrackingValues:function(){return void 0===this.value||this.$options.propsData.hasOwnProperty(\"reduce\")},selectedValue:function(){var e=this.value;return this.isTrackingValues&&(e=this.$data._value),null!=e&&\"\"!==e?[].concat(e):[]},optionList:function(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var e=this,t={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:v({id:this.inputId,disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,role:\"combobox\",\"aria-autocomplete\":\"list\",\"aria-label\":this.ariaLabelCombobox,\"aria-controls\":\"vs-\".concat(this.uid,\"__listbox\"),\"aria-owns\":\"vs-\".concat(this.uid,\"__listbox\"),\"aria-expanded\":this.dropdownOpen.toString(),ref:\"search\",type:\"search\",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{\"aria-activedescendant\":\"vs-\".concat(this.uid,\"__option-\").concat(this.typeAheadPointer)}:{}),events:{compositionstart:function(){return e.isComposing=!0},compositionend:function(){return e.isComposing=!1},keydown:this.onSearchKeyDown,keypress:this.onSearchKeyPress,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(t){return e.search=t.target.value}}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:\"openIndicator\",role:\"presentation\",class:\"vs__open-indicator\"}},listHeader:t,listFooter:t,header:v({},t,{deselect:this.deselect}),footer:v({},t,{deselect:this.deselect})}},childComponents:function(){return v({},d,{},this.components)},stateClasses:function(){return{\"vs--open\":this.dropdownOpen,\"vs--single\":!this.multiple,\"vs--multiple\":this.multiple,\"vs--searching\":this.searching&&!this.noDrop,\"vs--searchable\":this.searchable&&!this.noDrop,\"vs--unsearchable\":!this.searchable,\"vs--loading\":this.mutableLoading,\"vs--disabled\":this.disabled}},searching:function(){return!!this.search},dropdownOpen:function(){return this.dropdownShouldOpen(this)},searchPlaceholder:function(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions:function(){var e=this,t=function(t){return null!==e.limit?t.slice(0,e.limit):t},n=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return t(n);var o=this.search.length?this.filter(n,this.search,this):n;if(this.taggable&&this.search.length)try{var i=this.createOption(this.search);this.optionExists(i)||o.unshift(i)}catch(e){}return t(o)},isValueEmpty:function(){return 0===this.selectedValue.length},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options:function(e,t){var n=this;!this.taggable&&(\"function\"==typeof n.resetOnOptionsChange?n.resetOnOptionsChange(e,t,n.selectedValue):n.resetOnOptionsChange)&&this.clearSelection(),this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value)},value:{immediate:!0,handler:function(e){this.isTrackingValues&&this.setInternalValueFromOptions(e)}},multiple:function(){this.clearSelection()},open:function(e){this.$emit(e?\"open\":\"close\")},search:function(e){e.length&&(this.open=!0)}},created:function(){this.mutableLoading=this.loading,this.$on(\"option:created\",this.pushTag)},methods:{setInternalValueFromOptions:function(e){var t=this;Array.isArray(e)?this.$data._value=e.map((function(e){return t.findOptionFromReducedValue(e)})):this.$data._value=this.findOptionFromReducedValue(e)},select:function(e){this.$emit(\"option:selecting\",e),this.isOptionSelected(e)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(e):(this.taggable&&!this.optionExists(e)&&this.$emit(\"option:created\",e),this.multiple&&(e=this.selectedValue.concat(e)),this.updateValue(e),this.$emit(\"option:selected\",e)),this.onAfterSelect(e)},deselect:function(e){var t=this;this.$emit(\"option:deselecting\",e),this.updateValue(this.selectedValue.filter((function(n){return!t.optionComparator(n,e)}))),this.$emit(\"option:deselected\",e)},keyboardDeselect:function(e,t){var n,o;this.deselect(e);var i=null===(n=this.$refs.deselectButtons)||void 0===n?void 0:n[t+1],s=null===(o=this.$refs.deselectButtons)||void 0===o?void 0:o[t-1],r=null!=i?i:s;r?r.focus():this.searchEl.focus()},clearSelection:function(){this.updateValue(this.multiple?[]:null),this.searchEl.focus()},onAfterSelect:function(e){var t=this;this.closeOnSelect&&(this.open=!this.open),this.clearSearchOnSelect&&(this.search=\"\"),this.noDrop&&this.multiple&&this.$nextTick((function(){return t.$refs.search.focus()}))},updateValue:function(e){var t=this;void 0===this.value&&(this.$data._value=e),null!==e&&(e=Array.isArray(e)?e.map((function(e){return t.reduce(e)})):this.reduce(e)),this.$emit(\"input\",e)},toggleDropdown:function(e){var n=e.target!==this.searchEl;n&&e.preventDefault();var o=[].concat(t()(this.$refs.deselectButtons||[]),t()([this.$refs.clearButton]||0));void 0===this.searchEl||o.filter(Boolean).some((function(t){return t.contains(e.target)||t===e.target}))?e.preventDefault():this.open&&n?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected:function(e){var t=this;return this.selectedValue.some((function(n){return t.optionComparator(n,e)}))},isOptionDeselectable:function(e){return this.isOptionSelected(e)&&this.deselectFromDropdown},hasKeyboardFocusBorder:function(e){return!(!this.keyboardFocusBorder||!this.isKeyboardNavigation)&&e===this.typeAheadPointer},optionComparator:function(e,t){return this.getOptionKey(e)===this.getOptionKey(t)},findOptionFromReducedValue:function(e){var n=this,o=[].concat(t()(this.options),t()(this.pushedTags)).filter((function(t){return JSON.stringify(n.reduce(t))===JSON.stringify(e)}));return 1===o.length?o[0]:o.find((function(e){return n.optionComparator(e,n.$data._value)}))||e},closeSearchOptions:function(){this.open=!1,this.$emit(\"search:blur\")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){var e=null;this.multiple&&(e=t()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(e)}},optionExists:function(e){var t=this;return this.optionList.some((function(n){return t.optionComparator(n,e)}))},optionAriaSelected:function(e){return this.selectable(e)?String(this.isOptionSelected(e)):null},normalizeOptionForSlot:function(e){return\"object\"===s()(e)?e:a()({},this.label,e)},pushTag:function(e){this.pushedTags.push(e)},onEscape:function(){this.search.length?this.search=\"\":this.open=!1},onSearchBlur:function(){if(!this.mousedown||this.searching){var e=this.clearSearchOnSelect,t=this.multiple;return this.clearSearchOnBlur({clearSearchOnSelect:e,multiple:t})&&(this.search=\"\"),void this.closeSearchOptions()}this.mousedown=!1,0!==this.search.length||0!==this.options.length||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit(\"search:focus\")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onMouseMove:function(e,t){this.isKeyboardNavigation=!1,this.selectable(e)&&(this.typeAheadPointer=t)},onSearchKeyDown:function(e){var t=this,n=function(e){if(e.preventDefault(),t.open)return!t.isComposing&&t.typeAheadSelect();t.open=!0},o={8:function(e){return t.maybeDeleteValue()},9:function(e){return t.onTab()},27:function(e){return t.onEscape()},38:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadUp();t.open=!0},40:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadDown();t.open=!0}};this.selectOnKeyCodes.forEach((function(e){return o[e]=n}));var i=this.mapKeydown(o,this);if(\"function\"==typeof i[e.keyCode])return i[e.keyCode](e)},onSearchKeyPress:function(e){this.open||32!==e.keyCode||(e.preventDefault(),this.open=!0)}}},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"v-select\",class:e.stateClasses,attrs:{id:\"v-select-\"+e.uid,dir:e.dir}},[e._t(\"header\",null,null,e.scope.header),e._v(\" \"),n(\"div\",{ref:\"toggle\",staticClass:\"vs__dropdown-toggle\"},[n(\"div\",{ref:\"selectedOptions\",staticClass:\"vs__selected-options\",on:{mousedown:e.toggleDropdown}},[e._l(e.selectedValue,(function(t,o){return e._t(\"selected-option-container\",[n(\"span\",{key:e.getOptionKey(t),staticClass:\"vs__selected\"},[e._t(\"selected-option\",[e._v(\"\\n \"+e._s(e.getOptionLabel(t))+\"\\n \")],null,e.normalizeOptionForSlot(t)),e._v(\" \"),e.multiple?n(\"button\",{ref:\"deselectButtons\",refInFor:!0,staticClass:\"vs__deselect\",attrs:{disabled:e.disabled,type:\"button\",title:e.ariaLabelDeselectOption(e.getOptionLabel(t)),\"aria-label\":e.ariaLabelDeselectOption(e.getOptionLabel(t))},on:{mousedown:function(n){return n.stopPropagation(),e.deselect(t)},keydown:function(n){return!n.type.indexOf(\"key\")&&e._k(n.keyCode,\"enter\",13,n.key,\"Enter\")?null:e.keyboardDeselect(t,o)}}},[n(e.childComponents.Deselect,{tag:\"component\"})],1):e._e()],2)],{option:e.normalizeOptionForSlot(t),deselect:e.deselect,multiple:e.multiple,disabled:e.disabled})})),e._v(\" \"),e._t(\"search\",[n(\"input\",e._g(e._b({staticClass:\"vs__search\"},\"input\",e.scope.search.attributes,!1),e.scope.search.events))],null,e.scope.search)],2),e._v(\" \"),n(\"div\",{ref:\"actions\",staticClass:\"vs__actions\"},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showClearButton,expression:\"showClearButton\"}],ref:\"clearButton\",staticClass:\"vs__clear\",attrs:{disabled:e.disabled,type:\"button\",title:e.ariaLabelClearSelected,\"aria-label\":e.ariaLabelClearSelected},on:{click:e.clearSelection}},[n(e.childComponents.Deselect,{tag:\"component\"})],1),e._v(\" \"),e.noDrop?e._e():n(\"button\",{ref:\"openIndicatorButton\",staticClass:\"vs__open-indicator-button\",attrs:{type:\"button\",tabindex:\"-1\",\"aria-labelledby\":\"vs-\"+e.uid+\"__listbox\",\"aria-controls\":\"vs-\"+e.uid+\"__listbox\",\"aria-expanded\":e.dropdownOpen.toString()},on:{mousedown:e.toggleDropdown}},[e._t(\"open-indicator\",[n(e.childComponents.OpenIndicator,e._b({tag:\"component\"},\"component\",e.scope.openIndicator.attributes,!1))],null,e.scope.openIndicator)],2),e._v(\" \"),e._t(\"spinner\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.mutableLoading,expression:\"mutableLoading\"}],staticClass:\"vs__spinner\"},[e._v(\"Loading...\")])],null,e.scope.spinner)],2)]),e._v(\" \"),n(\"transition\",{attrs:{name:e.transition}},[e.dropdownOpen?n(\"ul\",{directives:[{name:\"append-to-body\",rawName:\"v-append-to-body\"}],key:\"vs-\"+e.uid+\"__listbox\",ref:\"dropdownMenu\",staticClass:\"vs__dropdown-menu\",attrs:{id:\"vs-\"+e.uid+\"__listbox\",role:\"listbox\",\"aria-label\":e.ariaLabelListbox,\"aria-multiselectable\":e.multiple,tabindex:\"-1\"},on:{mousedown:function(t){return t.preventDefault(),e.onMousedown(t)},mouseup:e.onMouseUp}},[e._t(\"list-header\",null,null,e.scope.listHeader),e._v(\" \"),e._l(e.filteredOptions,(function(t,o){return n(\"li\",{key:e.getOptionKey(t),staticClass:\"vs__dropdown-option\",class:{\"vs__dropdown-option--deselect\":e.isOptionDeselectable(t)&&o===e.typeAheadPointer,\"vs__dropdown-option--selected\":e.isOptionSelected(t),\"vs__dropdown-option--highlight\":o===e.typeAheadPointer,\"vs__dropdown-option--kb-focus\":e.hasKeyboardFocusBorder(o),\"vs__dropdown-option--disabled\":!e.selectable(t)},attrs:{id:\"vs-\"+e.uid+\"__option-\"+o,role:\"option\",\"aria-selected\":e.optionAriaSelected(t)},on:{mousemove:function(n){return e.onMouseMove(t,o)},click:function(n){n.preventDefault(),n.stopPropagation(),e.selectable(t)&&e.select(t)}}},[e._t(\"option\",[e._v(\"\\n \"+e._s(e.getOptionLabel(t))+\"\\n \")],null,e.normalizeOptionForSlot(t))],2)})),e._v(\" \"),0===e.filteredOptions.length?n(\"li\",{staticClass:\"vs__no-options\"},[e._t(\"no-options\",[e._v(\"\\n Sorry, no matching options.\\n \")],null,e.scope.noOptions)],2):e._e(),e._v(\" \"),e._t(\"list-footer\",null,null,e.scope.listFooter)],2):n(\"ul\",{staticStyle:{display:\"none\",visibility:\"hidden\"},attrs:{id:\"vs-\"+e.uid+\"__listbox\",role:\"listbox\",\"aria-label\":e.ariaLabelListbox}})]),e._v(\" \"),e._t(\"footer\",null,null,e.scope.footer)],2)}),[],!1,null,null,null).exports,O={ajax:u,pointer:c,pointerScroll:l},_=m})(),o})()}));\n//# sourceMappingURL=vue-select.js.map","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nfunction FindRanges(text, search) {\n const ranges = [];\n let currentIndex = 0;\n let index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);\n let i = 0;\n while (index > -1 && i < text.length) {\n currentIndex = index + search.length;\n ranges.push({ start: index, end: currentIndex });\n index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);\n i++;\n }\n return ranges;\n}\nconst _sfc_main = {\n name: \"NcHighlight\",\n props: {\n /**\n * The string to display\n */\n text: {\n type: String,\n default: \"\"\n },\n /**\n * The string to match and highlight\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * The ranges to highlight, takes precedence over the search prop.\n */\n highlight: {\n type: Array,\n default: () => []\n }\n },\n computed: {\n /**\n * The indice ranges which should be highlighted.\n * If an array with ranges is provided, we use it. Otherwise\n * we calculate it based on the provided substring to highlight.\n *\n * @return {Array} The array of ranges to highlight\n */\n ranges() {\n let ranges = [];\n if (!this.search && this.highlight.length === 0) {\n return ranges;\n }\n if (this.highlight.length > 0) {\n ranges = this.highlight;\n } else {\n ranges = FindRanges(this.text, this.search);\n }\n ranges.forEach((range, i) => {\n if (range.end < range.start) {\n ranges[i] = {\n start: range.end,\n end: range.start\n };\n }\n });\n ranges = ranges.reduce((validRanges, range) => {\n if (range.start < this.text.length && range.end > 0) {\n validRanges.push({\n start: range.start < 0 ? 0 : range.start,\n end: range.end > this.text.length ? this.text.length : range.end\n });\n }\n return validRanges;\n }, []);\n ranges.sort((a, b) => {\n return a.start - b.start;\n });\n ranges = ranges.reduce((mergedRanges, range) => {\n if (!mergedRanges.length) {\n mergedRanges.push(range);\n } else {\n const idx = mergedRanges.length - 1;\n if (mergedRanges[idx].end >= range.start) {\n mergedRanges[idx] = {\n start: mergedRanges[idx].start,\n end: Math.max(mergedRanges[idx].end, range.end)\n };\n } else {\n mergedRanges.push(range);\n }\n }\n return mergedRanges;\n }, []);\n return ranges;\n },\n /**\n * Calculate the different chunks to show based on the ranges to highlight.\n *\n * @return {Array} The chunks\n */\n chunks() {\n if (this.ranges.length === 0) {\n return [{\n start: 0,\n end: this.text.length,\n highlight: false,\n text: this.text\n }];\n }\n const chunks = [];\n let currentIndex = 0;\n let currentRange = 0;\n while (currentIndex < this.text.length) {\n const range = this.ranges[currentRange];\n if (range.start === currentIndex) {\n chunks.push({\n ...range,\n highlight: true,\n text: this.text.slice(range.start, range.end)\n });\n currentRange++;\n currentIndex = range.end;\n if (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n chunks.push({\n start: currentIndex,\n end: this.text.length,\n highlight: false,\n text: this.text.slice(currentIndex)\n });\n currentIndex = this.text.length;\n }\n continue;\n }\n chunks.push({\n start: currentIndex,\n end: range.start,\n highlight: false,\n text: this.text.slice(currentIndex, range.start)\n });\n currentIndex = range.start;\n }\n return chunks;\n }\n },\n /**\n * The render function to display the component\n *\n * @param {Function} h The function to create VNodes\n * @return {object} The created VNode\n */\n render(h) {\n if (!this.ranges.length) {\n return h(\"span\", {}, this.text);\n }\n return h(\"span\", {}, this.chunks.map((chunk) => {\n return chunk.highlight ? h(\"strong\", {}, chunk.text) : chunk.text;\n }));\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcHighlight = __component__.exports;\nexport {\n FindRanges as F,\n NcHighlight as N\n};\n//# sourceMappingURL=index-CxTT94_h.mjs.map\n","import '../assets/NcEllipsisedOption-DRkFZ9bI.css';\nimport { N as NcHighlight, F as FindRanges } from \"../chunks/index-CxTT94_h.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcEllipsisedOption\",\n components: {\n NcHighlight\n },\n props: {\n /**\n * The text to be display in one line. If it is longer than 10 characters, it is be truncated with ellipsis in the end but keeping up to 10 last characters to fit the parent container.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The search value to highlight in the text\n */\n search: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n needsTruncate() {\n return this.name && this.name.length >= 10;\n },\n /**\n * Index at which to split the name if it is longer than 10 characters.\n *\n * @return {number} The position at which to split\n */\n split() {\n return this.name.length - Math.min(Math.floor(this.name.length / 2), 10);\n },\n part1() {\n if (this.needsTruncate) {\n return this.name.slice(0, this.split);\n }\n return this.name;\n },\n part2() {\n if (this.needsTruncate) {\n return this.name.slice(this.split);\n }\n return \"\";\n },\n /**\n * The ranges to highlight. Since we split the string for ellipsising,\n * the Highlight component cannot figure this out itself and needs the ranges provided.\n *\n * @return {Array} The array with the ranges to highlight\n */\n highlight1() {\n if (!this.search) {\n return [];\n }\n return FindRanges(this.name, this.search);\n },\n /**\n * We shift the ranges for the second part by the position of the split.\n * Ranges out of the string length are discarded by the Highlight component,\n * so we don't need to take care of this here.\n *\n * @return {Array} The array with the ranges to highlight\n */\n highlight2() {\n return this.highlight1.map((range) => {\n return {\n start: range.start - this.split,\n end: range.end - this.split\n };\n });\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"name-parts\", attrs: { \"dir\": \"auto\", \"title\": _vm.name } }, [_c(\"NcHighlight\", { staticClass: \"name-parts__first\", attrs: { \"text\": _vm.part1, \"search\": _vm.search, \"highlight\": _vm.highlight1 } }), _vm.part2 ? _c(\"NcHighlight\", { staticClass: \"name-parts__last\", attrs: { \"text\": _vm.part2, \"search\": _vm.search, \"highlight\": _vm.highlight2 } }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"592b8444\"\n);\nconst NcEllipsisedOption = __component__.exports;\nexport {\n NcEllipsisedOption as default\n};\n//# sourceMappingURL=NcEllipsisedOption.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcListItemIcon-BDyiLlk2.css';\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"vue\";\nimport \"../Composables/useIsDarkTheme.mjs\";\nimport \"@nextcloud/router\";\nimport \"../Functions/isDarkTheme.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { N as NcHighlight } from \"./index-CxTT94_h.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n name: \"NcListItemIcon\",\n components: {\n NcAvatar,\n NcHighlight,\n NcIconSvgWrapper\n },\n mixins: [\n userStatus\n ],\n props: {\n /**\n * Default first line text\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * SVG icon to be displayed at the end of the component\n */\n iconSvg: {\n type: String,\n default: \"\"\n },\n /**\n * Descriptive name for the icon\n */\n iconName: {\n type: String,\n default: \"\"\n },\n /**\n * Search within the highlight of name/subname\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n /**\n * Disable the margins of this component.\n * Useful for integration in `NcSelect` for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to name\n */\n displayName: {\n type: String,\n default: null\n },\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n setup() {\n return {\n margin,\n defaultSize\n };\n },\n computed: {\n hasIcon() {\n return this.icon !== \"\";\n },\n hasIconSvg() {\n return this.iconSvg !== \"\";\n },\n isValidSubname() {\n return this.subname?.trim?.() !== \"\";\n },\n isSizeBigEnough() {\n return this.avatarSize >= 26;\n },\n cssVars() {\n const margin2 = this.noMargin ? 0 : this.margin;\n return {\n \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n \"--margin\": this.margin + \"px\"\n };\n },\n /**\n * Seperates the search property into two parts, the first one is the search part on the name, the second on the subname.\n *\n * @return {[string, string]}\n */\n searchParts() {\n const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n const match = this.search.match(EMAIL_NOTATION);\n if (this.isNoUser || !match) {\n return [this.search, this.search];\n }\n return [match[1].trim(), match[2]];\n }\n },\n beforeMount() {\n if (!this.isNoUser && !this.subname) {\n this.fetchUserStatus(this.user);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._g({ staticClass: \"option\", class: { \"option--compact\": _vm.avatarSize < _vm.defaultSize }, style: _vm.cssVars, attrs: { \"id\": _vm.id } }, _vm.$listeners), [_c(\"NcAvatar\", _vm._b({ staticClass: \"option__avatar\", attrs: { \"disable-menu\": true, \"disable-tooltip\": true, \"display-name\": _vm.displayName || _vm.name, \"is-no-user\": _vm.isNoUser, \"size\": _vm.avatarSize } }, \"NcAvatar\", _vm.$attrs, false)), _c(\"div\", { staticClass: \"option__details\" }, [_c(\"NcHighlight\", { staticClass: \"option__lineone\", attrs: { \"text\": _vm.name, \"search\": _vm.searchParts[0] } }), _vm.isValidSubname && _vm.isSizeBigEnough ? _c(\"NcHighlight\", { staticClass: \"option__linetwo\", attrs: { \"text\": _vm.subname, \"search\": _vm.searchParts[1] } }) : _vm.hasStatus ? _c(\"span\", [_c(\"span\", [_vm._v(_vm._s(_vm.userStatus.icon))]), _c(\"span\", [_vm._v(_vm._s(_vm.userStatus.message))])]) : _vm._e()], 1), _vm._t(\"default\", function() {\n return [_vm.hasIconSvg ? _c(\"NcIconSvgWrapper\", { staticClass: \"option__icon\", attrs: { \"svg\": _vm.iconSvg, \"name\": _vm.iconName } }) : _vm.hasIcon ? _c(\"span\", { staticClass: \"icon option__icon\", class: _vm.icon, attrs: { \"aria-label\": _vm.iconName } }) : _vm._e()];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"eff1d9a4\"\n);\nconst NcListItemIcon = __component__.exports;\nexport {\n NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-DIecVacf.mjs.map\n","import '../assets/NcSelect-DS82iTcW.css';\nimport { autoUpdate, computePosition, offset, flip, shift, limitShift } from \"@floating-ui/dom\";\nimport { VueSelect } from \"@nextcloud/vue-select\";\nimport Vue from \"vue\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport NcEllipsisedOption from \"../Components/NcEllipsisedOption.mjs\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DIecVacf.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, g as t38, h as t17, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { a as isLegacy32 } from \"./legacy-Cy3dCXuB.mjs\";\nimport \"@nextcloud/vue-select/dist/vue-select.css\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t17, t38);\nconst _sfc_main = {\n name: \"NcSelect\",\n components: {\n ChevronDown,\n NcEllipsisedOption,\n NcListItemIcon,\n NcLoadingIcon,\n VueSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n // Add VueSelect props to $props\n ...VueSelect.props,\n ...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n /**\n * `aria-label` for the clear input button\n */\n ariaLabelClearSelected: {\n type: String,\n default: t(\"Clear selected\")\n },\n /**\n * `aria-label` for the search input\n *\n * A descriptive `inputLabel` is preferred as this is not visible.\n */\n ariaLabelCombobox: {\n type: String,\n default: null\n },\n /**\n * `aria-label` for the listbox element\n */\n ariaLabelListbox: {\n type: String,\n default: t(\"Options\")\n },\n /**\n * Allows to customize the `aria-label` for the deselect-option button\n * The default is \"Deselect \" + optionLabel\n *\n * @type {(optionLabel: string) => string}\n */\n ariaLabelDeselectOption: {\n type: Function,\n default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n },\n /**\n * Append the dropdown element to the end of the body\n * and size/position it dynamically.\n *\n * @see https://vue-select.org/api/props.html#appendtobody\n */\n appendToBody: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * When `appendToBody` is true, this function is responsible for\n * positioning the drop down list.\n *\n * If a function is returned from `calculatePosition`, it will\n * be called when the drop down list is removed from the DOM.\n * This allows for any garbage collection you may need to do.\n *\n * @see https://vue-select.org/api/props.html#calculateposition\n */\n calculatePosition: {\n type: Function,\n default: null\n },\n /**\n * Close the dropdown when selecting an option.\n *\n * @deprecated Use the `keepOpen` prop instead\n */\n closeOnSelect: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Keep the dropdown open after selecting an option.\n *\n * @default false\n * @since 8.25.0\n */\n keepOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Replace default vue-select components\n *\n * @see https://vue-select.org/api/props.html#components\n */\n components: {\n type: Object,\n default: () => ({\n Deselect: {\n render: (createElement) => createElement(Close, {\n props: {\n size: 20,\n fillColor: \"var(--vs-controls-color)\"\n },\n style: {\n cursor: \"pointer\"\n }\n })\n }\n })\n },\n /**\n * Sets the maximum number of options to display in the dropdown list\n */\n limit: {\n type: Number,\n default: null\n },\n /**\n * Disable the component\n *\n * @see https://vue-select.org/api/props.html#disabled\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Determines whether the dropdown should be open.\n * Receives the component instance as the only argument.\n *\n * @see https://vue-select.org/api/props.html#dropdownshouldopen\n */\n dropdownShouldOpen: {\n type: Function,\n default: ({ noDrop, open }) => {\n return noDrop ? false : open;\n }\n },\n /**\n * Callback to determine if the provided option should\n * match the current search text. Used to determine\n * if the option should be displayed.\n *\n * Defaults to the internal vue-select function documented at the link\n * below\n *\n * Enabling `userSelect` will automatically set this to filter by the\n * `displayName` and `subname` properties of the user option object\n * unless this prop is set explicitly\n *\n * @see https://vue-select.org/api/props.html#filterby\n */\n filterBy: {\n type: Function,\n default: null\n },\n /**\n * Class for the `input`\n *\n * Necessary for use in NcActionInput\n */\n inputClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Input element id\n */\n inputId: {\n type: String,\n default: () => `select-input-${GenRandomId()}`\n },\n /**\n * Visible label for the input element\n *\n * @todo Set default for @nextcloud/vue 9\n */\n inputLabel: {\n type: String,\n default: null\n },\n /**\n * Pass true if you are using an external label\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Display a visible border around dropdown options\n * which have keyboard focus\n */\n keyboardFocusBorder: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Key of the displayed label for object options\n *\n * Defaults to the internal vue-select string documented at the link\n * below\n *\n * Enabling `userSelect` will automatically set this to `'displayName'`\n * unless this prop is set explicitly\n *\n * @see https://vue-select.org/api/props.html#label\n */\n label: {\n type: String,\n default: null\n },\n /**\n * Show the loading icon\n *\n * @see https://vue-select.org/api/props.html#loading\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Allow selection of multiple options\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Disable automatic wrapping when selected options overflow the width\n */\n noWrap: {\n type: Boolean,\n default: false\n },\n /**\n * Array of options\n *\n * @type {Array<string | number | Record<string | number, any>>}\n *\n * @see https://vue-select.org/api/props.html#options\n */\n options: {\n type: Array,\n default: () => []\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * Customized component's response to keydown events while the search input has focus\n *\n * @see https://vue-select.org/guide/keydown.html#mapkeydown\n */\n mapKeydown: {\n type: Function,\n /**\n * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n *\n * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n * @return {Record<number, Function>} patched keydown event handlers\n */\n default(map, vm) {\n return {\n ...map,\n /**\n * Patched Escape handler to stop propagation from open select\n *\n * @param {KeyboardEvent} event - default keydown event handler\n */\n 27: (event) => {\n if (vm.open) {\n event.stopPropagation();\n }\n map[27](event);\n }\n };\n }\n },\n /**\n * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n *\n * @see https://vue-select.org/api/props.html#uid\n */\n uid: {\n type: String,\n default: () => GenRandomId()\n },\n /**\n * When `appendToBody` is true, this sets the placement of the dropdown\n *\n * @type {'bottom' | 'top'}\n */\n placement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * If false, the focused dropdown option will not be reset when filtered\n * options change\n */\n resetFocusOnOptionsChange: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Enable the user selector with avatars\n *\n * Objects must contain the data expected by the\n * [NcListItemIcon](#/Components/NcListItemIcon) and\n * [NcAvatar](#/Components/NcAvatar) components\n *\n * @deprecated Use the `NcSelectUsers` component instead\n */\n userSelect: {\n type: Boolean,\n default: false\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Number, Object, Array],\n default: void 0\n },\n /**\n * Currently selected value\n *\n * The `v-model` directive may be used for two-way data binding\n *\n * @type {string | number | Record<string | number, any> | Array<any>}\n *\n * @see https://vue-select.org/api/props.html#value\n */\n modelValue: {\n type: [String, Number, Object, Array],\n default: null\n },\n /**\n * Enable if a value is required for native form validation\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n const model = useModelMigration(\"value\", \"input\");\n return {\n avatarSize,\n model,\n isLegacy: isLegacy32\n };\n },\n data() {\n return {\n search: \"\"\n };\n },\n computed: {\n inputRequired() {\n if (!this.required) {\n return null;\n }\n return this.model === null || Array.isArray(this.model) && this.model.length === 0;\n },\n localCalculatePosition() {\n if (this.calculatePosition !== null) {\n return this.calculatePosition;\n }\n return (dropdownMenu, component, { width }) => {\n dropdownMenu.style.width = width;\n const addClass = {\n name: \"addClass\",\n fn() {\n dropdownMenu.classList.add(\"vs__dropdown-menu--floating\");\n return {};\n }\n };\n const togglePlacementClass = {\n name: \"togglePlacementClass\",\n fn({ placement }) {\n component.$el.classList.toggle(\n \"select--drop-up\",\n placement === \"top\"\n );\n dropdownMenu.classList.toggle(\n \"vs__dropdown-menu--floating-placement-top\",\n placement === \"top\"\n );\n return {};\n }\n };\n const updatePosition = () => {\n computePosition(component.$refs.toggle, dropdownMenu, {\n placement: this.placement,\n middleware: [\n offset(-1),\n addClass,\n togglePlacementClass,\n // Match popperjs default collision prevention behavior by appending the following middleware in order\n flip(),\n shift({ limiter: limitShift() })\n ]\n }).then(({ x, y }) => {\n Object.assign(dropdownMenu.style, {\n left: `${x}px`,\n top: `${y}px`,\n width: `${component.$refs.toggle.getBoundingClientRect().width}px`\n });\n });\n };\n const cleanup = autoUpdate(\n component.$refs.toggle,\n dropdownMenu,\n updatePosition\n );\n return cleanup;\n };\n },\n localFilterBy() {\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n if (this.filterBy !== null) {\n return this.filterBy;\n }\n if (this.userSelect) {\n return (option, label, search) => {\n const match = search.match(EMAIL_NOTATION);\n return match && option.subname?.toLocaleLowerCase?.()?.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n };\n }\n return VueSelect.props.filterBy.default;\n },\n localLabel() {\n if (this.label !== null) {\n return this.label;\n }\n if (this.userSelect) {\n return \"displayName\";\n }\n return VueSelect.props.label.default;\n },\n propsToForward() {\n const vueSelectKeys = [\n ...Object.keys(VueSelect.props),\n ...VueSelect.mixins.flatMap((mixin) => Object.keys(mixin.props ?? {}))\n ];\n const initialPropsToForward = Object.fromEntries(Object.entries(this.$props).filter(([key]) => vueSelectKeys.includes(key)));\n const propsToForward = {\n ...initialPropsToForward,\n // Custom overrides of vue-select props\n value: this.model,\n calculatePosition: this.localCalculatePosition,\n closeOnSelect: this.closeOnSelect && !this.keepOpen,\n filterBy: this.localFilterBy,\n label: this.localLabel\n };\n return propsToForward;\n },\n listenersToForward() {\n return {\n ...this.$listeners,\n input: ($event) => {\n this.model = $event;\n }\n };\n }\n },\n mounted() {\n if (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n Vue.util.warn(\"[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.\");\n }\n if (this.inputLabel && this.ariaLabelCombobox) {\n Vue.util.warn(\"[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.\");\n }\n },\n methods: {\n t\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"VueSelect\", _vm._g(_vm._b({ staticClass: \"select\", class: {\n \"select--legacy\": _vm.isLegacy,\n \"select--no-wrap\": _vm.noWrap,\n \"user-select\": _vm.userSelect\n }, on: { \"search\": (searchString) => _vm.search = searchString }, scopedSlots: _vm._u([!_vm.labelOutside && _vm.inputLabel ? { key: \"header\", fn: function() {\n return [_c(\"label\", { staticClass: \"select__label\", attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.inputLabel) + \" \")])];\n }, proxy: true } : null, { key: \"search\", fn: function({ attributes, events }) {\n return [_c(\"input\", _vm._g(_vm._b({ staticClass: \"vs__search\", class: _vm.inputClass, attrs: { \"required\": _vm.inputRequired, \"dir\": \"auto\" } }, \"input\", attributes, false), events))];\n } }, { key: \"open-indicator\", fn: function({ attributes }) {\n return [_c(\"ChevronDown\", _vm._b({ style: {\n cursor: !_vm.disabled ? \"pointer\" : null\n }, attrs: { \"fill-color\": \"var(--vs-controls-color)\", \"size\": 26 } }, \"ChevronDown\", attributes, false))];\n } }, { key: \"option\", fn: function(option) {\n return [_vm._t(\"option\", function() {\n return [_vm.userSelect ? _c(\"NcListItemIcon\", _vm._b({ attrs: { \"avatar-size\": 32, \"name\": option[_vm.localLabel], \"search\": _vm.search } }, \"NcListItemIcon\", option, false)) : _c(\"NcEllipsisedOption\", { attrs: { \"name\": String(option[_vm.localLabel]), \"search\": _vm.search } })];\n }, null, option)];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_vm._t(\"selected-option\", function() {\n return [_vm.userSelect ? _c(\"NcListItemIcon\", _vm._b({ attrs: { \"avatar-size\": _vm.avatarSize, \"name\": selectedOption[_vm.localLabel], \"no-margin\": \"\", \"search\": _vm.search } }, \"NcListItemIcon\", selectedOption, false)) : _c(\"NcEllipsisedOption\", { attrs: { \"name\": String(selectedOption[_vm.localLabel]), \"search\": _vm.search } })];\n }, { \"vBind\": selectedOption })];\n } }, { key: \"spinner\", fn: function(spinner) {\n return [spinner.loading ? _c(\"NcLoadingIcon\") : _vm._e()];\n } }, { key: \"no-options\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.t(\"No results\")) + \" \")];\n }, proxy: true }, _vm._l(_vm.$scopedSlots, function(_, name) {\n return { key: name, fn: function(data) {\n return [_vm._t(name, null, null, data)];\n } };\n })], null, true) }, \"VueSelect\", _vm.propsToForward, false), _vm.listenersToForward));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSelect = __component__.exports;\nexport {\n NcSelect as N\n};\n//# sourceMappingURL=NcSelect-CxHfXvZV.mjs.map\n","import '../assets/NcCollectionList-ChU8Os4e.css';\nimport debounce from \"debounce\";\nimport { ref, set } from \"vue\";\nimport { r as register, P as t28, a as t, Q as t7 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\"remove-resource\", \"rename-collection\"],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"remove-resource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"rename-collection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"collection-list-item\" }, [_c(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": _vm.collection.name, \"allow-placeholder\": \"\" } }), _vm.newName === null ? _c(\"span\", { staticClass: \"collection-item-name\", attrs: { \"title\": \"\" }, on: { \"click\": _vm.showDetails } }, [_vm._v(_vm._s(_vm.collection.name))]) : _c(\"form\", { class: { \"should-shake\": _vm.error }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.renameCollection.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.newName, expression: \"newName\" }], attrs: { \"type\": \"text\", \"autocomplete\": \"off\", \"autocapitalize\": \"off\" }, domProps: { \"value\": _vm.newName }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.newName = $event.target.value;\n } } }), _c(\"input\", { staticClass: \"icon-confirm\", attrs: { \"type\": \"submit\", \"value\": \"\" } })]), !_vm.detailsOpen && _vm.newName === null ? _c(\"div\", { staticClass: \"linked-icons\" }, _vm._l(_vm.resources.slice(0, 2), function(resource) {\n return _c(_vm.getComponent(resource).component, { key: resource.type + \"|\" + resource.id, tag: \"component\", class: _vm.typeClass(resource), attrs: { \"title\": resource.name, \"to\": _vm.getComponent(resource).to, \"href\": _vm.getComponent(resource).href } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource), \"alt\": resource.name } })]);\n }), 1) : _vm._e(), _vm.newName === null ? _c(\"span\", { staticClass: \"sharingOptionsGroup\" }, [_c(\"NcActions\", [_c(\"NcActionButton\", { attrs: { \"icon\": \"icon-info\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleDetails.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.detailsOpen ? _vm.t(\"Hide details\") : _vm.t(\"Show details\")) + \" \")]), _c(\"NcActionButton\", { attrs: { \"icon\": \"icon-rename\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openRename.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Rename project\")) + \" \")])], 1)], 1) : _vm._e(), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"div\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.detailsOpen ? _c(\"ul\", { staticClass: \"resource-list-details\" }, _vm._l(_vm.resources, function(resource) {\n return _c(\"li\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource) }, [_c(_vm.getComponent(resource).component, { tag: \"component\", attrs: { \"to\": _vm.getComponent(resource).to, \"href\": _vm.getComponent(resource).href } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource), \"alt\": resource.name } }), _c(\"span\", { staticClass: \"resource-name\" }, [_vm._v(_vm._s(resource.name || \"\"))])]), _c(\"span\", { staticClass: \"icon-close\", on: { \"click\": function($event) {\n return _vm.removeResource(_vm.collection, resource);\n } } })], 1);\n }), 0) : _vm._e()])], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"88468fab\"\n);\nconst NcCollectionListItem = __component__$1.exports;\nregister(t7);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n set(storedCollections, \"value\", collections);\n };\n const addCollection = (collection) => {\n set(storedCollections, \"value\", [...storedCollections.value, collection]);\n };\n const removeCollection = (collectionId) => {\n set(storedCollections, \"value\", storedCollections.value.filter((item) => item.id !== collectionId));\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n set(storedCollections.value, index, collection);\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((error) => {\n logger.error(\"No resource selected\", { error });\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((error) => {\n logger.error(t(\"Failed to rename the project\"), { error });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _vm.collections && _vm.type && _vm.id ? _c(\"ul\", { staticClass: \"collection-list\", attrs: { \"id\": \"collection-list\" } }, [_c(\"li\", { on: { \"click\": _vm.showSelect } }, [_vm._m(0), _c(\"div\", { attrs: { \"id\": \"collection-select-container\" } }, [_c(\"NcSelect\", { ref: \"select\", attrs: { \"aria-label-combobox\": _vm.t(\"Add to a project\"), \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"label\": \"title\", \"limit\": 5 }, on: { \"close\": function($event) {\n _vm.isSelectOpen = false;\n }, \"open\": function($event) {\n _vm.isSelectOpen = true;\n }, \"option:selected\": _vm.select, \"search\": _vm.search }, scopedSlots: _vm._u([{ key: \"selected-option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__desc\" }, [_c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])])];\n } }, { key: \"option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__wrapper\" }, [option.class ? _c(\"span\", { staticClass: \"avatar\", class: option.class }) : option.method !== 2 ? _c(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": option.title } }) : _vm._e(), _c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])], 1)];\n } }], null, false, 2397208459), model: { value: _vm.value, callback: function($$v) {\n _vm.value = $$v;\n }, expression: \"value\" } }, [_c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"li\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _vm._l(_vm.collections, function(collection) {\n return _c(\"NcCollectionListItem\", { key: collection.id, attrs: { \"collection\": collection, \"error\": _vm.collectionsError[collection.id] }, on: { \"rename-collection\": _vm.renameCollectionFromItem, \"remove-resource\": _vm.removeResourceFromCollection } });\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"avatar\" }, [_c(\"span\", { staticClass: \"icon-projects\" })]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e1b88947\"\n);\nconst NcCollectionList = __component__.exports;\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-75D50pZU.mjs.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VueColor=t():e.VueColor=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=59)}([function(e,t){function n(e,t){var n=e[1]||\"\",i=e[3];if(!i)return n;if(t&&\"function\"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(e){return\"/*# sourceURL=\"+i.sourceRoot+e+\" */\"})).concat([o]).join(\"\\n\")}return[n].join(\"\\n\")}function r(e){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+\" */\"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?\"@media \"+t[2]+\"{\"+r+\"}\":r}).join(\"\")},t.i=function(e,n){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];\"number\"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];\"number\"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]=\"(\"+a[2]+\") and (\"+n+\")\"),t.push(a))}},t}},function(e,t,n){function r(e){for(var t=0;t<e.length;t++){var n=e[t],r=u[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(o(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{for(var a=[],i=0;i<n.parts.length;i++)a.push(o(n.parts[i]));u[n.id]={id:n.id,refs:1,parts:a}}}}function i(){var e=document.createElement(\"style\");return e.type=\"text/css\",f.appendChild(e),e}function o(e){var t,n,r=document.querySelector(\"style[\"+b+'~=\"'+e.id+'\"]');if(r){if(p)return v;r.parentNode.removeChild(r)}if(x){var o=h++;r=d||(d=i()),t=a.bind(null,r,o,!1),n=a.bind(null,r,o,!0)}else r=i(),t=s.bind(null,r),n=function(){r.parentNode.removeChild(r)};return t(e),function(r){if(r){if(r.css===e.css&&r.media===e.media&&r.sourceMap===e.sourceMap)return;t(e=r)}else n()}}function a(e,t,n,r){var i=n?\"\":r.css;if(e.styleSheet)e.styleSheet.cssText=m(t,i);else{var o=document.createTextNode(i),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(o,a[t]):e.appendChild(o)}}function s(e,t){var n=t.css,r=t.media,i=t.sourceMap;if(r&&e.setAttribute(\"media\",r),g.ssrId&&e.setAttribute(b,t.id),i&&(n+=\"\\n/*# sourceURL=\"+i.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+\" */\"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var c=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!c)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var l=n(63),u={},f=c&&(document.head||document.getElementsByTagName(\"head\")[0]),d=null,h=0,p=!1,v=function(){},g=null,b=\"data-vue-ssr-id\",x=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());e.exports=function(e,t,n,i){p=n,g=i||{};var o=l(e,t);return r(o),function(t){for(var n=[],i=0;i<o.length;i++){var a=o[i],s=u[a.id];s.refs--,n.push(s)}t?(o=l(e,t),r(o)):o=[];for(var i=0;i<n.length;i++){var s=n[i];if(0===s.refs){for(var c=0;c<s.parts.length;c++)s.parts[c]();delete u[s.id]}}}};var m=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join(\"\\n\")}}()},function(e,t){e.exports=function(e,t,n,r,i,o){var a,s=e=e||{},c=typeof e.default;\"object\"!==c&&\"function\"!==c||(a=e,s=e.default);var l=\"function\"==typeof s?s.options:s;t&&(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),i&&(l._scopeId=i);var u;if(o?(u=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},l._ssrRegister=u):r&&(u=r),u){var f=l.functional,d=f?l.render:l.beforeCreate;f?(l._injectStyles=u,l.render=function(e,t){return u.call(t),d(e,t)}):l.beforeCreate=d?[].concat(d,u):[u]}return{esModule:a,exports:s,options:l}}},function(e,t,n){\"use strict\";function r(e,t){var n,r=e&&e.a;!(n=e&&e.hsl?(0,o.default)(e.hsl):e&&e.hex&&e.hex.length>0?(0,o.default)(e.hex):e&&e.hsv?(0,o.default)(e.hsv):e&&e.rgba?(0,o.default)(e.rgba):e&&e.rgb?(0,o.default)(e.rgb):(0,o.default)(e))||void 0!==n._a&&null!==n._a||n.setAlpha(r||1);var i=n.toHsl(),a=n.toHsv();return 0===i.s&&(a.h=i.h=e.h||e.hsl&&e.hsl.h||t||0),{hsl:i,hex:n.toHexString().toUpperCase(),hex8:n.toHex8String().toUpperCase(),rgba:n.toRgb(),hsv:a,oldHue:e.h||t||i.h,source:e.source,a:e.a||n.getAlpha()}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(64),o=function(e){return e&&e.__esModule?e:{default:e}}(i);t.default={props:[\"value\"],data:function(){return{val:r(this.value)}},computed:{colors:{get:function(){return this.val},set:function(e){this.val=e,this.$emit(\"input\",e)}}},watch:{value:function(e){this.val=r(e)}},methods:{colorChange:function(e,t){this.oldHue=this.colors.hsl.h,this.colors=r(e,t||this.oldHue)},isValidHex:function(e){return(0,o.default)(e).isValid()},simpleCheckForValidColor:function(e){for(var t=[\"r\",\"g\",\"b\",\"a\",\"h\",\"s\",\"l\",\"v\"],n=0,r=0,i=0;i<t.length;i++){var o=t[i];e[o]&&(n++,isNaN(e[o])||r++)}if(n===r)return e},paletteUpperCase:function(e){return e.map(function(e){return e.toUpperCase()})},isTransparent:function(e){return 0===(0,o.default)(e).getAlpha()}}}},function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(e,t,n){\"use strict\";function r(e){c||n(65)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(36),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(67),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/EditableInput.vue\",t.default=f.exports},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(8),i=n(16);e.exports=n(9)?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(13),i=n(42),o=n(25),a=Object.defineProperty;t.f=n(9)?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),i)try{return a(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(15)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(e,t,n){var r=n(89),i=n(22);e.exports=function(e){return r(i(e))}},function(e,t,n){var r=n(29)(\"wks\"),i=n(17),o=n(4).Symbol,a=\"function\"==typeof o;(e.exports=function(e){return r[e]||(r[e]=a&&o[e]||(a?o:i)(\"Symbol.\"+e))}).store=r},function(e,t,n){\"use strict\";function r(e){c||n(111)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(50),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(113),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Hue.vue\",t.default=f.exports},function(e,t,n){var r=n(14);e.exports=function(e){if(!r(e))throw TypeError(e+\" is not an object!\");return e}},function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+r).toString(36))}},function(e,t,n){\"use strict\";function r(e){c||n(123)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(53),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(127),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Saturation.vue\",t.default=f.exports},function(e,t,n){\"use strict\";function r(e){c||n(128)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(54),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(133),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Alpha.vue\",t.default=f.exports},function(e,t,n){\"use strict\";function r(e){c||n(130)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(55),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(132),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/common/Checkboard.vue\",t.default=f.exports},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on \"+e);return e}},function(e,t){e.exports=!0},function(e,t){var n=e.exports={version:\"2.5.1\"};\"number\"==typeof __e&&(__e=n)},function(e,t,n){var r=n(14);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&\"function\"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if(\"function\"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&\"function\"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(e,t){e.exports={}},function(e,t,n){var r=n(46),i=n(30);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(29)(\"keys\"),i=n(17);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t,n){var r=n(4),i=r[\"__core-js_shared__\"]||(r[\"__core-js_shared__\"]={});e.exports=function(e){return i[e]||(i[e]={})}},function(e,t){e.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(e,t,n){var r=n(8).f,i=n(6),o=n(11)(\"toStringTag\");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(11)},function(e,t,n){var r=n(4),i=n(24),o=n(23),a=n(32),s=n(8).f;e.exports=function(e){var t=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=[\"#4D4D4D\",\"#999999\",\"#FFFFFF\",\"#F44E3B\",\"#FE9200\",\"#FCDC00\",\"#DBDF00\",\"#A4DD00\",\"#68CCCA\",\"#73D8FF\",\"#AEA1FF\",\"#FDA1FF\",\"#333333\",\"#808080\",\"#CCCCCC\",\"#D33115\",\"#E27300\",\"#FCC400\",\"#B0BC00\",\"#68BC00\",\"#16A5A5\",\"#009CE0\",\"#7B64FF\",\"#FA28FF\",\"#000000\",\"#666666\",\"#B3B3B3\",\"#9F0500\",\"#C45100\",\"#FB9E00\",\"#808900\",\"#194D33\",\"#0C797D\",\"#0062B1\",\"#653294\",\"#AB149E\"];t.default={name:\"Compact\",mixins:[o.default],props:{palette:{type:Array,default:function(){return c}}},components:{\"ed-in\":s.default},computed:{pick:function(){return this.colors.hex.toUpperCase()}},methods:{handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"editableInput\",props:{label:String,labelText:String,desc:String,value:[String,Number],max:Number,min:Number,arrowOffset:{type:Number,default:1}},computed:{val:{get:function(){return this.value},set:function(e){if(!(void 0!==this.max&&+e>this.max))return e;this.$refs.input.value=this.max}},labelId:function(){return\"input__label__\"+this.label+\"__\"+Math.random().toString().slice(2,5)},labelSpanText:function(){return this.labelText||this.label}},methods:{update:function(e){this.handleChange(e.target.value)},handleChange:function(e){var t={};t[this.label]=e,void 0===t.hex&&void 0===t[\"#\"]?this.$emit(\"change\",t):e.length>5&&this.$emit(\"change\",t)},handleKeyDown:function(e){var t=this.val,n=Number(t);if(n){var r=this.arrowOffset||1;38===e.keyCode&&(t=n+r,this.handleChange(t),e.preventDefault()),40===e.keyCode&&(t=n-r,this.handleChange(t),e.preventDefault())}}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(3),i=function(e){return e&&e.__esModule?e:{default:e}}(r),o=[\"#FFFFFF\",\"#F2F2F2\",\"#E6E6E6\",\"#D9D9D9\",\"#CCCCCC\",\"#BFBFBF\",\"#B3B3B3\",\"#A6A6A6\",\"#999999\",\"#8C8C8C\",\"#808080\",\"#737373\",\"#666666\",\"#595959\",\"#4D4D4D\",\"#404040\",\"#333333\",\"#262626\",\"#0D0D0D\",\"#000000\"];t.default={name:\"Grayscale\",mixins:[i.default],props:{palette:{type:Array,default:function(){return o}}},components:{},computed:{pick:function(){return this.colors.hex.toUpperCase()}},methods:{handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(5),o=r(i),a=n(3),s=r(a);t.default={name:\"Material\",mixins:[s.default],components:{\"ed-in\":o.default},methods:{onChange:function(e){e&&(e.hex?this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:\"hex\"}):(e.r||e.g||e.b)&&this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}))}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(80),o=r(i),a=n(3),s=r(a),c=n(12),l=r(c);t.default={name:\"Slider\",mixins:[s.default],props:{swatches:{type:Array,default:function(){return[{s:.5,l:.8},{s:.5,l:.65},{s:.5,l:.5},{s:.5,l:.35},{s:.5,l:.2}]}}},components:{hue:l.default},computed:{normalizedSwatches:function(){return this.swatches.map(function(e){return\"object\"!==(void 0===e?\"undefined\":(0,o.default)(e))?{s:.5,l:e}:e})}},methods:{isActive:function(e,t){var n=this.colors.hsl;return 1===n.l&&1===e.l||(0===n.l&&0===e.l||Math.abs(n.l-e.l)<.01&&Math.abs(n.s-e.s)<.01)},hueChange:function(e){this.colorChange(e)},handleSwClick:function(e,t){this.colorChange({h:this.colors.hsl.h,s:t.s,l:t.l,source:\"hsl\"})}}}},function(e,t,n){\"use strict\";var r=n(23),i=n(41),o=n(44),a=n(7),s=n(6),c=n(26),l=n(87),u=n(31),f=n(94),d=n(11)(\"iterator\"),h=!([].keys&&\"next\"in[].keys()),p=function(){return this};e.exports=function(e,t,n,v,g,b,x){l(n,t,v);var m,_,w,y=function(e){if(!h&&e in S)return S[e];switch(e){case\"keys\":case\"values\":return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+\" Iterator\",k=\"values\"==g,F=!1,S=e.prototype,A=S[d]||S[\"@@iterator\"]||g&&S[g],E=A||y(g),O=g?k?y(\"entries\"):E:void 0,M=\"Array\"==t?S.entries||A:A;if(M&&(w=f(M.call(new e)))!==Object.prototype&&w.next&&(u(w,C,!0),r||s(w,d)||a(w,d,p)),k&&A&&\"values\"!==A.name&&(F=!0,E=function(){return A.call(this)}),r&&!x||!h&&!F&&S[d]||a(S,d,E),c[t]=E,c[C]=p,g)if(m={values:k?E:y(\"values\"),keys:b?E:y(\"keys\"),entries:O},x)for(_ in m)_ in S||o(S,_,m[_]);else i(i.P+i.F*(h||F),t,m);return m}},function(e,t,n){var r=n(4),i=n(24),o=n(85),a=n(7),s=function(e,t,n){var c,l,u,f=e&s.F,d=e&s.G,h=e&s.S,p=e&s.P,v=e&s.B,g=e&s.W,b=d?i:i[t]||(i[t]={}),x=b.prototype,m=d?r:h?r[t]:(r[t]||{}).prototype;d&&(n=t);for(c in n)(l=!f&&m&&void 0!==m[c])&&c in b||(u=l?m[c]:n[c],b[c]=d&&\"function\"!=typeof m[c]?n[c]:v&&l?o(u,r):g&&m[c]==u?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(u):p&&\"function\"==typeof u?o(Function.call,u):u,p&&((b.virtual||(b.virtual={}))[c]=u,e&s.R&&x&&!x[c]&&a(x,c,u)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){e.exports=!n(9)&&!n(15)(function(){return 7!=Object.defineProperty(n(43)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(e,t,n){var r=n(14),i=n(4).document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},function(e,t,n){e.exports=n(7)},function(e,t,n){var r=n(13),i=n(88),o=n(30),a=n(28)(\"IE_PROTO\"),s=function(){},c=function(){var e,t=n(43)(\"iframe\"),r=o.length;for(t.style.display=\"none\",n(93).appendChild(t),t.src=\"javascript:\",e=t.contentWindow.document,e.open(),e.write(\"<script>document.F=Object<\\/script>\"),e.close(),c=e.F;r--;)delete c.prototype[o[r]];return c()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[a]=e):n=c(),void 0===t?n:i(n,t)}},function(e,t,n){var r=n(6),i=n(10),o=n(90)(!1),a=n(28)(\"IE_PROTO\");e.exports=function(e,t){var n,s=i(e),c=0,l=[];for(n in s)n!=a&&r(s,n)&&l.push(n);for(;t.length>c;)r(s,n=t[c++])&&(~o(l,n)||l.push(n));return l}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(46),i=n(30).concat(\"length\",\"prototype\");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={name:\"Hue\",props:{value:Object,direction:{type:String,default:\"horizontal\"}},data:function(){return{oldHue:0,pullDirection:\"\"}},computed:{colors:function(){var e=this.value.hsl.h;return 0!==e&&e-this.oldHue>0&&(this.pullDirection=\"right\"),0!==e&&e-this.oldHue<0&&(this.pullDirection=\"left\"),this.oldHue=e,this.value},directionClass:function(){return{\"vc-hue--horizontal\":\"horizontal\"===this.direction,\"vc-hue--vertical\":\"vertical\"===this.direction}},pointerTop:function(){return\"vertical\"===this.direction?0===this.colors.hsl.h&&\"right\"===this.pullDirection?0:-100*this.colors.hsl.h/360+100+\"%\":0},pointerLeft:function(){return\"vertical\"===this.direction?0:0===this.colors.hsl.h&&\"right\"===this.pullDirection?\"100%\":100*this.colors.hsl.h/360+\"%\"}},methods:{handleChange:function(e,t){!t&&e.preventDefault();var n=this.$refs.container;if(n){var r,i,o=n.clientWidth,a=n.clientHeight,s=n.getBoundingClientRect().left+window.pageXOffset,c=n.getBoundingClientRect().top+window.pageYOffset,l=e.pageX||(e.touches?e.touches[0].pageX:0),u=e.pageY||(e.touches?e.touches[0].pageY:0),f=l-s,d=u-c;\"vertical\"===this.direction?(d<0?r=360:d>a?r=0:(i=-100*d/a+100,r=360*i/100),this.colors.hsl.h!==r&&this.$emit(\"change\",{h:r,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:\"hsl\"})):(f<0?r=0:f>o?r=360:(i=100*f/o,r=360*i/100),this.colors.hsl.h!==r&&this.$emit(\"change\",{h:r,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:\"hsl\"}))}},handleMouseDown:function(e){this.handleChange(e,!0),window.addEventListener(\"mousemove\",this.handleChange),window.addEventListener(\"mouseup\",this.handleMouseUp)},handleMouseUp:function(e){this.unbindEventListeners()},unbindEventListeners:function(){window.removeEventListener(\"mousemove\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleMouseUp)}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(118),o=r(i),a=n(3),s=r(a),c=[\"red\",\"pink\",\"purple\",\"deepPurple\",\"indigo\",\"blue\",\"lightBlue\",\"cyan\",\"teal\",\"green\",\"lightGreen\",\"lime\",\"yellow\",\"amber\",\"orange\",\"deepOrange\",\"brown\",\"blueGrey\",\"black\"],l=[\"900\",\"700\",\"500\",\"300\",\"100\"],u=function(){var e=[];return c.forEach(function(t){var n=[];\"black\"===t.toLowerCase()||\"white\"===t.toLowerCase()?n=n.concat([\"#000000\",\"#FFFFFF\"]):l.forEach(function(e){var r=o.default[t][e];n.push(r.toUpperCase())}),e.push(n)}),e}();t.default={name:\"Swatches\",mixins:[s.default],props:{palette:{type:Array,default:function(){return u}}},computed:{pick:function(){return this.colors.hex}},methods:{equal:function(e){return e.toLowerCase()===this.colors.hex.toLowerCase()},handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=n(18),l=r(c),u=n(12),f=r(u),d=n(19),h=r(d);t.default={name:\"Photoshop\",mixins:[o.default],props:{head:{type:String,default:\"Color Picker\"},disableFields:{type:Boolean,default:!1},hasResetButton:{type:Boolean,default:!1},acceptLabel:{type:String,default:\"OK\"},cancelLabel:{type:String,default:\"Cancel\"},resetLabel:{type:String,default:\"Reset\"},newLabel:{type:String,default:\"new\"},currentLabel:{type:String,default:\"current\"}},components:{saturation:l.default,hue:f.default,alpha:h.default,\"ed-in\":s.default},data:function(){return{currentColor:\"#FFF\"}},computed:{hsv:function(){var e=this.colors.hsv;return{h:e.h.toFixed(),s:(100*e.s).toFixed(),v:(100*e.v).toFixed()}},hex:function(){var e=this.colors.hex;return e&&e.replace(\"#\",\"\")}},created:function(){this.currentColor=this.colors.hex},methods:{childChange:function(e){this.colorChange(e)},inputChange:function(e){e&&(e[\"#\"]?this.isValidHex(e[\"#\"])&&this.colorChange({hex:e[\"#\"],source:\"hex\"}):e.r||e.g||e.b||e.a?this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}):(e.h||e.s||e.v)&&this.colorChange({h:e.h||this.colors.hsv.h,s:e.s/100||this.colors.hsv.s,v:e.v/100||this.colors.hsv.v,source:\"hsv\"}))},clickCurrentColor:function(){this.colorChange({hex:this.currentColor,source:\"hex\"})},handleAccept:function(){this.$emit(\"ok\")},handleCancel:function(){this.$emit(\"cancel\")},handleReset:function(){this.$emit(\"reset\")}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(125),o=r(i),a=n(126),s=r(a);t.default={name:\"Saturation\",props:{value:Object},computed:{colors:function(){return this.value},bgColor:function(){return\"hsl(\"+this.colors.hsv.h+\", 100%, 50%)\"},pointerTop:function(){return-100*this.colors.hsv.v+1+100+\"%\"},pointerLeft:function(){return 100*this.colors.hsv.s+\"%\"}},beforeDestroy:function(){this.unbindEventListeners()},methods:{throttle:(0,s.default)(function(e,t){e(t)},20,{leading:!0,trailing:!1}),handleChange:function(e,t){!t&&e.preventDefault();var n=this.$refs.container;if(n){var r=n.clientWidth,i=n.clientHeight,a=n.getBoundingClientRect().left+window.pageXOffset,s=n.getBoundingClientRect().top+window.pageYOffset,c=e.pageX||(e.touches?e.touches[0].pageX:0),l=e.pageY||(e.touches?e.touches[0].pageY:0),u=(0,o.default)(c-a,0,r),f=(0,o.default)(l-s,0,i),d=u/r,h=(0,o.default)(-f/i+1,0,1);this.throttle(this.onChange,{h:this.colors.hsv.h,s:d,v:h,a:this.colors.hsv.a,source:\"hsva\"})}},onChange:function(e){this.$emit(\"change\",e)},handleMouseDown:function(e){window.addEventListener(\"mousemove\",this.handleChange),window.addEventListener(\"mouseup\",this.handleChange),window.addEventListener(\"mouseup\",this.handleMouseUp)},handleMouseUp:function(e){this.unbindEventListeners()},unbindEventListeners:function(){window.removeEventListener(\"mousemove\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleMouseUp)}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(20),i=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default={name:\"Alpha\",props:{value:Object,onChange:Function},components:{checkboard:i.default},computed:{colors:function(){return this.value},gradientColor:function(){var e=this.colors.rgba,t=[e.r,e.g,e.b].join(\",\");return\"linear-gradient(to right, rgba(\"+t+\", 0) 0%, rgba(\"+t+\", 1) 100%)\"}},methods:{handleChange:function(e,t){!t&&e.preventDefault();var n=this.$refs.container;if(n){var r,i=n.clientWidth,o=n.getBoundingClientRect().left+window.pageXOffset,a=e.pageX||(e.touches?e.touches[0].pageX:0),s=a-o;r=s<0?0:s>i?1:Math.round(100*s/i)/100,this.colors.a!==r&&this.$emit(\"change\",{h:this.colors.hsl.h,s:this.colors.hsl.s,l:this.colors.hsl.l,a:r,source:\"rgba\"})}},handleMouseDown:function(e){this.handleChange(e,!0),window.addEventListener(\"mousemove\",this.handleChange),window.addEventListener(\"mouseup\",this.handleMouseUp)},handleMouseUp:function(){this.unbindEventListeners()},unbindEventListeners:function(){window.removeEventListener(\"mousemove\",this.handleChange),window.removeEventListener(\"mouseup\",this.handleMouseUp)}}}},function(e,t,n){\"use strict\";function r(e,t,n){if(\"undefined\"==typeof document)return null;var r=document.createElement(\"canvas\");r.width=r.height=2*n;var i=r.getContext(\"2d\");return i?(i.fillStyle=e,i.fillRect(0,0,r.width,r.height),i.fillStyle=t,i.fillRect(0,0,n,n),i.translate(n,n),i.fillRect(0,0,n,n),r.toDataURL()):null}function i(e,t,n){var i=e+\",\"+t+\",\"+n;if(o[i])return o[i];var a=r(e,t,n);return o[i]=a,a}Object.defineProperty(t,\"__esModule\",{value:!0});var o={};t.default={name:\"Checkboard\",props:{size:{type:[Number,String],default:8},white:{type:String,default:\"#fff\"},grey:{type:String,default:\"#e6e6e6\"}},computed:{bgStyle:function(){return{\"background-image\":\"url(\"+i(this.white,this.grey,this.size)+\")\"}}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=n(18),l=r(c),u=n(12),f=r(u),d=n(19),h=r(d),p=n(20),v=r(p),g=[\"#D0021B\",\"#F5A623\",\"#F8E71C\",\"#8B572A\",\"#7ED321\",\"#417505\",\"#BD10E0\",\"#9013FE\",\"#4A90E2\",\"#50E3C2\",\"#B8E986\",\"#000000\",\"#4A4A4A\",\"#9B9B9B\",\"#FFFFFF\",\"rgba(0,0,0,0)\"];t.default={name:\"Sketch\",mixins:[o.default],components:{saturation:l.default,hue:f.default,alpha:h.default,\"ed-in\":s.default,checkboard:v.default},props:{presetColors:{type:Array,default:function(){return g}},disableAlpha:{type:Boolean,default:!1},disableFields:{type:Boolean,default:!1}},computed:{hex:function(){var e=void 0;return e=this.colors.a<1?this.colors.hex8:this.colors.hex,e.replace(\"#\",\"\")},activeColor:function(){var e=this.colors.rgba;return\"rgba(\"+[e.r,e.g,e.b,e.a].join(\",\")+\")\"}},methods:{handlePreset:function(e){this.colorChange({hex:e,source:\"hex\"})},childChange:function(e){this.colorChange(e)},inputChange:function(e){e&&(e.hex?this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:\"hex\"}):(e.r||e.g||e.b||e.a)&&this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}))}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=n(18),l=r(c),u=n(12),f=r(u),d=n(19),h=r(d),p=n(20),v=r(p);t.default={name:\"Chrome\",mixins:[o.default],props:{disableAlpha:{type:Boolean,default:!1},disableFields:{type:Boolean,default:!1}},components:{saturation:l.default,hue:f.default,alpha:h.default,\"ed-in\":s.default,checkboard:v.default},data:function(){return{fieldsIndex:0,highlight:!1}},computed:{hsl:function(){var e=this.colors.hsl,t=e.h,n=e.s,r=e.l;return{h:t.toFixed(),s:(100*n).toFixed()+\"%\",l:(100*r).toFixed()+\"%\"}},activeColor:function(){var e=this.colors.rgba;return\"rgba(\"+[e.r,e.g,e.b,e.a].join(\",\")+\")\"},hasAlpha:function(){return this.colors.a<1}},methods:{childChange:function(e){this.colorChange(e)},inputChange:function(e){if(e)if(e.hex)this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:\"hex\"});else if(e.r||e.g||e.b||e.a)this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"});else if(e.h||e.s||e.l){var t=e.s?e.s.replace(\"%\",\"\")/100:this.colors.hsl.s,n=e.l?e.l.replace(\"%\",\"\")/100:this.colors.hsl.l;this.colorChange({h:e.h||this.colors.hsl.h,s:t,l:n,source:\"hsl\"})}},toggleViews:function(){if(this.fieldsIndex>=2)return void(this.fieldsIndex=0);this.fieldsIndex++},showHighlight:function(){this.highlight=!0},hideHighlight:function(){this.highlight=!1}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(5),o=r(i),a=n(3),s=r(a),c=[\"#FF6900\",\"#FCB900\",\"#7BDCB5\",\"#00D084\",\"#8ED1FC\",\"#0693E3\",\"#ABB8C3\",\"#EB144C\",\"#F78DA7\",\"#9900EF\"];t.default={name:\"Twitter\",mixins:[s.default],components:{editableInput:o.default},props:{width:{type:[String,Number],default:276},defaultColors:{type:Array,default:function(){return c}},triangle:{default:\"top-left\",validator:function(e){return[\"hide\",\"top-left\",\"top-right\"].includes(e)}}},computed:{hsv:function(){var e=this.colors.hsv;return{h:e.h.toFixed(),s:(100*e.s).toFixed(),v:(100*e.v).toFixed()}},hex:function(){var e=this.colors.hex;return e&&e.replace(\"#\",\"\")}},methods:{equal:function(e){return e.toLowerCase()===this.colors.hex.toLowerCase()},handlerClick:function(e){this.colorChange({hex:e,source:\"hex\"})},inputChange:function(e){e&&(e[\"#\"]?this.isValidHex(e[\"#\"])&&this.colorChange({hex:e[\"#\"],source:\"hex\"}):e.r||e.g||e.b||e.a?this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:\"rgba\"}):(e.h||e.s||e.v)&&this.colorChange({h:e.h||this.colors.hsv.h,s:e.s/100||this.colors.hsv.s,v:e.v/100||this.colors.hsv.v,source:\"hsv\"}))}}}},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}var i=n(60),o=r(i),a=n(69),s=r(a),c=n(73),l=r(c),u=n(77),f=r(u),d=n(115),h=r(d),p=n(120),v=r(p),g=n(135),b=r(g),x=n(139),m=r(x),_=n(143),w=r(_),y=n(19),C=r(y),k=n(20),F=r(k),S=n(5),A=r(S),E=n(12),O=r(E),M=n(18),j=r(M),L=n(3),P=r(L),R={version:\"2.8.2\",Compact:o.default,Grayscale:s.default,Twitter:w.default,Material:l.default,Slider:f.default,Swatches:h.default,Photoshop:v.default,Sketch:b.default,Chrome:m.default,Alpha:C.default,Checkboard:F.default,EditableInput:A.default,Hue:O.default,Saturation:j.default,ColorMixin:P.default};e.exports=R},function(e,t,n){\"use strict\";function r(e){c||n(61)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(35),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(68),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Compact.vue\",t.default=f.exports},function(e,t,n){var r=n(62);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"6ce8a5a8\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-compact {\\n padding-top: 5px;\\n padding-left: 5px;\\n width: 245px;\\n border-radius: 2px;\\n box-sizing: border-box;\\n box-shadow: 0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16);\\n background-color: #fff;\\n}\\n.vc-compact-colors {\\n overflow: hidden;\\n padding: 0;\\n margin: 0;\\n}\\n.vc-compact-color-item {\\n list-style: none;\\n width: 15px;\\n height: 15px;\\n float: left;\\n margin-right: 5px;\\n margin-bottom: 5px;\\n position: relative;\\n cursor: pointer;\\n}\\n.vc-compact-color-item--white {\\n box-shadow: inset 0 0 0 1px #ddd;\\n}\\n.vc-compact-color-item--white .vc-compact-dot {\\n background: #000;\\n}\\n.vc-compact-dot {\\n position: absolute;\\n top: 5px;\\n right: 5px;\\n bottom: 5px;\\n left: 5px;\\n border-radius: 50%;\\n opacity: 1;\\n background: #fff;\\n}\\n\",\"\"])},function(e,t){e.exports=function(e,t){for(var n=[],r={},i=0;i<t.length;i++){var o=t[i],a=o[0],s=o[1],c=o[2],l=o[3],u={id:e+\":\"+i,css:s,media:c,sourceMap:l};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}},function(e,t,n){var r;!function(i){function o(e,t){if(e=e||\"\",t=t||{},e instanceof o)return e;if(!(this instanceof o))return new o(e,t);var n=a(e);this._originalInput=e,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=G(100*this._a)/100,this._format=t.format||n.format,this._gradientType=t.gradientType,this._r<1&&(this._r=G(this._r)),this._g<1&&(this._g=G(this._g)),this._b<1&&(this._b=G(this._b)),this._ok=n.ok,this._tc_id=U++}function a(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,o=null,a=!1,c=!1;return\"string\"==typeof e&&(e=N(e)),\"object\"==typeof e&&(H(e.r)&&H(e.g)&&H(e.b)?(t=s(e.r,e.g,e.b),a=!0,c=\"%\"===String(e.r).substr(-1)?\"prgb\":\"rgb\"):H(e.h)&&H(e.s)&&H(e.v)?(r=D(e.s),i=D(e.v),t=f(e.h,r,i),a=!0,c=\"hsv\"):H(e.h)&&H(e.s)&&H(e.l)&&(r=D(e.s),o=D(e.l),t=l(e.h,r,o),a=!0,c=\"hsl\"),e.hasOwnProperty(\"a\")&&(n=e.a)),n=E(n),{ok:a,format:e.format||c,r:V(255,q(t.r,0)),g:V(255,q(t.g,0)),b:V(255,q(t.b,0)),a:n}}function s(e,t,n){return{r:255*O(e,255),g:255*O(t,255),b:255*O(n,255)}}function c(e,t,n){e=O(e,255),t=O(t,255),n=O(n,255);var r,i,o=q(e,t,n),a=V(e,t,n),s=(o+a)/2;if(o==a)r=i=0;else{var c=o-a;switch(i=s>.5?c/(2-o-a):c/(o+a),o){case e:r=(t-n)/c+(t<n?6:0);break;case t:r=(n-e)/c+2;break;case n:r=(e-t)/c+4}r/=6}return{h:r,s:i,l:s}}function l(e,t,n){function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var i,o,a;if(e=O(e,360),t=O(t,100),n=O(n,100),0===t)i=o=a=n;else{var s=n<.5?n*(1+t):n+t-n*t,c=2*n-s;i=r(c,s,e+1/3),o=r(c,s,e),a=r(c,s,e-1/3)}return{r:255*i,g:255*o,b:255*a}}function u(e,t,n){e=O(e,255),t=O(t,255),n=O(n,255);var r,i,o=q(e,t,n),a=V(e,t,n),s=o,c=o-a;if(i=0===o?0:c/o,o==a)r=0;else{switch(o){case e:r=(t-n)/c+(t<n?6:0);break;case t:r=(n-e)/c+2;break;case n:r=(e-t)/c+4}r/=6}return{h:r,s:i,v:s}}function f(e,t,n){e=6*O(e,360),t=O(t,100),n=O(n,100);var r=i.floor(e),o=e-r,a=n*(1-t),s=n*(1-o*t),c=n*(1-(1-o)*t),l=r%6;return{r:255*[n,s,a,a,c,n][l],g:255*[c,n,n,s,a,a][l],b:255*[a,a,c,n,n,s][l]}}function d(e,t,n,r){var i=[R(G(e).toString(16)),R(G(t).toString(16)),R(G(n).toString(16))];return r&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(\"\")}function h(e,t,n,r,i){var o=[R(G(e).toString(16)),R(G(t).toString(16)),R(G(n).toString(16)),R(B(r))];return i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join(\"\")}function p(e,t,n,r){return[R(B(r)),R(G(e).toString(16)),R(G(t).toString(16)),R(G(n).toString(16))].join(\"\")}function v(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.s-=t/100,n.s=M(n.s),o(n)}function g(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.s+=t/100,n.s=M(n.s),o(n)}function b(e){return o(e).desaturate(100)}function x(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.l+=t/100,n.l=M(n.l),o(n)}function m(e,t){t=0===t?0:t||10;var n=o(e).toRgb();return n.r=q(0,V(255,n.r-G(-t/100*255))),n.g=q(0,V(255,n.g-G(-t/100*255))),n.b=q(0,V(255,n.b-G(-t/100*255))),o(n)}function _(e,t){t=0===t?0:t||10;var n=o(e).toHsl();return n.l-=t/100,n.l=M(n.l),o(n)}function w(e,t){var n=o(e).toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,o(n)}function y(e){var t=o(e).toHsl();return t.h=(t.h+180)%360,o(t)}function C(e){var t=o(e).toHsl(),n=t.h;return[o(e),o({h:(n+120)%360,s:t.s,l:t.l}),o({h:(n+240)%360,s:t.s,l:t.l})]}function k(e){var t=o(e).toHsl(),n=t.h;return[o(e),o({h:(n+90)%360,s:t.s,l:t.l}),o({h:(n+180)%360,s:t.s,l:t.l}),o({h:(n+270)%360,s:t.s,l:t.l})]}function F(e){var t=o(e).toHsl(),n=t.h;return[o(e),o({h:(n+72)%360,s:t.s,l:t.l}),o({h:(n+216)%360,s:t.s,l:t.l})]}function S(e,t,n){t=t||6,n=n||30;var r=o(e).toHsl(),i=360/n,a=[o(e)];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,a.push(o(r));return a}function A(e,t){t=t||6;for(var n=o(e).toHsv(),r=n.h,i=n.s,a=n.v,s=[],c=1/t;t--;)s.push(o({h:r,s:i,v:a})),a=(a+c)%1;return s}function E(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function O(e,t){L(e)&&(e=\"100%\");var n=P(e);return e=V(t,q(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),i.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function M(e){return V(1,q(0,e))}function j(e){return parseInt(e,16)}function L(e){return\"string\"==typeof e&&-1!=e.indexOf(\".\")&&1===parseFloat(e)}function P(e){return\"string\"==typeof e&&-1!=e.indexOf(\"%\")}function R(e){return 1==e.length?\"0\"+e:\"\"+e}function D(e){return e<=1&&(e=100*e+\"%\"),e}function B(e){return i.round(255*parseFloat(e)).toString(16)}function T(e){return j(e)/255}function H(e){return!!J.CSS_UNIT.exec(e)}function N(e){e=e.replace(I,\"\").replace($,\"\").toLowerCase();var t=!1;if(W[e])e=W[e],t=!0;else if(\"transparent\"==e)return{r:0,g:0,b:0,a:0,format:\"name\"};var n;return(n=J.rgb.exec(e))?{r:n[1],g:n[2],b:n[3]}:(n=J.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=J.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=J.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=J.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=J.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=J.hex8.exec(e))?{r:j(n[1]),g:j(n[2]),b:j(n[3]),a:T(n[4]),format:t?\"name\":\"hex8\"}:(n=J.hex6.exec(e))?{r:j(n[1]),g:j(n[2]),b:j(n[3]),format:t?\"name\":\"hex\"}:(n=J.hex4.exec(e))?{r:j(n[1]+\"\"+n[1]),g:j(n[2]+\"\"+n[2]),b:j(n[3]+\"\"+n[3]),a:T(n[4]+\"\"+n[4]),format:t?\"name\":\"hex8\"}:!!(n=J.hex3.exec(e))&&{r:j(n[1]+\"\"+n[1]),g:j(n[2]+\"\"+n[2]),b:j(n[3]+\"\"+n[3]),format:t?\"name\":\"hex\"}}function z(e){var t,n;return e=e||{level:\"AA\",size:\"small\"},t=(e.level||\"AA\").toUpperCase(),n=(e.size||\"small\").toLowerCase(),\"AA\"!==t&&\"AAA\"!==t&&(t=\"AA\"),\"small\"!==n&&\"large\"!==n&&(n=\"small\"),{level:t,size:n}}var I=/^\\s+/,$=/\\s+$/,U=0,G=i.round,V=i.min,q=i.max,X=i.random;o.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,r,o,a,s=this.toRgb();return e=s.r/255,t=s.g/255,n=s.b/255,r=e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4),o=t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4),a=n<=.03928?n/12.92:i.pow((n+.055)/1.055,2.4),.2126*r+.7152*o+.0722*a},setAlpha:function(e){return this._a=E(e),this._roundA=G(100*this._a)/100,this},toHsv:function(){var e=u(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=u(this._r,this._g,this._b),t=G(360*e.h),n=G(100*e.s),r=G(100*e.v);return 1==this._a?\"hsv(\"+t+\", \"+n+\"%, \"+r+\"%)\":\"hsva(\"+t+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHsl:function(){var e=c(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=c(this._r,this._g,this._b),t=G(360*e.h),n=G(100*e.s),r=G(100*e.l);return 1==this._a?\"hsl(\"+t+\", \"+n+\"%, \"+r+\"%)\":\"hsla(\"+t+\", \"+n+\"%, \"+r+\"%, \"+this._roundA+\")\"},toHex:function(e){return d(this._r,this._g,this._b,e)},toHexString:function(e){return\"#\"+this.toHex(e)},toHex8:function(e){return h(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return\"#\"+this.toHex8(e)},toRgb:function(){return{r:G(this._r),g:G(this._g),b:G(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+G(this._r)+\", \"+G(this._g)+\", \"+G(this._b)+\")\":\"rgba(\"+G(this._r)+\", \"+G(this._g)+\", \"+G(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:G(100*O(this._r,255))+\"%\",g:G(100*O(this._g,255))+\"%\",b:G(100*O(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+G(100*O(this._r,255))+\"%, \"+G(100*O(this._g,255))+\"%, \"+G(100*O(this._b,255))+\"%)\":\"rgba(\"+G(100*O(this._r,255))+\"%, \"+G(100*O(this._g,255))+\"%, \"+G(100*O(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(Y[d(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t=\"#\"+p(this._r,this._g,this._b,this._a),n=t,r=this._gradientType?\"GradientType = 1, \":\"\";if(e){var i=o(e);n=\"#\"+p(i._r,i._g,i._b,i._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+r+\"startColorstr=\"+t+\",endColorstr=\"+n+\")\"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||\"hex\"!==e&&\"hex6\"!==e&&\"hex3\"!==e&&\"hex4\"!==e&&\"hex8\"!==e&&\"name\"!==e?(\"rgb\"===e&&(n=this.toRgbString()),\"prgb\"===e&&(n=this.toPercentageRgbString()),\"hex\"!==e&&\"hex6\"!==e||(n=this.toHexString()),\"hex3\"===e&&(n=this.toHexString(!0)),\"hex4\"===e&&(n=this.toHex8String(!0)),\"hex8\"===e&&(n=this.toHex8String()),\"name\"===e&&(n=this.toName()),\"hsl\"===e&&(n=this.toHslString()),\"hsv\"===e&&(n=this.toHsvString()),n||this.toHexString()):\"name\"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return o(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(x,arguments)},brighten:function(){return this._applyModification(m,arguments)},darken:function(){return this._applyModification(_,arguments)},desaturate:function(){return this._applyModification(v,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(b,arguments)},spin:function(){return this._applyModification(w,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(S,arguments)},complement:function(){return this._applyCombination(y,arguments)},monochromatic:function(){return this._applyCombination(A,arguments)},splitcomplement:function(){return this._applyCombination(F,arguments)},triad:function(){return this._applyCombination(C,arguments)},tetrad:function(){return this._applyCombination(k,arguments)}},o.fromRatio=function(e,t){if(\"object\"==typeof e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=\"a\"===r?e[r]:D(e[r]));e=n}return o(e,t)},o.equals=function(e,t){return!(!e||!t)&&o(e).toRgbString()==o(t).toRgbString()},o.random=function(){return o.fromRatio({r:X(),g:X(),b:X()})},o.mix=function(e,t,n){n=0===n?0:n||50;var r=o(e).toRgb(),i=o(t).toRgb(),a=n/100;return o({r:(i.r-r.r)*a+r.r,g:(i.g-r.g)*a+r.g,b:(i.b-r.b)*a+r.b,a:(i.a-r.a)*a+r.a})},o.readability=function(e,t){var n=o(e),r=o(t);return(i.max(n.getLuminance(),r.getLuminance())+.05)/(i.min(n.getLuminance(),r.getLuminance())+.05)},o.isReadable=function(e,t,n){var r,i,a=o.readability(e,t);switch(i=!1,r=z(n),r.level+r.size){case\"AAsmall\":case\"AAAlarge\":i=a>=4.5;break;case\"AAlarge\":i=a>=3;break;case\"AAAsmall\":i=a>=7}return i},o.mostReadable=function(e,t,n){var r,i,a,s,c=null,l=0;n=n||{},i=n.includeFallbackColors,a=n.level,s=n.size;for(var u=0;u<t.length;u++)(r=o.readability(e,t[u]))>l&&(l=r,c=o(t[u]));return o.isReadable(e,c,{level:a,size:s})||!i?c:(n.includeFallbackColors=!1,o.mostReadable(e,[\"#fff\",\"#000\"],n))};var W=o.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},Y=o.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(W),J=function(){var e=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\",t=\"[\\\\s|\\\\(]+(\"+e+\")[,|\\\\s]+(\"+e+\")[,|\\\\s]+(\"+e+\")\\\\s*\\\\)?\",n=\"[\\\\s|\\\\(]+(\"+e+\")[,|\\\\s]+(\"+e+\")[,|\\\\s]+(\"+e+\")[,|\\\\s]+(\"+e+\")\\\\s*\\\\)?\";return{CSS_UNIT:new RegExp(e),rgb:new RegExp(\"rgb\"+t),rgba:new RegExp(\"rgba\"+n),hsl:new RegExp(\"hsl\"+t),hsla:new RegExp(\"hsla\"+n),hsv:new RegExp(\"hsv\"+t),hsva:new RegExp(\"hsva\"+n),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();void 0!==e&&e.exports?e.exports=o:void 0!==(r=function(){return o}.call(t,n,t,e))&&(e.exports=r)}(Math)},function(e,t,n){var r=n(66);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"0f73e73c\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-editable-input {\\n position: relative;\\n}\\n.vc-input__input {\\n padding: 0;\\n border: 0;\\n outline: none;\\n}\\n.vc-input__label {\\n text-transform: capitalize;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-editable-input\"},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.val,expression:\"val\"}],ref:\"input\",staticClass:\"vc-input__input\",attrs:{\"aria-labelledby\":e.labelId},domProps:{value:e.val},on:{keydown:e.handleKeyDown,input:[function(t){t.target.composing||(e.val=t.target.value)},e.update]}}),e._v(\" \"),n(\"span\",{staticClass:\"vc-input__label\",attrs:{for:e.label,id:e.labelId}},[e._v(e._s(e.labelSpanText))]),e._v(\" \"),n(\"span\",{staticClass:\"vc-input__desc\"},[e._v(e._s(e.desc))])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-compact\",attrs:{role:\"application\",\"aria-label\":\"Compact color picker\"}},[n(\"ul\",{staticClass:\"vc-compact-colors\",attrs:{role:\"listbox\"}},e._l(e.paletteUpperCase(e.palette),function(t){return n(\"li\",{key:t,staticClass:\"vc-compact-color-item\",class:{\"vc-compact-color-item--white\":\"#FFFFFF\"===t},style:{background:t},attrs:{role:\"option\",\"aria-label\":\"color:\"+t,\"aria-selected\":t===e.pick},on:{click:function(n){e.handlerClick(t)}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t===e.pick,expression:\"c === pick\"}],staticClass:\"vc-compact-dot\"})])}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(70)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(37),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(72),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Grayscale.vue\",t.default=f.exports},function(e,t,n){var r=n(71);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"21ddbb74\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-grayscale {\\n width: 125px;\\n border-radius: 2px;\\n box-shadow: 0 2px 15px rgba(0,0,0,.12), 0 2px 10px rgba(0,0,0,.16);\\n background-color: #fff;\\n}\\n.vc-grayscale-colors {\\n border-radius: 2px;\\n overflow: hidden;\\n padding: 0;\\n margin: 0;\\n}\\n.vc-grayscale-color-item {\\n list-style: none;\\n width: 25px;\\n height: 25px;\\n float: left;\\n position: relative;\\n cursor: pointer;\\n}\\n.vc-grayscale-color-item--white .vc-grayscale-dot {\\n background: #000;\\n}\\n.vc-grayscale-dot {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 6px;\\n height: 6px;\\n margin: -3px 0 0 -2px;\\n border-radius: 50%;\\n opacity: 1;\\n background: #fff;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-grayscale\",attrs:{role:\"application\",\"aria-label\":\"Grayscale color picker\"}},[n(\"ul\",{staticClass:\"vc-grayscale-colors\",attrs:{role:\"listbox\"}},e._l(e.paletteUpperCase(e.palette),function(t){return n(\"li\",{key:t,staticClass:\"vc-grayscale-color-item\",class:{\"vc-grayscale-color-item--white\":\"#FFFFFF\"==t},style:{background:t},attrs:{role:\"option\",\"aria-label\":\"Color:\"+t,\"aria-selected\":t===e.pick},on:{click:function(n){e.handlerClick(t)}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t===e.pick,expression:\"c === pick\"}],staticClass:\"vc-grayscale-dot\"})])}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(74)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(38),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(76),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Material.vue\",t.default=f.exports},function(e,t,n){var r=n(75);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"1ff3af73\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,'\\n.vc-material {\\n width: 98px;\\n height: 98px;\\n padding: 16px;\\n font-family: \"Roboto\";\\n position: relative;\\n border-radius: 2px;\\n box-shadow: 0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16);\\n background-color: #fff;\\n}\\n.vc-material .vc-input__input {\\n width: 100%;\\n margin-top: 12px;\\n font-size: 15px;\\n color: #333;\\n height: 30px;\\n}\\n.vc-material .vc-input__label {\\n position: absolute;\\n top: 0;\\n left: 0;\\n font-size: 11px;\\n color: #999;\\n text-transform: capitalize;\\n}\\n.vc-material-hex {\\n border-bottom-width: 2px;\\n border-bottom-style: solid;\\n}\\n.vc-material-split {\\n display: flex;\\n margin-right: -10px;\\n padding-top: 11px;\\n}\\n.vc-material-third {\\n flex: 1;\\n padding-right: 10px;\\n}\\n',\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-material\",attrs:{role:\"application\",\"aria-label\":\"Material color picker\"}},[n(\"ed-in\",{staticClass:\"vc-material-hex\",style:{borderColor:e.colors.hex},attrs:{label:\"hex\"},on:{change:e.onChange},model:{value:e.colors.hex,callback:function(t){e.$set(e.colors,\"hex\",t)},expression:\"colors.hex\"}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-material-split\"},[n(\"div\",{staticClass:\"vc-material-third\"},[n(\"ed-in\",{attrs:{label:\"r\"},on:{change:e.onChange},model:{value:e.colors.rgba.r,callback:function(t){e.$set(e.colors.rgba,\"r\",t)},expression:\"colors.rgba.r\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-material-third\"},[n(\"ed-in\",{attrs:{label:\"g\"},on:{change:e.onChange},model:{value:e.colors.rgba.g,callback:function(t){e.$set(e.colors.rgba,\"g\",t)},expression:\"colors.rgba.g\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-material-third\"},[n(\"ed-in\",{attrs:{label:\"b\"},on:{change:e.onChange},model:{value:e.colors.rgba.b,callback:function(t){e.$set(e.colors.rgba,\"b\",t)},expression:\"colors.rgba.b\"}})],1)])],1)},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(78)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(39),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(114),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Slider.vue\",t.default=f.exports},function(e,t,n){var r=n(79);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"7982aa43\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-slider {\\n position: relative;\\n width: 410px;\\n}\\n.vc-slider-hue-warp {\\n height: 12px;\\n position: relative;\\n}\\n.vc-slider-hue-warp .vc-hue-picker {\\n width: 14px;\\n height: 14px;\\n border-radius: 6px;\\n transform: translate(-7px, -2px);\\n background-color: rgb(248, 248, 248);\\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\\n}\\n.vc-slider-swatches {\\n display: flex;\\n margin-top: 20px;\\n}\\n.vc-slider-swatch {\\n margin-right: 1px;\\n flex: 1;\\n width: 20%;\\n}\\n.vc-slider-swatch:first-child {\\n margin-right: 1px;\\n}\\n.vc-slider-swatch:first-child .vc-slider-swatch-picker {\\n border-radius: 2px 0px 0px 2px;\\n}\\n.vc-slider-swatch:last-child {\\n margin-right: 0;\\n}\\n.vc-slider-swatch:last-child .vc-slider-swatch-picker {\\n border-radius: 0px 2px 2px 0px;\\n}\\n.vc-slider-swatch-picker {\\n cursor: pointer;\\n height: 12px;\\n}\\n.vc-slider-swatch:nth-child(n) .vc-slider-swatch-picker.vc-slider-swatch-picker--active {\\n transform: scaleY(1.8);\\n border-radius: 3.6px/2px;\\n}\\n.vc-slider-swatch-picker--white {\\n box-shadow: inset 0 0 0 1px #ddd;\\n}\\n.vc-slider-swatch-picker--active.vc-slider-swatch-picker--white {\\n box-shadow: inset 0 0 0 0.6px #ddd;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(81),o=r(i),a=n(100),s=r(a),c=\"function\"==typeof s.default&&\"symbol\"==typeof o.default?function(e){return typeof e}:function(e){return e&&\"function\"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?\"symbol\":typeof e};t.default=\"function\"==typeof s.default&&\"symbol\"===c(o.default)?function(e){return void 0===e?\"undefined\":c(e)}:function(e){return e&&\"function\"==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?\"symbol\":void 0===e?\"undefined\":c(e)}},function(e,t,n){e.exports={default:n(82),__esModule:!0}},function(e,t,n){n(83),n(96),e.exports=n(32).f(\"iterator\")},function(e,t,n){\"use strict\";var r=n(84)(!0);n(40)(String,\"String\",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(21),i=n(22);e.exports=function(e){return function(t,n){var o,a,s=String(i(t)),c=r(n),l=s.length;return c<0||c>=l?e?\"\":void 0:(o=s.charCodeAt(c),o<55296||o>56319||c+1===l||(a=s.charCodeAt(c+1))<56320||a>57343?e?s.charAt(c):o:e?s.slice(c,c+2):a-56320+(o-55296<<10)+65536)}}},function(e,t,n){var r=n(86);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(\"function\"!=typeof e)throw TypeError(e+\" is not a function!\");return e}},function(e,t,n){\"use strict\";var r=n(45),i=n(16),o=n(31),a={};n(7)(a,n(11)(\"iterator\"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:i(1,n)}),o(e,t+\" Iterator\")}},function(e,t,n){var r=n(8),i=n(13),o=n(27);e.exports=n(9)?Object.defineProperties:function(e,t){i(e);for(var n,a=o(t),s=a.length,c=0;s>c;)r.f(e,n=a[c++],t[n]);return e}},function(e,t,n){var r=n(47);e.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(e){return\"String\"==r(e)?e.split(\"\"):Object(e)}},function(e,t,n){var r=n(10),i=n(91),o=n(92);e.exports=function(e){return function(t,n,a){var s,c=r(t),l=i(c.length),u=o(a,l);if(e&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(21),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(21),i=Math.max,o=Math.min;e.exports=function(e,t){return e=r(e),e<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(4).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(6),i=n(95),o=n(28)(\"IE_PROTO\"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,o)?e[o]:\"function\"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var r=n(22);e.exports=function(e){return Object(r(e))}},function(e,t,n){n(97);for(var r=n(4),i=n(7),o=n(26),a=n(11)(\"toStringTag\"),s=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),c=0;c<s.length;c++){var l=s[c],u=r[l],f=u&&u.prototype;f&&!f[a]&&i(f,a,l),o[l]=o.Array}},function(e,t,n){\"use strict\";var r=n(98),i=n(99),o=n(26),a=n(10);e.exports=n(40)(Array,\"Array\",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):\"keys\"==t?i(0,n):\"values\"==t?i(0,e[n]):i(0,[n,e[n]])},\"values\"),o.Arguments=o.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(101),__esModule:!0}},function(e,t,n){n(102),n(108),n(109),n(110),e.exports=n(24).Symbol},function(e,t,n){\"use strict\";var r=n(4),i=n(6),o=n(9),a=n(41),s=n(44),c=n(103).KEY,l=n(15),u=n(29),f=n(31),d=n(17),h=n(11),p=n(32),v=n(33),g=n(104),b=n(105),x=n(13),m=n(10),_=n(25),w=n(16),y=n(45),C=n(106),k=n(107),F=n(8),S=n(27),A=k.f,E=F.f,O=C.f,M=r.Symbol,j=r.JSON,L=j&&j.stringify,P=h(\"_hidden\"),R=h(\"toPrimitive\"),D={}.propertyIsEnumerable,B=u(\"symbol-registry\"),T=u(\"symbols\"),H=u(\"op-symbols\"),N=Object.prototype,z=\"function\"==typeof M,I=r.QObject,$=!I||!I.prototype||!I.prototype.findChild,U=o&&l(function(){return 7!=y(E({},\"a\",{get:function(){return E(this,\"a\",{value:7}).a}})).a})?function(e,t,n){var r=A(N,t);r&&delete N[t],E(e,t,n),r&&e!==N&&E(N,t,r)}:E,G=function(e){var t=T[e]=y(M.prototype);return t._k=e,t},V=z&&\"symbol\"==typeof M.iterator?function(e){return\"symbol\"==typeof e}:function(e){return e instanceof M},q=function(e,t,n){return e===N&&q(H,t,n),x(e),t=_(t,!0),x(n),i(T,t)?(n.enumerable?(i(e,P)&&e[P][t]&&(e[P][t]=!1),n=y(n,{enumerable:w(0,!1)})):(i(e,P)||E(e,P,w(1,{})),e[P][t]=!0),U(e,t,n)):E(e,t,n)},X=function(e,t){x(e);for(var n,r=g(t=m(t)),i=0,o=r.length;o>i;)q(e,n=r[i++],t[n]);return e},W=function(e,t){return void 0===t?y(e):X(y(e),t)},Y=function(e){var t=D.call(this,e=_(e,!0));return!(this===N&&i(T,e)&&!i(H,e))&&(!(t||!i(this,e)||!i(T,e)||i(this,P)&&this[P][e])||t)},J=function(e,t){if(e=m(e),t=_(t,!0),e!==N||!i(T,t)||i(H,t)){var n=A(e,t);return!n||!i(T,t)||i(e,P)&&e[P][t]||(n.enumerable=!0),n}},K=function(e){for(var t,n=O(m(e)),r=[],o=0;n.length>o;)i(T,t=n[o++])||t==P||t==c||r.push(t);return r},Z=function(e){for(var t,n=e===N,r=O(n?H:m(e)),o=[],a=0;r.length>a;)!i(T,t=r[a++])||n&&!i(N,t)||o.push(T[t]);return o};z||(M=function(){if(this instanceof M)throw TypeError(\"Symbol is not a constructor!\");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===N&&t.call(H,n),i(this,P)&&i(this[P],e)&&(this[P][e]=!1),U(this,e,w(1,n))};return o&&$&&U(N,e,{configurable:!0,set:t}),G(e)},s(M.prototype,\"toString\",function(){return this._k}),k.f=J,F.f=q,n(49).f=C.f=K,n(34).f=Y,n(48).f=Z,o&&!n(23)&&s(N,\"propertyIsEnumerable\",Y,!0),p.f=function(e){return G(h(e))}),a(a.G+a.W+a.F*!z,{Symbol:M});for(var Q=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),ee=0;Q.length>ee;)h(Q[ee++]);for(var te=S(h.store),ne=0;te.length>ne;)v(te[ne++]);a(a.S+a.F*!z,\"Symbol\",{for:function(e){return i(B,e+=\"\")?B[e]:B[e]=M(e)},keyFor:function(e){if(!V(e))throw TypeError(e+\" is not a symbol!\");for(var t in B)if(B[t]===e)return t},useSetter:function(){$=!0},useSimple:function(){$=!1}}),a(a.S+a.F*!z,\"Object\",{create:W,defineProperty:q,defineProperties:X,getOwnPropertyDescriptor:J,getOwnPropertyNames:K,getOwnPropertySymbols:Z}),j&&a(a.S+a.F*(!z||l(function(){var e=M();return\"[null]\"!=L([e])||\"{}\"!=L({a:e})||\"{}\"!=L(Object(e))})),\"JSON\",{stringify:function(e){if(void 0!==e&&!V(e)){for(var t,n,r=[e],i=1;arguments.length>i;)r.push(arguments[i++]);return t=r[1],\"function\"==typeof t&&(n=t),!n&&b(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!V(t))return t}),r[1]=t,L.apply(j,r)}}}),M.prototype[R]||n(7)(M.prototype,R,M.prototype.valueOf),f(M,\"Symbol\"),f(Math,\"Math\",!0),f(r.JSON,\"JSON\",!0)},function(e,t,n){var r=n(17)(\"meta\"),i=n(14),o=n(6),a=n(8).f,s=0,c=Object.isExtensible||function(){return!0},l=!n(15)(function(){return c(Object.preventExtensions({}))}),u=function(e){a(e,r,{value:{i:\"O\"+ ++s,w:{}}})},f=function(e,t){if(!i(e))return\"symbol\"==typeof e?e:(\"string\"==typeof e?\"S\":\"P\")+e;if(!o(e,r)){if(!c(e))return\"F\";if(!t)return\"E\";u(e)}return e[r].i},d=function(e,t){if(!o(e,r)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[r].w},h=function(e){return l&&p.NEED&&c(e)&&!o(e,r)&&u(e),e},p=e.exports={KEY:r,NEED:!1,fastKey:f,getWeak:d,onFreeze:h}},function(e,t,n){var r=n(27),i=n(48),o=n(34);e.exports=function(e){var t=r(e),n=i.f;if(n)for(var a,s=n(e),c=o.f,l=0;s.length>l;)c.call(e,a=s[l++])&&t.push(a);return t}},function(e,t,n){var r=n(47);e.exports=Array.isArray||function(e){return\"Array\"==r(e)}},function(e,t,n){var r=n(10),i=n(49).f,o={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return i(e)}catch(e){return a.slice()}};e.exports.f=function(e){return a&&\"[object Window]\"==o.call(e)?s(e):i(r(e))}},function(e,t,n){var r=n(34),i=n(16),o=n(10),a=n(25),s=n(6),c=n(42),l=Object.getOwnPropertyDescriptor;t.f=n(9)?l:function(e,t){if(e=o(e),t=a(t,!0),c)try{return l(e,t)}catch(e){}if(s(e,t))return i(!r.f.call(e,t),e[t])}},function(e,t){},function(e,t,n){n(33)(\"asyncIterator\")},function(e,t,n){n(33)(\"observable\")},function(e,t,n){var r=n(112);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"7c5f1a1c\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-hue {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n border-radius: 2px;\\n}\\n.vc-hue--horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n}\\n.vc-hue--vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n}\\n.vc-hue-container {\\n cursor: pointer;\\n margin: 0 2px;\\n position: relative;\\n height: 100%;\\n}\\n.vc-hue-pointer {\\n z-index: 2;\\n position: absolute;\\n}\\n.vc-hue-picker {\\n cursor: pointer;\\n margin-top: 1px;\\n width: 4px;\\n border-radius: 1px;\\n height: 8px;\\n box-shadow: 0 0 2px rgba(0, 0, 0, .6);\\n background: #fff;\\n transform: translateX(-2px) ;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-hue\",e.directionClass]},[n(\"div\",{ref:\"container\",staticClass:\"vc-hue-container\",attrs:{role:\"slider\",\"aria-valuenow\":e.colors.hsl.h,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"360\"},on:{mousedown:e.handleMouseDown,touchmove:e.handleChange,touchstart:e.handleChange}},[n(\"div\",{staticClass:\"vc-hue-pointer\",style:{top:e.pointerTop,left:e.pointerLeft},attrs:{role:\"presentation\"}},[n(\"div\",{staticClass:\"vc-hue-picker\"})])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-slider\",attrs:{role:\"application\",\"aria-label\":\"Slider color picker\"}},[n(\"div\",{staticClass:\"vc-slider-hue-warp\"},[n(\"hue\",{on:{change:e.hueChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-slider-swatches\",attrs:{role:\"group\"}},e._l(e.normalizedSwatches,function(t,r){return n(\"div\",{key:r,staticClass:\"vc-slider-swatch\",attrs:{\"data-index\":r,\"aria-label\":\"color:\"+e.colors.hex,role:\"button\"},on:{click:function(n){e.handleSwClick(r,t)}}},[n(\"div\",{staticClass:\"vc-slider-swatch-picker\",class:{\"vc-slider-swatch-picker--active\":e.isActive(t,r),\"vc-slider-swatch-picker--white\":1===t.l},style:{background:\"hsl(\"+e.colors.hsl.h+\", \"+100*t.s+\"%, \"+100*t.l+\"%)\"}})])}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(116)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(51),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(119),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Swatches.vue\",t.default=f.exports},function(e,t,n){var r=n(117);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"10f839a2\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-swatches {\\n width: 320px;\\n height: 240px;\\n overflow-y: scroll;\\n background-color: #fff;\\n box-shadow: 0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16);\\n}\\n.vc-swatches-box {\\n padding: 16px 0 6px 16px;\\n overflow: hidden;\\n}\\n.vc-swatches-color-group {\\n padding-bottom: 10px;\\n width: 40px;\\n float: left;\\n margin-right: 10px;\\n}\\n.vc-swatches-color-it {\\n box-sizing: border-box;\\n width: 40px;\\n height: 24px;\\n cursor: pointer;\\n background: #880e4f;\\n margin-bottom: 1px;\\n overflow: hidden;\\n -ms-border-radius: 2px 2px 0 0;\\n -moz-border-radius: 2px 2px 0 0;\\n -o-border-radius: 2px 2px 0 0;\\n -webkit-border-radius: 2px 2px 0 0;\\n border-radius: 2px 2px 0 0;\\n}\\n.vc-swatches-color--white {\\n border: 1px solid #DDD;\\n}\\n.vc-swatches-pick {\\n fill: rgb(255, 255, 255);\\n margin-left: 8px;\\n display: block;\\n}\\n.vc-swatches-color--white .vc-swatches-pick {\\n fill: rgb(51, 51, 51);\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),n.d(t,\"red\",function(){return r}),n.d(t,\"pink\",function(){return i}),n.d(t,\"purple\",function(){return o}),n.d(t,\"deepPurple\",function(){return a}),n.d(t,\"indigo\",function(){return s}),n.d(t,\"blue\",function(){return c}),n.d(t,\"lightBlue\",function(){return l}),n.d(t,\"cyan\",function(){return u}),n.d(t,\"teal\",function(){return f}),n.d(t,\"green\",function(){return d}),n.d(t,\"lightGreen\",function(){return h}),n.d(t,\"lime\",function(){return p}),n.d(t,\"yellow\",function(){return v}),n.d(t,\"amber\",function(){return g}),n.d(t,\"orange\",function(){return b}),n.d(t,\"deepOrange\",function(){return x}),n.d(t,\"brown\",function(){return m}),n.d(t,\"grey\",function(){return _}),n.d(t,\"blueGrey\",function(){return w}),n.d(t,\"darkText\",function(){return y}),n.d(t,\"lightText\",function(){return C}),n.d(t,\"darkIcons\",function(){return k}),n.d(t,\"lightIcons\",function(){return F}),n.d(t,\"white\",function(){return S}),n.d(t,\"black\",function(){return A});var r={50:\"#ffebee\",100:\"#ffcdd2\",200:\"#ef9a9a\",300:\"#e57373\",400:\"#ef5350\",500:\"#f44336\",600:\"#e53935\",700:\"#d32f2f\",800:\"#c62828\",900:\"#b71c1c\",a100:\"#ff8a80\",a200:\"#ff5252\",a400:\"#ff1744\",a700:\"#d50000\"},i={50:\"#fce4ec\",100:\"#f8bbd0\",200:\"#f48fb1\",300:\"#f06292\",400:\"#ec407a\",500:\"#e91e63\",600:\"#d81b60\",700:\"#c2185b\",800:\"#ad1457\",900:\"#880e4f\",a100:\"#ff80ab\",a200:\"#ff4081\",a400:\"#f50057\",a700:\"#c51162\"},o={50:\"#f3e5f5\",100:\"#e1bee7\",200:\"#ce93d8\",300:\"#ba68c8\",400:\"#ab47bc\",500:\"#9c27b0\",600:\"#8e24aa\",700:\"#7b1fa2\",800:\"#6a1b9a\",900:\"#4a148c\",a100:\"#ea80fc\",a200:\"#e040fb\",a400:\"#d500f9\",a700:\"#aa00ff\"},a={50:\"#ede7f6\",100:\"#d1c4e9\",200:\"#b39ddb\",300:\"#9575cd\",400:\"#7e57c2\",500:\"#673ab7\",600:\"#5e35b1\",700:\"#512da8\",800:\"#4527a0\",900:\"#311b92\",a100:\"#b388ff\",a200:\"#7c4dff\",a400:\"#651fff\",a700:\"#6200ea\"},s={50:\"#e8eaf6\",100:\"#c5cae9\",200:\"#9fa8da\",300:\"#7986cb\",400:\"#5c6bc0\",500:\"#3f51b5\",600:\"#3949ab\",700:\"#303f9f\",800:\"#283593\",900:\"#1a237e\",a100:\"#8c9eff\",a200:\"#536dfe\",a400:\"#3d5afe\",a700:\"#304ffe\"},c={50:\"#e3f2fd\",100:\"#bbdefb\",200:\"#90caf9\",300:\"#64b5f6\",400:\"#42a5f5\",500:\"#2196f3\",600:\"#1e88e5\",700:\"#1976d2\",800:\"#1565c0\",900:\"#0d47a1\",a100:\"#82b1ff\",a200:\"#448aff\",a400:\"#2979ff\",a700:\"#2962ff\"},l={50:\"#e1f5fe\",100:\"#b3e5fc\",200:\"#81d4fa\",300:\"#4fc3f7\",400:\"#29b6f6\",500:\"#03a9f4\",600:\"#039be5\",700:\"#0288d1\",800:\"#0277bd\",900:\"#01579b\",a100:\"#80d8ff\",a200:\"#40c4ff\",a400:\"#00b0ff\",a700:\"#0091ea\"},u={50:\"#e0f7fa\",100:\"#b2ebf2\",200:\"#80deea\",300:\"#4dd0e1\",400:\"#26c6da\",500:\"#00bcd4\",600:\"#00acc1\",700:\"#0097a7\",800:\"#00838f\",900:\"#006064\",a100:\"#84ffff\",a200:\"#18ffff\",a400:\"#00e5ff\",a700:\"#00b8d4\"},f={50:\"#e0f2f1\",100:\"#b2dfdb\",200:\"#80cbc4\",300:\"#4db6ac\",400:\"#26a69a\",500:\"#009688\",600:\"#00897b\",700:\"#00796b\",800:\"#00695c\",900:\"#004d40\",a100:\"#a7ffeb\",a200:\"#64ffda\",a400:\"#1de9b6\",a700:\"#00bfa5\"},d={50:\"#e8f5e9\",100:\"#c8e6c9\",200:\"#a5d6a7\",300:\"#81c784\",400:\"#66bb6a\",500:\"#4caf50\",600:\"#43a047\",700:\"#388e3c\",800:\"#2e7d32\",900:\"#1b5e20\",a100:\"#b9f6ca\",a200:\"#69f0ae\",a400:\"#00e676\",a700:\"#00c853\"},h={50:\"#f1f8e9\",100:\"#dcedc8\",200:\"#c5e1a5\",300:\"#aed581\",400:\"#9ccc65\",500:\"#8bc34a\",600:\"#7cb342\",700:\"#689f38\",800:\"#558b2f\",900:\"#33691e\",a100:\"#ccff90\",a200:\"#b2ff59\",a400:\"#76ff03\",a700:\"#64dd17\"},p={50:\"#f9fbe7\",100:\"#f0f4c3\",200:\"#e6ee9c\",300:\"#dce775\",400:\"#d4e157\",500:\"#cddc39\",600:\"#c0ca33\",700:\"#afb42b\",800:\"#9e9d24\",900:\"#827717\",a100:\"#f4ff81\",a200:\"#eeff41\",a400:\"#c6ff00\",a700:\"#aeea00\"},v={50:\"#fffde7\",100:\"#fff9c4\",200:\"#fff59d\",300:\"#fff176\",400:\"#ffee58\",500:\"#ffeb3b\",600:\"#fdd835\",700:\"#fbc02d\",800:\"#f9a825\",900:\"#f57f17\",a100:\"#ffff8d\",a200:\"#ffff00\",a400:\"#ffea00\",a700:\"#ffd600\"},g={50:\"#fff8e1\",100:\"#ffecb3\",200:\"#ffe082\",300:\"#ffd54f\",400:\"#ffca28\",500:\"#ffc107\",600:\"#ffb300\",700:\"#ffa000\",800:\"#ff8f00\",900:\"#ff6f00\",a100:\"#ffe57f\",a200:\"#ffd740\",a400:\"#ffc400\",a700:\"#ffab00\"},b={50:\"#fff3e0\",100:\"#ffe0b2\",200:\"#ffcc80\",300:\"#ffb74d\",400:\"#ffa726\",500:\"#ff9800\",600:\"#fb8c00\",700:\"#f57c00\",800:\"#ef6c00\",900:\"#e65100\",a100:\"#ffd180\",a200:\"#ffab40\",a400:\"#ff9100\",a700:\"#ff6d00\"},x={50:\"#fbe9e7\",100:\"#ffccbc\",200:\"#ffab91\",300:\"#ff8a65\",400:\"#ff7043\",500:\"#ff5722\",600:\"#f4511e\",700:\"#e64a19\",800:\"#d84315\",900:\"#bf360c\",a100:\"#ff9e80\",a200:\"#ff6e40\",a400:\"#ff3d00\",a700:\"#dd2c00\"},m={50:\"#efebe9\",100:\"#d7ccc8\",200:\"#bcaaa4\",300:\"#a1887f\",400:\"#8d6e63\",500:\"#795548\",600:\"#6d4c41\",700:\"#5d4037\",800:\"#4e342e\",900:\"#3e2723\"},_={50:\"#fafafa\",100:\"#f5f5f5\",200:\"#eeeeee\",300:\"#e0e0e0\",400:\"#bdbdbd\",500:\"#9e9e9e\",600:\"#757575\",700:\"#616161\",800:\"#424242\",900:\"#212121\"},w={50:\"#eceff1\",100:\"#cfd8dc\",200:\"#b0bec5\",300:\"#90a4ae\",400:\"#78909c\",500:\"#607d8b\",600:\"#546e7a\",700:\"#455a64\",800:\"#37474f\",900:\"#263238\"},y={primary:\"rgba(0, 0, 0, 0.87)\",secondary:\"rgba(0, 0, 0, 0.54)\",disabled:\"rgba(0, 0, 0, 0.38)\",dividers:\"rgba(0, 0, 0, 0.12)\"},C={primary:\"rgba(255, 255, 255, 1)\",secondary:\"rgba(255, 255, 255, 0.7)\",disabled:\"rgba(255, 255, 255, 0.5)\",dividers:\"rgba(255, 255, 255, 0.12)\"},k={active:\"rgba(0, 0, 0, 0.54)\",inactive:\"rgba(0, 0, 0, 0.38)\"},F={active:\"rgba(255, 255, 255, 1)\",inactive:\"rgba(255, 255, 255, 0.5)\"},S=\"#ffffff\",A=\"#000000\";t.default={red:r,pink:i,purple:o,deepPurple:a,indigo:s,blue:c,lightBlue:l,cyan:u,teal:f,green:d,lightGreen:h,lime:p,yellow:v,amber:g,orange:b,deepOrange:x,brown:m,grey:_,blueGrey:w,darkText:y,lightText:C,darkIcons:k,lightIcons:F,white:S,black:A}},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-swatches\",attrs:{role:\"application\",\"aria-label\":\"Swatches color picker\",\"data-pick\":e.pick}},[n(\"div\",{staticClass:\"vc-swatches-box\",attrs:{role:\"listbox\"}},e._l(e.palette,function(t,r){return n(\"div\",{key:r,staticClass:\"vc-swatches-color-group\"},e._l(t,function(t){return n(\"div\",{key:t,class:[\"vc-swatches-color-it\",{\"vc-swatches-color--white\":\"#FFFFFF\"===t}],style:{background:t},attrs:{role:\"option\",\"aria-label\":\"Color:\"+t,\"aria-selected\":e.equal(t),\"data-color\":t},on:{click:function(n){e.handlerClick(t)}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.equal(t),expression:\"equal(c)\"}],staticClass:\"vc-swatches-pick\"},[n(\"svg\",{staticStyle:{width:\"24px\",height:\"24px\"},attrs:{viewBox:\"0 0 24 24\"}},[n(\"path\",{attrs:{d:\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"}})])])])}))}))])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(121)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(52),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(134),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Photoshop.vue\",t.default=f.exports},function(e,t,n){var r=n(122);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"080365d4\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,'\\n.vc-photoshop {\\n background: #DCDCDC;\\n border-radius: 4px;\\n box-shadow: 0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15);\\n box-sizing: initial;\\n width: 513px;\\n font-family: Roboto;\\n}\\n.vc-photoshop__disable-fields {\\n width: 390px;\\n}\\n.vc-ps-head {\\n background-image: linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%);\\n border-bottom: 1px solid #B1B1B1;\\n box-shadow: inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02);\\n height: 23px;\\n line-height: 24px;\\n border-radius: 4px 4px 0 0;\\n font-size: 13px;\\n color: #4D4D4D;\\n text-align: center;\\n}\\n.vc-ps-body {\\n padding: 15px;\\n display: flex;\\n}\\n.vc-ps-saturation-wrap {\\n width: 256px;\\n height: 256px;\\n position: relative;\\n border: 2px solid #B3B3B3;\\n border-bottom: 2px solid #F0F0F0;\\n overflow: hidden;\\n}\\n.vc-ps-saturation-wrap .vc-saturation-circle {\\n width: 12px;\\n height: 12px;\\n}\\n.vc-ps-hue-wrap {\\n position: relative;\\n height: 256px;\\n width: 19px;\\n margin-left: 10px;\\n border: 2px solid #B3B3B3;\\n border-bottom: 2px solid #F0F0F0;\\n}\\n.vc-ps-hue-pointer {\\n position: relative;\\n}\\n.vc-ps-hue-pointer--left,\\n.vc-ps-hue-pointer--right {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 5px 0 5px 8px;\\n border-color: transparent transparent transparent #555;\\n}\\n.vc-ps-hue-pointer--left:after,\\n.vc-ps-hue-pointer--right:after {\\n content: \"\";\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 4px 0 4px 6px;\\n border-color: transparent transparent transparent #fff;\\n position: absolute;\\n top: 1px;\\n left: 1px;\\n transform: translate(-8px, -5px);\\n}\\n.vc-ps-hue-pointer--left {\\n transform: translate(-13px, -4px);\\n}\\n.vc-ps-hue-pointer--right {\\n transform: translate(20px, -4px) rotate(180deg);\\n}\\n.vc-ps-controls {\\n width: 180px;\\n margin-left: 10px;\\n display: flex;\\n}\\n.vc-ps-controls__disable-fields {\\n width: auto;\\n}\\n.vc-ps-actions {\\n margin-left: 20px;\\n flex: 1;\\n}\\n.vc-ps-ac-btn {\\n cursor: pointer;\\n background-image: linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%);\\n border: 1px solid #878787;\\n border-radius: 2px;\\n height: 20px;\\n box-shadow: 0 1px 0 0 #EAEAEA;\\n font-size: 14px;\\n color: #000;\\n line-height: 20px;\\n text-align: center;\\n margin-bottom: 10px;\\n}\\n.vc-ps-previews {\\n width: 60px;\\n}\\n.vc-ps-previews__swatches {\\n border: 1px solid #B3B3B3;\\n border-bottom: 1px solid #F0F0F0;\\n margin-bottom: 2px;\\n margin-top: 1px;\\n}\\n.vc-ps-previews__pr-color {\\n height: 34px;\\n box-shadow: inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000;\\n}\\n.vc-ps-previews__label {\\n font-size: 14px;\\n color: #000;\\n text-align: center;\\n}\\n.vc-ps-fields {\\n padding-top: 5px;\\n padding-bottom: 9px;\\n width: 80px;\\n position: relative;\\n}\\n.vc-ps-fields .vc-input__input {\\n margin-left: 40%;\\n width: 40%;\\n height: 18px;\\n border: 1px solid #888888;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC;\\n margin-bottom: 5px;\\n font-size: 13px;\\n padding-left: 3px;\\n margin-right: 10px;\\n}\\n.vc-ps-fields .vc-input__label, .vc-ps-fields .vc-input__desc {\\n top: 0;\\n text-transform: uppercase;\\n font-size: 13px;\\n height: 18px;\\n line-height: 22px;\\n position: absolute;\\n}\\n.vc-ps-fields .vc-input__label {\\n left: 0;\\n width: 34px;\\n}\\n.vc-ps-fields .vc-input__desc {\\n right: 0;\\n width: 0;\\n}\\n.vc-ps-fields__divider {\\n height: 5px;\\n}\\n.vc-ps-fields__hex .vc-input__input {\\n margin-left: 20%;\\n width: 80%;\\n height: 18px;\\n border: 1px solid #888888;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC;\\n margin-bottom: 6px;\\n font-size: 13px;\\n padding-left: 3px;\\n}\\n.vc-ps-fields__hex .vc-input__label {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 14px;\\n text-transform: uppercase;\\n font-size: 13px;\\n height: 18px;\\n line-height: 22px;\\n}\\n',\"\"])},function(e,t,n){var r=n(124);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"b5380e52\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-saturation,\\n.vc-saturation--white,\\n.vc-saturation--black {\\n cursor: pointer;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n}\\n.vc-saturation--white {\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n}\\n.vc-saturation--black {\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n}\\n.vc-saturation-pointer {\\n cursor: pointer;\\n position: absolute;\\n}\\n.vc-saturation-circle {\\n cursor: pointer;\\n width: 4px;\\n height: 4px;\\n box-shadow: 0 0 0 1.6px #fff, inset 0 0 1px 1px rgba(0,0,0,.3), 0 0 1px 2px rgba(0,0,0,.4);\\n border-radius: 50%;\\n transform: translate(-2px, -2px);\\n}\\n\",\"\"])},function(e,t){function n(e,t,n){return t<n?e<t?t:e>n?n:e:e<n?n:e>t?t:e}e.exports=n},function(e,t){function n(e,t,n){function r(t){var n=v,r=g;return v=g=void 0,k=t,x=e.apply(r,n)}function o(e){return k=e,m=setTimeout(u,t),F?r(e):x}function a(e){var n=e-_,r=e-k,i=t-n;return S?y(i,b-r):i}function l(e){var n=e-_,r=e-k;return void 0===_||n>=t||n<0||S&&r>=b}function u(){var e=C();if(l(e))return f(e);m=setTimeout(u,a(e))}function f(e){return m=void 0,A&&v?r(e):(v=g=void 0,x)}function d(){void 0!==m&&clearTimeout(m),k=0,v=_=g=m=void 0}function h(){return void 0===m?x:f(C())}function p(){var e=C(),n=l(e);if(v=arguments,g=this,_=e,n){if(void 0===m)return o(_);if(S)return m=setTimeout(u,t),r(_)}return void 0===m&&(m=setTimeout(u,t)),x}var v,g,b,x,m,_,k=0,F=!1,S=!1,A=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=s(t)||0,i(n)&&(F=!!n.leading,S=\"maxWait\"in n,b=S?w(s(n.maxWait)||0,t):b,A=\"trailing\"in n?!!n.trailing:A),p.cancel=d,p.flush=h,p}function r(e,t,r){var o=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(c);return i(r)&&(o=\"leading\"in r?!!r.leading:o,a=\"trailing\"in r?!!r.trailing:a),n(e,t,{leading:o,maxWait:t,trailing:a})}function i(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function o(e){return!!e&&\"object\"==typeof e}function a(e){return\"symbol\"==typeof e||o(e)&&_.call(e)==u}function s(e){if(\"number\"==typeof e)return e;if(a(e))return l;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(f,\"\");var n=h.test(e);return n||p.test(e)?v(e.slice(2),n?2:8):d.test(e)?l:+e}var c=\"Expected a function\",l=NaN,u=\"[object Symbol]\",f=/^\\s+|\\s+$/g,d=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,p=/^0o[0-7]+$/i,v=parseInt,g=\"object\"==typeof global&&global&&global.Object===Object&&global,b=\"object\"==typeof self&&self&&self.Object===Object&&self,x=g||b||Function(\"return this\")(),m=Object.prototype,_=m.toString,w=Math.max,y=Math.min,C=function(){return x.Date.now()};e.exports=r},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{ref:\"container\",staticClass:\"vc-saturation\",style:{background:e.bgColor},on:{mousedown:e.handleMouseDown,touchmove:e.handleChange,touchstart:e.handleChange}},[n(\"div\",{staticClass:\"vc-saturation--white\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-saturation--black\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-saturation-pointer\",style:{top:e.pointerTop,left:e.pointerLeft}},[n(\"div\",{staticClass:\"vc-saturation-circle\"})])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){var r=n(129);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"4dc1b086\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-alpha {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n}\\n.vc-alpha-checkboard-wrap {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n overflow: hidden;\\n}\\n.vc-alpha-gradient {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n}\\n.vc-alpha-container {\\n cursor: pointer;\\n position: relative;\\n z-index: 2;\\n height: 100%;\\n margin: 0 3px;\\n}\\n.vc-alpha-pointer {\\n z-index: 2;\\n position: absolute;\\n}\\n.vc-alpha-picker {\\n cursor: pointer;\\n width: 4px;\\n border-radius: 1px;\\n height: 8px;\\n box-shadow: 0 0 2px rgba(0, 0, 0, .6);\\n background: #fff;\\n margin-top: 1px;\\n transform: translateX(-2px);\\n}\\n\",\"\"])},function(e,t,n){var r=n(131);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"7e15c05b\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-checkerboard {\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n bottom: 0px;\\n left: 0px;\\n background-size: contain;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement;return(e._self._c||t)(\"div\",{staticClass:\"vc-checkerboard\",style:e.bgStyle})},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-alpha\"},[n(\"div\",{staticClass:\"vc-alpha-checkboard-wrap\"},[n(\"checkboard\")],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-alpha-gradient\",style:{background:e.gradientColor}}),e._v(\" \"),n(\"div\",{ref:\"container\",staticClass:\"vc-alpha-container\",on:{mousedown:e.handleMouseDown,touchmove:e.handleChange,touchstart:e.handleChange}},[n(\"div\",{staticClass:\"vc-alpha-pointer\",style:{left:100*e.colors.a+\"%\"}},[n(\"div\",{staticClass:\"vc-alpha-picker\"})])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-photoshop\",e.disableFields?\"vc-photoshop__disable-fields\":\"\"],attrs:{role:\"application\",\"aria-label\":\"PhotoShop color picker\"}},[n(\"div\",{staticClass:\"vc-ps-head\",attrs:{role:\"heading\"}},[e._v(e._s(e.head))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-body\"},[n(\"div\",{staticClass:\"vc-ps-saturation-wrap\"},[n(\"saturation\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-hue-wrap\"},[n(\"hue\",{attrs:{direction:\"vertical\"},on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}},[n(\"div\",{staticClass:\"vc-ps-hue-pointer\"},[n(\"i\",{staticClass:\"vc-ps-hue-pointer--left\"}),n(\"i\",{staticClass:\"vc-ps-hue-pointer--right\"})])])],1),e._v(\" \"),n(\"div\",{class:[\"vc-ps-controls\",e.disableFields?\"vc-ps-controls__disable-fields\":\"\"]},[n(\"div\",{staticClass:\"vc-ps-previews\"},[n(\"div\",{staticClass:\"vc-ps-previews__label\"},[e._v(e._s(e.newLabel))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-previews__swatches\"},[n(\"div\",{staticClass:\"vc-ps-previews__pr-color\",style:{background:e.colors.hex},attrs:{\"aria-label\":\"New color is \"+e.colors.hex}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-previews__pr-color\",style:{background:e.currentColor},attrs:{\"aria-label\":\"Current color is \"+e.currentColor},on:{click:e.clickCurrentColor}})]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-previews__label\"},[e._v(e._s(e.currentLabel))])]),e._v(\" \"),e.disableFields?e._e():n(\"div\",{staticClass:\"vc-ps-actions\"},[n(\"div\",{staticClass:\"vc-ps-ac-btn\",attrs:{role:\"button\",\"aria-label\":e.acceptLabel},on:{click:e.handleAccept}},[e._v(e._s(e.acceptLabel))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-ac-btn\",attrs:{role:\"button\",\"aria-label\":e.cancelLabel},on:{click:e.handleCancel}},[e._v(e._s(e.cancelLabel))]),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-fields\"},[n(\"ed-in\",{attrs:{label:\"h\",desc:\"°\",value:e.hsv.h},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"s\",desc:\"%\",value:e.hsv.s,max:100},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"v\",desc:\"%\",value:e.hsv.v,max:100},on:{change:e.inputChange}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-fields__divider\"}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"r\",value:e.colors.rgba.r},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"g\",value:e.colors.rgba.g},on:{change:e.inputChange}}),e._v(\" \"),n(\"ed-in\",{attrs:{label:\"b\",value:e.colors.rgba.b},on:{change:e.inputChange}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-ps-fields__divider\"}),e._v(\" \"),n(\"ed-in\",{staticClass:\"vc-ps-fields__hex\",attrs:{label:\"#\",value:e.hex},on:{change:e.inputChange}})],1),e._v(\" \"),e.hasResetButton?n(\"div\",{staticClass:\"vc-ps-ac-btn\",attrs:{\"aria-label\":\"reset\"},on:{click:e.handleReset}},[e._v(e._s(e.resetLabel))]):e._e()])])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(136)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(56),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(138),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Sketch.vue\",t.default=f.exports},function(e,t,n){var r=n(137);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"612c6604\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-sketch {\\n position: relative;\\n width: 200px;\\n padding: 10px 10px 0;\\n box-sizing: initial;\\n background: #fff;\\n border-radius: 4px;\\n box-shadow: 0 0 0 1px rgba(0, 0, 0, .15), 0 8px 16px rgba(0, 0, 0, .15);\\n}\\n.vc-sketch-saturation-wrap {\\n width: 100%;\\n padding-bottom: 75%;\\n position: relative;\\n overflow: hidden;\\n}\\n.vc-sketch-controls {\\n display: flex;\\n}\\n.vc-sketch-sliders {\\n padding: 4px 0;\\n flex: 1;\\n}\\n.vc-sketch-sliders .vc-hue,\\n.vc-sketch-sliders .vc-alpha-gradient {\\n border-radius: 2px;\\n}\\n.vc-sketch-hue-wrap {\\n position: relative;\\n height: 10px;\\n}\\n.vc-sketch-alpha-wrap {\\n position: relative;\\n height: 10px;\\n margin-top: 4px;\\n overflow: hidden;\\n}\\n.vc-sketch-color-wrap {\\n width: 24px;\\n height: 24px;\\n position: relative;\\n margin-top: 4px;\\n margin-left: 4px;\\n border-radius: 3px;\\n}\\n.vc-sketch-active-color {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n border-radius: 2px;\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15), inset 0 0 4px rgba(0, 0, 0, .25);\\n z-index: 2;\\n}\\n.vc-sketch-color-wrap .vc-checkerboard {\\n background-size: auto;\\n}\\n.vc-sketch-field {\\n display: flex;\\n padding-top: 4px;\\n}\\n.vc-sketch-field .vc-input__input {\\n width: 90%;\\n padding: 4px 0 3px 10%;\\n border: none;\\n box-shadow: inset 0 0 0 1px #ccc;\\n font-size: 10px;\\n}\\n.vc-sketch-field .vc-input__label {\\n display: block;\\n text-align: center;\\n font-size: 11px;\\n color: #222;\\n padding-top: 3px;\\n padding-bottom: 4px;\\n text-transform: capitalize;\\n}\\n.vc-sketch-field--single {\\n flex: 1;\\n padding-left: 6px;\\n}\\n.vc-sketch-field--double {\\n flex: 2;\\n}\\n.vc-sketch-presets {\\n margin-right: -10px;\\n margin-left: -10px;\\n padding-left: 10px;\\n padding-top: 10px;\\n border-top: 1px solid #eee;\\n}\\n.vc-sketch-presets-color {\\n border-radius: 3px;\\n overflow: hidden;\\n position: relative;\\n display: inline-block;\\n margin: 0 10px 10px 0;\\n vertical-align: top;\\n cursor: pointer;\\n width: 16px;\\n height: 16px;\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15);\\n}\\n.vc-sketch-presets-color .vc-checkerboard {\\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15);\\n border-radius: 3px;\\n}\\n.vc-sketch__disable-alpha .vc-sketch-color-wrap {\\n height: 10px;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-sketch\",e.disableAlpha?\"vc-sketch__disable-alpha\":\"\"],attrs:{role:\"application\",\"aria-label\":\"Sketch color picker\"}},[n(\"div\",{staticClass:\"vc-sketch-saturation-wrap\"},[n(\"saturation\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-controls\"},[n(\"div\",{staticClass:\"vc-sketch-sliders\"},[n(\"div\",{staticClass:\"vc-sketch-hue-wrap\"},[n(\"hue\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-sketch-alpha-wrap\"},[n(\"alpha\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1)]),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-color-wrap\"},[n(\"div\",{staticClass:\"vc-sketch-active-color\",style:{background:e.activeColor},attrs:{\"aria-label\":\"Current color is \"+e.activeColor}}),e._v(\" \"),n(\"checkboard\")],1)]),e._v(\" \"),e.disableFields?e._e():n(\"div\",{staticClass:\"vc-sketch-field\"},[n(\"div\",{staticClass:\"vc-sketch-field--double\"},[n(\"ed-in\",{attrs:{label:\"hex\",value:e.hex},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"r\",value:e.colors.rgba.r},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"g\",value:e.colors.rgba.g},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"b\",value:e.colors.rgba.b},on:{change:e.inputChange}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-sketch-field--single\"},[n(\"ed-in\",{attrs:{label:\"a\",value:e.colors.a,\"arrow-offset\":.01,max:1},on:{change:e.inputChange}})],1)]),e._v(\" \"),n(\"div\",{staticClass:\"vc-sketch-presets\",attrs:{role:\"group\",\"aria-label\":\"A color preset, pick one to set as current color\"}},[e._l(e.presetColors,function(t){return[e.isTransparent(t)?n(\"div\",{key:t,staticClass:\"vc-sketch-presets-color\",attrs:{\"aria-label\":\"Color:\"+t},on:{click:function(n){e.handlePreset(t)}}},[n(\"checkboard\")],1):n(\"div\",{key:t,staticClass:\"vc-sketch-presets-color\",style:{background:t},attrs:{\"aria-label\":\"Color:\"+t},on:{click:function(n){e.handlePreset(t)}}})]})],2)])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(140)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(57),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(142),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Chrome.vue\",t.default=f.exports},function(e,t,n){var r=n(141);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"1cd16048\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-chrome {\\n background: #fff;\\n border-radius: 2px;\\n box-shadow: 0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3);\\n box-sizing: initial;\\n width: 225px;\\n font-family: Menlo, monospace;\\n background-color: #fff;\\n}\\n.vc-chrome-controls {\\n display: flex;\\n}\\n.vc-chrome-color-wrap {\\n position: relative;\\n width: 36px;\\n}\\n.vc-chrome-active-color {\\n position: relative;\\n width: 30px;\\n height: 30px;\\n border-radius: 15px;\\n overflow: hidden;\\n z-index: 1;\\n}\\n.vc-chrome-color-wrap .vc-checkerboard {\\n width: 30px;\\n height: 30px;\\n border-radius: 15px;\\n background-size: auto;\\n}\\n.vc-chrome-sliders {\\n flex: 1;\\n}\\n.vc-chrome-fields-wrap {\\n display: flex;\\n padding-top: 16px;\\n}\\n.vc-chrome-fields {\\n display: flex;\\n margin-left: -6px;\\n flex: 1;\\n}\\n.vc-chrome-field {\\n padding-left: 6px;\\n width: 100%;\\n}\\n.vc-chrome-toggle-btn {\\n width: 32px;\\n text-align: right;\\n position: relative;\\n}\\n.vc-chrome-toggle-icon {\\n margin-right: -4px;\\n margin-top: 12px;\\n cursor: pointer;\\n position: relative;\\n z-index: 2;\\n}\\n.vc-chrome-toggle-icon-highlight {\\n position: absolute;\\n width: 24px;\\n height: 28px;\\n background: #eee;\\n border-radius: 4px;\\n top: 10px;\\n left: 12px;\\n}\\n.vc-chrome-hue-wrap {\\n position: relative;\\n height: 10px;\\n margin-bottom: 8px;\\n}\\n.vc-chrome-alpha-wrap {\\n position: relative;\\n height: 10px;\\n}\\n.vc-chrome-hue-wrap .vc-hue {\\n border-radius: 2px;\\n}\\n.vc-chrome-alpha-wrap .vc-alpha-gradient {\\n border-radius: 2px;\\n}\\n.vc-chrome-hue-wrap .vc-hue-picker, .vc-chrome-alpha-wrap .vc-alpha-picker {\\n width: 12px;\\n height: 12px;\\n border-radius: 6px;\\n transform: translate(-6px, -2px);\\n background-color: rgb(248, 248, 248);\\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\\n}\\n.vc-chrome-body {\\n padding: 16px 16px 12px;\\n background-color: #fff;\\n}\\n.vc-chrome-saturation-wrap {\\n width: 100%;\\n padding-bottom: 55%;\\n position: relative;\\n border-radius: 2px 2px 0 0;\\n overflow: hidden;\\n}\\n.vc-chrome-saturation-wrap .vc-saturation-circle {\\n width: 12px;\\n height: 12px;\\n}\\n.vc-chrome-fields .vc-input__input {\\n font-size: 11px;\\n color: #333;\\n width: 100%;\\n border-radius: 2px;\\n border: none;\\n box-shadow: inset 0 0 0 1px #dadada;\\n height: 21px;\\n text-align: center;\\n}\\n.vc-chrome-fields .vc-input__label {\\n text-transform: uppercase;\\n font-size: 11px;\\n line-height: 11px;\\n color: #969696;\\n text-align: center;\\n display: block;\\n margin-top: 12px;\\n}\\n.vc-chrome__disable-alpha .vc-chrome-active-color {\\n width: 18px;\\n height: 18px;\\n}\\n.vc-chrome__disable-alpha .vc-chrome-color-wrap {\\n width: 30px;\\n}\\n.vc-chrome__disable-alpha .vc-chrome-hue-wrap {\\n margin-top: 4px;\\n margin-bottom: 4px;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"vc-chrome\",e.disableAlpha?\"vc-chrome__disable-alpha\":\"\"],attrs:{role:\"application\",\"aria-label\":\"Chrome color picker\"}},[n(\"div\",{staticClass:\"vc-chrome-saturation-wrap\"},[n(\"saturation\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-body\"},[n(\"div\",{staticClass:\"vc-chrome-controls\"},[n(\"div\",{staticClass:\"vc-chrome-color-wrap\"},[n(\"div\",{staticClass:\"vc-chrome-active-color\",style:{background:e.activeColor},attrs:{\"aria-label\":\"current color is \"+e.colors.hex}}),e._v(\" \"),e.disableAlpha?e._e():n(\"checkboard\")],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-sliders\"},[n(\"div\",{staticClass:\"vc-chrome-hue-wrap\"},[n(\"hue\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-chrome-alpha-wrap\"},[n(\"alpha\",{on:{change:e.childChange},model:{value:e.colors,callback:function(t){e.colors=t},expression:\"colors\"}})],1)])]),e._v(\" \"),e.disableFields?e._e():n(\"div\",{staticClass:\"vc-chrome-fields-wrap\"},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:0===e.fieldsIndex,expression:\"fieldsIndex === 0\"}],staticClass:\"vc-chrome-fields\"},[n(\"div\",{staticClass:\"vc-chrome-field\"},[e.hasAlpha?e._e():n(\"ed-in\",{attrs:{label:\"hex\",value:e.colors.hex},on:{change:e.inputChange}}),e._v(\" \"),e.hasAlpha?n(\"ed-in\",{attrs:{label:\"hex\",value:e.colors.hex8},on:{change:e.inputChange}}):e._e()],1)]),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:1===e.fieldsIndex,expression:\"fieldsIndex === 1\"}],staticClass:\"vc-chrome-fields\"},[n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"r\",value:e.colors.rgba.r},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"g\",value:e.colors.rgba.g},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"b\",value:e.colors.rgba.b},on:{change:e.inputChange}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"a\",value:e.colors.a,\"arrow-offset\":.01,max:1},on:{change:e.inputChange}})],1)]),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:2===e.fieldsIndex,expression:\"fieldsIndex === 2\"}],staticClass:\"vc-chrome-fields\"},[n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"h\",value:e.hsl.h},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"s\",value:e.hsl.s},on:{change:e.inputChange}})],1),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"l\",value:e.hsl.l},on:{change:e.inputChange}})],1),e._v(\" \"),e.disableAlpha?e._e():n(\"div\",{staticClass:\"vc-chrome-field\"},[n(\"ed-in\",{attrs:{label:\"a\",value:e.colors.a,\"arrow-offset\":.01,max:1},on:{change:e.inputChange}})],1)]),e._v(\" \"),n(\"div\",{staticClass:\"vc-chrome-toggle-btn\",attrs:{role:\"button\",\"aria-label\":\"Change another color definition\"},on:{click:e.toggleViews}},[n(\"div\",{staticClass:\"vc-chrome-toggle-icon\"},[n(\"svg\",{staticStyle:{width:\"24px\",height:\"24px\"},attrs:{viewBox:\"0 0 24 24\"},on:{mouseover:e.showHighlight,mouseenter:e.showHighlight,mouseout:e.hideHighlight}},[n(\"path\",{attrs:{fill:\"#333\",d:\"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z\"}})])]),e._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.highlight,expression:\"highlight\"}],staticClass:\"vc-chrome-toggle-icon-highlight\"})])])])])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o},function(e,t,n){\"use strict\";function r(e){c||n(144)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(58),o=n.n(i);for(var a in i)\"default\"!==a&&function(e){n.d(t,e,function(){return i[e]})}(a);var s=n(146),c=!1,l=n(2),u=r,f=l(o.a,s.a,!1,u,null,null);f.options.__file=\"src/components/Twitter.vue\",t.default=f.exports},function(e,t,n){var r=n(145);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);n(1)(\"669a48a5\",r,!1,{})},function(e,t,n){t=e.exports=n(0)(!1),t.push([e.i,\"\\n.vc-twitter {\\n background: #fff;\\n border: 0 solid rgba(0,0,0,0.25);\\n box-shadow: 0 1px 4px rgba(0,0,0,0.25);\\n border-radius: 4px;\\n position: relative;\\n}\\n.vc-twitter-triangle {\\n width: 0px;\\n height: 0px;\\n border-style: solid;\\n border-width: 0 9px 10px 9px;\\n border-color: transparent transparent #fff transparent;\\n position: absolute;\\n}\\n.vc-twitter-triangle-shadow {\\n width: 0px;\\n height: 0px;\\n border-style: solid;\\n border-width: 0 9px 10px 9px;\\n border-color: transparent transparent rgba(0, 0, 0, .1) transparent;\\n position: absolute;\\n}\\n.vc-twitter-body {\\n padding: 15px 9px 9px 15px;\\n}\\n.vc-twitter .vc-editable-input {\\n position: relative;\\n}\\n.vc-twitter .vc-editable-input input {\\n width: 100px;\\n font-size: 14px;\\n color: #666;\\n border: 0px;\\n outline: none;\\n height: 28px;\\n box-shadow: inset 0 0 0 1px #F0F0F0;\\n box-sizing: content-box;\\n border-radius: 0 4px 4px 0;\\n float: left;\\n padding: 1px;\\n padding-left: 8px;\\n}\\n.vc-twitter .vc-editable-input span {\\n display: none;\\n}\\n.vc-twitter-hash {\\n background: #F0F0F0;\\n height: 30px;\\n width: 30px;\\n border-radius: 4px 0 0 4px;\\n float: left;\\n color: #98A1A4;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.vc-twitter-swatch {\\n width: 30px;\\n height: 30px;\\n float: left;\\n border-radius: 4px;\\n margin: 0 6px 6px 0;\\n cursor: pointer;\\n position: relative;\\n outline: none;\\n}\\n.vc-twitter-clear {\\n clear: both;\\n}\\n.vc-twitter-hide-triangle .vc-twitter-triangle {\\n display: none;\\n}\\n.vc-twitter-hide-triangle .vc-twitter-triangle-shadow {\\n display: none;\\n}\\n.vc-twitter-top-left-triangle .vc-twitter-triangle{\\n top: -10px;\\n left: 12px;\\n}\\n.vc-twitter-top-left-triangle .vc-twitter-triangle-shadow{\\n top: -11px;\\n left: 12px;\\n}\\n.vc-twitter-top-right-triangle .vc-twitter-triangle{\\n top: -10px;\\n right: 12px;\\n}\\n.vc-twitter-top-right-triangle .vc-twitter-triangle-shadow{\\n top: -11px;\\n right: 12px;\\n}\\n\",\"\"])},function(e,t,n){\"use strict\";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vc-twitter\",class:{\"vc-twitter-hide-triangle \":\"hide\"===e.triangle,\"vc-twitter-top-left-triangle \":\"top-left\"===e.triangle,\"vc-twitter-top-right-triangle \":\"top-right\"===e.triangle},style:{width:\"number\"==typeof e.width?e.width+\"px\":e.width}},[n(\"div\",{staticClass:\"vc-twitter-triangle-shadow\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-triangle\"}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-body\"},[e._l(e.defaultColors,function(t,r){return n(\"span\",{key:r,staticClass:\"vc-twitter-swatch\",style:{background:t,boxShadow:\"0 0 4px \"+(e.equal(t)?t:\"transparent\")},on:{click:function(n){e.handlerClick(t)}}})}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-hash\"},[e._v(\"#\")]),e._v(\" \"),n(\"editable-input\",{attrs:{label:\"#\",value:e.hex},on:{change:e.inputChange}}),e._v(\" \"),n(\"div\",{staticClass:\"vc-twitter-clear\"})],2)])},i=[];r._withStripped=!0;var o={render:r,staticRenderFns:i};t.a=o}])});","import '../assets/NcColorPicker-DjmfbD2K.css';\nimport { defineComponent, ref, computed } from \"vue\";\nimport { p as mdiDotsHorizontal, q as mdiCloseCircleOutline, a as mdiCheck, r as mdiArrowLeft } from \"./mdi-DkJglNiS.mjs\";\nimport { useVModel } from \"@vueuse/core\";\nimport { Chrome } from \"vue-color\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcPopover } from \"./NcPopover-BaHX3QSG.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, D as t2, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { d as defaultPalette, a as COLOR_BLACK, b as COLOR_WHITE } from \"./colors-B_oqiKWY.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t2);\nconst __default__ = {\n model: {\n event: \"update:modelValue\",\n prop: \"modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcColorPicker\",\n props: {\n advancedFields: { type: Boolean },\n clearable: { type: Boolean },\n container: { default: \"body\" },\n modelValue: { default: \"\" },\n value: { default: void 0 },\n open: { type: Boolean },\n palette: { default: () => [] },\n paletteOnly: { type: Boolean }\n },\n emits: [\"submit\", \"close\", \"update:modelValue\", \"update:value\"],\n setup(__props, { emit }) {\n const props = __props;\n const currentColor = useModelMigration(\"value\", \"update:value\", true);\n const modelOpen = useVModel(props, \"open\", emit, { passive: true, eventName: \"update:open\" });\n const HEX_REGEX = /^#([a-f0-9]{3}|[a-f0-9]{6})$/i;\n const id = createElementId();\n const advanced = ref(false);\n const normalizedPalette = computed(() => {\n let palette = props.palette;\n for (const color of palette) {\n if (typeof color === \"string\" && !color.match(HEX_REGEX) || typeof color === \"object\" && !color.color?.match(HEX_REGEX)) {\n logger.error(\"[NcColorPicker] Invalid palette passed\", { color });\n palette = [];\n break;\n }\n }\n if (palette.length === 0) {\n palette = props.clearable ? [...defaultPalette, COLOR_BLACK, COLOR_WHITE] : [...defaultPalette];\n }\n return palette.map((item) => ({\n color: typeof item === \"object\" ? item.color : item,\n name: typeof item === \"object\" && item.name ? item.name : t(\"A color with a HEX value {hex}\", { hex: typeof item === \"string\" ? item : item.color })\n }));\n });\n function handleConfirm(hideCallback) {\n emit(\"submit\", currentColor.value);\n hideCallback();\n advanced.value = false;\n }\n function toggleColor(color) {\n color = typeof color === \"string\" ? color : color.color;\n if (props.clearable && currentColor.value === color) {\n currentColor.value = void 0;\n } else {\n currentColor.value = color;\n }\n }\n function pickCustomColor(color) {\n currentColor.value = color.hex;\n }\n function getContrastColor(color) {\n return calculateLuma(color) > 0.5 ? COLOR_BLACK.color : COLOR_WHITE.color;\n }\n function calculateLuma(color) {\n const [red, green, blue] = hexToRGB(color);\n return (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255;\n }\n function hexToRGB(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : [0, 0, 0];\n }\n return { __sfc: true, props, emit, currentColor, modelOpen, HEX_REGEX, id, advanced, normalizedPalette, handleConfirm, toggleColor, pickCustomColor, getContrastColor, calculateLuma, hexToRGB, mdiArrowLeft, mdiCheck, mdiCloseCircleOutline, mdiDotsHorizontal, Chrome, NcButton, NcIconSvgWrapper, NcPopover, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcPopover, _vm._g(_vm._b({ attrs: { \"shown\": _setup.modelOpen, \"container\": _vm.container, \"popup-role\": \"dialog\" }, on: { \"update:shown\": function($event) {\n _setup.modelOpen = $event;\n }, \"apply-hide\": function($event) {\n return _setup.emit(\"close\");\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function(slotProps) {\n return [_vm._t(\"default\", null, null, slotProps)];\n } }, { key: \"default\", fn: function(slotProps) {\n return [_c(\"div\", { staticClass: \"color-picker\", class: {\n \"color-picker--advanced-fields\": _setup.advanced && _vm.advancedFields,\n \"color-picker--clearable\": _vm.clearable\n }, attrs: { \"role\": \"dialog\", \"aria-modal\": \"true\", \"aria-label\": _setup.t(\"Color picker\") } }, [_c(\"Transition\", { attrs: { \"name\": \"slide\", \"mode\": \"out-in\" } }, [!_setup.advanced ? _c(\"div\", { staticClass: \"color-picker__simple\" }, [_vm._l(_setup.normalizedPalette, function({ color, name }, index) {\n return _c(\"label\", { key: index, staticClass: \"color-picker__simple-color-circle\", class: { \"color-picker__simple-color-circle--active\": color === _setup.currentColor }, style: {\n backgroundColor: color,\n color: _setup.getContrastColor(color)\n } }, [_c(\"span\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(color) + \" -- \" + _vm._s(_setup.currentColor) + \" \")]), color === _setup.currentColor ? _c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiCheck } }) : _vm._e(), _c(\"input\", { staticClass: \"hidden-visually\", attrs: { \"type\": \"radio\", \"aria-label\": name, \"name\": `color-picker-${_setup.id}` }, domProps: { \"checked\": color === _setup.currentColor }, on: { \"click\": function($event) {\n return _setup.toggleColor(color);\n } } })], 1);\n }), _vm.clearable ? _c(\"label\", { staticClass: \"color-picker__clear\", attrs: { \"title\": _setup.t(\"No color\") } }, [_c(_setup.NcIconSvgWrapper, { attrs: { \"size\": _setup.currentColor ? 28 : 34, \"path\": _setup.mdiCloseCircleOutline } }), _c(\"input\", { staticClass: \"hidden-visually\", attrs: { \"type\": \"radio\", \"aria-label\": _setup.t(\"No color\"), \"name\": `color-picker-${_setup.id}` }, domProps: { \"checked\": !_setup.currentColor }, on: { \"click\": function($event) {\n _setup.currentColor = void 0;\n } } })], 1) : _vm._e()], 2) : _c(_setup.Chrome, { staticClass: \"color-picker__advanced\", attrs: { \"disable-alpha\": true, \"disable-fields\": !_vm.advancedFields, \"value\": _setup.currentColor ?? \"#000000\" }, on: { \"input\": _setup.pickCustomColor } })], 1), !_vm.paletteOnly ? _c(\"div\", { staticClass: \"color-picker__navigation\" }, [_setup.advanced ? _c(_setup.NcButton, { attrs: { \"aria-label\": _setup.t(\"Back\"), \"title\": _setup.t(\"Back\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n _setup.advanced = false;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"directional\": \"\", \"path\": _setup.mdiArrowLeft } })];\n }, proxy: true }], null, true) }) : _c(_setup.NcButton, { attrs: { \"aria-label\": _setup.t(\"More options\"), \"title\": _setup.t(\"More options\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n _setup.advanced = true;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiDotsHorizontal } })];\n }, proxy: true }], null, true) }), _c(_setup.NcButton, { attrs: { \"variant\": \"primary\" }, on: { \"click\": function($event) {\n return _setup.handleConfirm(slotProps.hide);\n } } }, [_vm._v(\" \" + _vm._s(_setup.t(\"Choose\")) + \" \")])], 1) : _vm._e()], 1)];\n } }], null, true) }, \"NcPopover\", _vm.$attrs, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a8b9d9f6\"\n);\nconst NcColorPicker = __component__.exports;\nexport {\n NcColorPicker as N\n};\n//# sourceMappingURL=NcColorPicker-BwqjqV32.mjs.map\n","import '../assets/NcContent-rDfulBCh.css';\nimport { Portal } from \"@linusborg/vue-simple-portal\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, K as t30, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isLegacy34 } from \"./legacy-Cy3dCXuB.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t30);\nconst contentSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM140 44C132.268 44 126 50.268 126 58V292C126 299.732 132.268 306 140 306H372C379.732 306 386 299.732 386 292V58C386 50.268 379.732 44 372 44H140Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst navigationSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM112 44C119.732 44 126 50.268 126 58V292C126 299.732 119.732 306 112 306H20C12.268 306 6 299.732 6 292V58C6 50.268 12.268 44 20 44H112Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst _sfc_main = {\n name: \"NcContent\",\n components: {\n NcButton,\n NcIconSvgWrapper,\n Teleport: Portal\n },\n provide() {\n return {\n appName: this.appName,\n \"NcContent:setHasAppNavigation\": this.setAppNavigation,\n \"NcContent:selector\": \"#content-vue\"\n };\n },\n props: {\n /**\n * The application name to use.\n * This is used to scope all content (content, sidebar, navigation) to the application.\n */\n appName: {\n type: String,\n required: true\n }\n },\n setup() {\n const isMobile = useIsMobile();\n return {\n isMobile,\n isLegacy34\n };\n },\n data() {\n return {\n hasAppNavigation: false,\n currentFocus: \"\"\n // unknown\n };\n },\n computed: {\n currentImage() {\n if (this.currentFocus === \"navigation\") {\n return navigationSvg;\n }\n return contentSvg;\n }\n },\n beforeMount() {\n const container = document.getElementById(\"skip-actions\");\n if (container) {\n container.innerHTML = \"\";\n container.classList.add(\"vue-skip-actions\");\n }\n },\n methods: {\n t,\n openAppNavigation() {\n emit(\"toggle-navigation\", { open: true });\n this.$nextTick(() => {\n window.location.hash = \"app-navigation-vue\";\n document.getElementById(\"app-navigation-vue\").focus();\n });\n },\n setAppNavigation(value) {\n this.hasAppNavigation = value;\n if (this.currentFocus === \"\") {\n this.currentFocus = \"navigation\";\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"content\", class: [`app-${_vm.appName.toLowerCase()}`, { \"content--legacy\": _vm.isLegacy34 }], attrs: { \"id\": \"content-vue\" } }, [_c(\"Teleport\", { attrs: { \"selector\": \"#skip-actions\" } }, [_c(\"div\", { staticClass: \"vue-skip-actions__container\" }, [_c(\"div\", { staticClass: \"vue-skip-actions__headline\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Keyboard navigation help\")) + \" \")]), _c(\"div\", { staticClass: \"vue-skip-actions__buttons\" }, [_c(\"NcButton\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasAppNavigation, expression: \"hasAppNavigation\" }], attrs: { \"href\": \"#app-navigation-vue\", \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openAppNavigation.apply(null, arguments);\n }, \"focusin\": function($event) {\n _vm.currentFocus = \"navigation\";\n }, \"mouseover\": function($event) {\n _vm.currentFocus = \"navigation\";\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Skip to app navigation\")) + \" \")]), _c(\"NcButton\", { attrs: { \"href\": \"#app-content-vue\", \"variant\": \"tertiary\" }, on: { \"focusin\": function($event) {\n _vm.currentFocus = \"content\";\n }, \"mouseover\": function($event) {\n _vm.currentFocus = \"content\";\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Skip to main content\")) + \" \")])], 1), _c(\"NcIconSvgWrapper\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.isMobile, expression: \"!isMobile\" }], staticClass: \"vue-skip-actions__image\", attrs: { \"svg\": _vm.currentImage, \"size\": \"auto\" } })], 1), _vm._v(\"  \")]), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"0549f131\"\n);\nconst NcContent = __component__.exports;\nexport {\n NcContent as N\n};\n//# sourceMappingURL=NcContent-nvVwz9xO.mjs.map\n","import '../assets/NcDashboardWidget-CodY3evn.css';\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { r as register, m as t35, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-BiZ8QNOR.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"dashboard-widget\" }, [_vm.showHalfEmptyContentArea ? _c(\"NcEmptyContent\", { staticClass: \"half-screen\", attrs: { \"description\": _vm.halfEmptyContentString }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"halfEmptyContentIcon\", function() {\n return [_c(\"Check\")];\n })];\n }, proxy: true }], null, true) }) : _vm._e(), _c(\"ul\", _vm._l(_vm.displayedItems, function(item) {\n return _c(\"li\", { key: item.id }, [_vm._t(\"default\", function() {\n return [_c(\"NcDashboardWidgetItem\", _vm._g(_vm._b({ attrs: { \"item-menu\": _vm.itemMenu } }, \"NcDashboardWidgetItem\", item, false), _vm.handlers))];\n }, { \"item\": item })], 2);\n }), 0), _vm.loading ? _c(\"div\", _vm._l(7, function(i) {\n return _c(\"div\", { key: i, staticClass: \"item-list__entry\" }, [_c(\"NcAvatar\", { staticClass: \"item-avatar\", attrs: { \"size\": 44 } }), _vm._m(0, true)], 1);\n }), 0) : _vm.items.length === 0 ? _vm._t(\"empty-content\", function() {\n return [_vm.emptyContentMessage ? _c(\"NcEmptyContent\", { attrs: { \"description\": _vm.emptyContentMessage }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"emptyContentIcon\")];\n }, proxy: true }], null, true) }) : _vm._e()];\n }) : _vm.showMore ? _c(\"a\", { staticClass: \"more\", attrs: { \"href\": _vm.showMoreUrl, \"target\": \"_blank\", \"tabindex\": \"0\" } }, [_vm._v(\" \" + _vm._s(_vm.showMoreLabel) + \" \")]) : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"item__details\" }, [_c(\"h3\", [_vm._v(\" \")]), _c(\"p\", { staticClass: \"message\" }, [_vm._v(\"   \")])]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"bde19bf3\"\n);\nconst NcDashboardWidget = __component__.exports;\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-d_eqooRR.mjs.map\n","import { formatRelativeTime, getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { toValue } from \"@vueuse/core\";\nimport { computed, ref, watchEffect, onUnmounted, readonly } from \"vue\";\nimport { r as register, f as t3, a as t } from \"../chunks/_l10n-CAnZaLWU.mjs\";\nregister(t3);\nconst FEW_SECONDS_AGO = {\n long: t(\"a few seconds ago\"),\n short: t(\"seconds ago\"),\n // FOR TRANSLATORS: Shorter version of 'a few seconds ago'\n narrow: t(\"sec. ago\")\n // FOR TRANSLATORS: If possible in your language an even shorter version of 'a few seconds ago'\n};\nfunction useFormatRelativeTime(timestamp = Date.now(), opts = {}) {\n let timeoutId;\n const date = computed(() => new Date(toValue(timestamp)));\n const options = computed(() => {\n const { language, relativeTime: relativeTime2, ignoreSeconds } = toValue(opts);\n return {\n ...language && { language },\n ...relativeTime2 && { relativeTime: relativeTime2 },\n ignoreSeconds: ignoreSeconds ? FEW_SECONDS_AGO[relativeTime2 || \"long\"] : false\n };\n });\n const relativeTime = ref(\"\");\n watchEffect(updateRelativeTime);\n function updateRelativeTime() {\n const timestamp2 = date.value.getTime();\n if (Number.isNaN(timestamp2)) {\n relativeTime.value = t(\"Invalid date\");\n return;\n } else {\n relativeTime.value = formatRelativeTime(date.value, options.value);\n }\n if (toValue(opts).update !== false) {\n const diff = Math.abs(Date.now() - timestamp2);\n const interval = diff > 12e4 || options.value.ignoreSeconds ? Math.min(diff / 60, 18e5) : 1e3;\n timeoutId = window.setTimeout(updateRelativeTime, interval);\n }\n }\n onUnmounted(() => timeoutId && window.clearTimeout(timeoutId));\n return readonly(relativeTime);\n}\nfunction useFormatTime(timestamp, opts) {\n const options = computed(() => ({\n locale: getCanonicalLocale(),\n format: { dateStyle: \"short\", timeStyle: \"medium\" },\n ...toValue(opts)\n }));\n const formatter = computed(() => new Intl.DateTimeFormat(options.value.locale, options.value.format));\n return computed(() => formatter.value.format(toValue(timestamp)));\n}\nfunction useFormatDateTime(timestamp = Date.now(), opts = {}) {\n const formattedFullTime = useFormatTime(timestamp, opts);\n const relativeTime = useFormatRelativeTime(timestamp, computed(() => {\n const options = toValue(opts);\n return {\n ...options,\n relativeTime: typeof options.relativeTime === \"string\" ? options.relativeTime : \"long\"\n };\n }));\n const formattedTime = computed(() => toValue(opts).relativeTime !== false ? relativeTime.value : formattedFullTime.value);\n return {\n formattedTime,\n formattedFullTime\n };\n}\nexport {\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime\n};\n//# sourceMappingURL=useFormatDateTime.mjs.map\n","export function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n if (isDate(value)) {\n return new Date(value.getTime());\n }\n\n if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(value);\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(value);\n var day = date.getDay();\n var diff = (day + 7 - firstDayOfWeek) % 7;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nexport function startOfWeekYear(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n _ref$firstWeekContain = _ref.firstWeekContainsDate,\n firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n }\n\n var date = toDate(value);\n var year = date.getFullYear();\n var firstDateOfFirstWeek = new Date(0);\n\n for (var i = year + 1; i >= year - 1; i--) {\n firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n break;\n }\n }\n\n return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n var date = toDate(value);\n var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n var firstDateOfFirstWeek = startOfWeekYear(date, {\n firstDayOfWeek: firstDayOfWeek,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var output = \"\".concat(Math.abs(val));\n var sign = val < 0 ? '-' : '';\n\n while (output.length < len) {\n output = \"0\".concat(output);\n }\n\n return sign + output;\n}\n\nfunction getOffset(date) {\n return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n var word = h < 12 ? 'AM' : 'PM';\n return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n Y: function Y(date) {\n var y = date.getFullYear();\n return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n },\n // Year: 00, 01, ..., 99\n YY: function YY(date) {\n return pad(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n YYYY: function YYYY(date) {\n return pad(date.getFullYear(), 4);\n },\n // Month: 1, 2, ..., 12\n M: function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n MM: function MM(date) {\n return pad(date.getMonth() + 1, 2);\n },\n MMM: function MMM(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MMMM: function MMMM(date, locale) {\n return locale.months[date.getMonth()];\n },\n // Day of month: 1, 2, ..., 31\n D: function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n DD: function DD(date) {\n return pad(date.getDate(), 2);\n },\n // Hour: 0, 1, ... 23\n H: function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n HH: function HH(date) {\n return pad(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n h: function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n }\n\n if (hours > 12) {\n return hours % 12;\n }\n\n return hours;\n },\n // Hour: 01, 02, ..., 12\n hh: function hh() {\n var hours = formatFlags.h.apply(formatFlags, arguments);\n return pad(hours, 2);\n },\n // Minute: 0, 1, ..., 59\n m: function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n mm: function mm(date) {\n return pad(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n s: function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n ss: function ss(date) {\n return pad(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n S: function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n SS: function SS(date) {\n return pad(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n SSS: function SSS(date) {\n return pad(date.getMilliseconds(), 3);\n },\n // Day of week: 0, 1, ..., 6\n d: function d(date) {\n return date.getDay();\n },\n // Day of week: 'Su', 'Mo', ..., 'Sa'\n dd: function dd(date, locale) {\n return locale.weekdaysMin[date.getDay()];\n },\n // Day of week: 'Sun', 'Mon',..., 'Sat'\n ddd: function ddd(date, locale) {\n return locale.weekdaysShort[date.getDay()];\n },\n // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n dddd: function dddd(date, locale) {\n return locale.weekdays[date.getDay()];\n },\n // AM, PM\n A: function A(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), false);\n },\n // am, pm\n a: function a(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), true);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n Z: function Z(date) {\n return formatTimezone(getOffset(date), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n ZZ: function ZZ(date) {\n return formatTimezone(getOffset(date));\n },\n // Seconds timestamp: 512969520\n X: function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n x: function x(date) {\n return date.getTime();\n },\n w: function w(date, locale) {\n return getWeek(date, {\n firstDayOfWeek: locale.firstDayOfWeek,\n firstWeekContainsDate: locale.firstWeekContainsDate\n });\n },\n ww: function ww(date, locale) {\n return pad(formatFlags.w(date, locale), 2);\n }\n};\nexport function format(val, str) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var date = toDate(val);\n\n if (!isValidDate(date)) {\n return 'Invalid Date';\n }\n\n var locale = options.locale || defaultLocale;\n return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n if (p1) {\n return p1;\n }\n\n if (typeof formatFlags[match] === 'function') {\n return \"\".concat(formatFlags[match](date, locale));\n }\n\n return match;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n var tokens = Array.isArray(token) ? token : [token];\n var func;\n\n if (typeof callback === 'string') {\n func = function func(input) {\n var value = parseInt(input, 10);\n return _defineProperty({}, callback, value);\n };\n } else {\n func = callback;\n }\n\n tokens.forEach(function (key) {\n parseFlags[key] = [regex, func];\n });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n return function (locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n return new RegExp(array.map(escapeStringRegExp).join('|'));\n };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n return function (input, locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n var index = array.indexOf(input);\n\n if (index < 0) {\n throw new Error('Invalid Word');\n }\n\n return _defineProperty({}, key, index);\n };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n var year = new Date().getFullYear();\n var cent = Math.floor(year / 100);\n var value = parseInt(input, 10);\n value = (value > 68 ? cent - 1 : cent) * 100 + value;\n return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n return {\n isPM: isPM\n };\n});\n\nfunction offsetFromString(str) {\n var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n _ref9 = _slicedToArray(_ref8, 3),\n symbol = _ref9[0],\n hour = _ref9[1],\n minute = _ref9[2];\n\n var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n if (minutes === 0) {\n return 0;\n }\n\n return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n return {\n offset: offsetFromString(input)\n };\n});\naddParseFlag('x', matchSigned, function (input) {\n return {\n date: new Date(parseInt(input, 10))\n };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n return {\n date: new Date(parseFloat(input) * 1000)\n };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n if (hour !== undefined && isPM !== undefined) {\n if (isPM) {\n if (hour < 12) {\n return hour + 12;\n }\n } else if (hour === 12) {\n return 0;\n }\n }\n\n return hour;\n}\n\nfunction getFullInputArray(input) {\n var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n var result = [0, 0, 1, 0, 0, 0, 0];\n var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n var useBackup = true;\n\n for (var i = 0; i < 7; i++) {\n if (input[i] === undefined) {\n result[i] = useBackup ? backupArr[i] : result[i];\n } else {\n result[i] = input[i];\n useBackup = false;\n }\n }\n\n return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n var date;\n\n if (y < 100 && y >= 0) {\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate() {\n var date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var y = args[0];\n\n if (y < 100 && y >= 0) {\n args[0] += 400;\n date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(Date, args));\n }\n\n return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n var tokens = format.match(formattingTokens);\n\n if (!tokens) {\n throw new Error();\n }\n\n var length = tokens.length;\n var mark = {};\n\n for (var i = 0; i < length; i += 1) {\n var token = tokens[i];\n var parseTo = parseFlags[token];\n\n if (!parseTo) {\n var word = token.replace(/^\\[|\\]$/g, '');\n\n if (dateString.indexOf(word) === 0) {\n dateString = dateString.substr(word.length);\n } else {\n throw new Error('not match');\n }\n } else {\n var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n var parser = parseTo[1];\n var value = (regex.exec(dateString) || [])[0];\n var obj = parser(value, locale);\n mark = _objectSpread({}, mark, {}, obj);\n dateString = dateString.replace(value, '');\n }\n }\n\n return mark;\n}\n\nexport function parse(str, format) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n var _options$locale = options.locale,\n _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n _options$backupDate = options.backupDate,\n backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n var parseResult = makeParser(str, format, _locale);\n var year = parseResult.year,\n month = parseResult.month,\n day = parseResult.day,\n hour = parseResult.hour,\n minute = parseResult.minute,\n second = parseResult.second,\n millisecond = parseResult.millisecond,\n isPM = parseResult.isPM,\n date = parseResult.date,\n offset = parseResult.offset,\n weekday = parseResult.weekday,\n week = parseResult.week;\n\n if (date) {\n return date;\n }\n\n var inputArray = [year, month, day, hour, minute, second, millisecond];\n inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n if (week !== undefined && month === undefined && day === undefined) {\n // new Date(year, 3) make sure in current year\n var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n firstDayOfWeek: _locale.firstDayOfWeek,\n firstWeekContainsDate: _locale.firstWeekContainsDate\n });\n return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n }\n\n var parsedDate;\n var result = getFullInputArray(inputArray, backupDate);\n\n if (offset !== undefined) {\n result[6] += offset * 60 * 1000;\n parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n } else {\n parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n } // check weekday\n\n\n if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n return new Date(NaN);\n }\n\n return parsedDate;\n } catch (e) {\n return new Date(NaN);\n }\n}","import { getWeek, format, parse } from 'date-format-parse';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _extends$1() {\n return _extends$1 = Object.assign || function (a) {\n for (var b, c = 1; c < arguments.length; c++) {\n for (var d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && (a[d] = b[d]);\n }\n }\n\n return a;\n }, _extends$1.apply(this, arguments);\n}\n\nvar normalMerge = [\"attrs\", \"props\", \"domProps\"],\n toArrayMerge = [\"class\", \"style\", \"directives\"],\n functionalMerge = [\"on\", \"nativeOn\"],\n mergeJsxProps = function mergeJsxProps(a) {\n return a.reduce(function (c, a) {\n for (var b in a) {\n if (!c[b]) c[b] = a[b];else if (-1 !== normalMerge.indexOf(b)) c[b] = _extends$1({}, c[b], a[b]);else if (-1 !== toArrayMerge.indexOf(b)) {\n var d = c[b] instanceof Array ? c[b] : [c[b]],\n e = a[b] instanceof Array ? a[b] : [a[b]];\n c[b] = d.concat(e);\n } else if (-1 !== functionalMerge.indexOf(b)) {\n for (var f in a[b]) {\n if (c[b][f]) {\n var g = c[b][f] instanceof Array ? c[b][f] : [c[b][f]],\n h = a[b][f] instanceof Array ? a[b][f] : [a[b][f]];\n c[b][f] = g.concat(h);\n } else c[b][f] = a[b][f];\n }\n } else if (\"hook\" == b) for (var i in a[b]) {\n c[b][i] = c[b][i] ? mergeFn(c[b][i], a[b][i]) : a[b][i];\n } else c[b] = a[b];\n }\n\n return c;\n }, {});\n},\n mergeFn = function mergeFn(a, b) {\n return function () {\n a && a.apply(this, arguments), b && b.apply(this, arguments);\n };\n};\n\nvar helper = mergeJsxProps;\n\n// new Date(10, 0, 1) The year from 0 to 99 will be incremented by 1900 automatically.\nfunction createDate(y) {\n var M = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var d = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var h = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var m = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var s = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n var ms = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var date = new Date(y, M, d, h, m, s, ms);\n\n if (y < 100 && y >= 0) {\n date.setFullYear(y);\n }\n\n return date;\n}\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date);\n}\nfunction isValidRangeDate(date) {\n return Array.isArray(date) && date.length === 2 && date.every(isValidDate) && date[0] <= date[1];\n}\nfunction isValidDates(dates) {\n return Array.isArray(dates) && dates.every(isValidDate);\n}\nfunction getValidDate(value) {\n var date = new Date(value);\n\n if (isValidDate(date)) {\n return date;\n }\n\n for (var _len = arguments.length, backup = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n backup[_key - 1] = arguments[_key];\n }\n\n if (backup.length) {\n return getValidDate.apply(void 0, backup);\n }\n\n return new Date();\n}\nfunction startOfYear(value) {\n var date = new Date(value);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(value) {\n var date = new Date(value);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfDay(value) {\n var date = new Date(value);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getCalendar(_ref) {\n var firstDayOfWeek = _ref.firstDayOfWeek,\n year = _ref.year,\n month = _ref.month;\n var arr = []; // change to the last day of the last month\n\n var calendar = createDate(year, month, 0);\n var lastDayInLastMonth = calendar.getDate(); // getDay() 0 is Sunday, 1 is Monday\n\n var firstDayInLastMonth = lastDayInLastMonth - (calendar.getDay() + 7 - firstDayOfWeek) % 7;\n\n for (var i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n arr.push(createDate(year, month, i - lastDayInLastMonth));\n } // change to the last day of the current month\n\n\n calendar.setMonth(month + 1, 0);\n var lastDayInCurrentMonth = calendar.getDate();\n\n for (var _i = 1; _i <= lastDayInCurrentMonth; _i++) {\n arr.push(createDate(year, month, _i));\n }\n\n var lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n var nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n\n for (var _i2 = 1; _i2 <= nextMonthLength; _i2++) {\n arr.push(createDate(year, month, lastDayInCurrentMonth + _i2));\n }\n\n return arr;\n}\nfunction setMonth(dirtyDate, dirtyMonth) {\n var date = new Date(dirtyDate);\n var month = typeof dirtyMonth === 'function' ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n var year = date.getFullYear();\n var daysInMonth = createDate(year, month + 1, 0).getDate();\n var day = date.getDate();\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\nfunction setYear(dirtyDate, dirtyYear) {\n var date = new Date(dirtyDate);\n var year = typeof dirtyYear === 'function' ? dirtyYear(date.getFullYear()) : dirtyYear;\n date.setFullYear(year);\n return date;\n}\nfunction assignTime(target, source) {\n var date = new Date(target);\n var time = new Date(source);\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n return date;\n}\n\n/**\n * chunk the array\n * @param {Array} arr\n * @param {Number} size\n */\nfunction chunk(arr, size) {\n if (!Array.isArray(arr)) {\n return [];\n }\n\n var result = [];\n var len = arr.length;\n var i = 0;\n size = size || len;\n\n while (i < len) {\n result.push(arr.slice(i, i += size));\n }\n\n return result;\n}\n/**\n * isObject\n * @param {*} obj\n * @returns {Boolean}\n */\n\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n/**\n * pick object\n * @param {Object} obj\n * @param {Array|String} props\n */\n\nfunction pick(obj, props) {\n if (!isObject(obj)) return {};\n\n if (!Array.isArray(props)) {\n props = [props];\n }\n\n var res = {};\n props.forEach(function (prop) {\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n });\n return res;\n}\n/**\n * deep merge two object without merging array\n * @param {object} target\n * @param {object} source\n */\n\nfunction mergeDeep(target, source) {\n if (!isObject(target)) {\n return {};\n }\n\n var result = target;\n\n if (isObject(source)) {\n Object.keys(source).forEach(function (key) {\n var value = source[key];\n\n if (isObject(value) && isObject(target[key])) {\n value = mergeDeep(target[key], value);\n }\n\n result = _objectSpread2({}, result, _defineProperty({}, key, value));\n });\n }\n\n return result;\n}\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar en = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nvar _default = locale;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n});\n\nvar en$1 = unwrapExports(en);\n\nvar lang = {\n formatLocale: en$1,\n yearFormat: 'YYYY',\n monthFormat: 'MMM',\n monthBeforeYear: true\n};\n\nvar defaultLocale = 'en';\nvar locales = {};\nlocales[defaultLocale] = lang;\nfunction locale(name, object, isLocal) {\n if (typeof name !== 'string') return locales[defaultLocale];\n var l = defaultLocale;\n\n if (locales[name]) {\n l = name;\n }\n\n if (object) {\n locales[name] = object;\n l = name;\n }\n\n if (!isLocal) {\n defaultLocale = l;\n }\n\n return locales[name] || locales[defaultLocale];\n}\n/**\n * get locale object\n * @param {string} name lang\n */\n\nfunction getLocale(name) {\n return locale(name, null, true);\n}\n\n/* istanbul ignore file */\nfunction rafThrottle(fn) {\n var isRunning = false;\n return function fnBinfRaf() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isRunning) return;\n isRunning = true;\n requestAnimationFrame(function () {\n isRunning = false;\n fn.apply(_this, args);\n });\n };\n}\n\n/**\n * get the hidden element width, height\n * @param {HTMLElement} element dom\n */\nfunction getPopupElementSize(element) {\n var originalDisplay = element.style.display;\n var originalVisibility = element.style.visibility;\n element.style.display = 'block';\n element.style.visibility = 'hidden';\n var styles = window.getComputedStyle(element);\n var width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n var height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n element.style.display = originalDisplay;\n element.style.visibility = originalVisibility;\n return {\n width: width,\n height: height\n };\n}\n/**\n * get the popup position\n * @param {HTMLElement} el relative element\n * @param {Number} targetWidth target element's width\n * @param {Number} targetHeight target element's height\n * @param {Boolean} fixed\n */\n\nfunction getRelativePosition(el, targetWidth, targetHeight, fixed) {\n var left = 0;\n var top = 0;\n var offsetX = 0;\n var offsetY = 0;\n var relativeRect = el.getBoundingClientRect();\n var dw = document.documentElement.clientWidth;\n var dh = document.documentElement.clientHeight;\n\n if (fixed) {\n offsetX = window.pageXOffset + relativeRect.left;\n offsetY = window.pageYOffset + relativeRect.top;\n }\n\n if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n left = offsetX - relativeRect.left + 1;\n } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n left = offsetX;\n } else {\n left = offsetX + relativeRect.width - targetWidth;\n }\n\n if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n top = offsetY + dh - relativeRect.top - targetHeight;\n } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n top = offsetY + relativeRect.height;\n } else {\n top = offsetY - targetHeight;\n }\n\n return {\n left: \"\".concat(left, \"px\"),\n top: \"\".concat(top, \"px\")\n };\n}\nfunction getScrollParent(node) {\n var until = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;\n\n if (!node || node === until) {\n return null;\n }\n\n var style = function style(value, prop) {\n return getComputedStyle(value, null).getPropertyValue(prop);\n };\n\n var regex = /(auto|scroll)/;\n var scroll = regex.test(style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x'));\n return scroll ? node : getScrollParent(node.parentNode, until);\n}\n\n//\nvar script = {\n name: 'Popup',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n visible: {\n type: Boolean,\n default: false\n },\n appendToBody: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n top: '',\n left: ''\n };\n },\n watch: {\n visible: {\n immediate: true,\n handler: function handler(val) {\n var _this = this;\n\n this.$nextTick(function () {\n if (val) {\n _this.displayPopup();\n }\n });\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.appendToBody) {\n document.body.appendChild(this.$el);\n }\n\n this._clickoutEvent = 'ontouchend' in document ? 'touchstart' : 'mousedown';\n document.addEventListener(this._clickoutEvent, this.handleClickOutside); // change the popup position when resize or scroll\n\n var relativeElement = this.$parent.$el;\n this._displayPopup = rafThrottle(function () {\n return _this2.displayPopup();\n });\n this._scrollParent = getScrollParent(relativeElement) || window;\n\n this._scrollParent.addEventListener('scroll', this._displayPopup);\n\n window.addEventListener('resize', this._displayPopup);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.appendToBody && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n\n document.removeEventListener(this._clickoutEvent, this.handleClickOutside);\n\n this._scrollParent.removeEventListener('scroll', this._displayPopup);\n\n window.removeEventListener('resize', this._displayPopup);\n },\n methods: {\n handleClickOutside: function handleClickOutside(evt) {\n if (!this.visible) return;\n var target = evt.target;\n var el = this.$el;\n\n if (el && !el.contains(target)) {\n this.$emit('clickoutside', evt);\n }\n },\n displayPopup: function displayPopup() {\n if (!this.visible) return;\n var popup = this.$el;\n var relativeElement = this.$parent.$el;\n var appendToBody = this.appendToBody;\n\n if (!this._popupRect) {\n this._popupRect = getPopupElementSize(popup);\n }\n\n var _this$_popupRect = this._popupRect,\n width = _this$_popupRect.width,\n height = _this$_popupRect.height;\n\n var _getRelativePosition = getRelativePosition(relativeElement, width, height, appendToBody),\n left = _getRelativePosition.left,\n top = _getRelativePosition.top;\n\n this.left = left;\n this.top = top;\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function (context) {\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('transition', {\n attrs: {\n \"name\": _vm.prefixClass + \"-zoom-in-down\"\n }\n }, [_vm.visible ? _c('div', {\n class: _vm.prefixClass + \"-datepicker-main \" + _vm.prefixClass + \"-datepicker-popup\",\n style: {\n top: _vm.top,\n left: _vm.left,\n position: 'absolute'\n }\n }, [_vm._t(\"default\")], 2) : _vm._e()]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M940.218182 107.054545h-209.454546V46.545455h-65.163636v60.50909H363.054545V46.545455H297.890909v60.50909H83.781818c-18.618182 0-32.581818 13.963636-32.581818 32.581819v805.236363c0 18.618182 13.963636 32.581818 32.581818 32.581818h861.090909c18.618182 0 32.581818-13.963636 32.581818-32.581818V139.636364c-4.654545-18.618182-18.618182-32.581818-37.236363-32.581819zM297.890909 172.218182V232.727273h65.163636V172.218182h307.2V232.727273h65.163637V172.218182h176.872727v204.8H116.363636V172.218182h181.527273zM116.363636 912.290909V442.181818h795.927273v470.109091H116.363636z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 = normalizeComponent({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, {}, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$2 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 24 24\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M0 0h24v24H0z\",\n \"fill\": \"none\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }\n }), _vm._v(\" \"), _c('path', {\n attrs: {\n \"d\": \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 = normalizeComponent({\n render: __vue_render__$2,\n staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, {}, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\n/* script */\n\n/* template */\nvar __vue_render__$3 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('svg', {\n attrs: {\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 1024 1024\",\n \"width\": \"1em\",\n \"height\": \"1em\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M810.005333 274.005333l-237.994667 237.994667 237.994667 237.994667-60.010667 60.010667-237.994667-237.994667-237.994667 237.994667-60.010667-60.010667 237.994667-237.994667-237.994667-237.994667 60.010667-60.010667 237.994667 237.994667 237.994667-237.994667z\"\n }\n })]);\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 = normalizeComponent({\n render: __vue_render__$3,\n staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, {}, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$1 = {\n props: {\n type: String,\n disabled: Boolean\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('button', _vm._g({\n class: [_vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-icon-\" + _vm.type, {\n disabled: _vm.disabled\n }],\n attrs: {\n \"type\": \"button\",\n \"disabled\": _vm.disabled\n }\n }, _vm.$listeners), [_c('i', {\n class: _vm.prefixClass + \"-icon-\" + _vm.type\n })]);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 = normalizeComponent({\n render: __vue_render__$4,\n staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$1, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\n\nvar script$2 = {\n name: 'TableDate',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n getWeek: {\n default: function _default() {\n return getWeek;\n }\n },\n prefixClass: {\n default: 'mx'\n },\n onDateMouseEnter: {\n default: undefined\n },\n onDateMouseLeave: {\n default: undefined\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n getRowClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n firstDayOfWeek: function firstDayOfWeek() {\n return this.getLocale().formatLocale.firstDayOfWeek || 0;\n },\n yearMonth: function yearMonth() {\n var _this$getLocale = this.getLocale(),\n yearFormat = _this$getLocale.yearFormat,\n monthBeforeYear = _this$getLocale.monthBeforeYear,\n _this$getLocale$month = _this$getLocale.monthFormat,\n monthFormat = _this$getLocale$month === void 0 ? 'MMM' : _this$getLocale$month;\n\n var yearLabel = {\n panel: 'year',\n label: this.formatDate(this.calendar, yearFormat)\n };\n var monthLabel = {\n panel: 'month',\n label: this.formatDate(this.calendar, monthFormat)\n };\n return monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel];\n },\n days: function days() {\n var locale = this.getLocale();\n var days = locale.days || locale.formatLocale.weekdaysMin;\n return days.concat(days).slice(this.firstDayOfWeek, this.firstDayOfWeek + 7);\n },\n dates: function dates() {\n var year = this.calendar.getFullYear();\n var month = this.calendar.getMonth();\n var arr = getCalendar({\n firstDayOfWeek: this.firstDayOfWeek,\n year: year,\n month: month\n });\n return chunk(arr, 7);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1);\n break;\n\n case 'last-month':\n date.setMonth(date.getMonth(), 0);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-month':\n date.setMonth(date.getMonth() + 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconLeftClick: function handleIconLeftClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v - 1;\n }), 'last-month');\n },\n handleIconRightClick: function handleIconRightClick() {\n this.$emit('changecalendar', setMonth(this.calendar, function (v) {\n return v + 1;\n }), 'next-month');\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange(panel) {\n this.$emit('changepanel', panel);\n },\n handleMouseEnter: function handleMouseEnter(cell) {\n if (typeof this.onDateMouseEnter === 'function') {\n this.onDateMouseEnter(cell);\n }\n },\n handleMouseLeave: function handleMouseLeave(cell) {\n if (typeof this.onDateMouseLeave === 'function') {\n this.onDateMouseLeave(cell);\n }\n },\n handleCellClick: function handleCellClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var index = target.getAttribute('data-row-col');\n\n if (index) {\n var _index$split$map = index.split(',').map(function (v) {\n return parseInt(v, 10);\n }),\n _index$split$map2 = _slicedToArray(_index$split$map, 2),\n row = _index$split$map2[0],\n col = _index$split$map2[1];\n\n var date = this.dates[row][col];\n this.$emit('select', new Date(date));\n }\n },\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n getCellTitle: function getCellTitle(date) {\n var fmt = this.titleFormat;\n return this.formatDate(date, fmt);\n },\n getWeekNumber: function getWeekNumber(date) {\n return this.getWeek(date, this.getLocale().formatLocale);\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-date\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"left\",\n \"disabled\": _vm.isDisabledArrows('last-month')\n },\n on: {\n \"click\": _vm.handleIconLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"right\",\n \"disabled\": _vm.isDisabledArrows('next-month')\n },\n on: {\n \"click\": _vm.handleIconRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, _vm._l(_vm.yearMonth, function (item) {\n return _c('button', {\n key: item.panel,\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-btn-current-\" + item.panel,\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.handlePanelChange(item.panel);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.label) + \"\\n \")]);\n }), 0)], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-date\"\n }, [_c('thead', [_c('tr', [_vm.showWeekNumber ? _c('th', {\n class: _vm.prefixClass + \"-week-number-header\"\n }) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.days, function (day) {\n return _c('th', {\n key: day\n }, [_vm._v(_vm._s(day))]);\n })], 2)]), _vm._v(\" \"), _c('tbody', {\n on: {\n \"click\": _vm.handleCellClick\n }\n }, _vm._l(_vm.dates, function (row, i) {\n return _c('tr', {\n key: i,\n class: [_vm.prefixClass + \"-date-row\", _vm.getRowClasses(row)]\n }, [_vm.showWeekNumber ? _c('td', {\n class: _vm.prefixClass + \"-week-number\",\n attrs: {\n \"data-row-col\": i + \",0\"\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.getWeekNumber(row[0])) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-row-col\": i + \",\" + j,\n \"title\": _vm.getCellTitle(cell)\n },\n on: {\n \"mouseenter\": function mouseenter($event) {\n return _vm.handleMouseEnter(cell);\n },\n \"mouseleave\": function mouseleave($event) {\n return _vm.handleMouseLeave(cell);\n }\n }\n }, [_c('div', [_vm._v(_vm._s(cell.getDate()))])]);\n })], 2);\n }), 0)])])]);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 = normalizeComponent({\n render: __vue_render__$5,\n staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$2, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n//\nvar script$3 = {\n name: 'TableMonth',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n calendarYear: function calendarYear() {\n return this.calendar.getFullYear();\n },\n months: function months() {\n var locale = this.getLocale();\n var monthsLocale = locale.months || locale.formatLocale.monthsShort;\n var months = monthsLocale.map(function (text, month) {\n return {\n text: text,\n month: month\n };\n });\n return chunk(months, 3);\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-year':\n date.setFullYear(date.getFullYear() - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-year':\n date.setFullYear(date.getFullYear() + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 1;\n }), 'last-year');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 1;\n }), 'next-year');\n },\n handlePanelChange: function handlePanelChange() {\n this.$emit('changepanel', 'year');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var month = target.getAttribute('data-month');\n\n if (month && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(month, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-month\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-year')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handlePanelChange\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.calendarYear) + \"\\n \")])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-month\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.months, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell.month),\n attrs: {\n \"data-month\": cell.month\n }\n }, [_c('div', [_vm._v(_vm._s(cell.text))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 = normalizeComponent({\n render: __vue_render__$6,\n staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$3, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\n//\nvar script$4 = {\n name: 'TableYear',\n components: {\n IconButton: __vue_component__$4\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n calendar: {\n type: Date,\n default: function _default() {\n return new Date();\n }\n },\n getCellClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n getYearPanel: {\n type: Function\n }\n },\n computed: {\n years: function years() {\n var calendar = new Date(this.calendar);\n\n if (typeof this.getYearPanel === 'function') {\n return this.getYearPanel(calendar);\n }\n\n return this.getYears(calendar);\n },\n firstYear: function firstYear() {\n return this.years[0][0];\n },\n lastYear: function lastYear() {\n var last = function last(arr) {\n return arr[arr.length - 1];\n };\n\n return last(last(this.years));\n }\n },\n methods: {\n isDisabledArrows: function isDisabledArrows(type) {\n var date = new Date(this.calendar);\n\n switch (type) {\n case 'last-decade':\n date.setFullYear(this.firstYear - 1, 11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n\n case 'next-decade':\n date.setFullYear(this.lastYear + 1, 0, 1);\n break;\n }\n\n return this.disabledCalendarChanger(date, type);\n },\n getYears: function getYears(calendar) {\n var firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n var years = [];\n\n for (var i = 0; i < 10; i++) {\n years.push(firstYear + i);\n }\n\n return chunk(years, 2);\n },\n handleIconDoubleLeftClick: function handleIconDoubleLeftClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v - 10;\n }), 'last-decade');\n },\n handleIconDoubleRightClick: function handleIconDoubleRightClick() {\n this.$emit('changecalendar', setYear(this.calendar, function (v) {\n return v + 10;\n }), 'next-decade');\n },\n handleClick: function handleClick(evt) {\n var target = evt.target;\n\n if (target.tagName.toUpperCase() === 'DIV') {\n target = target.parentNode;\n }\n\n var year = target.getAttribute('data-year');\n\n if (year && !target.classList.contains('disabled')) {\n this.$emit('select', parseInt(year, 10));\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$7 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-calendar \" + _vm.prefixClass + \"-calendar-panel-year\"\n }, [_c('div', {\n class: _vm.prefixClass + \"-calendar-header\"\n }, [_c('icon-button', {\n attrs: {\n \"type\": \"double-left\",\n \"disabled\": _vm.isDisabledArrows('last-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleLeftClick\n }\n }), _vm._v(\" \"), _c('icon-button', {\n attrs: {\n \"type\": \"double-right\",\n \"disabled\": _vm.isDisabledArrows('next-decade')\n },\n on: {\n \"click\": _vm.handleIconDoubleRightClick\n }\n }), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-header-label\"\n }, [_c('span', [_vm._v(_vm._s(_vm.firstYear))]), _vm._v(\" \"), _c('span', {\n class: _vm.prefixClass + \"-calendar-decade-separator\"\n }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.lastYear))])])], 1), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-calendar-content\"\n }, [_c('table', {\n class: _vm.prefixClass + \"-table \" + _vm.prefixClass + \"-table-year\",\n on: {\n \"click\": _vm.handleClick\n }\n }, _vm._l(_vm.years, function (row, i) {\n return _c('tr', {\n key: i\n }, _vm._l(row, function (cell, j) {\n return _c('td', {\n key: j,\n staticClass: \"cell\",\n class: _vm.getCellClasses(cell),\n attrs: {\n \"data-year\": cell\n }\n }, [_c('div', [_vm._v(_vm._s(cell))])]);\n }), 0);\n }), 0)])]);\n};\n\nvar __vue_staticRenderFns__$7 = [];\n/* style */\n\nvar __vue_inject_styles__$7 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$7 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$7 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$7 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$7 = normalizeComponent({\n render: __vue_render__$7,\n staticRenderFns: __vue_staticRenderFns__$7\n}, __vue_inject_styles__$7, __vue_script__$4, __vue_scope_id__$7, __vue_is_functional_template__$7, __vue_module_identifier__$7, false, undefined, undefined, undefined);\n\nvar CalendarPanel = {\n name: 'CalendarPanel',\n inject: {\n prefixClass: {\n default: 'mx'\n },\n dispatchDatePicker: {\n default: function _default() {\n return function () {};\n }\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n defaultPanel: {\n type: String\n },\n disabledCalendarChanger: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n disabledDate: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n type: {\n type: String,\n default: 'date'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n showWeekNumber: {\n type: Boolean,\n default: undefined\n },\n getYearPanel: {\n type: Function\n },\n titleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n calendar: Date,\n // update date when select year or month\n partialUpdate: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n var panels = ['date', 'month', 'year'];\n var index = Math.max(panels.indexOf(this.type), panels.indexOf(this.defaultPanel));\n var panel = index !== -1 ? panels[index] : 'date';\n return {\n panel: panel,\n innerCalendar: new Date()\n };\n },\n computed: {\n innerValue: function innerValue() {\n var value = Array.isArray(this.value) ? this.value : [this.value];\n var map = {\n year: startOfYear,\n month: startOfMonth,\n date: startOfDay\n };\n var start = map[this.type] || map.date;\n return value.filter(isValidDate).map(function (v) {\n return start(v);\n });\n },\n calendarYear: function calendarYear() {\n return this.innerCalendar.getFullYear();\n },\n calendarMonth: function calendarMonth() {\n return this.innerCalendar.getMonth();\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: 'initCalendar'\n },\n calendar: {\n handler: 'initCalendar'\n },\n defaultValue: {\n handler: 'initCalendar'\n }\n },\n methods: {\n initCalendar: function initCalendar() {\n var calendarDate = this.calendar;\n\n if (!isValidDate(calendarDate)) {\n var length = this.innerValue.length;\n calendarDate = getValidDate(length > 0 ? this.innerValue[length - 1] : this.defaultValue);\n }\n\n this.innerCalendar = startOfMonth(calendarDate);\n },\n isDisabled: function isDisabled(date) {\n return this.disabledDate(new Date(date), this.innerValue);\n },\n emitDate: function emitDate(date, type) {\n if (!this.isDisabled(date)) {\n this.$emit('select', date, type, this.innerValue); // someone need get the first selected date to set range value. (#429)\n\n this.dispatchDatePicker('pick', date, type);\n }\n },\n handleCalendarChange: function handleCalendarChange(calendar, type) {\n var oldCalendar = new Date(this.innerCalendar);\n this.innerCalendar = calendar;\n this.$emit('update:calendar', calendar);\n this.dispatchDatePicker('calendar-change', calendar, oldCalendar, type);\n },\n handelPanelChange: function handelPanelChange(panel) {\n var oldPanel = this.panel;\n this.panel = panel;\n this.dispatchDatePicker('panel-change', panel, oldPanel);\n },\n handleSelectYear: function handleSelectYear(year) {\n if (this.type === 'year') {\n var date = this.getYearCellDate(year);\n this.emitDate(date, 'year');\n } else {\n this.handleCalendarChange(createDate(year, this.calendarMonth), 'year');\n this.handelPanelChange('month');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date = new Date(this.innerValue[0]);\n\n _date.setFullYear(year);\n\n this.emitDate(_date, 'year');\n }\n }\n },\n handleSelectMonth: function handleSelectMonth(month) {\n if (this.type === 'month') {\n var date = this.getMonthCellDate(month);\n this.emitDate(date, 'month');\n } else {\n this.handleCalendarChange(createDate(this.calendarYear, month), 'month');\n this.handelPanelChange('date');\n\n if (this.partialUpdate && this.innerValue.length === 1) {\n var _date2 = new Date(this.innerValue[0]);\n\n _date2.setFullYear(this.calendarYear);\n\n this.emitDate(setMonth(_date2, month), 'month');\n }\n }\n },\n handleSelectDate: function handleSelectDate(date) {\n this.emitDate(date, this.type === 'week' ? 'week' : 'date');\n },\n getMonthCellDate: function getMonthCellDate(month) {\n return createDate(this.calendarYear, month);\n },\n getYearCellDate: function getYearCellDate(year) {\n return createDate(year, 0);\n },\n getDateClasses: function getDateClasses(cellDate) {\n var notCurrentMonth = cellDate.getMonth() !== this.calendarMonth;\n var classes = [];\n\n if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n classes.push('today');\n }\n\n if (notCurrentMonth) {\n classes.push('not-current-month');\n }\n\n var state = this.getStateClass(cellDate);\n\n if (!(state === 'active' && notCurrentMonth)) {\n classes.push(state);\n }\n\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getMonthClasses: function getMonthClasses(month) {\n var classes = [];\n\n if (this.type !== 'month') {\n if (this.calendarMonth === month) {\n classes.push('active');\n }\n\n var _cellDate = this.getMonthCellDate(month);\n\n if (this.disabledCalendarChanger(_cellDate, 'month')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getMonthCellDate(month);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getYearClasses: function getYearClasses(year) {\n var classes = [];\n\n if (this.type !== 'year') {\n if (this.calendarYear === year) {\n classes.push('active');\n }\n\n var _cellDate2 = this.getYearCellDate(year);\n\n if (this.disabledCalendarChanger(_cellDate2, 'year')) {\n classes.push('disabled');\n }\n\n return classes;\n }\n\n var cellDate = this.getYearCellDate(year);\n classes.push(this.getStateClass(cellDate));\n return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n },\n getStateClass: function getStateClass(cellDate) {\n if (this.isDisabled(cellDate)) {\n return 'disabled';\n }\n\n if (this.innerValue.some(function (v) {\n return v.getTime() === cellDate.getTime();\n })) {\n return 'active';\n }\n\n return '';\n },\n getWeekState: function getWeekState(row) {\n if (this.type !== 'week') return '';\n var start = row[0].getTime();\n var end = row[6].getTime();\n var active = this.innerValue.some(function (v) {\n var time = v.getTime();\n return time >= start && time <= end;\n });\n return active ? \"\".concat(this.prefixClass, \"-active-week\") : '';\n }\n },\n render: function render() {\n var h = arguments[0];\n var panel = this.panel,\n innerCalendar = this.innerCalendar;\n\n if (panel === 'year') {\n return h(__vue_component__$7, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getYearClasses,\n \"getYearPanel\": this.getYearPanel\n },\n \"on\": {\n \"select\": this.handleSelectYear,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n if (panel === 'month') {\n return h(__vue_component__$6, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getMonthClasses\n },\n \"on\": {\n \"select\": this.handleSelectMonth,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n\n return h(__vue_component__$5, {\n \"attrs\": {\n \"disabledCalendarChanger\": this.disabledCalendarChanger,\n \"calendar\": innerCalendar,\n \"getCellClasses\": this.getDateClasses,\n \"getRowClasses\": this.getWeekState,\n \"titleFormat\": this.titleFormat,\n \"showWeekNumber\": typeof this.showWeekNumber === 'boolean' ? this.showWeekNumber : this.type === 'week'\n },\n \"class\": _defineProperty({}, \"\".concat(this.prefixClass, \"-calendar-week-mode\"), this.type === 'week'),\n \"on\": {\n \"select\": this.handleSelectDate,\n \"changepanel\": this.handelPanelChange,\n \"changecalendar\": this.handleCalendarChange\n }\n });\n }\n};\n\nvar CalendarRange = {\n name: 'CalendarRange',\n components: {\n CalendarPanel: CalendarPanel\n },\n provide: function provide() {\n return {\n onDateMouseEnter: this.onDateMouseEnter,\n onDateMouseLeave: this.onDateMouseLeave\n };\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, CalendarPanel.props),\n data: function data() {\n return {\n innerValue: [],\n calendars: [],\n hoveredValue: null\n };\n },\n computed: {\n // Minimum difference between start and end calendars\n calendarMinDiff: function calendarMinDiff() {\n var map = {\n date: 1,\n // type:date min 1 month\n month: 1 * 12,\n // type:month min 1 year\n year: 10 * 12 // type:year min 10 year\n\n };\n return map[this.type] || map.date;\n },\n calendarMaxDiff: function calendarMaxDiff() {\n return Infinity;\n },\n defaultValues: function defaultValues() {\n return Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n var _this = this;\n\n this.innerValue = isValidRangeDate(this.value) ? this.value : [new Date(NaN), new Date(NaN)];\n var calendars = this.innerValue.map(function (v, i) {\n return startOfMonth(getValidDate(v, _this.defaultValues[i]));\n });\n this.updateCalendars(calendars);\n }\n }\n },\n methods: {\n handleSelect: function handleSelect(date, type) {\n var _this$innerValue = _slicedToArray(this.innerValue, 2),\n startValue = _this$innerValue[0],\n endValue = _this$innerValue[1];\n\n if (isValidDate(startValue) && !isValidDate(endValue)) {\n if (startValue.getTime() > date.getTime()) {\n this.innerValue = [date, startValue];\n } else {\n this.innerValue = [startValue, date];\n }\n\n this.emitDate(this.innerValue, type);\n } else {\n this.innerValue = [date, new Date(NaN)];\n }\n },\n onDateMouseEnter: function onDateMouseEnter(cell) {\n this.hoveredValue = cell;\n },\n onDateMouseLeave: function onDateMouseLeave() {\n this.hoveredValue = null;\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n updateStartCalendar: function updateStartCalendar(value) {\n this.updateCalendars([value, this.calendars[1]], 1);\n },\n updateEndCalendar: function updateEndCalendar(value) {\n this.updateCalendars([this.calendars[0], value], 0);\n },\n updateCalendars: function updateCalendars(calendars) {\n var adjustIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var gap = this.getCalendarGap(calendars);\n\n if (gap) {\n var calendar = new Date(calendars[adjustIndex]);\n calendar.setMonth(calendar.getMonth() + (adjustIndex === 0 ? -gap : gap));\n calendars[adjustIndex] = calendar;\n }\n\n this.calendars = calendars;\n },\n getCalendarGap: function getCalendarGap(calendars) {\n var _calendars = _slicedToArray(calendars, 2),\n calendarLeft = _calendars[0],\n calendarRight = _calendars[1];\n\n var yearDiff = calendarRight.getFullYear() - calendarLeft.getFullYear();\n var monthDiff = calendarRight.getMonth() - calendarLeft.getMonth();\n var diff = yearDiff * 12 + monthDiff;\n var min = this.calendarMinDiff;\n var max = this.calendarMaxDiff;\n\n if (diff < min) {\n return min - diff;\n }\n\n if (diff > max) {\n return max - diff;\n }\n\n return 0;\n },\n getRangeClasses: function getRangeClasses(cellDate, currentDates, classnames) {\n var classes = [].concat(this.getClasses(cellDate, currentDates, classnames));\n if (/disabled|active/.test(classnames)) return classes;\n\n var inRange = function inRange(data, range) {\n var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {\n return v.getTime();\n };\n var value = fn(data);\n\n var _range$map = range.map(fn),\n _range$map2 = _slicedToArray(_range$map, 2),\n min = _range$map2[0],\n max = _range$map2[1];\n\n if (min > max) {\n var _ref = [max, min];\n min = _ref[0];\n max = _ref[1];\n }\n\n return value > min && value < max;\n };\n\n if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n return classes.concat('in-range');\n }\n\n if (currentDates.length === 1 && this.hoveredValue && inRange(cellDate, [currentDates[0], this.hoveredValue])) {\n return classes.concat('hover-in-range');\n }\n\n return classes;\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var calendarRange = this.calendars.map(function (calendar, index) {\n var props = _objectSpread2({}, _this2.$props, {\n calendar: calendar,\n value: _this2.innerValue,\n defaultValue: _this2.defaultValues[index],\n getClasses: _this2.getRangeClasses,\n // don't update when range is true\n partialUpdate: false\n });\n\n var on = {\n select: _this2.handleSelect,\n 'update:calendar': index === 0 ? _this2.updateStartCalendar : _this2.updateEndCalendar\n };\n return h(\"calendar-panel\", {\n \"props\": _objectSpread2({}, props),\n \"on\": _objectSpread2({}, on)\n });\n });\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [calendarRange]);\n }\n};\n\nvar scrollBarWidth;\nfunction getScrollbarWidth () {\n if (typeof window === 'undefined') return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n var outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return scrollBarWidth;\n}\n\n//\nvar script$5 = {\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n data: function data() {\n return {\n scrollbarWidth: 0,\n thumbTop: '',\n thumbHeight: ''\n };\n },\n created: function created() {\n this.scrollbarWidth = getScrollbarWidth();\n document.addEventListener('mouseup', this.handleDragend);\n },\n beforeDestroy: function beforeDestroy() {\n document.addEventListener('mouseup', this.handleDragend);\n },\n mounted: function mounted() {\n this.$nextTick(this.getThumbSize);\n },\n methods: {\n getThumbSize: function getThumbSize() {\n var wrap = this.$refs.wrap;\n if (!wrap) return;\n var heightPercentage = wrap.clientHeight * 100 / wrap.scrollHeight;\n this.thumbHeight = heightPercentage < 100 ? \"\".concat(heightPercentage, \"%\") : '';\n },\n handleScroll: function handleScroll(evt) {\n var el = evt.currentTarget;\n var scrollHeight = el.scrollHeight,\n scrollTop = el.scrollTop;\n this.thumbTop = \"\".concat(scrollTop * 100 / scrollHeight, \"%\");\n },\n handleDragstart: function handleDragstart(evt) {\n evt.stopImmediatePropagation();\n this._draggable = true;\n var offsetTop = this.$refs.thumb.offsetTop;\n this._prevY = evt.clientY - offsetTop;\n document.addEventListener('mousemove', this.handleDraging);\n },\n handleDraging: function handleDraging(evt) {\n if (!this._draggable) return;\n var clientY = evt.clientY;\n var wrap = this.$refs.wrap;\n var scrollHeight = wrap.scrollHeight,\n clientHeight = wrap.clientHeight;\n var offsetY = clientY - this._prevY;\n var top = offsetY * scrollHeight / clientHeight;\n wrap.scrollTop = top;\n },\n handleDragend: function handleDragend() {\n if (this._draggable) {\n this._draggable = false;\n document.removeEventListener('mousemove', this.handleDraging);\n }\n }\n }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$8 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-scrollbar\",\n style: {\n position: 'relative',\n overflow: 'hidden'\n }\n }, [_c('div', {\n ref: \"wrap\",\n class: _vm.prefixClass + \"-scrollbar-wrap\",\n style: {\n marginRight: \"-\" + _vm.scrollbarWidth + \"px\"\n },\n on: {\n \"scroll\": _vm.handleScroll\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-scrollbar-track\"\n }, [_c('div', {\n ref: \"thumb\",\n class: _vm.prefixClass + \"-scrollbar-thumb\",\n style: {\n height: _vm.thumbHeight,\n top: _vm.thumbTop\n },\n on: {\n \"mousedown\": _vm.handleDragstart\n }\n })])]);\n};\n\nvar __vue_staticRenderFns__$8 = [];\n/* style */\n\nvar __vue_inject_styles__$8 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$8 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$8 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$8 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$8 = normalizeComponent({\n render: __vue_render__$8,\n staticRenderFns: __vue_staticRenderFns__$8\n}, __vue_inject_styles__$8, __vue_script__$5, __vue_scope_id__$8, __vue_is_functional_template__$8, __vue_module_identifier__$8, false, undefined, undefined, undefined);\n\n//\n\nvar padNumber = function padNumber(value) {\n value = parseInt(value, 10);\n return value < 10 ? \"0\".concat(value) : \"\".concat(value);\n};\n\nvar generateOptions = function generateOptions(length, step, options) {\n if (Array.isArray(options)) {\n return options.filter(function (v) {\n return v >= 0 && v < length;\n });\n }\n\n if (step <= 0) {\n step = 1;\n }\n\n var arr = [];\n\n for (var i = 0; i < length; i += step) {\n arr.push(i);\n }\n\n return arr;\n};\n\nvar scrollTo = function scrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n // jump to target if duration zero\n if (duration <= 0) {\n requestAnimationFrame(function () {\n element.scrollTop = to;\n });\n return;\n }\n\n var difference = to - element.scrollTop;\n var tick = difference / duration * 10;\n requestAnimationFrame(function () {\n var scrollTop = element.scrollTop + tick;\n\n if (scrollTop >= to) {\n element.scrollTop = to;\n return;\n }\n\n element.scrollTop = scrollTop;\n scrollTo(element, to, duration - 10);\n });\n};\n\nvar script$6 = {\n name: 'ListColumns',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n scrollDuration: {\n type: Number,\n default: 100\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n showHour: {\n type: Boolean,\n default: true\n },\n showMinute: {\n type: Boolean,\n default: true\n },\n showSecond: {\n type: Boolean,\n default: true\n },\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n use12h: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n columns: function columns() {\n var cols = [];\n if (this.showHour) cols.push({\n type: 'hour',\n list: this.getHoursList()\n });\n if (this.showMinute) cols.push({\n type: 'minute',\n list: this.getMinutesList()\n });\n if (this.showSecond) cols.push({\n type: 'second',\n list: this.getSecondsList()\n });\n if (this.use12h) cols.push({\n type: 'ampm',\n list: this.getAMPMList()\n });\n return cols.filter(function (v) {\n return v.list.length > 0;\n });\n }\n },\n watch: {\n date: {\n handler: function handler() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.scrollToSelected(_this.scrollDuration);\n });\n }\n }\n },\n mounted: function mounted() {\n this.scrollToSelected(0);\n },\n methods: {\n getHoursList: function getHoursList() {\n var _this2 = this;\n\n return generateOptions(this.use12h ? 12 : 24, this.hourStep, this.hourOptions).map(function (num) {\n var date = new Date(_this2.date);\n var text = padNumber(num);\n\n if (_this2.use12h) {\n if (num === 0) {\n text = '12';\n }\n\n if (date.getHours() >= 12) {\n num += 12;\n }\n }\n\n var value = date.setHours(num);\n return {\n value: value,\n text: text\n };\n });\n },\n getMinutesList: function getMinutesList() {\n var _this3 = this;\n\n return generateOptions(60, this.minuteStep, this.minuteOptions).map(function (num) {\n var value = new Date(_this3.date).setMinutes(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getSecondsList: function getSecondsList() {\n var _this4 = this;\n\n return generateOptions(60, this.secondStep, this.secondOptions).map(function (num) {\n var value = new Date(_this4.date).setSeconds(num);\n return {\n value: value,\n text: padNumber(num)\n };\n });\n },\n getAMPMList: function getAMPMList() {\n var _this5 = this;\n\n return ['AM', 'PM'].map(function (text, i) {\n var date = new Date(_this5.date);\n var value = date.setHours(date.getHours() % 12 + i * 12);\n return {\n text: text,\n value: value\n };\n });\n },\n scrollToSelected: function scrollToSelected(duration) {\n var elements = this.$el.querySelectorAll('.active');\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var scrollElement = getScrollParent(element, this.$el);\n\n if (scrollElement) {\n var to = element.offsetTop;\n scrollTo(scrollElement, to, duration);\n }\n }\n },\n handleSelect: function handleSelect(evt) {\n var target = evt.target,\n currentTarget = evt.currentTarget;\n if (target.tagName.toUpperCase() !== 'LI') return;\n var type = currentTarget.getAttribute('data-type');\n var colIndex = parseInt(currentTarget.getAttribute('data-index'), 10);\n var cellIndex = parseInt(target.getAttribute('data-index'), 10);\n var value = this.columns[colIndex].list[cellIndex].value;\n this.$emit('select', value, type);\n }\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$9 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time-columns\"\n }, _vm._l(_vm.columns, function (col, i) {\n return _c('scrollbar-vertical', {\n key: i,\n class: _vm.prefixClass + \"-time-column\"\n }, [_c('ul', {\n class: _vm.prefixClass + \"-time-list\",\n attrs: {\n \"data-type\": col.type,\n \"data-index\": i\n },\n on: {\n \"click\": _vm.handleSelect\n }\n }, _vm._l(col.list, function (item, j) {\n return _c('li', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-item\", _vm.getClasses(item.value, col.type)],\n attrs: {\n \"data-index\": j\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0)]);\n }), 1);\n};\n\nvar __vue_staticRenderFns__$9 = [];\n/* style */\n\nvar __vue_inject_styles__$9 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$9 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$9 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$9 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$9 = normalizeComponent({\n render: __vue_render__$9,\n staticRenderFns: __vue_staticRenderFns__$9\n}, __vue_inject_styles__$9, __vue_script__$6, __vue_scope_id__$9, __vue_is_functional_template__$9, __vue_module_identifier__$9, false, undefined, undefined, undefined);\n\n//\n\nfunction parseOption() {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var values = time.split(':');\n\n if (values.length >= 2) {\n var hours = parseInt(values[0], 10);\n var minutes = parseInt(values[1], 10);\n return {\n hours: hours,\n minutes: minutes\n };\n }\n\n return null;\n}\n\nvar scrollTo$1 = function scrollTo(element, to) {\n if (element) {\n element.scrollTop = to;\n }\n};\n\nvar script$7 = {\n name: 'ListOptions',\n components: {\n ScrollbarVertical: __vue_component__$8\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n date: Date,\n options: {\n type: [Object, Function],\n default: function _default() {\n return [];\n }\n },\n format: {\n type: String,\n default: 'HH:mm:ss'\n },\n getClasses: {\n type: Function,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n list: function list() {\n var result = [];\n var options = this.options;\n\n if (typeof options === 'function') {\n return options() || [];\n }\n\n var start = parseOption(options.start);\n var end = parseOption(options.end);\n var step = parseOption(options.step);\n var fmt = options.format || this.format;\n\n if (start && end && step) {\n var startMinutes = start.minutes + start.hours * 60;\n var endMinutes = end.minutes + end.hours * 60;\n var stepMinutes = step.minutes + step.hours * 60;\n var len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n\n for (var i = 0; i <= len; i++) {\n var timeMinutes = startMinutes + i * stepMinutes;\n var hours = Math.floor(timeMinutes / 60);\n var minutes = timeMinutes % 60;\n var value = new Date(this.date).setHours(hours, minutes, 0);\n result.push({\n value: value,\n text: this.formatDate(value, fmt)\n });\n }\n }\n\n return result;\n }\n },\n mounted: function mounted() {\n this.scrollToSelected();\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n scrollToSelected: function scrollToSelected() {\n var element = this.$el.querySelector('.active');\n if (!element) return;\n var scrollElement = getScrollParent(element, this.$el);\n if (!scrollElement) return;\n var to = element.offsetTop;\n scrollTo$1(scrollElement, to);\n },\n handleSelect: function handleSelect(value) {\n this.$emit('select', value, 'time');\n }\n }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n/* template */\n\nvar __vue_render__$a = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('scrollbar-vertical', _vm._l(_vm.list, function (item) {\n return _c('div', {\n key: item.value,\n class: [_vm.prefixClass + \"-time-option\", _vm.getClasses(item.value)],\n on: {\n \"click\": function click($event) {\n return _vm.handleSelect(item.value);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(item.text) + \"\\n \")]);\n }), 0);\n};\n\nvar __vue_staticRenderFns__$a = [];\n/* style */\n\nvar __vue_inject_styles__$a = undefined;\n/* scoped */\n\nvar __vue_scope_id__$a = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$a = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$a = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$a = normalizeComponent({\n render: __vue_render__$a,\n staticRenderFns: __vue_staticRenderFns__$a\n}, __vue_inject_styles__$a, __vue_script__$7, __vue_scope_id__$a, __vue_is_functional_template__$a, __vue_module_identifier__$a, false, undefined, undefined, undefined);\n\n//\nvar script$8 = {\n name: 'TimePanel',\n components: {\n ListColumns: __vue_component__$9,\n ListOptions: __vue_component__$a\n },\n inject: {\n getLocale: {\n default: function _default() {\n return getLocale;\n }\n },\n prefixClass: {\n default: 'mx'\n }\n },\n props: {\n value: {},\n defaultValue: {\n default: function _default() {\n var date = new Date();\n date.setHours(0, 0, 0, 0);\n return date;\n }\n },\n format: {\n default: 'HH:mm:ss'\n },\n timeTitleFormat: {\n type: String,\n default: 'YYYY-MM-DD'\n },\n showTimeHeader: {\n type: Boolean,\n default: false\n },\n disabledTime: {\n type: Function,\n default: function _default() {\n return false;\n }\n },\n timePickerOptions: {\n type: [Object, Function],\n default: function _default() {\n return null;\n }\n },\n hourOptions: Array,\n minuteOptions: Array,\n secondOptions: Array,\n hourStep: {\n type: Number,\n default: 1\n },\n minuteStep: {\n type: Number,\n default: 1\n },\n secondStep: {\n type: Number,\n default: 1\n },\n showHour: {\n type: Boolean,\n default: undefined\n },\n showMinute: {\n type: Boolean,\n default: undefined\n },\n showSecond: {\n type: Boolean,\n default: undefined\n },\n use12h: {\n type: Boolean,\n default: undefined\n },\n scrollDuration: {\n type: Number,\n default: 100\n }\n },\n data: function data() {\n return {\n innerValue: getValidDate(this.value, this.defaultValue)\n };\n },\n computed: {\n title: function title() {\n var titleFormat = this.timeTitleFormat;\n var date = new Date(this.innerValue);\n return this.formatDate(date, titleFormat);\n },\n innerForamt: function innerForamt() {\n return typeof this.format === 'string' ? this.format : 'HH:mm:ss';\n },\n ShowHourMinuteSecondAMPM: function ShowHourMinuteSecondAMPM() {\n var _this = this;\n\n var fmt = this.innerForamt;\n var defaultProps = {\n showHour: /[HhKk]/.test(fmt),\n showMinute: /m/.test(fmt),\n showSecond: /s/.test(fmt),\n use12h: /a/i.test(fmt)\n };\n var obj = {};\n Object.keys(defaultProps).forEach(function (key) {\n obj[key] = typeof _this[key] === 'boolean' ? _this[key] : defaultProps[key];\n });\n return obj;\n }\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n this.innerValue = getValidDate(this.value, this.defaultValue);\n }\n }\n },\n methods: {\n formatDate: function formatDate(date, fmt) {\n return format(date, fmt, {\n locale: this.getLocale().formatLocale\n });\n },\n isDisabledTime: function isDisabledTime(value) {\n return this.disabledTime(new Date(value));\n },\n isDisabledHour: function isDisabledHour(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setMinutes(0, 0, 0)) && this.isDisabledTime(value.setMinutes(59, 59, 999));\n },\n isDisabledMinute: function isDisabledMinute(date) {\n var value = new Date(date);\n return this.isDisabledTime(value) && this.isDisabledTime(value.setSeconds(0, 0)) && this.isDisabledTime(value.setSeconds(59, 999));\n },\n isDisabledAMPM: function isDisabledAMPM(date) {\n var value = new Date(date);\n var minHour = value.getHours() < 12 ? 0 : 12;\n var maxHour = minHour + 11;\n return this.isDisabledTime(value) && this.isDisabledTime(value.setHours(minHour, 0, 0, 0)) && this.isDisabledTime(value.setHours(maxHour, 59, 59, 999));\n },\n isDisabled: function isDisabled(date, type) {\n if (type === 'hour') {\n return this.isDisabledHour(date);\n }\n\n if (type === 'minute') {\n return this.isDisabledMinute(date);\n }\n\n if (type === 'ampm') {\n return this.isDisabledAMPM(date);\n }\n\n return this.isDisabledTime(date);\n },\n handleSelect: function handleSelect(value, type) {\n var date = new Date(value);\n\n if (!this.isDisabled(value, type)) {\n this.innerValue = date;\n\n if (!this.isDisabledTime(date)) {\n this.$emit('select', date, type);\n }\n }\n },\n handleClickTitle: function handleClickTitle() {\n this.$emit('clicktitle');\n },\n getClasses: function getClasses(value, type) {\n var cellDate = new Date(value);\n\n if (this.isDisabled(value, type)) {\n return 'disabled';\n }\n\n if (cellDate.getTime() === this.innerValue.getTime()) {\n return 'active';\n }\n\n return '';\n }\n }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n/* template */\n\nvar __vue_render__$b = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n class: _vm.prefixClass + \"-time\"\n }, [_vm.showTimeHeader ? _c('div', {\n class: _vm.prefixClass + \"-time-header\"\n }, [_c('button', {\n class: _vm.prefixClass + \"-btn \" + _vm.prefixClass + \"-btn-text \" + _vm.prefixClass + \"-time-header-title\",\n attrs: {\n \"type\": \"button\"\n },\n on: {\n \"click\": _vm.handleClickTitle\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.title) + \"\\n \")])]) : _vm._e(), _vm._v(\" \"), _c('div', {\n class: _vm.prefixClass + \"-time-content\"\n }, [_vm.timePickerOptions ? _c('list-options', {\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"options\": _vm.timePickerOptions,\n \"format\": _vm.innerForamt\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }) : _c('list-columns', _vm._b({\n attrs: {\n \"date\": _vm.innerValue,\n \"get-classes\": _vm.getClasses,\n \"hour-options\": _vm.hourOptions,\n \"minute-options\": _vm.minuteOptions,\n \"second-options\": _vm.secondOptions,\n \"hour-step\": _vm.hourStep,\n \"minute-step\": _vm.minuteStep,\n \"second-step\": _vm.secondStep,\n \"scroll-duration\": _vm.scrollDuration\n },\n on: {\n \"select\": _vm.handleSelect\n }\n }, 'list-columns', _vm.ShowHourMinuteSecondAMPM, false))], 1)]);\n};\n\nvar __vue_staticRenderFns__$b = [];\n/* style */\n\nvar __vue_inject_styles__$b = undefined;\n/* scoped */\n\nvar __vue_scope_id__$b = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$b = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$b = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$b = normalizeComponent({\n render: __vue_render__$b,\n staticRenderFns: __vue_staticRenderFns__$b\n}, __vue_inject_styles__$b, __vue_script__$8, __vue_scope_id__$b, __vue_is_functional_template__$b, __vue_module_identifier__$b, false, undefined, undefined, undefined);\n\nvar TimeRange = {\n name: 'TimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n props: _objectSpread2({}, __vue_component__$b.props),\n data: function data() {\n return {\n startValue: new Date(NaN),\n endValue: new Date(NaN)\n };\n },\n watch: {\n value: {\n immediate: true,\n handler: function handler() {\n if (isValidRangeDate(this.value)) {\n var _this$value = _slicedToArray(this.value, 2),\n startValue = _this$value[0],\n endValue = _this$value[1];\n\n this.startValue = startValue;\n this.endValue = endValue;\n } else {\n this.startValue = new Date(NaN);\n this.endValue = new Date(NaN);\n }\n }\n }\n },\n methods: {\n emitChange: function emitChange(type, index) {\n var date = [this.startValue, this.endValue];\n this.$emit('select', date, type === 'time' ? 'time-range' : type, index);\n },\n handleSelectStart: function handleSelectStart(date, type) {\n this.startValue = date; // check the NaN\n\n if (!(this.endValue.getTime() >= date.getTime())) {\n this.endValue = date;\n }\n\n this.emitChange(type, 0);\n },\n handleSelectEnd: function handleSelectEnd(date, type) {\n // check the NaN\n this.endValue = date;\n\n if (!(this.startValue.getTime() <= date.getTime())) {\n this.startValue = date;\n }\n\n this.emitChange(type, 1);\n },\n disabledStartTime: function disabledStartTime(date) {\n return this.disabledTime(date, 0);\n },\n disabledEndTime: function disabledEndTime(date) {\n return date.getTime() < this.startValue.getTime() || this.disabledTime(date, 1);\n }\n },\n render: function render() {\n var h = arguments[0];\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-range-wrapper\")\n }, [h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.startValue,\n defaultValue: defaultValues[0],\n disabledTime: this.disabledStartTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectStart\n }))\n }), h(__vue_component__$b, {\n \"props\": _objectSpread2({}, _objectSpread2({}, this.$props, {\n value: this.endValue,\n defaultValue: defaultValues[1],\n disabledTime: this.disabledEndTime\n })),\n \"on\": _objectSpread2({}, _objectSpread2({}, this.$listeners, {\n select: this.handleSelectEnd\n }))\n })]);\n }\n};\n\nvar DatetimePanel = {\n name: 'DatetimePanel',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarPanel.props, {}, __vue_component__$b.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(date, type) {\n this.$emit('select', date, type);\n },\n handleSelect: function handleSelect(date, type) {\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var datetime = assignTime(date, getValidDate(this.value, this.defaultValue));\n\n if (this.disabledTime(new Date(datetime))) {\n // set the time of defalutValue;\n datetime = assignTime(date, this.defaultValue);\n\n if (this.disabledTime(new Date(datetime))) {\n // if disabled don't emit date\n this.currentValue = datetime;\n return;\n }\n }\n\n this.emitDate(datetime, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarPanel.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(__vue_component__$b.props)), {\n showTimeHeader: true,\n value: this.currentValue\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarPanel, helper([{}, calendarProps])), this.timeVisible && h(__vue_component__$b, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar DatetimeRange = {\n name: 'DatetimeRange',\n inject: {\n prefixClass: {\n default: 'mx'\n }\n },\n emits: ['select', 'update:show-time-panel'],\n props: _objectSpread2({}, CalendarRange.props, {}, TimeRange.props, {\n showTimePanel: {\n type: Boolean,\n default: undefined\n }\n }),\n data: function data() {\n return {\n defaultTimeVisible: false,\n currentValue: this.value\n };\n },\n computed: {\n timeVisible: function timeVisible() {\n return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n }\n },\n watch: {\n value: function value(val) {\n this.currentValue = val;\n }\n },\n methods: {\n closeTimePanel: function closeTimePanel() {\n this.defaultTimeVisible = false;\n this.$emit('update:show-time-panel', false);\n },\n openTimePanel: function openTimePanel() {\n this.defaultTimeVisible = true;\n this.$emit('update:show-time-panel', true);\n },\n emitDate: function emitDate(dates, type) {\n this.$emit('select', dates, type);\n },\n handleSelect: function handleSelect(dates, type) {\n var _this = this;\n\n if (type === 'date') {\n this.openTimePanel();\n }\n\n var defaultValues = Array.isArray(this.defaultValue) ? this.defaultValue : [this.defaultValue, this.defaultValue];\n var datetimes = dates.map(function (date, i) {\n var time = isValidRangeDate(_this.value) ? _this.value[i] : defaultValues[i];\n return assignTime(date, time);\n });\n\n if (datetimes[1].getTime() < datetimes[0].getTime()) {\n datetimes = [datetimes[0], datetimes[0]];\n }\n\n if (datetimes.some(this.disabledTime)) {\n datetimes = dates.map(function (date, i) {\n return assignTime(date, defaultValues[i]);\n });\n\n if (datetimes.some(this.disabledTime)) {\n this.currentValue = datetimes;\n return;\n }\n }\n\n this.emitDate(datetimes, type);\n }\n },\n render: function render() {\n var h = arguments[0];\n var calendarProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(CalendarRange.props)), {\n type: 'date',\n value: this.currentValue\n }),\n on: {\n select: this.handleSelect\n }\n };\n var timeProps = {\n props: _objectSpread2({}, pick(this.$props, Object.keys(TimeRange.props)), {\n value: this.currentValue,\n showTimeHeader: true\n }),\n on: {\n select: this.emitDate,\n clicktitle: this.closeTimePanel\n }\n };\n var prefixClass = this.prefixClass;\n return h(\"div\", [h(CalendarRange, helper([{}, calendarProps])), this.timeVisible && h(TimeRange, helper([{\n \"class\": \"\".concat(prefixClass, \"-calendar-time\")\n }, timeProps]))]);\n }\n};\n\nvar componentMap = {\n default: CalendarPanel,\n time: __vue_component__$b,\n datetime: DatetimePanel\n};\nvar componentRangeMap = {\n default: CalendarRange,\n time: TimeRange,\n datetime: DatetimeRange\n};\nvar DatePicker = {\n name: 'DatePicker',\n provide: function provide() {\n var _this = this;\n\n return {\n // make locale reactive\n getLocale: function getLocale() {\n return _this.locale;\n },\n getWeek: this.getWeek,\n prefixClass: this.prefixClass,\n dispatchDatePicker: this.$emit.bind(this)\n };\n },\n props: _objectSpread2({}, DatetimePanel.props, {\n value: {},\n valueType: {\n type: String,\n default: 'date' // date, format, timestamp, or token like 'YYYY-MM-DD'\n\n },\n type: {\n type: String,\n // ['date', 'datetime', 'time', 'year', 'month', 'week']\n default: 'date'\n },\n format: {\n type: String\n },\n formatter: {\n type: Object\n },\n range: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n rangeSeparator: {\n type: String\n },\n lang: {\n type: [String, Object]\n },\n placeholder: {\n type: String,\n default: ''\n },\n editable: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: true\n },\n prefixClass: {\n type: String,\n default: 'mx'\n },\n inputClass: {},\n inputAttr: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n open: {\n type: Boolean,\n default: undefined\n },\n popupClass: {},\n popupStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n inline: {\n type: Boolean,\n default: false\n },\n confirm: {\n type: Boolean,\n default: false\n },\n confirmText: {\n type: String,\n default: 'OK'\n },\n renderInputText: {\n type: Function\n },\n shortcuts: {\n type: Array,\n validator: function validator(value) {\n return Array.isArray(value) && value.every(function (v) {\n return isObject(v) && typeof v.text === 'string' && typeof v.onClick === 'function';\n });\n },\n default: function _default() {\n return [];\n }\n }\n }),\n data: function data() {\n return {\n // cache the innervalue, wait to confirm\n currentValue: null,\n userInput: null,\n defaultOpen: false,\n mouseInInput: false\n };\n },\n computed: {\n popupVisible: function popupVisible() {\n return !this.disabled && (typeof this.open === 'boolean' ? this.open : this.defaultOpen);\n },\n innerRangeSeparator: function innerRangeSeparator() {\n return this.rangeSeparator || (this.multiple ? ',' : ' ~ ');\n },\n innerFormat: function innerFormat() {\n var map = {\n date: 'YYYY-MM-DD',\n datetime: 'YYYY-MM-DD HH:mm:ss',\n year: 'YYYY',\n month: 'YYYY-MM',\n time: 'HH:mm:ss',\n week: 'w'\n };\n return this.format || map[this.type] || map.date;\n },\n innerValue: function innerValue() {\n var value = this.value;\n\n if (this.validMultipleType) {\n value = Array.isArray(value) ? value : [];\n return value.map(this.value2date);\n }\n\n if (this.range) {\n value = Array.isArray(value) ? value.slice(0, 2) : [null, null];\n return value.map(this.value2date);\n }\n\n return this.value2date(value);\n },\n text: function text() {\n var _this2 = this;\n\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n if (typeof this.renderInputText === 'function') {\n return this.renderInputText(this.innerValue);\n }\n\n if (!this.isValidValue(this.innerValue)) {\n return '';\n }\n\n if (Array.isArray(this.innerValue)) {\n return this.innerValue.map(function (v) {\n return _this2.formatDate(v);\n }).join(this.innerRangeSeparator);\n }\n\n return this.formatDate(this.innerValue);\n },\n showClearIcon: function showClearIcon() {\n return !this.disabled && this.clearable && this.text && this.mouseInInput;\n },\n locale: function locale() {\n if (isObject(this.lang)) {\n return mergeDeep(getLocale(), this.lang);\n }\n\n return getLocale(this.lang);\n },\n validMultipleType: function validMultipleType() {\n var types = ['date', 'month', 'year'];\n return this.multiple && !this.range && types.indexOf(this.type) !== -1;\n }\n },\n watch: {\n innerValue: {\n immediate: true,\n handler: function handler(val) {\n this.currentValue = val;\n }\n },\n popupVisible: {\n handler: function handler(val) {\n if (val) {\n this.currentValue = this.innerValue;\n }\n }\n }\n },\n created: function created() {\n if (_typeof(this.format) === 'object') {\n console.warn(\"[vue2-datepicker]: The prop `format` don't support Object any more. You can use the new prop `formatter` to replace it\");\n }\n },\n methods: {\n handleMouseEnter: function handleMouseEnter() {\n this.mouseInInput = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n this.mouseInInput = false;\n },\n handleClickOutSide: function handleClickOutSide(evt) {\n var target = evt.target;\n\n if (!this.$el.contains(target)) {\n this.closePopup();\n }\n },\n getFormatter: function getFormatter(key) {\n return isObject(this.formatter) && this.formatter[key] || isObject(this.format) && this.format[key];\n },\n getWeek: function getWeek$1(date, options) {\n if (typeof this.getFormatter('getWeek') === 'function') {\n return this.getFormatter('getWeek')(date, options);\n }\n\n return getWeek(date, options);\n },\n parseDate: function parseDate(value, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('parse') === 'function') {\n return this.getFormatter('parse')(value, fmt);\n }\n\n var backupDate = new Date();\n return parse(value, fmt, {\n locale: this.locale.formatLocale,\n backupDate: backupDate\n });\n },\n formatDate: function formatDate(date, fmt) {\n fmt = fmt || this.innerFormat;\n\n if (typeof this.getFormatter('stringify') === 'function') {\n return this.getFormatter('stringify')(date, fmt);\n }\n\n return format(date, fmt, {\n locale: this.locale.formatLocale\n });\n },\n // transform the outer value to inner date\n value2date: function value2date(value) {\n switch (this.valueType) {\n case 'date':\n return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n\n case 'timestamp':\n return typeof value === 'number' ? new Date(value) : new Date(NaN);\n\n case 'format':\n return typeof value === 'string' ? this.parseDate(value) : new Date(NaN);\n\n default:\n return typeof value === 'string' ? this.parseDate(value, this.valueType) : new Date(NaN);\n }\n },\n // transform the inner date to outer value\n date2value: function date2value(date) {\n if (!isValidDate(date)) return null;\n\n switch (this.valueType) {\n case 'date':\n return date;\n\n case 'timestamp':\n return date.getTime();\n\n case 'format':\n return this.formatDate(date);\n\n default:\n return this.formatDate(date, this.valueType);\n }\n },\n emitValue: function emitValue(date, type) {\n var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // fix IE11/10 trigger input event when input is focused. (placeholder !== '')\n this.userInput = null;\n var value = Array.isArray(date) ? date.map(this.date2value) : this.date2value(date);\n this.$emit('input', value);\n this.$emit('change', value, type);\n\n if (close) {\n this.closePopup();\n }\n\n return value;\n },\n isValidValue: function isValidValue(value) {\n if (this.validMultipleType) {\n return isValidDates(value);\n }\n\n if (this.range) {\n return isValidRangeDate(value);\n }\n\n return isValidDate(value);\n },\n isValidValueAndNotDisabled: function isValidValueAndNotDisabled(value) {\n if (!this.isValidValue(value)) {\n return false;\n }\n\n var disabledDate = typeof this.disabledDate === 'function' ? this.disabledDate : function () {\n return false;\n };\n var disabledTime = typeof this.disabledTime === 'function' ? this.disabledTime : function () {\n return false;\n };\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return value.every(function (v) {\n return !disabledDate(v) && !disabledTime(v);\n });\n },\n handleMultipleDates: function handleMultipleDates(date, dates) {\n if (this.validMultipleType && dates) {\n var nextDates = dates.filter(function (v) {\n return v.getTime() !== date.getTime();\n });\n\n if (nextDates.length === dates.length) {\n nextDates.push(date);\n }\n\n return nextDates;\n }\n\n return date;\n },\n handleSelectDate: function handleSelectDate(val, type, dates) {\n val = this.handleMultipleDates(val, dates);\n\n if (this.confirm) {\n this.currentValue = val;\n } else {\n this.emitValue(val, type, // this.type === 'datetime', click the time should close popup\n !this.validMultipleType && (type === this.type || type === 'time'));\n }\n },\n clear: function clear() {\n this.emitValue(this.range ? [null, null] : null);\n this.$emit('clear');\n },\n handleClear: function handleClear(evt) {\n evt.stopPropagation();\n this.clear();\n },\n handleConfirmDate: function handleConfirmDate() {\n var value = this.emitValue(this.currentValue);\n this.$emit('confirm', value);\n },\n handleSelectShortcut: function handleSelectShortcut(evt) {\n var index = evt.currentTarget.getAttribute('data-index');\n var item = this.shortcuts[parseInt(index, 10)];\n\n if (isObject(item) && typeof item.onClick === 'function') {\n var date = item.onClick(this);\n\n if (date) {\n this.emitValue(date);\n }\n }\n },\n openPopup: function openPopup(evt) {\n if (this.popupVisible || this.disabled) return;\n this.defaultOpen = true;\n this.$emit('open', evt);\n this.$emit('update:open', true);\n },\n closePopup: function closePopup() {\n if (!this.popupVisible) return;\n this.defaultOpen = false;\n this.$emit('close');\n this.$emit('update:open', false);\n },\n blur: function blur() {\n // when use slot input\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n },\n focus: function focus() {\n if (this.$refs.input) {\n this.$refs.input.focus();\n }\n },\n handleInputChange: function handleInputChange() {\n var _this3 = this;\n\n if (!this.editable || this.userInput === null) return;\n var text = this.userInput.trim();\n this.userInput = null;\n\n if (text === '') {\n this.clear();\n return;\n }\n\n var date;\n\n if (this.validMultipleType) {\n date = text.split(this.innerRangeSeparator).map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else if (this.range) {\n var arr = text.split(this.innerRangeSeparator);\n\n if (arr.length !== 2) {\n // Maybe the separator during the day is the same as the separator for the date\n // eg: 2019-10-09-2020-01-02\n arr = text.split(this.innerRangeSeparator.trim());\n }\n\n date = arr.map(function (v) {\n return _this3.parseDate(v.trim());\n });\n } else {\n date = this.parseDate(text);\n }\n\n if (this.isValidValueAndNotDisabled(date)) {\n this.emitValue(date);\n this.blur();\n } else {\n this.$emit('input-error', text);\n }\n },\n handleInputInput: function handleInputInput(evt) {\n // slot input v-model\n this.userInput = typeof evt === 'string' ? evt : evt.target.value;\n },\n handleInputKeydown: function handleInputKeydown(evt) {\n var keyCode = evt.keyCode; // Tab 9 or Enter 13\n\n if (keyCode === 9) {\n this.closePopup();\n } else if (keyCode === 13) {\n this.handleInputChange();\n }\n },\n handleInputBlur: function handleInputBlur(evt) {\n // tab close\n this.$emit('blur', evt);\n },\n handleInputFocus: function handleInputFocus(evt) {\n this.openPopup(evt);\n this.$emit('focus', evt);\n },\n hasSlot: function hasSlot(name) {\n return !!(this.$slots[name] || this.$scopedSlots[name]);\n },\n renderSlot: function renderSlot(name, fallback, props) {\n var slotFn = this.$scopedSlots[name];\n\n if (slotFn) {\n return slotFn(props) || fallback;\n }\n\n return this.$slots[name] || fallback;\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n\n var props = _objectSpread2({\n name: 'date',\n type: 'text',\n autocomplete: 'off',\n value: this.text,\n class: this.inputClass || \"\".concat(this.prefixClass, \"-input\"),\n readonly: !this.editable,\n disabled: this.disabled,\n placeholder: this.placeholder\n }, this.inputAttr);\n\n var value = props.value,\n className = props.class,\n attrs = _objectWithoutProperties(props, [\"value\", \"class\"]);\n\n var events = {\n keydown: this.handleInputKeydown,\n focus: this.handleInputFocus,\n blur: this.handleInputBlur,\n input: this.handleInputInput,\n change: this.handleInputChange\n };\n var input = this.renderSlot('input', h(\"input\", {\n \"domProps\": {\n \"value\": value\n },\n \"class\": className,\n \"attrs\": _objectSpread2({}, attrs),\n \"on\": _objectSpread2({}, events),\n \"ref\": \"input\"\n }), {\n props: props,\n events: events\n });\n var calendarIcon = this.type === 'time' ? h(__vue_component__$2) : h(__vue_component__$1); // remove touchstart event to avoid opens the popup while scrolling in mobile #469\n\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-input-wrapper\"),\n \"on\": {\n \"mouseenter\": this.handleMouseEnter,\n \"mouseleave\": this.handleMouseLeave,\n \"click\": this.openPopup\n },\n \"ref\": \"inputWrapper\"\n }, [input, this.showClearIcon ? h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-clear\"),\n \"on\": {\n \"click\": this.handleClear\n }\n }, [this.renderSlot('icon-clear', h(__vue_component__$3))]) : h(\"i\", {\n \"class\": \"\".concat(prefixClass, \"-icon-calendar\")\n }, [this.renderSlot('icon-calendar', calendarIcon)])]);\n },\n renderContent: function renderContent() {\n var h = this.$createElement;\n var map = this.range ? componentRangeMap : componentMap;\n var Component = map[this.type] || map.default;\n\n var props = _objectSpread2({}, pick(this.$props, Object.keys(Component.props)), {\n value: this.currentValue\n });\n\n var on = _objectSpread2({}, pick(this.$listeners, Component.emits || []), {\n select: this.handleSelectDate\n });\n\n var content = h(Component, helper([{}, {\n props: props,\n on: on,\n ref: 'picker'\n }]));\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-body\")\n }, [this.renderSlot('content', content, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderSidebar: function renderSidebar() {\n var _this4 = this;\n\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-sidebar\")\n }, [this.renderSlot('sidebar', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.shortcuts.map(function (v, i) {\n return h(\"button\", {\n \"key\": i,\n \"attrs\": {\n \"data-index\": i,\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-btn-text \").concat(prefixClass, \"-btn-shortcut\"),\n \"on\": {\n \"click\": _this4.handleSelectShortcut\n }\n }, [v.text]);\n })]);\n },\n renderHeader: function renderHeader() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": \"\".concat(this.prefixClass, \"-datepicker-header\")\n }, [this.renderSlot('header', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n })]);\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var prefixClass = this.prefixClass;\n return h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-footer\")\n }, [this.renderSlot('footer', null, {\n value: this.currentValue,\n emit: this.handleSelectDate\n }), this.confirm ? h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": \"\".concat(prefixClass, \"-btn \").concat(prefixClass, \"-datepicker-btn-confirm\"),\n \"on\": {\n \"click\": this.handleConfirmDate\n }\n }, [this.confirmText]) : null]);\n }\n },\n render: function render() {\n var _class;\n\n var h = arguments[0];\n var prefixClass = this.prefixClass,\n inline = this.inline,\n disabled = this.disabled;\n var sidedar = this.hasSlot('sidebar') || this.shortcuts.length ? this.renderSidebar() : null;\n var content = h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-content\")\n }, [this.hasSlot('header') ? this.renderHeader() : null, this.renderContent(), this.hasSlot('footer') || this.confirm ? this.renderFooter() : null]);\n return h(\"div\", {\n \"class\": (_class = {}, _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker\"), true), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-range\"), this.range), _defineProperty(_class, \"\".concat(prefixClass, \"-datepicker-inline\"), inline), _defineProperty(_class, \"disabled\", disabled), _class)\n }, [!inline ? this.renderInput() : null, !inline ? h(__vue_component__, {\n \"ref\": \"popup\",\n \"class\": this.popupClass,\n \"style\": this.popupStyle,\n \"attrs\": {\n \"visible\": this.popupVisible,\n \"appendToBody\": this.appendToBody\n },\n \"on\": {\n \"clickoutside\": this.handleClickOutSide\n }\n }, [sidedar, content]) : h(\"div\", {\n \"class\": \"\".concat(prefixClass, \"-datepicker-main\")\n }, [sidedar, content])]);\n }\n};\n\nDatePicker.locale = locale;\n\nDatePicker.install = function install(Vue) {\n Vue.component(DatePicker.name, DatePicker);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n DatePicker.install(window.Vue);\n}\n\n_extends(DatePicker, {\n CalendarPanel: CalendarPanel,\n CalendarRange: CalendarRange,\n TimePanel: __vue_component__$b,\n TimeRange: TimeRange,\n DatetimePanel: DatetimePanel,\n DatetimeRange: DatetimeRange\n});\n\nexport default DatePicker;\n","import { defineComponent, computed } from \"vue\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, v as t46, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t46);\nfunction formatTimezoneId(timezoneId) {\n return timezoneId.slice(timezoneId.indexOf(\"/\") + 1).replaceAll(\"/\", \" - \").replaceAll(\"_\", \" \");\n}\nfunction getTimezones() {\n return Intl.supportedValuesOf(\"timeZone\").filter((tz) => !tz.startsWith(\"Etc/\")).map((timezoneId) => ({\n timezoneId,\n label: formatTimezoneId(timezoneId)\n })).sort((a, b) => a.timezoneId.localeCompare(b.timezoneId));\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcTimezonePicker\",\n props: {\n additionalTimezones: { default: () => [] },\n value: { default: void 0 },\n modelValue: { default: \"floating\" },\n uid: { default: createElementId() }\n },\n emits: [\"input\", \"update:modelValue\", \"update:model-value\"],\n setup(__props) {\n const props = __props;\n const model = useModelMigration(\"value\", \"input\");\n const formattedAdditionalTimezones = computed(() => {\n return props.additionalTimezones.map(({ timezoneId, label }) => ({\n timezoneId,\n label\n }));\n });\n const options = computed(() => {\n const timezones = getTimezones();\n timezones.unshift(...formattedAdditionalTimezones.value);\n return timezones;\n });\n function filterBy(option, label, search) {\n const terms = search.trim().split(/\\s+/);\n const values = Object.values(option);\n return terms.every((term) => {\n return values.some((value) => value.toLowerCase().includes(term.toLowerCase()));\n });\n }\n return { __sfc: true, props, model, formattedAdditionalTimezones, options, filterBy, t, NcSelect };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcSelect, { attrs: { \"aria-label-combobox\": _setup.t(\"Search for time zone\"), \"clearable\": false, \"filter-by\": _setup.filterBy, \"multiple\": false, \"options\": _setup.options, \"placeholder\": _setup.t(\"Type to search time zone\"), \"uid\": _vm.uid, \"reduce\": (option) => option.timezoneId, \"label\": \"label\" }, model: { value: _setup.model, callback: function($$v) {\n _setup.model = $$v;\n }, expression: \"model\" } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTimezonePicker = __component__.exports;\nexport {\n NcTimezonePicker as N\n};\n//# sourceMappingURL=NcTimezonePicker-BfSjyBxq.mjs.map\n","import '../assets/NcDateTimePicker-CD0ZGUBz.css';\nimport { getFirstDay, getDayNamesMin, getDayNamesShort, getDayNames, getMonthNamesShort, getMonthNames } from \"@nextcloud/l10n\";\nimport DatePicker from \"vue2-datepicker\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"../chunks/useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, O as t40, a as t } from \"../chunks/_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"../chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcPopover } from \"../chunks/NcPopover-BaHX3QSG.mjs\";\nimport { N as NcTimezonePicker } from \"../chunks/NcTimezonePicker-BfSjyBxq.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-Df3JYkxQ.mjs\";\nconst _sfc_main$2 = {\n name: \"CalendarBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon calendar-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst CalendarBlank = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"WebIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon web-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Web = __component__$1.exports;\nregister(t40);\nconst formatMap = {\n date: \"YYYY-MM-DD\",\n datetime: \"YYYY-MM-DD H:mm:ss\",\n year: \"YYYY\",\n month: \"YYYY-MM\",\n time: \"H:mm:ss\",\n week: \"w\"\n};\nconst _sfc_main = {\n name: \"NcDateTimePicker\",\n components: {\n CalendarBlank,\n DatePicker,\n NcPopover,\n NcTimezonePicker,\n Web\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Allow to clear the input.\n */\n clearable: {\n type: Boolean,\n default: false\n },\n /**\n * Default increment step for minutes in the time picker.\n */\n minuteStep: {\n type: Number,\n default: 10\n },\n /**\n * Since 8.25.0: Support 'date-range', 'time-range' and 'datetime-range' values.\n */\n type: {\n type: String,\n default: \"date\",\n validator: (type) => [\"date\", \"time\", \"datetime\", \"week\", \"month\", \"year\", \"date-range\", \"time-range\", \"datetime-range\"].includes(type)\n },\n /**\n * Either `moment.js` formatting tokens or a function taking a Date object and returning a string.\n * Warning: In v9 this will change the accepted token format to standardized Unicode tokens instead!\n */\n format: {\n type: [String, Function],\n default: null\n },\n /**\n * @deprecated use `format` instead\n */\n formatter: {\n type: Object,\n default: null\n },\n /**\n * The locale to use for formatting the shown dates.\n * By default the users current Nextcloud locale is used.\n */\n lang: {\n type: Object,\n default: null\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n // eslint-disable-next-line\n value: {\n default: void 0\n },\n /**\n * The value to initialize, but also two-way bind the selected date. The date is – like the `Date` object in\n * JavaScript – tied to UTC. The selected time zone does not have an influence of the selected time and date\n * value. You have to translate the time yourself when you want to factor in time zones.\n */\n // eslint-disable-next-line\n modelValue: {\n default: () => /* @__PURE__ */ new Date()\n },\n /**\n * The preselected IANA time zone ID for the time zone picker, only relevant in combination with `:show-timezone-select=\"true\"`. Example: `Europe/Berlin`. The prop supports two-way binding through the .sync modifier.\n */\n timezoneId: {\n type: String,\n default: \"UTC\"\n },\n /**\n * Include a timezone picker within the menu.\n * Please note that the dates are still bound to the locale timezone\n * and any conversion needs to be done by the app itself.\n */\n showTimezoneSelect: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the timezone select icon will be highlighted.\n */\n highlightTimezone: {\n type: Boolean,\n default: false\n },\n /**\n * If set to true the menu will be placed on the `<body>`\n * instead of default placement on the picker.\n */\n appendToBody: {\n type: Boolean,\n default: false\n },\n /**\n * Show the ISO week numbers within the calendar.\n */\n showWeekNumber: {\n type: Boolean,\n default: false\n },\n /**\n * Optional custom placeholder for the input box.\n */\n placeholder: {\n type: String,\n default: null\n },\n /**\n * @deprecated use the 'date-range' or 'datetime-range' type instead.\n */\n range: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"update:timezone-id\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n timezoneDialogHeaderId: `timezone-dialog-header-${GenRandomId()}`\n };\n },\n data() {\n return {\n showTimezonePopover: false,\n tzVal: this.timezoneId\n };\n },\n computed: {\n realType() {\n return this.type.split(\"-\")[0];\n },\n /**\n * Datepicker language\n * https://github.com/mengxiong10/vue2-datepicker/blob/master/locale.md\n *\n * @return {object}\n */\n defaultLang() {\n return {\n formatLocale: {\n months: getMonthNames(),\n monthsShort: getMonthNamesShort(),\n weekdays: getDayNames(),\n weekdaysShort: getDayNamesShort(),\n weekdaysMin: getDayNamesMin(),\n // 0 = sunday, 1 = monday\n firstDayOfWeek: getFirstDay()\n },\n monthFormat: \"MMMM\"\n };\n },\n /**\n * Translated placeholder\n *\n * @return {string}\n */\n defaultPlaceholder() {\n if (this.realType === \"time\") {\n return t(\"Pick a time\");\n }\n if (this.realType === \"month\") {\n return t(\"Pick a month\");\n }\n if (this.realType === \"year\") {\n return t(\"Pick a year\");\n }\n if (this.realType === \"week\") {\n return t(\"Pick a week\");\n }\n if (this.realType === \"date\") {\n return t(\"Pick a date\");\n }\n return t(\"Pick a date and a time\");\n },\n /**\n * Is the range picker enabled\n */\n internalRange() {\n return this.range || this.type.endsWith(\"-range\");\n },\n internalFormat() {\n if (this.format && typeof this.format === \"string\") {\n return this.format;\n }\n return formatMap[this.realType] || formatMap.date;\n },\n /**\n * The formatter used for the vue-datepicker to fix nextcloud-libraries/nextcloud-vue#5044\n */\n internalFormatter() {\n const getWeek = (date) => {\n const firstThursday = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n firstThursday.setUTCDate(firstThursday.getUTCDate() + 4 - (firstThursday.getUTCDay() || 7));\n const yearStart = new Date(Date.UTC(firstThursday.getUTCFullYear(), 0, 1));\n return Math.ceil(((firstThursday - yearStart) / 864e5 + 1) / 7);\n };\n return {\n getWeek,\n // wrape the format if it is a function\n ...typeof this.format === \"function\" ? { stringify: this.format } : {},\n // allow to override it by users using the `formatter` prop\n ...this.formatter ?? {}\n };\n }\n },\n methods: {\n t,\n handleSelectYear(year) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setFullYear(year));\n this.$refs.datepicker.selectDate(date);\n } catch {\n logger.error(\"Invalid value\", { value, year });\n }\n }\n },\n handleSelectMonth(month) {\n const value = this.$refs.datepicker.currentValue;\n if (value) {\n try {\n const date = new Date(new Date(value).setMonth(month));\n this.$refs.datepicker.selectDate(date);\n } catch {\n logger.error(\"Invalid value\", { value, month });\n }\n }\n },\n /**\n * Toggles the visibility of the time zone popover\n */\n toggleTimezonePopover() {\n if (!this.showTimezoneSelect) {\n return;\n }\n this.showTimezonePopover = !this.showTimezonePopover;\n }\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"DatePicker\", _vm._g(_vm._b({ ref: \"datepicker\", attrs: { \"append-to-body\": _vm.appendToBody, \"clearable\": _vm.clearable, \"format\": _vm.internalFormat, \"formatter\": _vm.internalFormatter, \"lang\": _vm.lang ? _vm.lang : _vm.defaultLang, \"minute-step\": _vm.minuteStep, \"placeholder\": _vm.placeholder ? _vm.placeholder : _vm.defaultPlaceholder, \"popup-class\": { \"show-week-number\": _vm.showWeekNumber }, \"range\": _vm.internalRange, \"show-week-number\": _vm.showWeekNumber, \"type\": _vm.realType, \"value\": _vm.model }, on: { \"select-year\": _vm.handleSelectYear, \"select-month\": _vm.handleSelectMonth, \"input\": function($event) {\n _vm.model = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon-calendar\", fn: function() {\n return [_vm.showTimezoneSelect ? _c(\"NcPopover\", { attrs: { \"popup-role\": \"dialog\", \"shown\": _vm.showTimezonePopover, \"popover-base-class\": \"timezone-select__popper\" }, on: { \"update:shown\": function($event) {\n _vm.showTimezonePopover = $event;\n } }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(\"button\", _vm._b({ staticClass: \"datetime-picker-inline-icon\", class: { \"datetime-picker-inline-icon--highlighted\": _vm.highlightTimezone }, on: { \"mousedown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return (() => {\n }).apply(null, arguments);\n } } }, \"button\", attrs, false), [_c(\"Web\", { attrs: { \"size\": 20 } })], 1)];\n } }], null, false, 3026992387) }, [_c(\"div\", { attrs: { \"role\": \"dialog\", \"aria-labelledby\": _vm.timezoneDialogHeaderId } }, [_c(\"div\", { staticClass: \"timezone-popover-wrapper__label\" }, [_c(\"strong\", { attrs: { \"id\": _vm.timezoneDialogHeaderId } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Please select a time zone:\")) + \" \")])]), _c(\"NcTimezonePicker\", { staticClass: \"timezone-popover-wrapper__timezone-select\", on: { \"input\": function($event) {\n return _vm.$emit(\"update:timezone-id\", arguments[0]);\n } }, model: { value: _vm.tzVal, callback: function($$v) {\n _vm.tzVal = $$v;\n }, expression: \"tzVal\" } })], 1)]) : _c(\"CalendarBlank\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, _vm._l(_vm.$scopedSlots, function(_, slot) {\n return { key: slot, fn: function(scope) {\n return [_vm._t(slot, null, null, scope)];\n } };\n })], null, true) }, \"DatePicker\", _vm.$attrs, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"ecb9b537\"\n);\nconst NcDateTimePicker = __component__.exports;\nScopeComponent(NcDateTimePicker);\nexport {\n NcDateTimePicker as default\n};\n//# sourceMappingURL=NcDateTimePicker.mjs.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.EmojiMart=t():e.EmojiMart=t()}(\"undefined\"!=typeof self?self:this,(function(){return function(){var e={537:function(){\"undefined\"!=typeof window&&function(){for(var e=0,t=[\"ms\",\"moz\",\"webkit\",\"o\"],i=0;i<t.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[t[i]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[t[i]+\"CancelAnimationFrame\"]||window[t[i]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,i){var n=(new Date).getTime(),r=Math.max(0,16-(n-e)),o=window.setTimeout((function(){t(n+r)}),r);return e=n+r,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}()}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,i),o.exports}i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return function(){\"use strict\";i.r(n),i.d(n,{Anchors:function(){return k},Category:function(){return X},Emoji:function(){return J},EmojiData:function(){return N},EmojiIndex:function(){return R},EmojiView:function(){return $},Picker:function(){return se},Preview:function(){return G},Search:function(){return Q},Skins:function(){return Z},frequently:function(){return w},sanitize:function(){return D},store:function(){return c},uncompress:function(){return p}});var e,t,r=\"emoji-mart\",o=JSON,s=\"undefined\"!=typeof window&&\"localStorage\"in window;function a(e,i){if(t)t(e,i);else{if(!s)return;try{window.localStorage[\"\".concat(r,\".\").concat(e)]=o.stringify(i)}catch(e){}}}var c={update:function(e){for(var t in e)a(t,e[t])},set:a,get:function(t){if(e)return e(t);if(s){try{var i=window.localStorage[\"\".concat(r,\".\").concat(t)]}catch(e){return}return i?JSON.parse(i):void 0}},setNamespace:function(e){r=e},setHandlers:function(i){i||(i={}),e=i.getter,t=i.setter}};function u(e){return u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},u(e)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}var h={name:\"a\",unified:\"b\",non_qualified:\"c\",has_img_apple:\"d\",has_img_google:\"e\",has_img_twitter:\"f\",has_img_facebook:\"h\",keywords:\"j\",sheet:\"k\",emoticons:\"l\",text:\"m\",short_names:\"n\",added_in:\"o\"},m=function(e){var t=[],i=function(e,i){e&&(Array.isArray(e)?e:[e]).forEach((function(e){(i?e.split(/[-|_|\\s]+/):[e]).forEach((function(e){e=e.toLowerCase(),-1==t.indexOf(e)&&t.push(e)}))}))};return i(e.short_names,!0),i(e.name,!0),i(e.keywords,!1),i(e.emoticons,!1),t.join(\",\")};function d(e){var t,i=function(e,t){var i=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if(\"string\"==typeof e)return l(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?l(e,t):void 0}}(e))||t&&e&&\"number\"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}(Object.getOwnPropertyNames(e));try{for(i.s();!(t=i.n()).done;){var n=t.value,r=e[n];e[n]=r&&\"object\"===u(r)?d(r):r}}catch(e){i.e(e)}finally{i.f()}return Object.freeze(e)}var f,v,p=function(e){if(!e.compressed)return e;for(var t in e.compressed=!1,e.emojis){var i=e.emojis[t];for(var n in h)i[n]=i[h[n]],delete i[h[n]];i.short_names||(i.short_names=[]),i.short_names.unshift(t),i.sheet_x=i.sheet[0],i.sheet_y=i.sheet[1],delete i.sheet,i.text||(i.text=\"\"),i.added_in||(i.added_in=6),i.added_in=i.added_in.toFixed(1),i.search=m(i)}return d(e)},j=[\"+1\",\"grinning\",\"kissing_heart\",\"heart_eyes\",\"laughing\",\"stuck_out_tongue_winking_eye\",\"sweat_smile\",\"joy\",\"scream\",\"disappointed\",\"unamused\",\"weary\",\"sob\",\"sunglasses\",\"heart\",\"hankey\"],g={};function y(){v=!0,f=c.get(\"frequently\")}var w={add:function(e){v||y();var t=e.id;f||(f=g),f[t]||(f[t]=0),f[t]+=1,c.set(\"last\",t),c.set(\"frequently\",f)},get:function(e){if(v||y(),!f){g={};for(var t=[],i=Math.min(e,j.length),n=0;n<i;n++)g[j[n]]=parseInt((i-n)/4,10)+1,t.push(j[n]);return t}var r=e,o=[];for(var s in f)f.hasOwnProperty(s)&&o.push(s);var a=o.sort((function(e,t){return f[e]-f[t]})).reverse().slice(0,r),u=c.get(\"last\");return u&&-1==a.indexOf(u)&&(a.pop(),a.push(u)),a}},_={activity:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"/></svg>',custom:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><g transform=\"translate(2.000000, 1.000000)\"><rect id=\"Rectangle\" x=\"8\" y=\"0\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect></g></svg>',flags:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"/></svg>',foods:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"/></svg>',nature:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"/><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"/></svg>',objects:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"/><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"/></svg>',smileys:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"/></svg>',people:'<svg xmlns:svg=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 24 24\"> <path id=\"path3814\" d=\"m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z\" /> <path id=\"path3816\" d=\"M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z \" /> </svg>',places:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"/><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"/></svg>',recent:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"/><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/></svg>',symbols:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"/></svg>'};function b(e,t,i,n,r,o,s,a){var c,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},u._ssrRegister=c):r&&(c=a?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:u}}var C=b({props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default:function(){return{}}}},emits:[\"click\"],created:function(){this.svgs=_}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-anchors\",attrs:{role:\"tablist\"}},e._l(e.categories,(function(i){return t(\"button\",{key:i.id,class:{\"emoji-mart-anchor\":!0,\"emoji-mart-anchor-selected\":i.id==e.activeCategory.id},style:{color:i.id==e.activeCategory.id?e.color:\"\"},attrs:{role:\"tab\",type:\"button\",\"aria-label\":i.name,\"aria-selected\":i.id==e.activeCategory.id,\"data-title\":e.i18n.categories[i.id]},on:{click:function(t){return e.$emit(\"click\",i)}}},[t(\"div\",{attrs:{\"aria-hidden\":\"true\"},domProps:{innerHTML:e._s(e.svgs[i.id])}}),e._v(\" \"),t(\"span\",{staticClass:\"emoji-mart-anchor-bar\",style:{backgroundColor:e.color},attrs:{\"aria-hidden\":\"true\"}})])})),0)}),[],!1,null,null,null),k=C.exports;function E(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function S(e){var t=function(e,t){if(\"object\"!=u(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,\"string\");if(\"object\"!=u(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(e)}(e);return\"symbol\"==u(t)?t:t+\"\"}function x(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,S(n.key),n)}}function O(e,t,i){return t&&x(e.prototype,t),i&&x(e,i),Object.defineProperty(e,\"prototype\",{writable:!1}),e}var P=String.fromCodePoint||function(){var e,t,i=[],n=-1,r=arguments.length;if(!r)return\"\";for(var o=\"\";++n<r;){var s=Number(arguments[n]);if(!isFinite(s)||s<0||s>1114111||Math.floor(s)!=s)throw RangeError(\"Invalid code point: \"+s);s<=65535?i.push(s):(e=55296+((s-=65536)>>10),t=s%1024+56320,i.push(e,t)),(n+1===r||i.length>16384)&&(o+=String.fromCharCode.apply(null,i),i.length=0)}return o};function A(e){var t=e.split(\"-\").map((function(e){return\"0x\".concat(e)}));return P.apply(null,t)}function M(e){return e.reduce((function(e,t){return-1===e.indexOf(t)&&e.push(t),e}),[])}function I(e,t){var i=M(e),n=M(t);return i.filter((function(e){return n.indexOf(e)>=0}))}function F(e,t){var i={};for(var n in e){var r=e[n],o=r;Object.prototype.hasOwnProperty.call(t,n)&&(o=t[n]),\"object\"===u(o)&&(o=F(r,o)),i[n]=o}return i}function z(e,t){var i=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if(\"string\"==typeof e)return L(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?L(e,t):void 0}}(e))||t&&e&&\"number\"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw o}}}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}var T=/^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/,q=[\"1F3FA\",\"1F3FB\",\"1F3FC\",\"1F3FD\",\"1F3FE\",\"1F3FF\"],R=function(){return O((function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=i.emojisToShowFilter,r=i.include,o=i.exclude,s=i.custom,a=i.recent,c=i.recentLength,u=void 0===c?20:c;E(this,e),this._data=p(t),this._emojisFilter=n||null,this._include=r||null,this._exclude=o||null,this._custom=s||[],this._recent=a||w.get(u),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:\"recent\",name:\"Recent\",emojis:[]},this._customCategory={id:\"custom\",name:\"Custom\",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}),[{key:\"buildIndex\",value:function(){var e=this,t=this._data.categories;if(this._include&&(t=(t=t.filter((function(t){return e._include.includes(t.id)}))).sort((function(t,i){var n=e._include.indexOf(t.id),r=e._include.indexOf(i.id);return n<r?-1:n>r?1:0}))),t.forEach((function(t){if(e.isCategoryNeeded(t.id)){var i={id:t.id,name:t.name,emojis:[]};t.emojis.forEach((function(t){var n=e.addEmoji(t);n&&i.emojis.push(n)})),i.emojis.length&&e._categories.push(i)}})),this.isCategoryNeeded(\"custom\")){if(this._custom.length>0){var i,n=z(this._custom);try{for(n.s();!(i=n.n()).done;){var r=i.value;this.addCustomEmoji(r)}}catch(e){n.e(e)}finally{n.f()}}this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded(\"recent\")&&(this._recent.length&&this._recent.map((function(t){var i,n=z(e._customCategory.emojis);try{for(n.s();!(i=n.n()).done;){var r=i.value;if(r.id===t)return void e._recentCategory.emojis.push(r)}}catch(e){n.e(e)}finally{n.f()}e.hasEmoji(t)&&e._recentCategory.emojis.push(e.emoji(t))})),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}},{key:\"findEmoji\",value:function(e,t){var i=e.match(T);if(i&&(e=i[1],i[2]&&(t=parseInt(i[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){var n=this._emojis[e];return t?n.getSkin(t):n}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:\"categories\",value:function(){return this._categories}},{key:\"emoji\",value:function(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);var t=this._emojis[e];if(!t)throw new Error(\"Can not find emoji by id: \"+e);return t}},{key:\"firstEmoji\",value:function(){var e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error(\"Can not get first emoji\");return e}},{key:\"hasEmoji\",value:function(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}},{key:\"nativeEmoji\",value:function(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:\"search\",value:function(e,t){var i=this;if(t||(t=75),!e.length)return null;if(\"-\"==e||\"-1\"==e)return[this.emoji(\"-1\")];var n,r=e.toLowerCase().split(/[\\s|,|\\-|_]+/);r.length>2&&(r=[r[0],r[1]]),n=r.map((function(e){for(var t=i._emojis,n=i._searchIndex,r=0,o=function(){var i=e[s];if(r++,n[i]||(n[i]={}),!(n=n[i]).results){var o={};for(var a in n.results=[],n.emojis={},t){var c=t[a],u=c._data.search,l=e.substr(0,r),h=u.indexOf(l);if(-1!=h){var m=h+1;l==a&&(m=0),n.results.push(c),n.emojis[a]=c,o[a]=m}}n.results.sort((function(e,t){return o[e.id]-o[t.id]}))}t=n.emojis},s=0;s<e.length;s++)o();return n.results})).filter((function(e){return e}));var o=null;return(o=n.length>1?I.apply(null,n):n.length?n[0]:[])&&o.length>t&&(o=o.slice(0,t)),o}},{key:\"addCustomEmoji\",value:function(e){var t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=m(t));var i=new N(t);return this._emojis[i.id]=i,this._customCategory.emojis.push(i),i}},{key:\"addEmoji\",value:function(e){var t=this,i=this._data.emojis[e];if(!this.isEmojiNeeded(i))return!1;var n=new N(i);if(this._emojis[e]=n,n.native&&(this._nativeEmojis[n.native]=n),n._skins)for(var r in n._skins){var o=n._skins[r];o.native&&(this._nativeEmojis[o.native]=o)}return n.emoticons&&n.emoticons.forEach((function(i){t._emoticons[i]||(t._emoticons[i]=e)})),n}},{key:\"isCategoryNeeded\",value:function(e){var t=!this._include||!this._include.length||this._include.indexOf(e)>-1,i=!(!this._exclude||!this._exclude.length)&&this._exclude.indexOf(e)>-1;return!(!t||i)}},{key:\"isEmojiNeeded\",value:function(e){return!this._emojisFilter||this._emojisFilter(e)}}])}(),N=function(){return O((function e(t){if(E(this,e),this._data=Object.assign({},t),this._skins=null,this._data.skin_variations)for(var i in this._skins=[],q){var n=q[i],r=this._data.skin_variations[n],o=Object.assign({},t);for(var s in r)o[s]=r[s];delete o.skin_variations,o.skin_tone=parseInt(i)+1,this._skins.push(new e(o))}for(var a in this._sanitized=D(this._data),this._sanitized)this[a]=this._sanitized[a];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}),[{key:\"getSkin\",value:function(e){return e&&\"native\"!=e&&this._skins?this._skins[e-1]:this}},{key:\"getPosition\",value:function(){var e=+(100/60*this._data.sheet_x).toFixed(2),t=+(100/60*this._data.sheet_y).toFixed(2);return\"\".concat(e,\"% \").concat(t,\"%\")}},{key:\"ariaLabel\",value:function(){return[this.native].concat(this.short_names).filter(Boolean).join(\", \")}}])}(),$=function(){return O((function e(t,i,n,r,o,s,a){E(this,e),this._emoji=t,this._native=r,this._skin=i,this._set=n,this._fallback=o,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(a),this.content=this._content(),this.title=!0===s?t.short_name:null,this.ariaLabel=t.ariaLabel(),Object.freeze(this)}),[{key:\"getEmoji\",value:function(){return this._emoji.getSkin(this._skin)}},{key:\"_canRender\",value:function(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}},{key:\"_cssClass\",value:function(){return[\"emoji-set-\"+this._set,\"emoji-type-\"+this._emojiType()]}},{key:\"_cssStyle\",value:function(e){var t={};return this._isCustom()?t={backgroundImage:\"url(\"+this.getEmoji()._data.imageUrl+\")\",backgroundSize:\"100%\",width:e+\"px\",height:e+\"px\"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(t=this._isNative()?Object.assign(t,{fontSize:Math.round(.95*e*10)/10+\"px\"}):Object.assign(t,{width:e+\"px\",height:e+\"px\"})),t}},{key:\"_content\",value:function(){return this._isCustom()?\"\":this._isNative()?this.getEmoji().native:this._hasEmoji()?\"\":this._fallback?this._fallback(this.getEmoji()):null}},{key:\"_isNative\",value:function(){return this._native}},{key:\"_isCustom\",value:function(){return this.getEmoji().custom}},{key:\"_hasEmoji\",value:function(){if(!this.getEmoji()._data)return!1;var e=this.getEmoji()._data[\"has_img_\"+this._set];return void 0===e||e}},{key:\"_emojiType\",value:function(){return this._isCustom()?\"custom\":this._isNative()?\"native\":this._hasEmoji()?\"image\":\"fallback\"}}])}();function D(e){var t=e.name,i=e.short_names,n=e.skin_tone,r=e.skin_variations,o=e.emoticons,s=e.unified,a=e.custom,c=e.imageUrl,u=e.id||i[0],l=\":\".concat(u,\":\");return a?{id:u,name:t,colons:l,emoticons:o,custom:a,imageUrl:c}:(n&&(l+=\":skin-tone-\".concat(n,\":\")),{id:u,name:t,colons:l,emoticons:o,unified:s.toLowerCase(),skin:n||(r?1:null),native:A(s)})}function B(e,t,i){return(t=S(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var H={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:\"apple\"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:\"span\"}},U={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:\"Emoji Mart™\"},emoji:{type:String,default:\"department_store\"},color:{type:String,default:\"#ae65c5\"},set:{type:String,default:\"apple\"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default:function(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default:function(){return{}}}};function V(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function W(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?V(Object(i),!0).forEach((function(t){B(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):V(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var J=b({props:W(W({},H),{},{data:{type:Object,required:!0}}),emits:[\"click\",\"mouseenter\",\"mouseleave\"],computed:{view:function(){return new $(this.emojiObject,this.skin,this.set,this.native,this.fallback,this.tooltip,this.size)},sanitizedData:function(){return this.emojiObject._sanitized},title:function(){return this.tooltip?this.emojiObject.short_name:null},emojiObject:function(){return\"string\"==typeof this.emoji?this.data.findEmoji(this.emoji):this.emoji}},created:function(){},methods:{onClick:function(){this.$emit(\"click\",this.emojiObject)},onMouseEnter:function(){this.$emit(\"mouseenter\",this.emojiObject)},onMouseLeave:function(){this.$emit(\"mouseleave\",this.emojiObject)}}},(function(){var e=this,t=e._self._c;return e.view.canRender?t(e.tag,{tag:\"component\",staticClass:\"emoji-mart-emoji\",attrs:{title:e.view.title,\"aria-label\":e.view.ariaLabel,\"data-title\":e.title},on:{mouseenter:e.onMouseEnter,mouseleave:e.onMouseLeave,click:e.onClick}},[t(\"span\",{class:e.view.cssClass,style:e.view.cssStyle},[e._v(e._s(e.view.content))])]):e._e()}),[],!1,null,null,null).exports,X=b({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},emojis:{type:Array},emojiProps:{type:Object,required:!0}},methods:{activeClass:function(e){return this.emojiProps.selectedEmoji&&this.emojiProps.selectedEmojiCategory&&this.emojiProps.selectedEmoji.id==e.id&&this.emojiProps.selectedEmojiCategory.id==this.id?\"emoji-mart-emoji-selected\":\"\"}},computed:{isVisible:function(){return!!this.emojis},isSearch:function(){return\"Search\"==this.name},hasResults:function(){return this.emojis.length>0},emojiObjects:function(){var e=this;return this.emojis.map((function(t){return{emojiObject:t,emojiView:new $(t,e.emojiProps.skin,e.emojiProps.set,e.emojiProps.native,e.emojiProps.fallback,e.emojiProps.emojiTooltip,e.emojiProps.emojiSize)}}))}},components:{Emoji:J}},(function(){var e=this,t=e._self._c;return e.isVisible&&(e.isSearch||e.hasResults)?t(\"section\",{class:{\"emoji-mart-category\":!0,\"emoji-mart-no-results\":!e.hasResults},attrs:{\"aria-label\":e.i18n.categories[e.id]}},[t(\"div\",{staticClass:\"emoji-mart-category-label\"},[t(\"h3\",{staticClass:\"emoji-mart-category-label\"},[e._v(e._s(e.i18n.categories[e.id]))])]),e._v(\" \"),e._l(e.emojiObjects,(function(i){var n=i.emojiObject,r=i.emojiView;return[r.canRender?t(\"button\",{key:n.id,staticClass:\"emoji-mart-emoji\",class:e.activeClass(n),attrs:{\"aria-label\":r.ariaLabel,role:\"option\",\"aria-selected\":\"false\",\"aria-posinset\":\"1\",\"aria-setsize\":\"1812\",type:\"button\",\"data-title\":n.short_name,title:r.title},on:{mouseenter:function(t){e.emojiProps.onEnter(r.getEmoji())},mouseleave:function(t){e.emojiProps.onLeave(r.getEmoji())},click:function(t){e.emojiProps.onClick(r.getEmoji())}}},[t(\"span\",{class:r.cssClass,style:r.cssStyle},[e._v(e._s(r.content))])]):e._e()]})),e._v(\" \"),e.hasResults?e._e():t(\"div\",[t(\"emoji\",{attrs:{data:e.data,emoji:\"sleuth_or_spy\",native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}}),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-no-results-label\"},[e._v(e._s(e.i18n.notfound))])],1)],2):e._e()}),[],!1,null,null,null).exports,Z=b({props:{skin:{type:Number,required:!0}},emits:[\"change\"],data:function(){return{opened:!1}},methods:{onClick:function(e){this.opened&&e!=this.skin&&this.$emit(\"change\",e),this.opened=!this.opened}}},(function(){var e=this,t=e._self._c;return t(\"div\",{class:{\"emoji-mart-skin-swatches\":!0,\"emoji-mart-skin-swatches-opened\":e.opened}},e._l(6,(function(i){return t(\"span\",{key:i,class:{\"emoji-mart-skin-swatch\":!0,\"emoji-mart-skin-swatch-selected\":e.skin==i}},[t(\"span\",{class:\"emoji-mart-skin emoji-mart-skin-tone-\"+i,on:{click:function(t){return e.onClick(i)}}})])})),0)}),[],!1,null,null,null).exports,G=b({props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData:function(){return this.emoji?this.emoji:{}},emojiShortNames:function(){return this.emojiData.short_names},emojiEmoticons:function(){return this.emojiData.emoticons}},components:{Emoji:J,Skins:Z}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-preview\"},[e.emoji?[t(\"div\",{staticClass:\"emoji-mart-preview-emoji\"},[t(\"emoji\",{attrs:{data:e.data,emoji:e.emoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-data\"},[t(\"div\",{staticClass:\"emoji-mart-preview-name\"},[e._v(e._s(e.emoji.name))]),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-shortnames\"},e._l(e.emojiShortNames,(function(i){return t(\"span\",{key:i,staticClass:\"emoji-mart-preview-shortname\"},[e._v(\":\"+e._s(i)+\":\")])})),0),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-emoticons\"},e._l(e.emojiEmoticons,(function(i){return t(\"span\",{key:i,staticClass:\"emoji-mart-preview-emoticon\"},[e._v(e._s(i))])})),0)])]:[t(\"div\",{staticClass:\"emoji-mart-preview-emoji\"},[t(\"emoji\",{attrs:{data:e.data,emoji:e.idleEmoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(\" \"),t(\"div\",{staticClass:\"emoji-mart-preview-data\"},[t(\"span\",{staticClass:\"emoji-mart-title-label\"},[e._v(e._s(e.title))])]),e._v(\" \"),e.showSkinTones?t(\"div\",{staticClass:\"emoji-mart-preview-skins\"},[t(\"skins\",{attrs:{skin:e.skinProps.skin},on:{change:function(t){return e.onSkinChange(t)}}})],1):e._e()]],2)}),[],!1,null,null,null).exports,K=b({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:[\"search\",\"enter\",\"arrowUp\",\"arrowDown\",\"arrowRight\",\"arrowLeft\"],data:function(){return{value:\"\"}},computed:{emojiIndex:function(){return this.data}},watch:{value:function(){this.$emit(\"search\",this.value)}},methods:{clear:function(){this.value=\"\"}},mounted:function(){var e=this.$el.querySelector(\"input\");this.autoFocus&&e.focus()}},(function(){var e=this,t=e._self._c;return t(\"div\",{staticClass:\"emoji-mart-search\"},[t(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.value,expression:\"value\"}],attrs:{type:\"text\",placeholder:e.i18n.search,role:\"textbox\",\"aria-autocomplete\":\"list\",\"aria-owns\":\"emoji-mart-list\",\"aria-label\":\"Search for an emoji\",\"aria-describedby\":\"emoji-mart-search-description\"},domProps:{value:e.value},on:{keydown:[function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"left\",37,t.key,[\"Left\",\"ArrowLeft\"])||\"button\"in t&&0!==t.button?null:function(t){return e.$emit(\"arrowLeft\",t)}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"right\",39,t.key,[\"Right\",\"ArrowRight\"])||\"button\"in t&&2!==t.button?null:function(){return e.$emit(\"arrowRight\")}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"])?null:function(){return e.$emit(\"arrowDown\")}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"])?null:function(t){return e.$emit(\"arrowUp\",t)}.apply(null,arguments)},function(t){return!t.type.indexOf(\"key\")&&e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?null:function(){return e.$emit(\"enter\")}.apply(null,arguments)}],input:function(t){t.target.composing||(e.value=t.target.value)}}}),e._v(\" \"),t(\"span\",{staticClass:\"hidden\",attrs:{id:\"emoji-picker-search-description\"}},[e._v(\"Use the left, right, up and down arrow keys to navigate the emoji search\\n results.\")])])}),[],!1,null,null,null),Q=K.exports;function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}i(537);var ee=function(){return O((function e(t){var i,n;E(this,e),this._vm=t,this._data=t.data,this._perLine=t.perLine,this._categories=[],(i=this._categories).push.apply(i,function(e){if(Array.isArray(e))return Y(e)}(n=this._data.categories())||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(n)||function(e,t){if(e){if(\"string\"==typeof e)return Y(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===i&&e.constructor&&(i=e.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(e):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Y(e,t):void 0}}(n)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),this._categories=this._categories.filter((function(e){return e.emojis.length>0})),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}),[{key:\"onScroll\",value:function(){var e=this._vm.$refs.scroll;if(e){for(var t=e.scrollTop,i=this.filteredCategories[0],n=0,r=this.filteredCategories.length;n<r;n++){var o=this.filteredCategories[n],s=this._vm.getCategoryComponent(n);if(s&&s.$el.offsetTop-50>t)break;i=o}this.activeCategory=i}}},{key:\"allCategories\",get:function(){return this._categories}},{key:\"filteredCategories\",get:function(){return this.searchEmojis?[{id:\"search\",name:\"Search\",emojis:this.searchEmojis}]:this._categories.filter((function(e){return e.emojis.length>0}))}},{key:\"previewEmojiCategory\",get:function(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}},{key:\"onAnchorClick\",value:function(e){var t=this;if(!this.searchEmojis){var i=this.filteredCategories.indexOf(e),n=this._vm.getCategoryComponent(i);this._vm.infiniteScroll?function(){if(n){var i=n.$el.offsetTop;e.first&&(i=0),t._vm.$refs.scroll.scrollTop=i}}():this.activeCategory=this.filteredCategories[i]}}},{key:\"onSearch\",value:function(e){var t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}},{key:\"onEmojiEnter\",value:function(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}},{key:\"onEmojiLeave\",value:function(e){this.previewEmoji=null}},{key:\"onArrowLeft\",value:function(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}},{key:\"onArrowRight\",value:function(){this.previewEmojiIdx<this.emojisLength(this.previewEmojiCategoryIdx)-1?this.previewEmojiIdx+=1:(this.previewEmojiCategoryIdx+=1,this.previewEmojiCategoryIdx>=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}},{key:\"onArrowDown\",value:function(){if(-1==this.previewEmojiIdx)return this.onArrowRight();var e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length,t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(var i=0;i<t;i++)this.onArrowRight();this.updatePreviewEmoji()}},{key:\"onArrowUp\",value:function(){var e=this._perLine;this.previewEmojiIdx-e<0&&(e=this.previewEmojiCategoryIdx>0?this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:0);for(var t=0;t<e;t++)this.onArrowLeft();this.updatePreviewEmoji()}},{key:\"updatePreviewEmoji\",value:function(){var e=this;this.previewEmoji=this.filteredCategories[this.previewEmojiCategoryIdx].emojis[this.previewEmojiIdx],this._vm.$nextTick((function(){var t=e._vm.$refs.scroll,i=t.querySelector(\".emoji-mart-emoji-selected\"),n=t.offsetTop-t.offsetHeight;i&&i.offsetTop+i.offsetHeight>n+t.scrollTop&&(t.scrollTop+=i.offsetHeight),i&&i.offsetTop<t.scrollTop&&(t.scrollTop-=i.offsetHeight)}))}},{key:\"emojisLength\",value:function(e){return-1==e?0:this.filteredCategories[e].emojis.length}}])}();function te(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function ie(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?te(Object(i),!0).forEach((function(t){B(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):te(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var ne={search:\"Search\",notfound:\"No Emoji Found\",categories:{search:\"Search Results\",recent:\"Frequently Used\",smileys:\"Smileys & Emotion\",people:\"People & Body\",nature:\"Animals & Nature\",foods:\"Food & Drink\",activity:\"Activity\",places:\"Travel & Places\",objects:\"Objects\",symbols:\"Symbols\",flags:\"Flags\",custom:\"Custom\"}},re={props:ie(ie({},U),{},{data:{type:Object,required:!0}}),emits:[\"select\",\"skin-change\"],data:function(){return{activeSkin:this.skin||c.get(\"skin\")||this.defaultSkin,view:new ee(this)}},computed:{customStyles:function(){return ie({width:this.calculateWidth+\"px\"},this.pickerStyles)},emojiProps:function(){return{native:this.native,skin:this.activeSkin,set:this.set,emojiTooltip:this.emojiTooltip,emojiSize:this.emojiSize,selectedEmoji:this.view.previewEmoji,selectedEmojiCategory:this.view.previewEmojiCategory,onEnter:this.onEmojiEnter.bind(this),onLeave:this.onEmojiLeave.bind(this),onClick:this.onEmojiClick.bind(this)}},skinProps:function(){return{skin:this.activeSkin}},calculateWidth:function(){return this.perLine*(this.emojiSize+12)+12+2+function(){if(\"undefined\"==typeof document)return 0;var e=document.createElement(\"div\");e.style.width=\"100px\",e.style.height=\"100px\",e.style.overflow=\"scroll\",e.style.position=\"absolute\",e.style.top=\"-9999px\",document.body.appendChild(e);var t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t}()},filteredCategories:function(){return this.view.filteredCategories},mergedI18n:function(){return Object.freeze(F(ne,this.i18n))},idleEmoji:function(){try{return this.data.emoji(this.emoji)}catch(e){return console.error(\"Default preview emoji `\"+this.emoji+\"` is not available, check the Picker `emoji` property\"),console.error(e),this.data.firstEmoji()}},isSearching:function(){return null!=this.view.searchEmojis}},watch:{skin:function(){this.onSkinChange(this.skin)}},methods:{onScroll:function(){this.infiniteScroll&&!this.waitingForPaint&&(this.waitingForPaint=!0,window.requestAnimationFrame(this.onScrollPaint.bind(this)))},onScrollPaint:function(){this.waitingForPaint=!1,this.view.onScroll()},onAnchorClick:function(e){this.view.onAnchorClick(e)},onSearch:function(e){this.view.onSearch(e)},onEmojiEnter:function(e){this.view.onEmojiEnter(e)},onEmojiLeave:function(e){this.view.onEmojiLeave(e)},onArrowLeft:function(e){var t=this.view.previewEmojiIdx;this.view.onArrowLeft(),e&&this.view.previewEmojiIdx!==t&&e.preventDefault()},onArrowRight:function(){this.view.onArrowRight()},onArrowDown:function(){this.view.onArrowDown()},onArrowUp:function(e){this.view.onArrowUp(),e.preventDefault()},onEnter:function(){this.view.previewEmoji&&(this.$emit(\"select\",this.view.previewEmoji),w.add(this.view.previewEmoji))},onEmojiClick:function(e){this.$emit(\"select\",e),w.add(e)},onTextSelect:function(e){e.stopPropagation()},onSkinChange:function(e){this.activeSkin=e,c.update({skin:e}),this.$emit(\"skin-change\",e)},getCategoryComponent:function(e){var t=this.$refs[\"categories_\"+e];return t&&\"0\"in t?t[0]:t}},components:{Anchors:k,Category:X,Preview:G,Search:Q}},oe=b(re,(function(){var e=this,t=e._self._c;return t(\"section\",{staticClass:\"emoji-mart emoji-mart-static\",style:e.customStyles},[e.showCategories?t(\"div\",{staticClass:\"emoji-mart-bar emoji-mart-bar-anchors\"},[t(\"anchors\",{attrs:{data:e.data,i18n:e.mergedI18n,color:e.color,categories:e.view.allCategories,\"active-category\":e.view.activeCategory},on:{click:e.onAnchorClick}})],1):e._e(),e._v(\" \"),e._t(\"searchTemplate\",(function(){return[e.showSearch?t(\"search\",{ref:\"search\",attrs:{data:e.data,i18n:e.mergedI18n,\"auto-focus\":e.autoFocus,\"on-search\":e.onSearch},on:{search:e.onSearch,arrowLeft:e.onArrowLeft,arrowRight:e.onArrowRight,arrowDown:e.onArrowDown,arrowUp:e.onArrowUp,enter:e.onEnter,select:e.onTextSelect}}):e._e()]}),{data:e.data,i18n:e.i18n,autoFocus:e.autoFocus,onSearch:e.onSearch}),e._v(\" \"),t(\"div\",{ref:\"scroll\",staticClass:\"emoji-mart-scroll\",attrs:{role:\"tabpanel\"},on:{scroll:e.onScroll}},[t(\"div\",{ref:\"scrollContent\",attrs:{id:\"emoji-mart-list\",role:\"listbox\",\"aria-expanded\":\"true\"}},[e._t(\"customCategory\"),e._v(\" \"),e._l(e.view.filteredCategories,(function(i,n){return t(\"category\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.infiniteScroll||i==e.view.activeCategory||e.isSearching,expression:\"infiniteScroll || category == view.activeCategory || isSearching\"}],key:i.id,ref:\"categories_\"+n,refInFor:!0,attrs:{data:e.data,i18n:e.mergedI18n,id:i.id,name:i.name,emojis:i.emojis,\"emoji-props\":e.emojiProps}})}))],2)]),e._v(\" \"),e._t(\"previewTemplate\",(function(){return[e.showPreview?t(\"div\",{staticClass:\"emoji-mart-bar emoji-mart-bar-preview\"},[t(\"preview\",{attrs:{data:e.data,title:e.title,emoji:e.view.previewEmoji,\"idle-emoji\":e.idleEmoji,\"show-skin-tones\":e.showSkinTones,\"emoji-props\":e.emojiProps,\"skin-props\":e.skinProps,\"on-skin-change\":e.onSkinChange}})],1):e._e()]}),{data:e.data,title:e.title,emoji:e.view.previewEmoji,idleEmoji:e.idleEmoji,showSkinTones:e.showSkinTones,emojiProps:e.emojiProps,skinProps:e.skinProps,onSkinChange:e.onSkinChange})],2)}),[],!1,null,null,null),se=oe.exports}(),n}()}));","import { getBuilder } from \"@nextcloud/browser-storage\";\nimport { EmojiIndex, frequently } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nconst storage = getBuilder(\"nextcloud-vue\").persist(true).build();\nlet emojiIndex;\nvar EmojiSkinTone = /* @__PURE__ */ ((EmojiSkinTone2) => {\n EmojiSkinTone2[EmojiSkinTone2[\"Neutral\"] = 1] = \"Neutral\";\n EmojiSkinTone2[EmojiSkinTone2[\"Light\"] = 2] = \"Light\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumLight\"] = 3] = \"MediumLight\";\n EmojiSkinTone2[EmojiSkinTone2[\"Medium\"] = 4] = \"Medium\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumDark\"] = 5] = \"MediumDark\";\n EmojiSkinTone2[EmojiSkinTone2[\"Dark\"] = 6] = \"Dark\";\n return EmojiSkinTone2;\n})(EmojiSkinTone || {});\nfunction emojiSearch(query, maxResults = 10) {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n const currentSkinTone = getCurrentSkinTone();\n let results;\n if (query) {\n results = emojiIndex.search(`:${query}`, maxResults);\n if (results.length < maxResults) {\n results = results.concat(emojiIndex.search(query, maxResults - results.length));\n }\n } else {\n results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];\n }\n return results.map((emoji) => emoji.getSkin(currentSkinTone));\n}\nfunction emojiAddRecent(emojiOrEmojiData) {\n let emojiData;\n if (typeof emojiOrEmojiData === \"string\") {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n emojiData = emojiIndex.findEmoji(emojiOrEmojiData);\n } else {\n emojiData = emojiOrEmojiData;\n }\n if (emojiData && \"id\" in emojiData) {\n frequently.add(emojiData);\n }\n}\nfunction getCurrentSkinTone() {\n const skinTone = Number.parseInt(storage.getItem(\"NcEmojiPicker::currentSkinTone\") ?? \"1\");\n return Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n}\nfunction setCurrentSkinTone(skinTone) {\n skinTone = Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n storage.setItem(\"NcEmojiPicker::currentSkinTone\", skinTone.toString());\n}\nexport {\n EmojiSkinTone as E,\n emojiAddRecent as a,\n emojiSearch as e,\n getCurrentSkinTone as g,\n setCurrentSkinTone as s\n};\n//# sourceMappingURL=emoji-Dtn2mDf7.mjs.map\n","import '../assets/NcEmojiPicker-B-iLLj37.css';\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { isFocusable } from \"tabbable\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker-BwqjqV32.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-BnLfCgGU.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-Dtn2mDf7.mjs\";\nimport { r as register, A as t44, B as t37, q as t16, C as t6, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { C as Color } from \"./colors-B_oqiKWY.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcPopover } from \"./NcPopover-BaHX3QSG.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CQp8XS4C.mjs\";\nconst _sfc_main$1 = {\n name: \"CircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconCircle = __component__$1.exports;\nregister(t6, t16, t37, t44);\nlet emojiIndex;\nconst i18n = {\n search: t(\"Search emoji\"),\n notfound: t(\"No emoji found\"),\n categories: {\n search: t(\"Search results\"),\n recent: t(\"Frequently used\"),\n smileys: t(\"Smileys & Emotion\"),\n people: t(\"People & Body\"),\n nature: t(\"Animals & Nature\"),\n foods: t(\"Food & Drink\"),\n activity: t(\"Activities\"),\n places: t(\"Travel & Places\"),\n objects: t(\"Objects\"),\n symbols: t(\"Symbols\"),\n flags: t(\"Flags\"),\n custom: t(\"Custom\")\n }\n};\nconst skinTonePalette = [\n new Color(255, 222, 52, t(\"Neutral skin color\")),\n new Color(228, 205, 166, t(\"Light skin tone\")),\n new Color(250, 221, 192, t(\"Medium light skin tone\")),\n new Color(174, 129, 87, t(\"Medium skin tone\")),\n new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n name: \"NcEmojiPicker\",\n components: {\n Emoji,\n IconCircle,\n NcButton,\n NcColorPicker,\n NcPopover,\n NcTextField,\n Picker\n },\n props: {\n /**\n * The emoji-set\n */\n activeSet: {\n type: String,\n default: \"native\"\n },\n /**\n * Show preview section when hovering emoji\n */\n showPreview: {\n type: Boolean,\n default: false\n },\n /**\n * Allow unselecting the selected emoji\n */\n allowUnselect: {\n type: Boolean,\n default: false\n },\n /**\n * Selected emoji to allow unselecting\n */\n selectedEmoji: {\n type: String,\n default: \"\"\n },\n /**\n * The fallback emoji in the preview section\n */\n previewFallbackEmoji: {\n type: String,\n default: \"grinning\"\n },\n /**\n * The fallback text in the preview section\n */\n previewFallbackName: {\n type: String,\n default: t(\"Pick an emoji\")\n },\n /**\n * Whether to close the emoji picker after picking one\n */\n closeOnSelect: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Selector for the popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n emits: [\n \"select\",\n \"select-data\",\n \"unselect\"\n ],\n setup() {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n return {\n // Non-reactive constants\n emojiIndex,\n skinTonePalette,\n i18n\n };\n },\n data() {\n const currentSkinTone = getCurrentSkinTone();\n return {\n /**\n * The current active color from the skin tone palette\n */\n currentColor: skinTonePalette[currentSkinTone - 1],\n /**\n * The current active skin tone\n *\n * @type {1|2|3|4|5|6}\n */\n currentSkinTone,\n search: \"\",\n open: false\n };\n },\n computed: {\n native() {\n return this.activeSet === \"native\";\n }\n },\n created() {\n useTrapStackControl(() => this.open);\n },\n methods: {\n t,\n clearSearch() {\n this.search = \"\";\n this.$refs.search.focus();\n },\n /**\n * Update the current skin tone by the result of the color picker\n *\n * @param {string} color Color set\n */\n onChangeSkinTone(color) {\n const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n if (index > -1) {\n this.currentSkinTone = index + 1;\n this.currentColor = this.skinTonePalette[index];\n setCurrentSkinTone(this.currentSkinTone);\n }\n },\n select(emojiObject) {\n this.$emit(\"select\", emojiObject.native);\n this.$emit(\"select-data\", emojiObject);\n if (this.closeOnSelect) {\n this.open = false;\n }\n },\n unselect() {\n this.$emit(\"unselect\");\n },\n afterShow() {\n this.$refs.search.focus();\n },\n afterHide() {\n if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n }\n },\n /**\n * Manually handle Tab navigation skipping emoji buttons.\n * Navigation over emojis is handled by Arrow keys.\n *\n * @param {KeyboardEvent} event - Keyboard event\n */\n handleTabNavigationSkippingEmojis(event) {\n const current = event.target;\n const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n if (!event.shiftKey) {\n const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n nextNode.focus();\n } else {\n const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n prevNode.focus();\n }\n },\n /**\n * Handle arrow navigation via <Picker>'s handlers with scroll bug fix\n *\n * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n * @param {KeyboardEvent} event - Keyboard event\n */\n async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n this.$refs.picker[originalHandlerName](event);\n await this.$nextTick();\n const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n selectedEmoji?.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcPopover\", _vm._g(_vm._b({ ref: \"popover\", attrs: {\n \"shown\": _vm.open,\n \"container\": _vm.container,\n \"popup-role\": \"dialog\",\n \"focus-trap\": false\n /* Handled manually to remove emoji buttons from TAB sequence */\n }, on: { \"update:shown\": function($event) {\n _vm.open = $event;\n }, \"after-show\": _vm.afterShow, \"after-hide\": _vm.afterHide }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function(slotProps) {\n return [_vm._t(\"default\", null, null, slotProps)];\n } }], null, true) }, \"NcPopover\", _vm.$attrs, false), _vm.$listeners), [_c(\"div\", { staticClass: \"nc-emoji-picker-container\" }, [_c(\"Picker\", _vm._b({ ref: \"picker\", attrs: { \"color\": \"var(--color-primary-element)\", \"data\": _vm.emojiIndex, \"emoji\": _vm.previewFallbackEmoji, \"i18n\": _vm.i18n, \"native\": _vm.native, \"emoji-size\": 20, \"per-line\": 8, \"picker-styles\": { width: \"320px\" }, \"show-preview\": _vm.showPreview, \"skin\": _vm.currentSkinTone, \"show-skin-tones\": false, \"title\": _vm.previewFallbackName, \"role\": \"dialog\", \"aria-modal\": \"true\", \"aria-label\": _vm.t(\"Emoji picker\") }, on: { \"select\": _vm.select }, nativeOn: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n $event.preventDefault();\n return _vm.handleTabNavigationSkippingEmojis.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"searchTemplate\", fn: function({ onSearch }) {\n return [_c(\"div\", { staticClass: \"search__wrapper\" }, [_c(\"NcTextField\", { ref: \"search\", staticClass: \"search\", attrs: { \"value\": _vm.search, \"label\": _vm.t(\"Search\"), \"label-visible\": true, \"placeholder\": _vm.i18n.search, \"trailing-button-icon\": \"close\", \"trailing-button-label\": _vm.t(\"Clear search\"), \"show-trailing-button\": _vm.search !== \"\" }, on: { \"update:value\": [function($event) {\n _vm.search = $event;\n }, function($event) {\n return onSearch(_vm.search);\n }], \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"left\", 37, $event.key, [\"Left\", \"ArrowLeft\"])) return null;\n if (\"button\" in $event && $event.button !== 0) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"right\", 39, $event.key, [\"Right\", \"ArrowRight\"])) return null;\n if (\"button\" in $event && $event.button !== 2) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.$refs.picker.onEnter.apply(null, arguments);\n }], \"trailing-button-click\": function($event) {\n _vm.clearSearch();\n onSearch(\"\");\n } } }), _c(\"NcColorPicker\", { attrs: { \"palette-only\": \"\", \"container\": _vm.container, \"palette\": _vm.skinTonePalette, \"value\": _vm.currentColor.color }, on: { \"update:value\": _vm.onChangeSkinTone } }, [_c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"Skin tone\"), \"variant\": \"tertiary-no-background\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCircle\", { style: { color: _vm.currentColor.color }, attrs: { \"title\": _vm.currentColor.name, \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)], 1)];\n } }, _vm.allowUnselect && _vm.selectedEmoji ? { key: \"customCategory\", fn: function() {\n return [_c(\"div\", { staticClass: \"emoji-mart-category-label\" }, [_c(\"h3\", { staticClass: \"emoji-mart-category-label\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Selected\")) + \" \")])]), _c(\"Emoji\", { staticClass: \"emoji-selected\", attrs: { \"data\": _vm.emojiIndex, \"emoji\": _vm.selectedEmoji, \"native\": true, \"size\": 32 }, on: { \"click\": _vm.unselect } }), _c(\"Emoji\", { staticClass: \"emoji-delete\", attrs: { \"data\": _vm.emojiIndex, \"emoji\": \":x:\", \"native\": true, \"size\": 10 }, on: { \"click\": _vm.unselect } })];\n }, proxy: true } : null], null, true) }, \"Picker\", _vm.$attrs, false))], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a3ed576d\"\n);\nconst NcEmojiPicker = __component__.exports;\nexport {\n NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker-C_88_f6x.mjs.map\n","import '../assets/NcFilePicker-BjFpDu4R.css';\nimport { defineComponent, ref, computed, nextTick } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport NcActionCaption from \"../Components/NcActionCaption.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { r as register, M as t41, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nregister(t41);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFilePicker\",\n props: {\n accept: { default: void 0 },\n actionCaption: { default: \"\" },\n actions: { default: () => [] },\n directory: { type: Boolean },\n directoryOnly: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n label: { default: void 0 },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n variant: { default: \"primary\" }\n },\n emits: [\"pick\"],\n setup(__props, { expose, emit }) {\n const props = __props;\n expose({\n reset\n });\n const formElement = ref(null);\n const inputElement = ref(null);\n const currentLabel = computed(() => {\n if (props.loading) {\n return t(\"Uploading …\");\n } else if (props.label) {\n return props.label;\n } else if (props.directoryOnly) {\n return t(\"Pick folder\");\n }\n return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n });\n const canUploadFolders = computed(() => {\n return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n });\n function triggerPickFiles(uploadFolders) {\n reset();\n if (canUploadFolders.value) {\n inputElement.value.webkitdirectory = uploadFolders;\n }\n nextTick(() => inputElement.value.click());\n }\n function onPick() {\n const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n emit(\"pick\", files);\n }\n function reset() {\n formElement.value.reset();\n }\n return { __sfc: true, props, emit, formElement, inputElement, currentLabel, canUploadFolders, triggerPickFiles, onPick, reset, IconFolderUpload, IconPlus, IconUpload, NcActionButton, NcActionCaption, NcActions, NcIconSvgWrapper, NcLoadingIcon, t };\n }\n});\nconst filePicker = \"_filePicker_2NMRS\";\nconst style0 = {\n filePicker\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"form\", { ref: \"formElement\", class: _vm.$style.filePicker }, [_c(_setup.NcActions, { attrs: { \"aria-label\": _setup.currentLabel, \"disabled\": _vm.disabled || _vm.loading, \"menu-name\": _vm.iconOnly ? void 0 : _setup.currentLabel, \"force-name\": !_vm.iconOnly, \"variant\": _vm.variant }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [!_vm.loading ? _vm._t(\"icon\", function() {\n return [_c(_setup.IconPlus, { attrs: { \"size\": 20 } })];\n }) : _c(_setup.NcLoadingIcon)];\n }, proxy: true }], null, true) }, [_vm.actionCaption ? _c(_setup.NcActionCaption, { attrs: { \"name\": _vm.actionCaption } }) : _vm._e(), !_vm.directoryOnly ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n return _setup.triggerPickFiles(false);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.IconUpload, { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3377047136) }, [_vm._v(\" \" + _vm._s(_setup.canUploadFolders || !!_vm.$slots.actions ? _vm.multiple ? _setup.t(\"Upload files\") : _setup.t(\"Upload file\") : _setup.currentLabel) + \" \")]) : _vm._e(), _setup.canUploadFolders ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n return _setup.triggerPickFiles(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.IconFolderUpload, { staticStyle: { \"color\": \"var(--color-primary-element)\" }, attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 746052933) }, [_vm._v(\" \" + _vm._s(!_vm.directoryOnly || !!_vm.$slots.actions ? _setup.t(\"Upload folder\") : _setup.currentLabel) + \" \")]) : _vm._e(), _vm._l(_vm.actions, function(group) {\n return [group.caption ? _c(_setup.NcActionCaption, { key: group.caption, attrs: { \"name\": group.caption } }) : _vm._e(), _vm._l(group.actions ?? [group], function(action) {\n return _c(_setup.NcActionButton, { key: action.label, attrs: { \"close-after-click\": \"\" }, on: { \"click\": action.onClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": action.iconSvg } })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(action.label) + \" \")]);\n })];\n })], 2), _c(\"input\", { ref: \"inputElement\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join(\", \"), \"aria-hidden\": \"true\", \"multiple\": _vm.multiple, \"type\": \"file\" }, on: { \"change\": _setup.onPick } }), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFilePicker = __component__.exports;\nexport {\n NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-Dg6UqMN1.mjs.map\n","import { a as mdiCheck, e as mdiContentCopy } from \"./mdi-DkJglNiS.mjs\";\nimport { toValue } from \"@vueuse/core\";\nimport { ref, computed } from \"vue\";\nimport { r as register, d as t22, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nregister(t22);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst DELAY = 2e3;\nfunction useCopy(content) {\n const isCopied = ref(false);\n const icon = computed(() => isCopied.value ? mdiCheck : mdiContentCopy);\n const altText = computed(() => isCopied.value ? t(\"Copied\") : t(\"Copy to clipboard\"));\n async function copy() {\n if (isCopied.value) {\n return;\n }\n const value = toValue(content);\n try {\n await navigator.clipboard.writeText(value);\n } catch {\n prompt(\"\", value);\n }\n isCopied.value = true;\n setTimeout(() => {\n isCopied.value = false;\n }, DELAY);\n }\n return {\n isCopied,\n copy,\n icon,\n altText\n };\n}\nexport {\n useCopy as u\n};\n//# sourceMappingURL=useCopy-C-jNoLry.mjs.map\n","import '../assets/NcKbd-IflT8hS_.css';\nimport { defineComponent, computed } from \"vue\";\nimport { r as register, y as t8, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t8);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: void 0 },\n mac: { type: [Boolean, null], default: isMac }\n },\n setup(__props) {\n const props = __props;\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => props.symbol && labels.value[props.symbol] || props.symbol);\n return { __sfc: true, props, labels, label };\n }\n});\nconst kbd = \"_kbd_yM-sL\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_eWxAA\",\n kbd\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"kbd\", { class: _vm.$style.kbd }, [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_setup.label) + \" \")];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcKbd = __component__.exports;\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-D86qGvDb.mjs.map\n","import '../assets/NcHotkeyList-XE5Xd_iE.css';\nimport { defineComponent } from \"vue\";\nimport { r as register, z as t31, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return { __sfc: true, labelId, t };\n }\n});\nconst hotkeyList = \"_hotkeyList_OojgM\";\nconst hotkeyList__heading = \"_hotkeyList__heading_Co5pe\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: _vm.$style.hotkeyList }, [_c(\"div\", { class: [_vm.$style.hotkeyList__heading, { \"hidden-visually\": !_vm.label }], attrs: { \"id\": _setup.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label || _setup.t(\"Keyboard shortcuts\")) + \" \")]), _c(\"ul\", { attrs: { \"aria-labelledby\": _setup.labelId } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcHotkeyList = __component__.exports;\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-BACQoMeA.mjs.map\n","import '../assets/NcListItem-3a4Lafwa.css';\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcCounterBubble } from \"./NcCounterBubble-oxV8oMlX.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst [major] = loadState(\"core\", \"config\", { version: \"30.0\" }).version.split(\".\", 2) ?? [];\nconst isLegacy = major && Number.parseInt(major) < 30;\nconst _sfc_main = {\n name: \"NcListItem\",\n components: {\n NcActions,\n NcCounterBubble,\n NcVNodes\n },\n props: {\n /**\n * The details text displayed in the upper right part of the component\n */\n details: {\n type: String,\n default: \"\"\n },\n /**\n * Name (first line of text)\n */\n name: {\n type: String,\n default: void 0\n },\n /**\n * Pass in `true` if you want the matching behavior to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * The route for the router link.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * The value for the external link\n */\n href: {\n type: String,\n default: \"#\"\n },\n /**\n * The HTML target attribute used for the link\n */\n target: {\n type: String,\n default: \"\"\n },\n /**\n * Id for the `<a>` element\n */\n anchorId: {\n type: String,\n default: \"\"\n },\n /**\n * Make subname bold\n */\n bold: {\n type: Boolean,\n default: false\n },\n /**\n * Show the NcListItem in compact design\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Toggle the active state of the component\n */\n active: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * Aria label for the wrapper element\n */\n linkAriaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions toggle\n */\n actionsAriaLabel: {\n type: String,\n default: void 0\n },\n /**\n * If different from 0 this component will display the\n * NcCounterBubble component\n */\n counterNumber: {\n type: [Number, String],\n default: 0\n },\n /**\n * Outlined or highlighted state of the counter\n */\n counterType: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].indexOf(value) !== -1;\n }\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Show the list component layout\n */\n oneLine: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"click\",\n \"dragstart\",\n \"update:menuOpen\"\n ],\n setup() {\n return {\n isLegacy\n };\n },\n data() {\n return {\n hovered: false,\n hasActions: false,\n hasSubname: false,\n displayActionsOnHoverFocus: false,\n menuOpen: false,\n hasIndicator: false,\n hasDetails: false\n };\n },\n computed: {\n showAdditionalElements() {\n return !this.displayActionsOnHoverFocus || this.forceDisplayActions;\n },\n showDetails() {\n return (this.details !== \"\" || this.hasDetails) && (!this.displayActionsOnHoverFocus || this.forceDisplayActions);\n }\n },\n watch: {\n menuOpen(newValue) {\n if (!newValue && !this.hovered) {\n this.displayActionsOnHoverFocus = false;\n }\n }\n },\n mounted() {\n this.checkSlots();\n },\n updated() {\n this.checkSlots();\n },\n methods: {\n /**\n * Handle link click\n *\n * @param {MouseEvent|KeyboardEvent} event - Native click or keydown event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n showActions() {\n if (this.hasActions) {\n this.displayActionsOnHoverFocus = true;\n }\n this.hovered = false;\n },\n hideActions() {\n this.displayActionsOnHoverFocus = false;\n },\n /**\n * @param {FocusEvent} event UI event\n */\n handleBlur(event) {\n if (this.menuOpen) {\n return;\n }\n if (this.$refs[\"list-item\"].contains(event.relatedTarget)) {\n return;\n }\n this.hideActions();\n },\n /**\n * Hide the actions on mouseleave unless the menu is open\n */\n handleMouseleave() {\n if (!this.menuOpen) {\n this.displayActionsOnHoverFocus = false;\n }\n this.hovered = false;\n },\n handleMouseover() {\n this.showActions();\n this.hovered = true;\n },\n handleActionsUpdateOpen(e) {\n this.menuOpen = e;\n this.$emit(\"update:menuOpen\", e);\n },\n // Check if subname and actions slots are populated\n checkSlots() {\n if (this.hasActions !== !!this.$slots.actions) {\n this.hasActions = !!this.$slots.actions;\n }\n if (this.hasSubname !== !!this.$slots.subname) {\n this.hasSubname = !!this.$slots.subname;\n }\n if (this.hasIndicator !== !!this.$slots.indicator) {\n this.hasIndicator = !!this.$slots.indicator;\n }\n if (this.hasDetails !== !!this.$slots.details) {\n this.hasDetails = !!this.$slots.details;\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.to ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.to ? true : null, \"to\": _vm.to, \"exact\": _vm.to ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"li\", { staticClass: \"list-item__wrapper\", class: { \"list-item__wrapper--active\": _vm.active ?? isActive } }, [_c(\"div\", { ref: \"list-item\", staticClass: \"list-item\", class: {\n \"list-item--compact\": _vm.compact,\n \"list-item--legacy\": _vm.isLegacy,\n \"list-item--one-line\": _vm.oneLine\n }, on: { \"mouseover\": _vm.handleMouseover, \"mouseleave\": _vm.handleMouseleave } }, [_c(\"a\", { staticClass: \"list-item__anchor\", attrs: { \"id\": _vm.anchorId || void 0, \"aria-label\": _vm.linkAriaLabel, \"href\": routerLinkHref || _vm.href, \"target\": _vm.target || (_vm.href === \"#\" ? void 0 : \"_blank\"), \"rel\": _vm.href === \"#\" ? void 0 : \"noopener noreferrer\" }, on: { \"focus\": _vm.showActions, \"focusout\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"dragstart\": function($event) {\n return _vm.$emit(\"dragstart\", $event);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.hideActions.apply(null, arguments);\n } } }, [_vm._t(\"icon\"), _c(\"div\", { staticClass: \"list-item-content\" }, [_c(\"div\", { staticClass: \"list-item-content__main\" }, [_c(\"div\", { staticClass: \"list-item-content__name\" }, [_vm._t(\"name\", function() {\n return [_vm._v(_vm._s(_vm.name))];\n })], 2), _vm.hasSubname ? _c(\"div\", { staticClass: \"list-item-content__subname\", class: { \"list-item-content__subname--bold\": _vm.bold } }, [_vm._t(\"subname\")], 2) : _vm._e()]), _c(\"div\", { staticClass: \"list-item-content__details\" }, [_vm.showDetails ? _c(\"div\", { staticClass: \"list-item-details__details\" }, [_vm._t(\"details\", function() {\n return [_vm._v(_vm._s(_vm.details))];\n })], 2) : _vm._e(), _vm.counterNumber || _vm.hasIndicator ? _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showAdditionalElements, expression: \"showAdditionalElements\" }], staticClass: \"list-item-details__extra\" }, [_vm.counterNumber ? _c(\"NcCounterBubble\", { staticClass: \"list-item-details__counter\", attrs: { \"active\": _vm.active ?? isActive, \"type\": _vm.counterType } }, [_vm._v(\" \" + _vm._s(_vm.counterNumber) + \" \")]) : _vm._e(), _vm.hasIndicator ? _c(\"span\", { staticClass: \"list-item-details__indicator\" }, [_vm._t(\"indicator\")], 2) : _vm._e()], 1) : _vm._e()])])], 2), _vm.$slots[\"extra-actions\"] ? _c(\"div\", { staticClass: \"list-item-content__extra-actions\" }, [_vm._t(\"extra-actions\")], 2) : _vm._e(), _vm.forceDisplayActions || _vm.displayActionsOnHoverFocus ? _c(\"div\", { staticClass: \"list-item-content__actions\", on: { \"focusout\": _vm.handleBlur } }, [_c(\"NcActions\", { ref: \"actions\", attrs: { \"primary\": _vm.active ?? isActive, \"force-menu\": _vm.forceMenu, \"aria-label\": _vm.actionsAriaLabel }, on: { \"update:open\": _vm.handleActionsUpdateOpen }, scopedSlots: _vm._u([_vm.$slots[\"actions-icon\"] ? { key: \"icon\", fn: function() {\n return [_vm._t(\"actions-icon\")];\n }, proxy: true } : null], null, true) }, [_vm._t(\"actions\")], 2)], 1) : _vm._e(), _vm.$slots.extra ? _c(\"div\", { staticClass: \"list-item__extra\" }, [_vm._t(\"extra\")], 2) : _vm._e()])])];\n } }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9ea2f116\"\n);\nconst NcListItem = __component__.exports;\nexport {\n NcListItem as N\n};\n//# sourceMappingURL=NcListItem-DFrhF-DU.mjs.map\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n case 'ArrayBuffer':\n return as(new Uint8Array(value).buffer, value);\n case 'DataView': {\n const { buffer } = new Uint8Array(value);\n return as(new DataView(buffer), value);\n }\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n case 'DataView':\n return [ARRAY, asString];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type) {\n let spread = value;\n if (type === 'DataView') {\n spread = new Uint8Array(value.buffer);\n }\n else if (type === 'ArrayBuffer') {\n spread = new Uint8Array(value);\n }\n return as([type, [...spread]], value);\n }\n\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is an element.\n * @param {unknown} this\n * Context object (`this`) to call `test` with\n * @param {unknown} [element]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * Position of `element` in its parent.\n * @param {Parents | null | undefined} [parent]\n * Parent of `element`.\n * @returns {boolean}\n * Whether this is an element and passes a test.\n *\n * @typedef {Array<TestFunction | string> | TestFunction | string | null | undefined} Test\n * Check for an arbitrary element.\n *\n * * when `string`, checks that the element has that tag name\n * * when `function`, see `TestFunction`\n * * when `Array`, checks if one of the subtests pass\n *\n * @callback TestFunction\n * Check if an element passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Element} element\n * An element.\n * @param {number | undefined} [index]\n * Position of `element` in its parent.\n * @param {Parents | undefined} [parent]\n * Parent of `element`.\n * @returns {boolean | undefined | void}\n * Whether this element passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `element` is an `Element` and whether it passes the given test.\n *\n * @param element\n * Thing to check, typically `element`.\n * @param test\n * Check for a specific element.\n * @param index\n * Position of `element` in its parent.\n * @param parent\n * Parent of `element`.\n * @param context\n * Context object (`this`) to call `test` with.\n * @returns\n * Whether `element` is an `Element` and passes a test.\n * @throws\n * When an incorrect `test`, `index`, or `parent` is given; there is no error\n * thrown when `element` is not a node or not an element.\n */\nexport const isElement =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends TestFunction>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n * (<Condition extends string>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n * ((element?: null | undefined) => false) &\n * ((element: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n * ((element: unknown, test?: Test, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [element]\n * @param {Test | undefined} [test]\n * @param {number | null | undefined} [index]\n * @param {Parents | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (element, test, index, parent, context) {\n const check = convertElement(test)\n\n if (\n index !== null &&\n index !== undefined &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite `index`')\n }\n\n if (\n parent !== null &&\n parent !== undefined &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected valid `parent`')\n }\n\n if (\n (index === null || index === undefined) !==\n (parent === null || parent === undefined)\n ) {\n throw new Error('Expected both `index` and `parent`')\n }\n\n return looksLikeAnElement(element)\n ? check.call(context, element, index, parent)\n : false\n }\n )\n\n/**\n * Generate a check from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * an `element`, `index`, and `parent`.\n *\n * @param test\n * A test for a specific element.\n * @returns\n * A check.\n */\nexport const convertElement =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends TestFunction>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n * (<Condition extends string>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n * ((test?: null | undefined) => (element?: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test | null | undefined} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n // Assume array.\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as `test`')\n }\n )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array<TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn a string into a test for an element with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction tagNameFactory(check) {\n return castFactory(tagName)\n\n /**\n * @param {Element} element\n * @returns {boolean}\n */\n function tagName(element) {\n return element.tagName === check\n }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeAnElement(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} element\n * @returns {element is Element}\n */\nfunction element(element) {\n return Boolean(\n element &&\n typeof element === 'object' &&\n 'type' in element &&\n element.type === 'element' &&\n 'tagName' in element &&\n typeof element.tagName === 'string'\n )\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Element}\n */\nfunction looksLikeAnElement(value) {\n return (\n value !== null &&\n typeof value === 'object' &&\n 'type' in value &&\n 'tagName' in value\n )\n}\n","// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\n// Windows paths like `c:\\`\nconst WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\\\/;\n\nexport default function isAbsoluteUrl(url) {\n\tif (typeof url !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof url}\\``);\n\t}\n\n\tif (WINDOWS_PATH_REGEX.test(url)) {\n\t\treturn false;\n\t}\n\n\treturn ABSOLUTE_URL_REGEX.test(url);\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-is-element').Test} Test\n */\n\n/**\n * @callback CreateContent\n * Create a target for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array<ElementContent> | ElementContent | null | undefined}\n * Content to add.\n *\n * @callback CreateProperties\n * Create properties for an element.\n * @param {Element} element\n * Element to check.\n * @returns {Properties | null | undefined}\n * Properties to add.\n *\n * @callback CreateRel\n * Create a `rel` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array<string> | string | null | undefined}\n * `rel` to use.\n *\n * @callback CreateTarget\n * Create a `target` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Target | null | undefined}\n * `target` to use.\n *\n * @typedef Options\n * Configuration.\n * @property {Array<ElementContent> | CreateContent | ElementContent | null | undefined} [content]\n * Content to insert at the end of external links (optional); will be\n * inserted in a `<span>` element; useful for improving accessibility by\n * giving users advanced warning when opening a new window.\n * @property {CreateProperties | Properties | null | undefined} [contentProperties]\n * Properties to add to the `span` wrapping `content` (optional).\n * @property {CreateProperties | Properties | null | undefined} [properties]\n * Properties to add to the link itself (optional).\n * @property {Array<string> | null | undefined} [protocols=['http', 'https']]\n * Protocols to check, such as `mailto` or `tel` (default: `['http',\n * 'https']`).\n * @property {Array<string> | CreateRel | string | null | undefined} [rel=['nofollow']]\n * Link types to hint about the referenced documents (default:\n * `['nofollow']`); pass an empty array (`[]`) to not set `rel`s on links;\n * when using a `target`, add `noopener` and `noreferrer` to avoid\n * exploitation of the `window.opener` API.\n * @property {CreateTarget | Target | null | undefined} [target]\n * How to display referenced documents; the default (nothing) is to not set\n * `target`s on links.\n * @property {Test | null | undefined} [test]\n * Extra test to define which external link elements are modified (optional);\n * any test that can be given to `hast-util-is-element` is supported.\n *\n * @typedef {'_blank' | '_parent' | '_self' | '_top'} Target\n * Target.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {convertElement} from 'hast-util-is-element'\nimport isAbsoluteUrl from 'is-absolute-url'\nimport {parse} from 'space-separated-tokens'\nimport {visit} from 'unist-util-visit'\n\nconst defaultProtocols = ['http', 'https']\nconst defaultRel = ['nofollow']\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Automatically add `rel` (and `target`?) to external links.\n *\n * ###### Notes\n *\n * You should [likely not configure `target`][css-tricks].\n *\n * You should at least set `rel` to `['nofollow']`.\n * When using a `target`, add `noopener` and `noreferrer` to avoid exploitation\n * of the `window.opener` API.\n *\n * When using a `target`, you should set `content` to adhere to accessibility\n * guidelines by giving users advanced warning when opening a new window.\n *\n * [css-tricks]: https://css-tricks.com/use-target_blank/\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function rehypeExternalLinks(options) {\n const settings = options || emptyOptions\n const protocols = settings.protocols || defaultProtocols\n const is = convertElement(settings.test)\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n visit(tree, 'element', function (node, index, parent) {\n if (\n node.tagName === 'a' &&\n typeof node.properties.href === 'string' &&\n is(node, index, parent)\n ) {\n const url = node.properties.href\n\n if (\n isAbsoluteUrl(url)\n ? protocols.includes(url.slice(0, url.indexOf(':')))\n : url.startsWith('//')\n ) {\n const contentRaw = createIfNeeded(settings.content, node)\n const content =\n contentRaw && !Array.isArray(contentRaw) ? [contentRaw] : contentRaw\n const relRaw = createIfNeeded(settings.rel, node) || defaultRel\n const rel = typeof relRaw === 'string' ? parse(relRaw) : relRaw\n const target = createIfNeeded(settings.target, node)\n\n const properties = createIfNeeded(settings.properties, node)\n\n if (properties) {\n Object.assign(node.properties, structuredClone(properties))\n }\n\n if (rel.length > 0) {\n node.properties.rel = [...rel]\n }\n\n if (target) {\n node.properties.target = target\n }\n\n if (content) {\n const properties =\n createIfNeeded(settings.contentProperties, node) || {}\n\n node.children.push({\n type: 'element',\n tagName: 'span',\n properties: structuredClone(properties),\n children: structuredClone(content)\n })\n }\n }\n }\n })\n }\n}\n\n/**\n * Call a function to get a return value or use the value.\n *\n * @template T\n * Type of value.\n * @param {T} value\n * Value.\n * @param {Element} element\n * Element.\n * @returns {T extends Function ? ReturnType<T> : T}\n * Result.\n */\nfunction createIfNeeded(value, element) {\n return typeof value === 'function' ? value(element) : value\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","import {\n boolean,\n number,\n spaceSeparated,\n commaSeparated,\n commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let prop = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback CreateElementLike\n * Function that works somewhat like `React.createElement`.\n * @param {string} name\n * Element name.\n * @param {any} attributes\n * Properties.\n * @param {Array<any>} [children]\n * Children.\n * @returns {any}\n * Something.\n *\n * @typedef State\n * Info passed around.\n * @property {Schema} schema\n * Current schema.\n * @property {string | undefined} prefix\n * Prefix to use.\n * @property {number} key\n * Current key.\n * @property {boolean} react\n * Looks like React.\n * @property {boolean} vue\n * Looks like Vue.\n * @property {boolean} vdom\n * Looks like vdom.\n * @property {boolean} hyperscript\n * Looks like `hyperscript`.\n *\n * @typedef Options\n * Configuration.\n * @property {string | null | undefined} [prefix]\n * Prefix to use as a prefix for keys passed in `props` to `h()`, this\n * behavior is turned off by passing `false` and turned on by passing a\n * `string`.\n * By default, `h-` is used as a prefix if the given `h` is detected as being\n * `virtual-dom/h` or `React.createElement`\n * @property {'html' | 'svg' | null | undefined} [space]\n * Whether `node` is in the `'html'` or `'svg'` space.\n * If an `<svg>` element is found when inside the HTML space, `toH`\n * automatically switches to the SVG space when entering the element, and\n * switches back when exiting.\n */\n\nimport {html, svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport styleToObject from 'style-to-object'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {CreateElementLike} H\n * Type of hyperscript function.\n * @param {H} h\n * HyperScript function.\n * @param {Node} tree\n * Tree to transform.\n * @param {string | boolean | Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {ReturnType<H>}\n * Return type of the hyperscript function.\n */\n// eslint-disable-next-line complexity\nexport function toH(h, tree, options) {\n if (typeof h !== 'function') {\n throw new TypeError('h is not a function')\n }\n\n const r = react(h)\n const v = vue(h)\n const vd = vdom(h)\n /** @type {string|boolean|null|undefined} */\n let prefix\n /** @type {Element} */\n let node\n\n if (typeof options === 'string' || typeof options === 'boolean') {\n prefix = options\n options = {}\n } else {\n if (!options) options = {}\n prefix = options.prefix\n }\n\n if (tree && tree.type === 'root') {\n const head = tree.children[0]\n // @ts-expect-error Allow `doctypes` in there, we’ll filter them out later.\n node =\n tree.children.length === 1 && head.type === 'element'\n ? head\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: tree.children\n }\n } else if (tree && tree.type === 'element') {\n node = tree\n } else {\n throw new Error(\n 'Expected root or element, not `' + ((tree && tree.type) || tree) + '`'\n )\n }\n\n return transform(h, node, {\n schema: options.space === 'svg' ? svg : html,\n prefix:\n prefix === undefined || prefix === null\n ? r || v || vd\n ? 'h-'\n : undefined\n : typeof prefix === 'string'\n ? prefix\n : prefix\n ? 'h-'\n : undefined,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n/**\n * Transform a hast node through a hyperscript interface to *anything*!\n *\n * @template {CreateElementLike} H\n * Type of hyperscript function.\n * @param {H} h\n * HyperScript function.\n * @param {Element} node\n * Node to transform.\n * @param {State} state\n * Info passed around.\n * @returns {ReturnType<H>}\n * Return type of the hyperscript function.\n */\nfunction transform(h, node, state) {\n const parentSchema = state.schema\n let schema = parentSchema\n let name = node.tagName\n /** @type {Record<string, unknown>} */\n const attributes = {}\n /** @type {Array<ReturnType<H>|string>} */\n const nodes = []\n let index = -1\n /** @type {string} */\n let key\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n state.schema = schema\n }\n\n for (key in node.properties) {\n if (node.properties && own.call(node.properties, key)) {\n addAttribute(attributes, key, node.properties[key], state, name)\n }\n }\n\n if (state.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else if (schema.space) {\n attributes.namespace = webNamespaces[schema.space]\n }\n }\n\n if (state.prefix) {\n state.key++\n attributes.key = state.prefix + state.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n const value = node.children[index]\n\n if (value.type === 'element') {\n nodes.push(transform(h, value, state))\n } else if (value.type === 'text') {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n state.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length > 0\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\n/**\n * Add an attribute to `props`.\n *\n * @param {Record<string, unknown>} props\n * Map.\n * @param {string} prop\n * Key.\n * @param {unknown} value\n * Value.\n * @param {State} state\n * Info passed around.\n * @param {string} name\n * Element name.\n * @returns {void}\n * Nothing.\n */\n// eslint-disable-next-line complexity, max-params\nfunction addAttribute(props, prop, value, state, name) {\n const info = find(state.schema, prop)\n /** @type {string | undefined} */\n let subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value === undefined ||\n value === null ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (value === false && (state.vue || state.vdom || state.hyperscript)) ||\n (!value && info.boolean && (state.vue || state.vdom || state.hyperscript))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && state.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (state.react || state.vue || state.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n // Vue 3 (used in our tests) doesn’t need this anymore.\n // Some major in the future we can drop Vue 2 support.\n /* c8 ignore next 2 */\n if (state.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (state.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (state.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n props[subprop] = Object.assign(props[subprop] || {}, {\n [info.attribute]: value\n })\n } else if (info.space && state.react) {\n props[hastToReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n/**\n * Check if `h` is `react.createElement`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like React.\n */\nfunction react(h) {\n const node = /** @type {unknown} */ (h('div', {}))\n return Boolean(\n node &&\n // @ts-expect-error Looks like a React node.\n ('_owner' in node || '_store' in node) &&\n // @ts-expect-error Looks like a React node.\n (node.key === undefined || node.key === null)\n )\n}\n\n/**\n * Check if `h` is `hyperscript`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like `hyperscript`.\n */\nfunction hyperscript(h) {\n return 'context' in h && 'cleanup' in h\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like `virtual-dom`\n */\nfunction vdom(h) {\n const node = /** @type {unknown} */ (h('div', {}))\n // @ts-expect-error Looks like a vnode.\n return node.type === 'VirtualNode'\n}\n\n/**\n * Check if `h` is Vue.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like Vue.\n */\nfunction vue(h) {\n // Vue 3 (used in our tests) doesn’t need this anymore.\n // Some major in the future we can drop Vue 2 support.\n /* c8 ignore next 3 */\n const node = /** @type {unknown} */ (h('div', {}))\n // @ts-expect-error Looks like a Vue node.\n return Boolean(node && node.context && node.context._isVue)\n}\n\n/**\n * Parse a declaration into an object.\n *\n * @param {string} value\n * CSS declarations.\n * @param {string} tagName\n * Tag name.\n * @returns {Record<string, string>}\n * Properties.\n */\nfunction parseStyle(value, tagName) {\n /** @type {Record<string, string>} */\n const result = {}\n\n try {\n styleToObject(value, (name, value) => {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n\n result[\n name.replace(\n /-([a-z])/g,\n /**\n * @param {string} _\n * @param {string} $1\n * @returns {string}\n */\n (_, $1) => $1.toUpperCase()\n )\n ] = value\n })\n } catch (error_) {\n const error = /** @type {Error} */ (error_)\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'object') {\n return ('length' in test ? anyFactory : matchesFactory)(test)\n }\n\n if (typeof test === 'function') {\n return test\n }\n\n throw new Error('Expected function, string, or object as test')\n}\n\nfunction convertAll(tests) {\n var results = []\n var length = tests.length\n var index = -1\n\n while (++index < length) {\n results[index] = convert(tests[index])\n }\n\n return results\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction matchesFactory(test) {\n return matches\n\n function matches(node) {\n var key\n\n for (key in test) {\n if (node[key] !== test[key]) {\n return false\n }\n }\n\n return true\n }\n}\n\nfunction anyFactory(tests) {\n var checks = convertAll(tests)\n var length = checks.length\n\n return matches\n\n function matches() {\n var index = -1\n\n while (++index < length) {\n if (checks[index].apply(this, arguments)) {\n return true\n }\n }\n\n return false\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type\n\n function type(node) {\n return Boolean(node && node.type === test)\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n var is\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n is = convert(test)\n\n one(tree, null, [])\n\n // Visit a single node.\n function one(node, index, parents) {\n var result = []\n var subresult\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents.concat(node)))\n return subresult[0] === EXIT ? subresult : result\n }\n\n return result\n }\n\n // Visit children in `parent`.\n function all(children, parents) {\n var min = -1\n var step = reverse ? -1 : 1\n var index = (reverse ? children.length : min) + step\n var result\n\n while (index > min && index < children.length) {\n result = one(children[index], index, parents)\n\n if (result[0] === EXIT) {\n return result\n }\n\n index = typeof result[1] === 'number' ? result[1] : index + step\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hastCssPropertyMap = {\n align: 'text-align',\n valign: 'vertical-align',\n height: 'height',\n width: 'width',\n};\n\nmodule.exports = function tableCellStyle(node) {\n visit(node, 'element', visitor);\n return node;\n};\n\nfunction visitor(node) {\n if (node.tagName !== 'tr' && node.tagName !== 'td' && node.tagName !== 'th') {\n return;\n }\n\n var hastName;\n var cssName;\n for (hastName in hastCssPropertyMap) {\n if (\n !hasOwnProperty.call(hastCssPropertyMap, hastName) ||\n node.properties[hastName] === undefined\n ) {\n continue;\n }\n cssName = hastCssPropertyMap[hastName];\n appendStyle(node, cssName, node.properties[hastName]);\n delete node.properties[hastName];\n }\n}\n\nfunction appendStyle(node, property, value) {\n var prevStyle = (node.properties.style || '').trim();\n if (prevStyle && !/;\\s*/.test(prevStyle)) {\n prevStyle += ';';\n }\n if (prevStyle) {\n prevStyle += ' ';\n }\n var nextStyle = prevStyle + property + ': ' + value + ';';\n node.properties.style = nextStyle;\n}\n","/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n * Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`).\n * If a node is passed it must be a `Text` node, whose `value` field is\n * checked.\n */\nexport function whitespace(thing) {\n /** @type {string} */\n const value =\n // @ts-expect-error looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-expect-error looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See <https://infra.spec.whatwg.org/#ascii-whitespace>.\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<unknown>} ReactElement\n *\n * @callback CreateElementLike\n * @param {any} name\n * @param {any} props\n * @param {...ReactNode} children\n * @returns {ReactNode}\n *\n * @typedef SharedOptions\n * Base configuration (without `components`).\n * @property {CreateElementLike} createElement\n * How to create elements or components.\n * You should typically pass `React.createElement`.\n * @property {((props: any) => ReactNode)|undefined} [Fragment]\n * Create fragments instead of an outer `<div>` if available.\n * You should typically pass `React.Fragment`.\n * @property {string|undefined} [prefix='h-']\n * React key prefix.\n * @property {boolean|undefined} [fixTableCellAlign=true]\n * Fix obsolete align attributes on table cells by turning them\n * into inline styles.\n * Keep it on when working with markdown, turn it off when working\n * with markup for emails.\n * The default is `true`.\n *\n * @typedef {SharedOptions & (import('./complex-types').ComponentsWithNodeOptions|import('./complex-types').ComponentsWithoutNodeOptions)} Options\n * Configuration.\n */\n\nimport {toH} from 'hast-to-hyperscript'\n// @ts-expect-error: hush.\nimport tableCellStyle from '@mapbox/hast-util-table-cell-style'\nimport {whitespace} from 'hast-util-whitespace'\n\nconst own = {}.hasOwnProperty\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * Compile HTML to React nodes.\n *\n * > 👉 **Note**: this compiler returns a React node where compilers typically\n * > return `string`.\n * > When using `.stringify`, the result is such a React node.\n * > When using `.process` (or `.processSync`), the result is available at\n * > `file.result`.\n *\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options], Root, ReactElement>}\n */\nexport default function rehypeReact(options) {\n if (!options || typeof options.createElement !== 'function') {\n throw new TypeError('createElement is not a function')\n }\n\n const createElement = options.createElement\n\n const fixTableCellAlign = options.fixTableCellAlign !== false\n\n Object.assign(this, {Compiler: compiler})\n\n /** @type {import('unified').CompilerFunction<Root, ReactNode>} */\n function compiler(node) {\n /** @type {ReactNode} */\n let result = toH(\n // @ts-expect-error: assume `name` is a known element.\n h,\n fixTableCellAlign ? tableCellStyle(node) : node,\n options.prefix\n )\n\n if (node.type === 'root') {\n // Invert <https://github.com/syntax-tree/hast-to-hyperscript/blob/d227372/index.js#L46-L56>.\n result =\n result &&\n typeof result === 'object' &&\n 'type' in result &&\n 'props' in result &&\n result.type === 'div' &&\n (node.children.length !== 1 || node.children[0].type !== 'element')\n ? // `children` does exist.\n // type-coverage:ignore-next-line\n result.props.children\n : [result]\n\n return createElement(options.Fragment || 'div', {}, result)\n }\n\n return result\n }\n\n /**\n * @param {keyof JSX.IntrinsicElements} name\n * @param {Record<string, unknown>} props\n * @param {Array<ReactNode>} [children]\n * @returns {ReactNode}\n */\n function h(name, props, children) {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we remove the pretty lines for now.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n // See: <https://github.com/rehypejs/rehype-react/pull/29>.\n // See: <https://github.com/rehypejs/rehype-react/pull/32>.\n // See: <https://github.com/rehypejs/rehype-react/pull/45>.\n if (children && tableElements.has(name)) {\n children = children.filter((child) => !whitespace(child))\n }\n\n if (options.components && own.call(options.components, name)) {\n const component = options.components[name]\n\n if (options.passNode && typeof component === 'function') {\n // @ts-expect-error: `toH` passes the current node.\n // type-coverage:ignore-next-line\n props = Object.assign({node: this}, props)\n }\n\n return createElement(component, props, children)\n }\n\n return createElement(name, props, children)\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array<string>`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array<Nodes> | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parents>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array<Nodes>} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/**\n * Turn normal line endings into hard breaks.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function newlineToBreak(tree) {\n findAndReplace(tree, [/\\r?\\n|\\r/g, replace])\n}\n\n/**\n * Replace line endings.\n *\n * @type {ReplaceFunction}\n */\nfunction replace() {\n return {type: 'break'}\n}\n","/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {newlineToBreak} from 'mdast-util-newline-to-break'\n\n/**\n * Support hard breaks without needing spaces or escapes (turns enters into\n * `<br>`s).\n *\n * @returns\n * Transform.\n */\nexport default function remarkBreaks() {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n newlineToBreak(tree)\n }\n}\n","/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const character = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n if (\n character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n value !== 'semi'\n ) {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n return character === characterReference ? false : character\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {undefined}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array<unknown>} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}","/**\n * @import {\n * Extension,\n * Handles,\n * HtmlExtension,\n * NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * List of constructs to merge into.\n * @param {Array<unknown>} list\n * List of constructs to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, \" \")\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array<string>} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = \"\\uFFFD\";\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns {State}\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n * Content.\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, contentStart, \"linePrefix\");\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter(\"paragraph\");\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(\"chunkText\", {\n contentType: \"text\",\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit(\"chunkText\");\n effects.exit(\"paragraph\");\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit(\"chunkText\");\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}","/**\n * @import {\n * Construct,\n * ContainerState,\n * InitialConstruct,\n * Initializer,\n * Point,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n * Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array<StackItem>} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter(\"chunkFlow\", {\n _tokenizer: childFlow,\n contentType: \"flow\",\n previous: childToken\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit(\"chunkFlow\"), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit(\"chunkFlow\"));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * Token.\n * @param {boolean | undefined} [endOfFile]\n * Whether the token is at the end of the file (default: `false`).\n * @returns {undefined}\n * Nothing.\n */\n function writeToChild(token, endOfFile) {\n const stream = self.sliceStream(token);\n if (endOfFile) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // …and either is not ended yet…\n !childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * Size.\n * @returns {undefined}\n * Nothing.\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n * Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array<Event>} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n partial: true,\n tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit,\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter(\"blockQuote\", {\n _container: true\n });\n state.open = true;\n }\n effects.enter(\"blockQuotePrefix\");\n effects.enter(\"blockQuoteMarker\");\n effects.consume(code);\n effects.exit(\"blockQuoteMarker\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter(\"blockQuotePrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"blockQuotePrefixWhitespace\");\n effects.exit(\"blockQuotePrefix\");\n return ok;\n }\n effects.exit(\"blockQuotePrefix\");\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(\"blockQuote\");\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n partial: true,\n tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter(\"codeIndented\");\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(\"codeIndented\");\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n * - Array-length modifications at the high end of an array (push/pop) are\n * expected to be common and are implemented in (amortized) time\n * proportional to the number of elements added or removed, whereas\n * other operations (shift/unshift and splice) are much less efficient.\n * - Function arguments are passed on the stack, so adding tens of thousands\n * of elements to an array with `arr.push(...newElements)` will frequently\n * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n * Item type.\n */\nexport class SpliceBuffer {\n /**\n * @param {ReadonlyArray<T> | null | undefined} [initial]\n * Initial items (optional).\n * @returns\n * Splice buffer.\n */\n constructor(initial) {\n /** @type {Array<T>} */\n this.left = initial ? [...initial] : [];\n /** @type {Array<T>} */\n this.right = [];\n }\n\n /**\n * Array access;\n * does not move the cursor.\n *\n * @param {number} index\n * Index.\n * @return {T}\n * Item.\n */\n get(index) {\n if (index < 0 || index >= this.left.length + this.right.length) {\n throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n }\n if (index < this.left.length) return this.left[index];\n return this.right[this.right.length - index + this.left.length - 1];\n }\n\n /**\n * The length of the splice buffer, one greater than the largest index in the\n * array.\n */\n get length() {\n return this.left.length + this.right.length;\n }\n\n /**\n * Remove and return `list[0]`;\n * moves the cursor to `0`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n shift() {\n this.setCursor(0);\n return this.right.pop();\n }\n\n /**\n * Slice the buffer to get an array;\n * does not move the cursor.\n *\n * @param {number} start\n * Start.\n * @param {number | null | undefined} [end]\n * End (optional).\n * @returns {Array<T>}\n * Array of items.\n */\n slice(start, end) {\n /** @type {number} */\n const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n if (stop < this.left.length) {\n return this.left.slice(start, stop);\n }\n if (start > this.left.length) {\n return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n }\n return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n }\n\n /**\n * Mimics the behavior of Array.prototype.splice() except for the change of\n * interface necessary to avoid segfaults when patching in very large arrays.\n *\n * This operation moves cursor is moved to `start` and results in the cursor\n * placed after any inserted items.\n *\n * @param {number} start\n * Start;\n * zero-based index at which to start changing the array;\n * negative numbers count backwards from the end of the array and values\n * that are out-of bounds are clamped to the appropriate end of the array.\n * @param {number | null | undefined} [deleteCount=0]\n * Delete count (default: `0`);\n * maximum number of elements to delete, starting from start.\n * @param {Array<T> | null | undefined} [items=[]]\n * Items to include in place of the deleted items (default: `[]`).\n * @return {Array<T>}\n * Any removed items.\n */\n splice(start, deleteCount, items) {\n /** @type {number} */\n const count = deleteCount || 0;\n this.setCursor(Math.trunc(start));\n const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n if (items) chunkedPush(this.left, items);\n return removed.reverse();\n }\n\n /**\n * Remove and return the highest-numbered item in the array, so\n * `list[list.length - 1]`;\n * Moves the cursor to `length`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n pop() {\n this.setCursor(Number.POSITIVE_INFINITY);\n return this.left.pop();\n }\n\n /**\n * Inserts a single item to the high-numbered side of the array;\n * moves the cursor to `length`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n push(item) {\n this.setCursor(Number.POSITIVE_INFINITY);\n this.left.push(item);\n }\n\n /**\n * Inserts many items to the high-numbered side of the array.\n * Moves the cursor to `length`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n pushMany(items) {\n this.setCursor(Number.POSITIVE_INFINITY);\n chunkedPush(this.left, items);\n }\n\n /**\n * Inserts a single item to the low-numbered side of the array;\n * Moves the cursor to `0`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n unshift(item) {\n this.setCursor(0);\n this.right.push(item);\n }\n\n /**\n * Inserts many items to the low-numbered side of the array;\n * moves the cursor to `0`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n unshiftMany(items) {\n this.setCursor(0);\n chunkedPush(this.right, items.reverse());\n }\n\n /**\n * Move the cursor to a specific position in the array. Requires\n * time proportional to the distance moved.\n *\n * If `n < 0`, the cursor will end up at the beginning.\n * If `n > length`, the cursor will end up at the end.\n *\n * @param {number} n\n * Position.\n * @return {undefined}\n * Nothing.\n */\n setCursor(n) {\n if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n if (n < this.left.length) {\n // Move cursor to the this.left\n const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n chunkedPush(this.right, removed.reverse());\n } else {\n // Move cursor to the this.right\n const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n chunkedPush(this.left, removed.reverse());\n }\n }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n * Item type.\n * @param {Array<T>} list\n * List to inject into.\n * @param {ReadonlyArray<T>} right\n * Items to inject.\n * @return {undefined}\n * Nothing.\n */\nfunction chunkedPush(list, right) {\n /** @type {number} */\n let chunkStart = 0;\n if (right.length < 10000) {\n list.push(...right);\n } else {\n while (chunkStart < right.length) {\n list.push(...right.slice(chunkStart, chunkStart + 10000));\n chunkStart += 10000;\n }\n }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n /** @type {Record<string, number>} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array<Event>} */\n let parameters;\n /** @type {Array<Event>} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n const events = new SpliceBuffer(eventsArray);\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events.get(index);\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === \"content\") {\n break;\n }\n if (subevents[otherIndex][1].type === \"chunkText\") {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events.get(otherIndex);\n if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events.get(lineIndex)[1].type = \"lineEndingBlank\";\n }\n otherEvent[1].type = \"lineEnding\";\n lineIndex = otherIndex;\n }\n } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n // Move past.\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = {\n ...events.get(lineIndex)[1].start\n };\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n events.splice(lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n\n // The changes to the `events` buffer must be copied back into the eventsArray\n splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n * Events.\n * @param {number} eventIndex\n * Index.\n * @returns {Record<string, number>}\n * Gaps.\n */\nfunction subcontent(events, eventIndex) {\n const token = events.get(eventIndex)[1];\n const context = events.get(eventIndex)[2];\n let startPosition = eventIndex - 1;\n /** @type {Array<number>} */\n const startPositions = [];\n let tokenizer = token._tokenizer;\n if (!tokenizer) {\n tokenizer = context.parser[token.contentType](token.start);\n if (token._contentTypeTextTrailing) {\n tokenizer._contentTypeTextTrailing = true;\n }\n }\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record<string, number>} */\n const gaps = {};\n /** @type {Array<Chunk>} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events.get(++startPosition)[1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.push([start, start + slice.length - 1]);\n events.splice(start, 2, slice);\n }\n jumps.reverse();\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n resolve: resolveContent,\n tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n partial: true,\n tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter(\"content\");\n previous = effects.enter(\"chunkContent\", {\n contentType: \"content\"\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(\"chunkContent\");\n effects.exit(\"content\");\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit(\"chunkContent\");\n previous.next = effects.enter(\"chunkContent\", {\n contentType: \"content\",\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit(\"chunkContent\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, prefixed, \"linePrefix\");\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}","/**\n * @import {\n * Effects,\n * State,\n * TokenizeContext,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return atBreak;\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}","/**\n * @import {\n * Code,\n * Effects,\n * State,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, atBreak, \"linePrefix\");\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns {State}\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n }\n return ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n partial: true,\n tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(\"definition\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code);\n effects.exit(\"definitionMarker\");\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"definition\");\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n resolve: resolveHeadingAtx,\n tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === \"whitespace\") {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: \"atxHeadingText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: \"chunkText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: \"text\"\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(\"atxHeading\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"atxHeading\");\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, \"whitespace\")(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(\"atxHeadingText\");\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingText\");\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n concrete: true,\n name: 'htmlFlow',\n resolveTo: resolveToHtmlFlow,\n tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n partial: true,\n tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n partial: true,\n tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"htmlFlow\");\n effects.enter(\"htmlFlowData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit(\"htmlFlowData\");\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter(\"htmlFlowData\");\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code> | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array<Event>} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array<Event>} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}","/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record<string, number>} */\n const columnStart = {};\n /** @type {Array<Construct>} */\n const resolveAllConstructs = [];\n /** @type {Array<Chunk>} */\n let chunks = [];\n /** @type {Array<Token>} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray<Construct>} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray<Construct>} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n * Token.\n * @returns {Array<Chunk>}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array<Chunk>} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array<string>} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n * Events.\n * @returns {Array<Event>}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (encoding && typeof encoding === 'object') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array<number>} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array<PhrasingContent>} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array<Element | Text>}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n // Someone can write `js python ruby`.\n const language = node.lang ? node.lang.split(/\\s+/) : []\n\n // GH/CM still drop the non-first languages.\n if (language.length > 0) {\n properties.className = ['language-' + language[0]]\n }\n\n // Create `<code>`.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `<pre>`.\n result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n state.patch(node, result)\n return result\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Delete} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strikethrough(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'del',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Emphasis} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function emphasis(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'em',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n let reuseCounter = state.footnoteCounts.get(id)\n\n if (reuseCounter === undefined) {\n reuseCounter = 0\n state.footnoteOrder.push(id)\n counter = state.footnoteOrder.length\n } else {\n counter = index + 1\n }\n\n reuseCounter += 1\n state.footnoteCounts.set(id, reuseCounter)\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + clobberPrefix + 'fn-' + safeId,\n id:\n clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Heading} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function heading(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'h' + node.depth,\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n * Info passed around.\n * @param {Html} node\n * mdast node.\n * @returns {Element | Raw | undefined}\n * hast node.\n */\nexport function html(state, node) {\n if (state.options.allowDangerousHtml) {\n /** @type {Raw} */\n const result = {type: 'raw', value: node.value}\n state.patch(node, result)\n return state.applyData(node, result)\n }\n\n return undefined\n}\n","/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract<Nodes, Reference>} node\n * Reference node (image, link).\n * @returns {Array<ElementContent>}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ImageReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function imageReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Image} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function image(state, node) {\n /** @type {Properties} */\n const properties = {src: normalizeUri(node.url)}\n\n if (node.alt !== null && node.alt !== undefined) {\n properties.alt = node.alt\n }\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {InlineCode} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function inlineCode(state, node) {\n /** @type {Text} */\n const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n state.patch(node, text)\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'code',\n properties: {},\n children: [text]\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {LinkReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function linkReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {href: normalizeUri(definition.url || '')}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Link} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function link(state, node) {\n /** @type {Properties} */\n const properties = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array<ElementContent>} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {List} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function list(state, node) {\n /** @type {Properties} */\n const properties = {}\n const results = state.all(node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n properties.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < results.length) {\n const child = results[index]\n\n if (\n child.type === 'element' &&\n child.tagName === 'li' &&\n child.properties &&\n Array.isArray(child.properties.className) &&\n child.properties.className.includes('task-list-item')\n ) {\n properties.className = ['contains-task-list']\n break\n }\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: node.ordered ? 'ol' : 'ul',\n properties,\n children: state.wrap(results, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Paragraph} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function paragraph(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastRoot} node\n * mdast node.\n * @returns {HastParents}\n * hast node.\n */\nexport function root(state, node) {\n /** @type {HastRoot} */\n const result = {type: 'root', children: state.wrap(state.all(node))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Strong} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strong(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'strong',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Table} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function table(state, node) {\n const rows = state.all(node)\n const firstRow = rows.shift()\n /** @type {Array<Element>} */\n const tableContent = []\n\n if (firstRow) {\n /** @type {Element} */\n const head = {\n type: 'element',\n tagName: 'thead',\n properties: {},\n children: state.wrap([firstRow], true)\n }\n state.patch(node.children[0], head)\n tableContent.push(head)\n }\n\n if (rows.length > 0) {\n /** @type {Element} */\n const body = {\n type: 'element',\n tagName: 'tbody',\n properties: {},\n children: state.wrap(rows, true)\n }\n\n const start = pointStart(node.children[1])\n const end = pointEnd(node.children[node.children.length - 1])\n if (start && end) body.position = {start, end}\n tableContent.push(body)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'table',\n properties: {},\n children: state.wrap(tableContent, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableRow} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function tableRow(state, node, parent) {\n const siblings = parent ? parent.children : undefined\n // Generate a body row when without parent.\n const rowIndex = siblings ? siblings.indexOf(node) : 1\n const tagName = rowIndex === 0 ? 'th' : 'td'\n // To do: option to use `style`?\n const align = parent && parent.type === 'table' ? parent.align : undefined\n const length = align ? align.length : node.children.length\n let cellIndex = -1\n /** @type {Array<ElementContent>} */\n const cells = []\n\n while (++cellIndex < length) {\n // Note: can also be undefined.\n const cell = node.children[cellIndex]\n /** @type {Properties} */\n const properties = {}\n const alignValue = align ? align[cellIndex] : undefined\n\n if (alignValue) {\n properties.align = alignValue\n }\n\n /** @type {Element} */\n let result = {type: 'element', tagName, properties, children: []}\n\n if (cell) {\n result.children = state.all(cell)\n state.patch(cell, result)\n result = state.applyData(cell, result)\n }\n\n cells.push(result)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'tr',\n properties: {},\n children: state.wrap(cells, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableCell} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function tableCell(state, node) {\n // Note: this function is normally not called: see `table-row` for how rows\n // and their cells are compiled.\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'td', // Assume body cell.\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastText} node\n * mdast node.\n * @returns {HastElement | HastText}\n * hast node.\n */\nexport function text(state, node) {\n /** @type {HastText} */\n const result = {type: 'text', value: trimLines(String(node.value))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ThematicBreak} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function thematicBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'hr',\n properties: {},\n children: []\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array<ElementContent>} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array<ElementContent>} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @import {\n * ElementContent as HastElementContent,\n * Element as HastElement,\n * Nodes as HastNodes,\n * Properties as HastProperties,\n * RootContent as HastRootContent,\n * Text as HastText\n * } from 'hast'\n * @import {\n * Definition as MdastDefinition,\n * FootnoteDefinition as MdastFootnoteDefinition,\n * Nodes as MdastNodes,\n * Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n * FootnoteBackContentTemplate,\n * FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | undefined} parent\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n * Handle nodes.\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree (default:\n * `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` property on footnotes to prevent them from\n * *clobbering* (default: `'user-content-'`).\n *\n * Pass `''` for trusted markdown and when you are careful with\n * polyfilling.\n * You could pass a different prefix.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=\"x\"></p>\n * <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n * Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n * Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map<string, MdastDefinition>} */\n const definitionById = new Map()\n /** @type {Map<string, MdastFootnoteDefinition>} */\n const footnoteById = new Map()\n /** @type {Map<string, number>} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array<HastElementContent>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array<HastElementContent>} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array<Type>} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<HastText | Type>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise<undefined>}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n * runs the (rehype) plugins used on it with a hast tree,\n * then discards the result (*bridge mode*)\n * * otherwise,\n * returns a hast tree,\n * the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**:\n * > It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc);\n * this is a heavy task as it needs a full HTML parser,\n * but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n * (and doesn’t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n * see later),\n * create a hast `text` node\n * * otherwise,\n * create a `<div>` element (which could be changed with `data.hName`),\n * with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n * When a processor was given,\n * configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n */\n\nimport {visit} from 'unist-util-visit'\n\n/**\n * Remove empty paragraphs in `tree`.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function squeezeParagraphs(tree) {\n visit(tree, function (node, index, parent) {\n if (\n index !== undefined &&\n parent &&\n node.type === 'paragraph' &&\n node.children.every(function (child) {\n return child.type === 'text' && /^\\s*$/.test(child.value)\n })\n ) {\n parent.children.splice(index, 1)\n return index\n }\n })\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n */\n\nimport {squeezeParagraphs} from 'mdast-squeeze-paragraphs'\nimport {visit} from 'unist-util-visit'\n\n/**\n * Only keep links with the given protocols.\n *\n * @param {object} options Options\n * @param {string[]} options.except - Protocols to exclude. Defauls to `['http', 'https']`.\n * @returns\n * Transform.\n */\nexport default function remarkUnlinkProtocols(\n options = {except: ['http', 'https']}\n) {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n /** @type {Map<string, string>} */\n const definitions = new Map()\n\n // Find definitions to look up linkReferences.\n visit(tree, 'definition', function (node, index, parent) {\n definitions.set(node.identifier, node.url)\n if (parent && typeof index === 'number') {\n const url = node.url\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1)\n return index\n }\n }\n })\n\n visit(tree, function (node, index, parent) {\n if (\n parent &&\n typeof index === 'number' &&\n (node.type === 'link' || node.type === 'linkReference')\n ) {\n const url =\n node.type === 'link' ? node.url : definitions.get(node.identifier)\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1, ...node.children)\n return index\n }\n }\n })\n\n squeezeParagraphs(tree)\n }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise<undefined>` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_widgets ??= {};\nwindow._registerWidget ??= (id, callback, onDestroy, props) => {\n registerWidget(id, callback, onDestroy, props);\n};\nfunction registerWidget(id, callback, onDestroy = () => {\n}, props) {\n const propsWithDefaults = {\n hasInteractiveView: true,\n fullWidth: false,\n isResizable: false,\n ...props\n };\n if (window._vue_richtext_widgets[id]) {\n logger.error(`[ReferencePicker]: Widget for id ${id} already registered`);\n return;\n }\n window._vue_richtext_widgets[id] = {\n id,\n callback,\n onDestroy,\n ...propsWithDefaults\n };\n}\nfunction renderWidget(el, options) {\n const { richObjectType, richObject, accessible, interactive } = options;\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n logger.error(\"Widget for rich object type \" + richObjectType + \" not registered\");\n return;\n }\n window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible, interactive });\n}\nfunction destroyWidget(richObjectType, el) {\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n return;\n }\n window._vue_richtext_widgets[richObjectType].onDestroy(el);\n}\nfunction isWidgetRegistered(id) {\n return !!window._vue_richtext_widgets[id];\n}\nfunction hasInteractiveView(id) {\n return !!window._vue_richtext_widgets[id]?.hasInteractiveView;\n}\nfunction hasFullWidth(id) {\n return !!window._vue_richtext_widgets[id]?.fullWidth;\n}\nfunction isResizable(id) {\n return !!window._vue_richtext_widgets[id]?.isResizable;\n}\nexport {\n renderWidget as a,\n isResizable as b,\n hasFullWidth as c,\n destroyWidget as d,\n hasInteractiveView as h,\n isWidgetRegistered as i,\n registerWidget as r\n};\n//# sourceMappingURL=widgets-XxirL-2f.mjs.map\n","import '../assets/NcReferenceWidget-Cg4xOL_8.css';\nimport { useElementSize, useIntersectionObserver } from \"@vueuse/core\";\nimport { ref, nextTick } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { r as register, l as t24, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { d as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, b as isResizable, c as hasFullWidth } from \"./widgets-XxirL-2f.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t24);\nconst IDLE_TIMEOUT = 3 * 60 * 1e3;\nconst RESIZE_KEYBOARD_STEP = 10;\nconst _sfc_main = {\n name: \"NcReferenceWidget\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n reference: {\n type: Object,\n required: true\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const widgetId = `nc-reference-widget-${createElementId()}`;\n const isVisible = ref(false);\n const widgetRoot = ref();\n const customWidget = ref();\n const { width } = useElementSize(widgetRoot);\n const { height: customWidgetHeight } = useElementSize(customWidget);\n useIntersectionObserver(widgetRoot, ([entry]) => {\n nextTick(() => {\n isVisible.value = entry.isIntersecting;\n });\n });\n return {\n width,\n isVisible,\n widgetRoot,\n customWidget,\n customWidgetHeight,\n widgetId,\n RESIZE_KEYBOARD_STEP\n };\n },\n data() {\n return {\n showInteractive: false,\n rendered: false,\n idleTimeout: null,\n isResizing: false,\n resizedHeight: null,\n resizeStartY: 0,\n resizeStartHeight: 0,\n resizeMinHeight: 100,\n resizeMaxHeight: window.innerHeight - 120\n };\n },\n computed: {\n isInteractive() {\n return !this.interactiveOptIn && this.interactive || this.showInteractive;\n },\n hasFullWidth() {\n return hasFullWidth(this.reference.richObjectType);\n },\n isResizable() {\n return isResizable(this.reference.richObjectType);\n },\n hasCustomWidget() {\n return isWidgetRegistered(this.reference.richObjectType);\n },\n customWidgetStyle() {\n if (!this.resizedHeight) {\n return null;\n }\n return { height: `${this.resizedHeight}px !important` };\n },\n ariaValueNow() {\n return Math.round(this.resizedHeight ?? this.customWidgetHeight);\n },\n hasInteractiveView() {\n return isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType);\n },\n noAccess() {\n return this.reference && !this.reference.accessible;\n },\n descriptionStyle() {\n if (this.numberOfLines === 0) {\n return {\n display: \"none\"\n };\n }\n const lineClamp = this.numberOfLines;\n return {\n lineClamp,\n webkitLineClamp: lineClamp\n };\n },\n numberOfLines() {\n const lineCountOffsets = [450, 550, 650, Infinity];\n return lineCountOffsets.findIndex((max) => this.width < max);\n },\n compactLink() {\n const link = this.reference.openGraphObject.link;\n if (!link) {\n return \"\";\n }\n if (link.startsWith(\"https://\")) {\n return link.substring(8);\n }\n if (link.startsWith(\"http://\")) {\n return link.substring(7);\n }\n return link;\n },\n route() {\n return getRoute(this.$router, this.reference.openGraphObject.link);\n },\n referenceWidgetLinkComponent() {\n return this.route ? RouterLink : \"a\";\n },\n referenceWidgetLinkProps() {\n return this.route ? { to: this.route } : { href: this.reference.openGraphObject.link, target: \"_blank\" };\n }\n },\n watch: {\n isVisible: {\n handler(val) {\n if (!val) {\n this.idleTimeout = setTimeout(() => {\n if (!this.isVisible) {\n this.destroyWidget();\n }\n }, IDLE_TIMEOUT);\n return;\n }\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n if (!this.rendered) {\n this.renderWidget();\n }\n },\n immediate: true\n }\n },\n beforeDestroy() {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimout = null;\n }\n this.stopResize();\n this.destroyWidget();\n },\n methods: {\n t,\n enableInteractive() {\n this.showInteractive = true;\n this.renderWidget();\n },\n renderWidget() {\n if (!this.$refs.customWidgetContent) {\n return;\n }\n if (this?.reference?.richObjectType === \"open-graph\") {\n return;\n }\n this.$refs.customWidgetContent.innerHTML = \"\";\n const widget = document.createElement(\"div\");\n widget.style = \"width: 100%;\";\n this.$refs.customWidgetContent.appendChild(widget);\n this.$nextTick(() => {\n renderWidget(widget, {\n ...this.reference,\n interactive: this.isInteractive\n });\n this.rendered = true;\n });\n },\n destroyWidget() {\n if (this.rendered) {\n destroyWidget(this.reference.richObjectType, this.$el);\n this.rendered = false;\n }\n },\n initResizeLimits() {\n const widgetEl = this.$refs.customWidgetContent?.firstElementChild;\n if (widgetEl) {\n const computedStyle = window.getComputedStyle(widgetEl);\n const parsedMin = parseFloat(computedStyle.minHeight);\n const parsedMax = parseFloat(computedStyle.maxHeight);\n this.resizeMinHeight = parsedMin > 0 ? parsedMin : 100;\n this.resizeMaxHeight = Number.isFinite(parsedMax) && parsedMax > 0 ? parsedMax : window.innerHeight - 120;\n } else {\n this.resizeMinHeight = 100;\n this.resizeMaxHeight = window.innerHeight - 120;\n }\n },\n startResize(event) {\n if (!this.isResizable || !this.$refs.customWidget) {\n return;\n }\n this.initResizeLimits();\n this.isResizing = true;\n this.resizeStartY = event.clientY;\n this.resizeStartHeight = this.$refs.customWidget.getBoundingClientRect().height;\n window.addEventListener(\"pointermove\", this.onResize);\n window.addEventListener(\"pointerup\", this.stopResize);\n },\n onResizeKeydown(delta) {\n if (!this.isResizable || !this.$refs.customWidget) {\n return;\n }\n this.initResizeLimits();\n const currentHeight = this.resizedHeight ?? this.resizeStartHeight;\n const next = currentHeight + delta;\n this.resizedHeight = Math.min(this.resizeMaxHeight, Math.max(this.resizeMinHeight, next));\n },\n onResize(event) {\n if (!this.isResizing || !this.$refs.customWidget) {\n return;\n }\n const deltaY = event.clientY - this.resizeStartY;\n this.resizedHeight = Math.min(this.resizeMaxHeight, Math.max(this.resizeMinHeight, this.resizeStartHeight + deltaY));\n },\n stopResize() {\n if (!this.isResizing) {\n return;\n }\n this.isResizing = false;\n window.removeEventListener(\"pointermove\", this.onResize);\n window.removeEventListener(\"pointerup\", this.stopResize);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"widgetRoot\", class: { \"toggle-interactive\": _vm.hasInteractiveView && !_vm.isInteractive } }, [_vm.reference && _vm.hasCustomWidget ? _c(\"div\", { ref: \"customWidget\", staticClass: \"widget-custom\", class: {\n \"full-width\": _vm.hasFullWidth\n }, style: _vm.customWidgetStyle, attrs: { \"id\": _vm.widgetId } }, [_c(\"div\", { ref: \"customWidgetContent\", staticClass: \"widget-custom__content\" }), _vm.isResizable ? _c(\"div\", { staticClass: \"widget-custom__resize-handle\", attrs: { \"role\": \"slider\", \"tabindex\": \"0\", \"aria-orientation\": \"vertical\", \"aria-label\": _vm.t(\"Widget height\"), \"aria-valuenow\": _vm.ariaValueNow, \"aria-valuemin\": _vm.resizeMinHeight, \"aria-valuemax\": _vm.resizeMaxHeight, \"aria-controls\": _vm.widgetId }, on: { \"pointerdown\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.startResize.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onResizeKeydown(-_vm.RESIZE_KEYBOARD_STEP);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onResizeKeydown(_vm.RESIZE_KEYBOARD_STEP);\n }] } }) : _vm._e()]) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c(_vm.referenceWidgetLinkComponent, _vm._b({ tag: \"component\", staticClass: \"widget-default\", attrs: { \"rel\": \"noopener noreferrer\" } }, \"component\", _vm.referenceWidgetLinkProps, false), [_vm.reference.openGraphObject.thumb ? _c(\"img\", { staticClass: \"widget-default--image\", attrs: { \"src\": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c(\"div\", { staticClass: \"widget-default--details\" }, [_c(\"p\", { staticClass: \"widget-default--name\" }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.name) + \" \")]), _c(\"p\", { staticClass: \"widget-default--description\", style: _vm.descriptionStyle }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.description) + \" \")]), _c(\"p\", { staticClass: \"widget-default--link\" }, [_vm._v(\" \" + _vm._s(_vm.compactLink) + \" \")])])]) : _vm._e(), _vm.interactiveOptIn && _vm.hasInteractiveView && !_vm.isInteractive ? _c(\"NcButton\", { staticClass: \"toggle-interactive--button\", on: { \"click\": _vm.enableInteractive } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Enable interactive view\")) + \" \")]) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"96e3ab0e\"\n);\nconst NcReferenceWidget = __component__.exports;\nexport {\n NcReferenceWidget as N\n};\n//# sourceMappingURL=NcReferenceWidget-CMq5QVka.mjs.map\n","import '../assets/NcRichText-D0xtzoWq.css';\nimport { toString } from \"mdast-util-to-string\";\nimport rehypeExternalLinks from \"rehype-external-links\";\nimport rehype2react from \"rehype-react\";\nimport breaks from \"remark-breaks\";\nimport remarkParse from \"remark-parse\";\nimport remark2rehype from \"remark-rehype\";\nimport remarkUnlinkProtocols from \"remark-unlink-protocols\";\nimport { unified } from \"unified\";\nimport { defineComponent, ref } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-BAjRm8PQ.mjs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { getSharingToken } from \"@nextcloud/sharing/public\";\nimport { N as NcReferenceWidget } from \"./NcReferenceWidget-CMq5QVka.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { U as URL_PATTERN, p as parseUrl, r as remarkAutolink, g as getRoute, N as NcRichTextExternalLink } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { u as useCopy } from \"./useCopy-C-jNoLry.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u } from \"unist-builder\";\nimport { visitParents, EXIT, SKIP } from \"unist-util-visit-parents\";\nconst _sfc_main$2 = {\n name: \"NcReferenceList\",\n components: {\n NcReferenceWidget\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n referenceData: {\n type: Array,\n default: null\n },\n limit: {\n type: Number,\n default: 1\n },\n displayFallback: {\n type: Boolean,\n default: false\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n references: null,\n loading: true\n };\n },\n computed: {\n isVisible() {\n return this.loading || this.displayedReferences.length !== 0;\n },\n values() {\n if (this.referenceData) {\n return this.referenceData;\n }\n if (this.displayFallback && !this.loading && !this.references) {\n return [this.fallbackReference];\n }\n return this.references ? Object.values(this.references) : [];\n },\n firstReference() {\n return this.values[0] ?? null;\n },\n displayedReferences() {\n return this.values.filter(Boolean).slice(0, this.limit);\n },\n fallbackReference() {\n return {\n accessible: true,\n openGraphObject: {\n id: this.text,\n link: this.text,\n name: this.text\n },\n richObjectType: \"open-graph\"\n };\n }\n },\n watch: {\n text: \"fetch\"\n },\n mounted() {\n this.fetch();\n },\n methods: {\n fetch() {\n this.loading = true;\n if (this.referenceData) {\n this.references = null;\n this.loading = false;\n return;\n }\n if (!new RegExp(URL_PATTERN).exec(this.text)) {\n this.references = null;\n this.loading = false;\n return;\n }\n this.resolve().then((response) => {\n this.references = response.data.ocs.data.references;\n this.loading = false;\n this.$emit(\"loaded\");\n }).catch((error) => {\n logger.error(\"Failed to extract references\", { error });\n this.loading = false;\n this.$emit(\"loaded\");\n });\n },\n resolve() {\n const match = new RegExp(URL_PATTERN).exec(this.text.trim());\n const isPublic = getCurrentUser() === null;\n if (this.limit === 1 && match) {\n return isPublic ? axios.get(generateOcsUrl(\"references/resolvePublic\") + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`) : axios.get(generateOcsUrl(\"references/resolve\") + `?reference=${encodeURIComponent(match[0])}`);\n }\n return isPublic ? axios.post(generateOcsUrl(\"references/extractPublic\"), {\n text: this.text,\n resolve: true,\n limit: this.limit,\n sharingToken: getSharingToken()\n }) : axios.post(generateOcsUrl(\"references/extract\"), {\n text: this.text,\n resolve: true,\n limit: this.limit\n });\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.isVisible ? _c(\"div\", { staticClass: \"widgets--list\", class: { \"icon-loading\": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) {\n return _c(\"NcReferenceWidget\", { key: reference.openGraphObject?.id, attrs: { \"reference\": reference, \"interactive\": _vm.interactive, \"interactive-opt-in\": _vm.interactiveOptIn } });\n }), 1) : _vm._e();\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"a50e616b\"\n);\nconst NcReferenceList = __component__$2.exports;\nfunction ccount(value, character) {\n const source = String(value);\n if (typeof character !== \"string\") {\n throw new TypeError(\"Expected character\");\n }\n let count = 0;\n let index = source.indexOf(character);\n while (index !== -1) {\n count++;\n index = source.indexOf(character, index + character.length);\n }\n return count;\n}\nfunction ok$1() {\n}\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nfunction asciiControl(code2) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code2 !== null && (code2 < 32 || code2 === 127)\n );\n}\nfunction markdownLineEnding(code2) {\n return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(new RegExp(\"\\\\p{P}|\\\\p{S}\", \"u\"));\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n return check;\n function check(code2) {\n return code2 !== null && code2 > -1 && regex.test(String.fromCharCode(code2));\n }\n}\nfunction escapeStringRegexp(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(\"Expected a string\");\n }\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\nconst convert = (\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n (function(test) {\n if (test === null || test === void 0) {\n return ok;\n }\n if (typeof test === \"function\") {\n return castFactory(test);\n }\n if (typeof test === \"object\") {\n return Array.isArray(test) ? anyFactory(test) : (\n // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(\n /** @type {Props} */\n test\n )\n );\n }\n if (typeof test === \"string\") {\n return typeFactory(test);\n }\n throw new Error(\"Expected function, string, or object as test\");\n })\n);\nfunction anyFactory(tests) {\n const checks = [];\n let index = -1;\n while (++index < tests.length) {\n checks[index] = convert(tests[index]);\n }\n return castFactory(any);\n function any(...parameters) {\n let index2 = -1;\n while (++index2 < checks.length) {\n if (checks[index2].apply(this, parameters)) return true;\n }\n return false;\n }\n}\nfunction propertiesFactory(check) {\n const checkAsRecord = (\n /** @type {Record<string, unknown>} */\n check\n );\n return castFactory(all);\n function all(node) {\n const nodeAsRecord = (\n /** @type {Record<string, unknown>} */\n /** @type {unknown} */\n node\n );\n let key;\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false;\n }\n return true;\n }\n}\nfunction typeFactory(check) {\n return castFactory(type);\n function type(node) {\n return node && node.type === check;\n }\n}\nfunction castFactory(testFunction) {\n return check;\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) && testFunction.call(\n this,\n value,\n typeof index === \"number\" ? index : void 0,\n parent || void 0\n )\n );\n }\n}\nfunction ok() {\n return true;\n}\nfunction looksLikeANode(value) {\n return value !== null && typeof value === \"object\" && \"type\" in value;\n}\nfunction findAndReplace(tree, list2, options) {\n const settings = options || {};\n const ignored = convert(settings.ignore || []);\n const pairs = toPairs(list2);\n let pairIndex = -1;\n while (++pairIndex < pairs.length) {\n visitParents(tree, \"text\", visitor);\n }\n function visitor(node, parents) {\n let index = -1;\n let grandparent;\n while (++index < parents.length) {\n const parent = parents[index];\n const siblings = grandparent ? grandparent.children : void 0;\n if (ignored(\n parent,\n siblings ? siblings.indexOf(parent) : void 0,\n grandparent\n )) {\n return;\n }\n grandparent = parent;\n }\n if (grandparent) {\n return handler(node, parents);\n }\n }\n function handler(node, parents) {\n const parent = parents[parents.length - 1];\n const find = pairs[pairIndex][0];\n const replace2 = pairs[pairIndex][1];\n let start = 0;\n const siblings = parent.children;\n const index = siblings.indexOf(node);\n let change = false;\n let nodes = [];\n find.lastIndex = 0;\n let match = find.exec(node.value);\n while (match) {\n const position = match.index;\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n };\n let value = replace2(...match, matchObject);\n if (typeof value === \"string\") {\n value = value.length > 0 ? { type: \"text\", value } : void 0;\n }\n if (value === false) {\n find.lastIndex = position + 1;\n } else {\n if (start !== position) {\n nodes.push({\n type: \"text\",\n value: node.value.slice(start, position)\n });\n }\n if (Array.isArray(value)) {\n nodes.push(...value);\n } else if (value) {\n nodes.push(value);\n }\n start = position + match[0].length;\n change = true;\n }\n if (!find.global) {\n break;\n }\n match = find.exec(node.value);\n }\n if (change) {\n if (start < node.value.length) {\n nodes.push({ type: \"text\", value: node.value.slice(start) });\n }\n parent.children.splice(index, 1, ...nodes);\n } else {\n nodes = [node];\n }\n return index + nodes.length;\n }\n}\nfunction toPairs(tupleOrList) {\n const result = [];\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError(\"Expected find and replace tuple or list of tuples\");\n }\n const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];\n let index = -1;\n while (++index < list2.length) {\n const tuple = list2[index];\n result.push([toExpression(tuple[0]), toFunction(tuple[1])]);\n }\n return result;\n}\nfunction toExpression(find) {\n return typeof find === \"string\" ? new RegExp(escapeStringRegexp(find), \"g\") : find;\n}\nfunction toFunction(replace2) {\n return typeof replace2 === \"function\" ? replace2 : function() {\n return replace2;\n };\n}\nconst inConstruct = \"phrasing\";\nconst notInConstruct = [\"autolink\", \"link\", \"image\", \"label\"];\nfunction gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n };\n}\nfunction gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: \"@\",\n before: \"[+\\\\-.\\\\w]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \".\",\n before: \"[Ww]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \":\",\n before: \"[ps]\",\n after: \"\\\\/\",\n inConstruct,\n notInConstruct\n }\n ]\n };\n}\nfunction enterLiteralAutolink(token) {\n this.enter({ type: \"link\", title: null, url: \"\", children: [] }, token);\n}\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token);\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"link\");\n node.url = \"http://\" + this.sliceSerialize(token);\n}\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token);\n}\nfunction exitLiteralAutolink(token) {\n this.exit(token);\n}\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n { ignore: [\"link\", \"linkReference\"] }\n );\n}\nfunction findUrl(_, protocol, domain2, path2, match) {\n let prefix = \"\";\n if (!previous(match)) {\n return false;\n }\n if (/^w/i.test(protocol)) {\n domain2 = protocol + domain2;\n protocol = \"\";\n prefix = \"http://\";\n }\n if (!isCorrectDomain(domain2)) {\n return false;\n }\n const parts = splitUrl(domain2 + path2);\n if (!parts[0]) return false;\n const result = {\n type: \"link\",\n title: null,\n url: prefix + protocol + parts[0],\n children: [{ type: \"text\", value: protocol + parts[0] }]\n };\n if (parts[1]) {\n return [result, { type: \"text\", value: parts[1] }];\n }\n return result;\n}\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) || // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false;\n }\n return {\n type: \"link\",\n title: null,\n url: \"mailto:\" + atext + \"@\" + label,\n children: [{ type: \"text\", value: atext + \"@\" + label }]\n };\n}\nfunction isCorrectDomain(domain2) {\n const parts = domain2.split(\".\");\n if (parts.length < 2 || parts[parts.length - 1] && (/_/.test(parts[parts.length - 1]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 1])) || parts[parts.length - 2] && (/_/.test(parts[parts.length - 2]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 2]))) {\n return false;\n }\n return true;\n}\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url);\n if (!trailExec) {\n return [url, void 0];\n }\n url = url.slice(0, trailExec.index);\n let trail2 = trailExec[0];\n let closingParenIndex = trail2.indexOf(\")\");\n const openingParens = ccount(url, \"(\");\n let closingParens = ccount(url, \")\");\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail2.slice(0, closingParenIndex + 1);\n trail2 = trail2.slice(closingParenIndex + 1);\n closingParenIndex = trail2.indexOf(\")\");\n closingParens++;\n }\n return [url, trail2];\n}\nfunction previous(match, email) {\n const code2 = match.input.charCodeAt(match.index - 1);\n return (match.index === 0 || unicodeWhitespace(code2) || unicodePunctuation(code2)) && (!email || code2 !== 47);\n}\nfunction normalizeIdentifier(value) {\n return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nfootnoteReference.peek = footnoteReferencePeek;\nfunction gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n };\n}\nfunction gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{ character: \"[\", inConstruct: [\"phrasing\", \"label\", \"reference\"] }],\n handlers: { footnoteDefinition, footnoteReference }\n };\n}\nfunction enterFootnoteDefinition(token) {\n this.enter(\n { type: \"footnoteDefinition\", identifier: \"\", label: \"\", children: [] },\n token\n );\n}\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer();\n}\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"footnoteDefinition\");\n node.label = label;\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteDefinition(token) {\n this.exit(token);\n}\nfunction enterFootnoteCall(token) {\n this.enter({ type: \"footnoteReference\", identifier: \"\", label: \"\" }, token);\n}\nfunction enterFootnoteCallString() {\n this.buffer();\n}\nfunction exitFootnoteCallString(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"footnoteReference\");\n node.label = label;\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteCall(token) {\n this.exit(token);\n}\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteReference\");\n const subexit = state.enter(\"reference\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n exit2();\n value += tracker.move(\"]\");\n return value;\n}\nfunction footnoteReferencePeek() {\n return \"[\";\n}\nfunction footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteDefinition\");\n const subexit = state.enter(\"label\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n value += tracker.move(\n \"]:\" + (node.children && node.children.length > 0 ? \" \" : \"\")\n );\n tracker.shift(4);\n value += tracker.move(\n state.indentLines(state.containerFlow(node, tracker.current()), map$2)\n );\n exit2();\n return value;\n}\nfunction map$2(line, index, blank) {\n if (index === 0) {\n return line;\n }\n return (blank ? \"\" : \" \") + line;\n}\nconst constructsWithoutStrikethrough = [\n \"autolink\",\n \"destinationLiteral\",\n \"destinationRaw\",\n \"reference\",\n \"titleQuote\",\n \"titleApostrophe\"\n];\nhandleDelete.peek = peekDelete;\nfunction gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: [\"delete\"],\n enter: { strikethrough: enterStrikethrough },\n exit: { strikethrough: exitStrikethrough }\n };\n}\nfunction gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: \"~\",\n inConstruct: \"phrasing\",\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: { delete: handleDelete }\n };\n}\nfunction enterStrikethrough(token) {\n this.enter({ type: \"delete\", children: [] }, token);\n}\nfunction exitStrikethrough(token) {\n this.exit(token);\n}\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info);\n const exit2 = state.enter(\"strikethrough\");\n let value = tracker.move(\"~~\");\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: \"~\"\n });\n value += tracker.move(\"~~\");\n exit2();\n return value;\n}\nfunction peekDelete() {\n return \"~\";\n}\nfunction markdownTable(table, options = {}) {\n const align = (options.align || []).concat();\n const stringLength = options.stringLength || defaultStringLength;\n const alignments = [];\n const cellMatrix = [];\n const sizeMatrix = [];\n const longestCellByColumn = [];\n let mostCellsPerRow = 0;\n let rowIndex = -1;\n while (++rowIndex < table.length) {\n const row2 = [];\n const sizes2 = [];\n let columnIndex2 = -1;\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length;\n }\n while (++columnIndex2 < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex2]);\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell);\n sizes2[columnIndex2] = size;\n if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) {\n longestCellByColumn[columnIndex2] = size;\n }\n }\n row2.push(cell);\n }\n cellMatrix[rowIndex] = row2;\n sizeMatrix[rowIndex] = sizes2;\n }\n let columnIndex = -1;\n if (typeof align === \"object\" && \"length\" in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex]);\n }\n } else {\n const code2 = toAlignment(align);\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code2;\n }\n }\n columnIndex = -1;\n const row = [];\n const sizes = [];\n while (++columnIndex < mostCellsPerRow) {\n const code2 = alignments[columnIndex];\n let before = \"\";\n let after = \"\";\n if (code2 === 99) {\n before = \":\";\n after = \":\";\n } else if (code2 === 108) {\n before = \":\";\n } else if (code2 === 114) {\n after = \":\";\n }\n let size = options.alignDelimiters === false ? 1 : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n );\n const cell = before + \"-\".repeat(size) + after;\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length;\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size;\n }\n sizes[columnIndex] = size;\n }\n row[columnIndex] = cell;\n }\n cellMatrix.splice(1, 0, row);\n sizeMatrix.splice(1, 0, sizes);\n rowIndex = -1;\n const lines = [];\n while (++rowIndex < cellMatrix.length) {\n const row2 = cellMatrix[rowIndex];\n const sizes2 = sizeMatrix[rowIndex];\n columnIndex = -1;\n const line = [];\n while (++columnIndex < mostCellsPerRow) {\n const cell = row2[columnIndex] || \"\";\n let before = \"\";\n let after = \"\";\n if (options.alignDelimiters !== false) {\n const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0);\n const code2 = alignments[columnIndex];\n if (code2 === 114) {\n before = \" \".repeat(size);\n } else if (code2 === 99) {\n if (size % 2) {\n before = \" \".repeat(size / 2 + 0.5);\n after = \" \".repeat(size / 2 - 0.5);\n } else {\n before = \" \".repeat(size / 2);\n after = before;\n }\n } else {\n after = \" \".repeat(size);\n }\n }\n if (options.delimiterStart !== false && !columnIndex) {\n line.push(\"|\");\n }\n if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === \"\") && (options.delimiterStart !== false || columnIndex)) {\n line.push(\" \");\n }\n if (options.alignDelimiters !== false) {\n line.push(before);\n }\n line.push(cell);\n if (options.alignDelimiters !== false) {\n line.push(after);\n }\n if (options.padding !== false) {\n line.push(\" \");\n }\n if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {\n line.push(\"|\");\n }\n }\n lines.push(\n options.delimiterEnd === false ? line.join(\"\").replace(/ +$/, \"\") : line.join(\"\")\n );\n }\n return lines.join(\"\\n\");\n}\nfunction serialize(value) {\n return value === null || value === void 0 ? \"\" : String(value);\n}\nfunction defaultStringLength(value) {\n return value.length;\n}\nfunction toAlignment(value) {\n const code2 = typeof value === \"string\" ? value.codePointAt(0) : 0;\n return code2 === 67 || code2 === 99 ? 99 : code2 === 76 || code2 === 108 ? 108 : code2 === 82 || code2 === 114 ? 114 : 0;\n}\nfunction blockquote(node, _, state, info) {\n const exit2 = state.enter(\"blockquote\");\n const tracker = state.createTracker(info);\n tracker.move(\"> \");\n tracker.shift(2);\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map$1\n );\n exit2();\n return value;\n}\nfunction map$1(line, _, blank) {\n return \">\" + (blank ? \"\" : \" \") + line;\n}\nfunction patternInScope(stack, pattern) {\n return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);\n}\nfunction listInScope(stack, list2, none) {\n if (typeof list2 === \"string\") {\n list2 = [list2];\n }\n if (!list2 || list2.length === 0) {\n return none;\n }\n let index = -1;\n while (++index < list2.length) {\n if (stack.includes(list2[index])) {\n return true;\n }\n }\n return false;\n}\nfunction hardBreak(_, _1, state, info) {\n let index = -1;\n while (++index < state.unsafe.length) {\n if (state.unsafe[index].character === \"\\n\" && patternInScope(state.stack, state.unsafe[index])) {\n return /[ \\t]/.test(info.before) ? \"\" : \" \";\n }\n }\n return \"\\\\\\n\";\n}\nfunction longestStreak(value, substring) {\n const source = String(value);\n let index = source.indexOf(substring);\n let expected = index;\n let count = 0;\n let max = 0;\n if (typeof substring !== \"string\") {\n throw new TypeError(\"Expected substring\");\n }\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count;\n }\n } else {\n count = 1;\n }\n expected = index + substring.length;\n index = source.indexOf(substring, expected);\n }\n return max;\n}\nfunction formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false && node.value && // If there’s no info…\n !node.lang && // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node.value) && // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n );\n}\nfunction checkFence(state) {\n const marker = state.options.fence || \"`\";\n if (marker !== \"`\" && marker !== \"~\") {\n throw new Error(\n \"Cannot serialize code with `\" + marker + \"` for `options.fence`, expected `` ` `` or `~`\"\n );\n }\n return marker;\n}\nfunction code$1(node, _, state, info) {\n const marker = checkFence(state);\n const raw = node.value || \"\";\n const suffix = marker === \"`\" ? \"GraveAccent\" : \"Tilde\";\n if (formatCodeAsIndented(node, state)) {\n const exit3 = state.enter(\"codeIndented\");\n const value2 = state.indentLines(raw, map);\n exit3();\n return value2;\n }\n const tracker = state.createTracker(info);\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));\n const exit2 = state.enter(\"codeFenced\");\n let value = tracker.move(sequence);\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`);\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: \" \",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`);\n value += tracker.move(\" \");\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: \"\\n\",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n value += tracker.move(\"\\n\");\n if (raw) {\n value += tracker.move(raw + \"\\n\");\n }\n value += tracker.move(sequence);\n exit2();\n return value;\n}\nfunction map(line, _, blank) {\n return (blank ? \"\" : \" \") + line;\n}\nfunction checkQuote(state) {\n const marker = state.options.quote || '\"';\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n \"Cannot serialize title with `\" + marker + \"` for `options.quote`, expected `\\\"`, or `'`\"\n );\n }\n return marker;\n}\nfunction definition(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"definition\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"]: \");\n subexit();\n if (\n // If there’s no url, or…\n !node.url || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \"\\n\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n exit2();\n return value;\n}\nfunction checkEmphasis(state) {\n const marker = state.options.emphasis || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize emphasis with `\" + marker + \"` for `options.emphasis`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nfunction encodeCharacterReference(code2) {\n return \"&#x\" + code2.toString(16).toUpperCase() + \";\";\n}\nfunction classifyCharacter(code2) {\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return 1;\n }\n if (unicodePunctuation(code2)) {\n return 2;\n }\n}\nfunction encodeInfo(outside, inside, marker) {\n const outsideKind = classifyCharacter(outside);\n const insideKind = classifyCharacter(inside);\n if (outsideKind === void 0) {\n return insideKind === void 0 ? (\n // Letter inside:\n // we have to encode *both* letters for `_` as it is looser.\n // it already forms for `*` (and GFMs `~`).\n marker === \"_\" ? { inside: true, outside: true } : { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode both (letter, whitespace).\n { inside: true, outside: true }\n ) : (\n // Punctuation inside: encode outer (letter)\n { inside: false, outside: true }\n );\n }\n if (outsideKind === 1) {\n return insideKind === void 0 ? (\n // Letter inside: already forms.\n { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode both (whitespace).\n { inside: true, outside: true }\n ) : (\n // Punctuation inside: already forms.\n { inside: false, outside: false }\n );\n }\n return insideKind === void 0 ? (\n // Letter inside: already forms.\n { inside: false, outside: false }\n ) : insideKind === 1 ? (\n // Whitespace inside: encode inner (whitespace).\n { inside: true, outside: false }\n ) : (\n // Punctuation inside: already forms.\n { inside: false, outside: false }\n );\n}\nemphasis.peek = emphasisPeek;\nfunction emphasis(node, _, state, info) {\n const marker = checkEmphasis(state);\n const exit2 = state.enter(\"emphasis\");\n const tracker = state.createTracker(info);\n const before = tracker.move(marker);\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n );\n const betweenHead = between.charCodeAt(0);\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n );\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1);\n }\n const betweenTail = between.charCodeAt(between.length - 1);\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail);\n }\n const after = tracker.move(marker);\n exit2();\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n };\n return before + between + after;\n}\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || \"*\";\n}\nfunction visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n let reverse;\n let test;\n let visitor;\n if (typeof testOrVisitor === \"function\" && typeof visitorOrReverse !== \"function\") {\n test = void 0;\n visitor = testOrVisitor;\n reverse = visitorOrReverse;\n } else {\n test = testOrVisitor;\n visitor = visitorOrReverse;\n reverse = maybeReverse;\n }\n visitParents(tree, test, overload, reverse);\n function overload(node, parents) {\n const parent = parents[parents.length - 1];\n const index = parent ? parent.children.indexOf(node) : void 0;\n return visitor(node, index, parent);\n }\n}\nfunction formatHeadingAsSetext(node, state) {\n let literalWithBreak = false;\n visit(node, function(node2) {\n if (\"value\" in node2 && /\\r?\\n|\\r/.test(node2.value) || node2.type === \"break\") {\n literalWithBreak = true;\n return EXIT;\n }\n });\n return Boolean(\n (!node.depth || node.depth < 3) && toString(node) && (state.options.setext || literalWithBreak)\n );\n}\nfunction heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1);\n const tracker = state.createTracker(info);\n if (formatHeadingAsSetext(node, state)) {\n const exit3 = state.enter(\"headingSetext\");\n const subexit2 = state.enter(\"phrasing\");\n const value2 = state.containerPhrasing(node, {\n ...tracker.current(),\n before: \"\\n\",\n after: \"\\n\"\n });\n subexit2();\n exit3();\n return value2 + \"\\n\" + (rank === 1 ? \"=\" : \"-\").repeat(\n // The whole size…\n value2.length - // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value2.lastIndexOf(\"\\r\"), value2.lastIndexOf(\"\\n\")) + 1)\n );\n }\n const sequence = \"#\".repeat(rank);\n const exit2 = state.enter(\"headingAtx\");\n const subexit = state.enter(\"phrasing\");\n tracker.move(sequence + \" \");\n let value = state.containerPhrasing(node, {\n before: \"# \",\n after: \"\\n\",\n ...tracker.current()\n });\n if (/^[\\t ]/.test(value)) {\n value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1);\n }\n value = value ? sequence + \" \" + value : sequence;\n if (state.options.closeAtx) {\n value += \" \" + sequence;\n }\n subexit();\n exit2();\n return value;\n}\nhtml.peek = htmlPeek;\nfunction html(node) {\n return node.value || \"\";\n}\nfunction htmlPeek() {\n return \"<\";\n}\nimage.peek = imagePeek;\nfunction image(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"image\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n value += tracker.move(\n state.safe(node.alt, { before: value, after: \"]\", ...tracker.current() })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node.url && node.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction imagePeek() {\n return \"!\";\n}\nimageReference.peek = imageReferencePeek;\nfunction imageReference(node, _, state, info) {\n const type = node.referenceType;\n const exit2 = state.enter(\"imageReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n const alt = state.safe(node.alt, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(alt + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !alt || alt !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction imageReferencePeek() {\n return \"!\";\n}\ninlineCode.peek = inlineCodePeek;\nfunction inlineCode(node, _, state) {\n let value = node.value || \"\";\n let sequence = \"`\";\n let index = -1;\n while (new RegExp(\"(^|[^`])\" + sequence + \"([^`]|$)\").test(value)) {\n sequence += \"`\";\n }\n if (/[^ \\r\\n]/.test(value) && (/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value) || /^`|`$/.test(value))) {\n value = \" \" + value + \" \";\n }\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index];\n const expression = state.compilePattern(pattern);\n let match;\n if (!pattern.atBreak) continue;\n while (match = expression.exec(value)) {\n let position = match.index;\n if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {\n position--;\n }\n value = value.slice(0, position) + \" \" + value.slice(match.index + 1);\n }\n }\n return sequence + value + sequence;\n}\nfunction inlineCodePeek() {\n return \"`\";\n}\nfunction formatLinkAsAutolink(node, state) {\n const raw = toString(node);\n return Boolean(\n !state.options.resourceLink && // If there’s a url…\n node.url && // And there’s a no title…\n !node.title && // And the content of `node` is a single text node…\n node.children && node.children.length === 1 && node.children[0].type === \"text\" && // And if the url is the same as the content…\n (raw === node.url || \"mailto:\" + raw === node.url) && // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node.url) && // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node.url)\n );\n}\nlink.peek = linkPeek;\nfunction link(node, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const tracker = state.createTracker(info);\n let exit2;\n let subexit;\n if (formatLinkAsAutolink(node, state)) {\n const stack = state.stack;\n state.stack = [];\n exit2 = state.enter(\"autolink\");\n let value2 = tracker.move(\"<\");\n value2 += tracker.move(\n state.containerPhrasing(node, {\n before: value2,\n after: \">\",\n ...tracker.current()\n })\n );\n value2 += tracker.move(\">\");\n exit2();\n state.stack = stack;\n return value2;\n }\n exit2 = state.enter(\"link\");\n subexit = state.enter(\"label\");\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: \"](\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node.url && node.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? \"<\" : \"[\";\n}\nlinkReference.peek = linkReferencePeek;\nfunction linkReference(node, _, state, info) {\n const type = node.referenceType;\n const exit2 = state.enter(\"linkReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n const text2 = state.containerPhrasing(node, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(text2 + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !text2 || text2 !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction linkReferencePeek() {\n return \"[\";\n}\nfunction checkBullet(state) {\n const marker = state.options.bullet || \"*\";\n if (marker !== \"*\" && marker !== \"+\" && marker !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bullet`, expected `*`, `+`, or `-`\"\n );\n }\n return marker;\n}\nfunction checkBulletOther(state) {\n const bullet = checkBullet(state);\n const bulletOther = state.options.bulletOther;\n if (!bulletOther) {\n return bullet === \"*\" ? \"-\" : \"*\";\n }\n if (bulletOther !== \"*\" && bulletOther !== \"+\" && bulletOther !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + bulletOther + \"` for `options.bulletOther`, expected `*`, `+`, or `-`\"\n );\n }\n if (bulletOther === bullet) {\n throw new Error(\n \"Expected `bullet` (`\" + bullet + \"`) and `bulletOther` (`\" + bulletOther + \"`) to be different\"\n );\n }\n return bulletOther;\n}\nfunction checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || \".\";\n if (marker !== \".\" && marker !== \")\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bulletOrdered`, expected `.` or `)`\"\n );\n }\n return marker;\n}\nfunction checkRule(state) {\n const marker = state.options.rule || \"*\";\n if (marker !== \"*\" && marker !== \"-\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize rules with `\" + marker + \"` for `options.rule`, expected `*`, `-`, or `_`\"\n );\n }\n return marker;\n}\nfunction list(node, parent, state, info) {\n const exit2 = state.enter(\"list\");\n const bulletCurrent = state.bulletCurrent;\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state);\n const bulletOther = node.ordered ? bullet === \".\" ? \")\" : \".\" : checkBulletOther(state);\n let useDifferentMarker = parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false;\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : void 0;\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === \"*\" || bullet === \"-\") && // Empty first list item:\n firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:\n state.stack[state.stack.length - 1] === \"list\" && state.stack[state.stack.length - 2] === \"listItem\" && state.stack[state.stack.length - 3] === \"list\" && state.stack[state.stack.length - 4] === \"listItem\" && // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true;\n }\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1;\n while (++index < node.children.length) {\n const item = node.children[index];\n if (item && item.type === \"listItem\" && item.children && item.children[0] && item.children[0].type === \"thematicBreak\") {\n useDifferentMarker = true;\n break;\n }\n }\n }\n }\n if (useDifferentMarker) {\n bullet = bulletOther;\n }\n state.bulletCurrent = bullet;\n const value = state.containerFlow(node, info);\n state.bulletLastUsed = bullet;\n state.bulletCurrent = bulletCurrent;\n exit2();\n return value;\n}\nfunction checkListItemIndent(state) {\n const style = state.options.listItemIndent || \"one\";\n if (style !== \"tab\" && style !== \"one\" && style !== \"mixed\") {\n throw new Error(\n \"Cannot serialize items with `\" + style + \"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`\"\n );\n }\n return style;\n}\nfunction listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state);\n let bullet = state.bulletCurrent || checkBullet(state);\n if (parent && parent.type === \"list\" && parent.ordered) {\n bullet = (typeof parent.start === \"number\" && parent.start > -1 ? parent.start : 1) + (state.options.incrementListMarker === false ? 0 : parent.children.indexOf(node)) + bullet;\n }\n let size = bullet.length + 1;\n if (listItemIndent === \"tab\" || listItemIndent === \"mixed\" && (parent && parent.type === \"list\" && parent.spread || node.spread)) {\n size = Math.ceil(size / 4) * 4;\n }\n const tracker = state.createTracker(info);\n tracker.move(bullet + \" \".repeat(size - bullet.length));\n tracker.shift(size);\n const exit2 = state.enter(\"listItem\");\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map2\n );\n exit2();\n return value;\n function map2(line, index, blank) {\n if (index) {\n return (blank ? \"\" : \" \".repeat(size)) + line;\n }\n return (blank ? bullet : bullet + \" \".repeat(size - bullet.length)) + line;\n }\n}\nfunction paragraph(node, _, state, info) {\n const exit2 = state.enter(\"paragraph\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node, info);\n subexit();\n exit2();\n return value;\n}\nconst phrasing = (\n /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n convert([\n \"break\",\n \"delete\",\n \"emphasis\",\n // To do: next major: removed since footnotes were added to GFM.\n \"footnote\",\n \"footnoteReference\",\n \"image\",\n \"imageReference\",\n \"inlineCode\",\n // Enabled by `mdast-util-math`:\n \"inlineMath\",\n \"link\",\n \"linkReference\",\n // Enabled by `mdast-util-mdx`:\n \"mdxJsxTextElement\",\n // Enabled by `mdast-util-mdx`:\n \"mdxTextExpression\",\n \"strong\",\n \"text\",\n // Enabled by `mdast-util-directive`:\n \"textDirective\"\n ])\n);\nfunction root(node, _, state, info) {\n const hasPhrasing = node.children.some(function(d) {\n return phrasing(d);\n });\n const container = hasPhrasing ? state.containerPhrasing : state.containerFlow;\n return container.call(state, node, info);\n}\nfunction checkStrong(state) {\n const marker = state.options.strong || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize strong with `\" + marker + \"` for `options.strong`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nstrong.peek = strongPeek;\nfunction strong(node, _, state, info) {\n const marker = checkStrong(state);\n const exit2 = state.enter(\"strong\");\n const tracker = state.createTracker(info);\n const before = tracker.move(marker + marker);\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n );\n const betweenHead = between.charCodeAt(0);\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n );\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1);\n }\n const betweenTail = between.charCodeAt(between.length - 1);\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker);\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail);\n }\n const after = tracker.move(marker + marker);\n exit2();\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n };\n return before + between + after;\n}\nfunction strongPeek(_, _1, state) {\n return state.options.strong || \"*\";\n}\nfunction text$1(node, _, state, info) {\n return state.safe(node.value, info);\n}\nfunction checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3;\n if (repetition < 3) {\n throw new Error(\n \"Cannot serialize rules with repetition `\" + repetition + \"` for `options.ruleRepetition`, expected `3` or more\"\n );\n }\n return repetition;\n}\nfunction thematicBreak(_, _1, state) {\n const value = (checkRule(state) + (state.options.ruleSpaces ? \" \" : \"\")).repeat(checkRuleRepetition(state));\n return state.options.ruleSpaces ? value.slice(0, -1) : value;\n}\nconst handle = {\n blockquote,\n break: hardBreak,\n code: code$1,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text: text$1,\n thematicBreak\n};\nfunction gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n };\n}\nfunction enterTable(token) {\n const align = token._align;\n this.enter(\n {\n type: \"table\",\n align: align.map(function(d) {\n return d === \"none\" ? null : d;\n }),\n children: []\n },\n token\n );\n this.data.inTable = true;\n}\nfunction exitTable(token) {\n this.exit(token);\n this.data.inTable = void 0;\n}\nfunction enterRow(token) {\n this.enter({ type: \"tableRow\", children: [] }, token);\n}\nfunction exit(token) {\n this.exit(token);\n}\nfunction enterCell(token) {\n this.enter({ type: \"tableCell\", children: [] }, token);\n}\nfunction exitCodeText(token) {\n let value = this.resume();\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace);\n }\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"inlineCode\");\n node.value = value;\n this.exit(token);\n}\nfunction replace($0, $1) {\n return $1 === \"|\" ? $1 : $0;\n}\nfunction gfmTableToMarkdown(options) {\n const settings = options || {};\n const padding = settings.tableCellPadding;\n const alignDelimiters = settings.tablePipeAlign;\n const stringLength = settings.stringLength;\n const around = padding ? \" \" : \"|\";\n return {\n unsafe: [\n { character: \"\\r\", inConstruct: \"tableCell\" },\n { character: \"\\n\", inConstruct: \"tableCell\" },\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n { atBreak: true, character: \"|\", after: \"[\t :-]\" },\n // A pipe in a cell must be encoded.\n { character: \"|\", inConstruct: \"tableCell\" },\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n { atBreak: true, character: \":\", after: \"-\" },\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n { atBreak: true, character: \"-\", after: \"[:|-]\" }\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n };\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align);\n }\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info);\n const value = serializeData([row]);\n return value.slice(0, value.indexOf(\"\\n\"));\n }\n function handleTableCell(node, _, state, info) {\n const exit2 = state.enter(\"tableCell\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n });\n subexit();\n exit2();\n return value;\n }\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n });\n }\n function handleTableAsData(node, state, info) {\n const children = node.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"table\");\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info);\n }\n subexit();\n return result;\n }\n function handleTableRowAsData(node, state, info) {\n const children = node.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"tableRow\");\n while (++index < children.length) {\n result[index] = handleTableCell(children[index], node, state, info);\n }\n subexit();\n return result;\n }\n function inlineCodeWithTable(node, parent, state) {\n let value = handle.inlineCode(node, parent, state);\n if (state.stack.includes(\"tableCell\")) {\n value = value.replace(/\\|/g, \"\\\\$&\");\n }\n return value;\n }\n}\nfunction gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n };\n}\nfunction gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{ atBreak: true, character: \"-\", after: \"[:|-]\" }],\n handlers: { listItem: listItemWithTaskListItem }\n };\n}\nfunction exitCheck(token) {\n const node = this.stack[this.stack.length - 2];\n ok$1(node.type === \"listItem\");\n node.checked = token.type === \"taskListCheckValueChecked\";\n}\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2];\n if (parent && parent.type === \"listItem\" && typeof parent.checked === \"boolean\") {\n const node = this.stack[this.stack.length - 1];\n ok$1(node.type === \"paragraph\");\n const head = node.children[0];\n if (head && head.type === \"text\") {\n const siblings = parent.children;\n let index = -1;\n let firstParaghraph;\n while (++index < siblings.length) {\n const sibling = siblings[index];\n if (sibling.type === \"paragraph\") {\n firstParaghraph = sibling;\n break;\n }\n }\n if (firstParaghraph === node) {\n head.value = head.value.slice(1);\n if (head.value.length === 0) {\n node.children.shift();\n } else if (node.position && head.position && typeof head.position.start.offset === \"number\") {\n head.position.start.column++;\n head.position.start.offset++;\n node.position.start = Object.assign({}, head.position.start);\n }\n }\n }\n }\n this.exit(token);\n}\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0];\n const checkable = typeof node.checked === \"boolean\" && head && head.type === \"paragraph\";\n const checkbox = \"[\" + (node.checked ? \"x\" : \" \") + \"] \";\n const tracker = state.createTracker(info);\n if (checkable) {\n tracker.move(checkbox);\n }\n let value = handle.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n });\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check);\n }\n return value;\n function check($0) {\n return $0 + checkbox;\n }\n}\nfunction gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ];\n}\nfunction gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n };\n}\nfunction splice(list2, start, remove, items) {\n const end = list2.length;\n let chunkStart = 0;\n let parameters;\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n if (items.length < 1e4) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n list2.splice(...parameters);\n } else {\n if (remove) list2.splice(start, remove);\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 1e4);\n parameters.unshift(start, 0);\n list2.splice(...parameters);\n chunkStart += 1e4;\n start += 1e4;\n }\n }\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n const all = {};\n let index = -1;\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index]);\n }\n return all;\n}\nfunction syntaxExtension(all, extension) {\n let hook;\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : void 0;\n const left = maybe || (all[hook] = {});\n const right = extension[hook];\n let code2;\n if (right) {\n for (code2 in right) {\n if (!hasOwnProperty.call(left, code2)) left[code2] = [];\n const value = right[code2];\n constructs(\n // @ts-expect-error Looks like a list.\n left[code2],\n Array.isArray(value) ? value : value ? [value] : []\n );\n }\n }\n }\n}\nfunction constructs(existing, list2) {\n let index = -1;\n const before = [];\n while (++index < list2.length) {\n (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n }\n splice(existing, 0, 0, before);\n}\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\nconst text = {};\nfunction gfmAutolinkLiteral() {\n return {\n text\n };\n}\nlet code = 48;\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;\n else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok2, nok) {\n const self = this;\n let dot;\n let data;\n return start;\n function start(code2) {\n if (!gfmAtext(code2) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkEmail\");\n return atext(code2);\n }\n function atext(code2) {\n if (gfmAtext(code2)) {\n effects.consume(code2);\n return atext;\n }\n if (code2 === 64) {\n effects.consume(code2);\n return emailDomain;\n }\n return nok(code2);\n }\n function emailDomain(code2) {\n if (code2 === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code2);\n }\n if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n data = true;\n effects.consume(code2);\n return emailDomain;\n }\n return emailDomainAfter(code2);\n }\n function emailDomainDot(code2) {\n effects.consume(code2);\n dot = true;\n return emailDomain;\n }\n function emailDomainAfter(code2) {\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit(\"literalAutolinkEmail\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n return nok(code2);\n }\n}\nfunction tokenizeWwwAutolink(effects, ok2, nok) {\n const self = this;\n return wwwStart;\n function wwwStart(code2) {\n if (code2 !== 87 && code2 !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkWww\");\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code2);\n }\n function wwwAfter(code2) {\n effects.exit(\"literalAutolinkWww\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeProtocolAutolink(effects, ok2, nok) {\n const self = this;\n let buffer = \"\";\n let seen = false;\n return protocolStart;\n function protocolStart(code2) {\n if ((code2 === 72 || code2 === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkHttp\");\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n return nok(code2);\n }\n function protocolPrefixInside(code2) {\n if (asciiAlpha(code2) && buffer.length < 5) {\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n if (code2 === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === \"http\" || protocol === \"https\") {\n effects.consume(code2);\n return protocolSlashesInside;\n }\n }\n return nok(code2);\n }\n function protocolSlashesInside(code2) {\n if (code2 === 47) {\n effects.consume(code2);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code2);\n }\n function afterProtocol(code2) {\n return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n }\n function protocolAfter(code2) {\n effects.exit(\"literalAutolinkHttp\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeWwwPrefix(effects, ok2, nok) {\n let size = 0;\n return wwwPrefixInside;\n function wwwPrefixInside(code2) {\n if ((code2 === 87 || code2 === 119) && size < 3) {\n size++;\n effects.consume(code2);\n return wwwPrefixInside;\n }\n if (code2 === 46 && size === 3) {\n effects.consume(code2);\n return wwwPrefixAfter;\n }\n return nok(code2);\n }\n function wwwPrefixAfter(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction tokenizeDomain(effects, ok2, nok) {\n let underscoreInLastSegment;\n let underscoreInLastLastSegment;\n let seen;\n return domainInside;\n function domainInside(code2) {\n if (code2 === 46 || code2 === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n return domainAfter(code2);\n }\n seen = true;\n effects.consume(code2);\n return domainInside;\n }\n function domainAtPunctuation(code2) {\n if (code2 === 95) {\n underscoreInLastSegment = true;\n } else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = void 0;\n }\n effects.consume(code2);\n return domainInside;\n }\n function domainAfter(code2) {\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code2);\n }\n return ok2(code2);\n }\n}\nfunction tokenizePath(effects, ok2) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n function pathInside(code2) {\n if (code2 === 40) {\n sizeOpen++;\n effects.consume(code2);\n return pathInside;\n }\n if (code2 === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code2);\n }\n if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n return effects.check(trail, ok2, pathAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n effects.consume(code2);\n return pathInside;\n }\n function pathAtPunctuation(code2) {\n if (code2 === 41) {\n sizeClose++;\n }\n effects.consume(code2);\n return pathInside;\n }\n}\nfunction tokenizeTrail(effects, ok2, nok) {\n return trail2;\n function trail2(code2) {\n if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n effects.consume(code2);\n return trail2;\n }\n if (code2 === 38) {\n effects.consume(code2);\n return trailCharRefStart;\n }\n if (code2 === 93) {\n effects.consume(code2);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code2 === 60 || // So is whitespace.\n code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)\n ) {\n return ok2(code2);\n }\n return nok(code2);\n }\n function trailBracketAfter(code2) {\n if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n return trail2(code2);\n }\n function trailCharRefStart(code2) {\n return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n }\n function trailCharRefInside(code2) {\n if (code2 === 59) {\n effects.consume(code2);\n return trail2;\n }\n if (asciiAlpha(code2)) {\n effects.consume(code2);\n return trailCharRefInside;\n }\n return nok(code2);\n }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok2, nok) {\n return start;\n function start(code2) {\n effects.consume(code2);\n return after;\n }\n function after(code2) {\n return asciiAlphanumeric(code2) ? nok(code2) : ok2(code2);\n }\n}\nfunction previousWww(code2) {\n return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n result = true;\n break;\n }\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}\nfunction resolveAll(constructs2, events, context) {\n const called = [];\n let index = -1;\n while (++index < constructs2.length) {\n const resolve = constructs2[index].resolveAll;\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context);\n called.push(resolve);\n }\n }\n return events;\n}\nfunction factorySpace(effects, ok2, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n function start(code2) {\n if (markdownSpace(code2)) {\n effects.enter(type);\n return prefix(code2);\n }\n return ok2(code2);\n }\n function prefix(code2) {\n if (markdownSpace(code2) && size++ < limit) {\n effects.consume(code2);\n return prefix;\n }\n effects.exit(type);\n return ok2(code2);\n }\n}\nconst blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n};\nfunction tokenizeBlankLine(effects, ok2, nok) {\n return start;\n function start(code2) {\n return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n }\n function after(code2) {\n return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);\n }\n}\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\nfunction gfmFootnote() {\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: \"after\",\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let labelStart;\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n function start(code2) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code2);\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n );\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return ok2(code2);\n }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n events[index][1];\n break;\n }\n }\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n const call = {\n type: \"gfmFootnoteCall\",\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const marker = {\n type: \"gfmFootnoteCallMarker\",\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n const string = {\n type: \"gfmFootnoteCallString\",\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n const chunk = {\n type: \"chunkString\",\n contentType: \"string\",\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n [\"enter\", call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n [\"enter\", marker, context],\n [\"exit\", marker, context],\n // Everything in between.\n [\"enter\", string, context],\n [\"enter\", chunk, context],\n [\"exit\", chunk, context],\n [\"exit\", string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n [\"exit\", call, context]\n ];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteCall\");\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return callStart;\n }\n function callStart(code2) {\n if (code2 !== 94) return nok(code2);\n effects.enter(\"gfmFootnoteCallMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallMarker\");\n effects.enter(\"gfmFootnoteCallString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return callData;\n }\n function callData(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteCallString\");\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n effects.exit(\"gfmFootnoteCall\");\n return ok2;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? callEscape : callData;\n }\n function callEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return callData;\n }\n return callData(code2);\n }\n}\nfunction tokenizeDefinitionStart(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let identifier;\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteDefinition\")._container = true;\n effects.enter(\"gfmFootnoteDefinitionLabel\");\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n return labelAtMarker;\n }\n function labelAtMarker(code2) {\n if (code2 === 94) {\n effects.enter(\"gfmFootnoteDefinitionMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionMarker\");\n effects.enter(\"gfmFootnoteDefinitionLabelString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return labelInside;\n }\n return nok(code2);\n }\n function labelInside(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n effects.exit(\"gfmFootnoteDefinitionLabel\");\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? labelEscape : labelInside;\n }\n function labelEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return labelInside;\n }\n return labelInside(code2);\n }\n function labelAfter(code2) {\n if (code2 === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code2);\n effects.exit(\"definitionMarker\");\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n return factorySpace(\n effects,\n whitespaceAfter,\n \"gfmFootnoteDefinitionWhitespace\"\n );\n }\n return nok(code2);\n }\n function whitespaceAfter(code2) {\n return ok2(code2);\n }\n}\nfunction tokenizeDefinitionContinuation(effects, ok2, nok) {\n return effects.check(blankLine, ok2, effects.attempt(indent, ok2, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok2, nok) {\n const self = this;\n return factorySpace(\n effects,\n afterPrefix,\n \"gfmFootnoteDefinitionIndent\",\n 4 + 1\n );\n function afterPrefix(code2) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok2(code2) : nok(code2);\n }\n}\nfunction gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === void 0) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n while (++index < events.length) {\n if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n let open = index;\n while (open--) {\n if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = \"strikethroughSequence\";\n events[open][1].type = \"strikethroughSequence\";\n const strikethrough = {\n type: \"strikethrough\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n const text2 = {\n type: \"strikethroughText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n const nextEvents = [\n [\"enter\", strikethrough, context],\n [\"enter\", events[open][1], context],\n [\"exit\", events[open][1], context],\n [\"enter\", text2, context]\n ];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n );\n }\n splice(nextEvents, nextEvents.length, 0, [\n [\"exit\", text2, context],\n [\"enter\", events[index][1], context],\n [\"exit\", events[index][1], context],\n [\"exit\", strikethrough, context]\n ]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n function tokenizeStrikethrough(effects, ok2, nok) {\n const previous2 = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n function start(code2) {\n if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code2);\n }\n effects.enter(\"strikethroughSequenceTemporary\");\n return more(code2);\n }\n function more(code2) {\n const before = classifyCharacter(previous2);\n if (code2 === 126) {\n if (size > 1) return nok(code2);\n effects.consume(code2);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code2);\n const token = effects.exit(\"strikethroughSequenceTemporary\");\n const after = classifyCharacter(code2);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok2(code2);\n }\n }\n}\nclass EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n this.map = [];\n }\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add);\n }\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array<Event>} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n /**\n * Done, change the events.\n *\n * @param {Array<Event>} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function(a, b) {\n return a[0] - b[0];\n });\n if (this.map.length === 0) {\n return;\n }\n let index = this.map.length;\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n );\n events.length = this.map[index][0];\n }\n vecs.push([...events]);\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n events.push(...slice);\n slice = vecs.pop();\n }\n this.map.length = 0;\n }\n}\nfunction addImpl(editMap, at, remove, add) {\n let index = 0;\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n editMap.map[index][2].push(...add);\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\nfunction gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === \"enter\") {\n if (event[1].type === \"tableContent\") {\n align.push(\n events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n );\n }\n } else if (event[1].type === \"tableContent\") {\n if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n }\n } else if (event[1].type === \"tableDelimiterRow\") {\n break;\n }\n } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}\nfunction gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\nfunction tokenizeTable(effects, ok2, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n let seen;\n return start;\n function start(code2) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\")\n index--;\n else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n return next(code2);\n }\n function headRowBefore(code2) {\n effects.enter(\"tableHead\");\n effects.enter(\"tableRow\");\n return headRowStart(code2);\n }\n function headRowStart(code2) {\n if (code2 === 124) {\n return headRowBreak(code2);\n }\n seen = true;\n sizeB += 1;\n return headRowBreak(code2);\n }\n function headRowBreak(code2) {\n if (code2 === null) {\n return nok(code2);\n }\n if (markdownLineEnding(code2)) {\n if (sizeB > 1) {\n sizeB = 0;\n self.interrupt = true;\n effects.exit(\"tableRow\");\n effects.enter(\"lineEnding\");\n effects.consume(code2);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n return nok(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n size += 1;\n }\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n seen = true;\n return headRowBreak;\n }\n effects.enter(\"data\");\n return headRowData(code2);\n }\n function headRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return headRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? headRowEscape : headRowData;\n }\n function headRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return headRowData;\n }\n return headRowData(code2);\n }\n function headDelimiterStart(code2) {\n self.interrupt = false;\n if (self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n effects.enter(\"tableDelimiterRow\");\n seen = false;\n if (markdownSpace(code2)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n \"linePrefix\",\n self.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n )(code2);\n }\n return headDelimiterBefore(code2);\n }\n function headDelimiterBefore(code2) {\n if (code2 === 45 || code2 === 58) {\n return headDelimiterValueBefore(code2);\n }\n if (code2 === 124) {\n seen = true;\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return headDelimiterCellBefore;\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterCellBefore(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n }\n return headDelimiterValueBefore(code2);\n }\n function headDelimiterValueBefore(code2) {\n if (code2 === 58) {\n sizeB += 1;\n seen = true;\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterLeftAlignmentAfter;\n }\n if (code2 === 45) {\n sizeB += 1;\n return headDelimiterLeftAlignmentAfter(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n return headDelimiterCellAfter(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterLeftAlignmentAfter(code2) {\n if (code2 === 45) {\n effects.enter(\"tableDelimiterFiller\");\n return headDelimiterFiller(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterFiller(code2) {\n if (code2 === 45) {\n effects.consume(code2);\n return headDelimiterFiller;\n }\n if (code2 === 58) {\n seen = true;\n effects.exit(\"tableDelimiterFiller\");\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit(\"tableDelimiterFiller\");\n return headDelimiterRightAlignmentAfter(code2);\n }\n function headDelimiterRightAlignmentAfter(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n }\n return headDelimiterCellAfter(code2);\n }\n function headDelimiterCellAfter(code2) {\n if (code2 === 124) {\n return headDelimiterBefore(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code2);\n }\n effects.exit(\"tableDelimiterRow\");\n effects.exit(\"tableHead\");\n return ok2(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterNok(code2) {\n return nok(code2);\n }\n function bodyRowStart(code2) {\n effects.enter(\"tableRow\");\n return bodyRowBreak(code2);\n }\n function bodyRowBreak(code2) {\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return bodyRowBreak;\n }\n if (code2 === null || markdownLineEnding(code2)) {\n effects.exit(\"tableRow\");\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n }\n effects.enter(\"data\");\n return bodyRowData(code2);\n }\n function bodyRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return bodyRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? bodyRowEscape : bodyRowData;\n }\n function bodyRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return bodyRowData;\n }\n return bodyRowData(code2);\n }\n}\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n let rowKind = 0;\n let lastCell = [0, 0, 0, 0];\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n let currentTable;\n let currentBody;\n let currentCell;\n const map2 = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === \"enter\") {\n if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = false;\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n currentBody = void 0;\n lastTableEnd = 0;\n }\n currentTable = {\n type: \"table\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentTable, context]]);\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n inFirstCellAwaitingPipe = true;\n currentCell = void 0;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: \"tableBody\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentBody, context]]);\n }\n rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n inFirstCellAwaitingPipe = false;\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === \"tableCellDivider\") {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n } else if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n );\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map2, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n }\n map2.consume(context.events);\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === \"enter\" && event[1].type === \"table\") {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\nfunction flushCell(map2, context, range, rowKind, rowEnd, previousCell) {\n const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n const valueName = \"tableContent\";\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map2.add(range[0], 0, [[\"exit\", previousCell, context]]);\n }\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map2.add(range[1], 0, [[\"enter\", previousCell, context]]);\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map2.add(range[2], 0, [[\"enter\", valueToken, context]]);\n if (rowKind !== 2) {\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map2.add(a, b, []);\n }\n }\n map2.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n }\n if (rowEnd !== void 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map2.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n previousCell = void 0;\n }\n return previousCell;\n}\nfunction flushTableEnd(map2, context, index, table, tableBody) {\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push([\"exit\", tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push([\"exit\", table, context]);\n map2.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === \"enter\" ? \"start\" : \"end\";\n return event[1][side];\n}\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n};\nfunction gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\nfunction tokenizeTasklistCheck(effects, ok2, nok) {\n const self = this;\n return open;\n function open(code2) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null || // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code2);\n }\n effects.enter(\"taskListCheck\");\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n return inside;\n }\n function inside(code2) {\n if (markdownLineEndingOrSpace(code2)) {\n effects.enter(\"taskListCheckValueUnchecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueUnchecked\");\n return close;\n }\n if (code2 === 88 || code2 === 120) {\n effects.enter(\"taskListCheckValueChecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueChecked\");\n return close;\n }\n return nok(code2);\n }\n function close(code2) {\n if (code2 === 93) {\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n effects.exit(\"taskListCheck\");\n return after;\n }\n return nok(code2);\n }\n function after(code2) {\n if (markdownLineEnding(code2)) {\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok2,\n nok\n )(code2);\n }\n return nok(code2);\n }\n}\nfunction spaceThenNonSpace(effects, ok2, nok) {\n return factorySpace(effects, after, \"whitespace\");\n function after(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ]);\n}\nconst emptyOptions = {};\nfunction remarkGfm(options) {\n const self = (\n /** @type {Processor<Root>} */\n this\n );\n const settings = options || emptyOptions;\n const data = self.data();\n const micromarkExtensions = data.micromarkExtensions || (data.micromarkExtensions = []);\n const fromMarkdownExtensions = data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []);\n const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);\n micromarkExtensions.push(gfm(settings));\n fromMarkdownExtensions.push(gfmFromMarkdown());\n toMarkdownExtensions.push(gfmToMarkdown(settings));\n}\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextCopyButton\",\n props: {\n contentId: null\n },\n setup(__props) {\n const props = __props;\n const { copy, icon, altText } = useCopy(() => document.getElementById(props.contentId).textContent);\n return { __sfc: true, props, copy, icon, altText, NcButton, NcIconSvgWrapper };\n }\n});\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcButton, { attrs: { \"variant\": \"tertiary\", \"size\": \"small\", \"aria-label\": _setup.altText, \"title\": _setup.altText }, on: { \"click\": _setup.copy }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.icon, \"inline\": \"\" } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst NcRichTextCopyButton = __component__$1.exports;\nfunction remarkPlaceholder() {\n return function(ast) {\n visitParents(ast, (node) => node.type === \"text\", visitor);\n function visitor(node, ancestors) {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n const placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return u(\"text\", entry);\n }\n const [, component] = matches;\n return u(\"element\", {\n tagName: `#${component}`\n });\n });\n parent.children.splice(index, 1, ...placeholders);\n }\n };\n}\nfunction prepareTextNode({ h, context }, text2) {\n if (context.autolink) {\n text2 = parseUrl(text2);\n }\n if (Array.isArray(text2)) {\n return text2.map((entry) => {\n if (typeof entry === \"string\") {\n return entry;\n }\n const { component, props } = entry;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n });\n }\n return text2;\n}\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction isCodeNode(node) {\n return [\"code\", \"inlineCode\"].includes(node.type);\n}\nconst remarkStripCode = function() {\n return function(tree) {\n visitParents(tree, isCodeNode, (node, ancestors) => {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n parent.children.splice(index, 1, {\n ...node,\n value: \"\"\n });\n return [SKIP, index + 1];\n });\n };\n};\nfunction remarkUnescape() {\n return function(tree) {\n visitParents(tree, (node) => [\"text\", \"code\", \"inlineCode\"].includes(node.type), (node, ancestors) => {\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node);\n parent.children.splice(index, 1, {\n ...node,\n value: node.value.replace(/</gmi, \"<\").replace(/>/gmi, \">\")\n });\n return [SKIP, index + 1];\n });\n };\n}\nconst LINK_PROTOCOLS = [\"http\", \"https\", \"mailto\", \"tel\"];\nconst rehypeHighlight = ref(null);\nasync function importRehypeHighlightLibrary() {\n const module = await import(\"rehype-highlight\");\n rehypeHighlight.value = module.default;\n}\nconst _sfc_main = {\n name: \"NcRichText\",\n components: {\n NcReferenceList\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n arguments: {\n type: Object,\n default: () => {\n return {};\n }\n },\n referenceLimit: {\n type: Number,\n default: 0\n },\n referenceInteractive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n referenceInteractiveOptIn: {\n type: Boolean,\n default: false\n },\n /** Provide data upfront to avoid extra http request */\n references: {\n type: Array,\n default: null\n },\n /** Provide basic Markdown syntax */\n useMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide GitHub Flavored Markdown syntax */\n useExtendedMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide event from rendered markdown inputs */\n interactive: {\n type: Boolean,\n default: false\n },\n autolink: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"interact-todo\",\n \"interact:todo\"\n ],\n data() {\n return {\n parentId: GenRandomId(5)\n };\n },\n methods: {\n renderPlaintext(h) {\n const placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return prepareTextNode({ h, context: this }, entry);\n }\n const argumentId = matches[1];\n const argument = this.arguments[argumentId];\n if (typeof argument === \"object\") {\n const { component, props } = argument;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n }\n if (argument) {\n return h(\"span\", { class: \"rich-text--fallback\" }, argument);\n }\n return entry;\n });\n return h(\"div\", { class: \"rich-text--wrapper\" }, [\n h(\"div\", {}, placeholders.flat()),\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.text,\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n renderMarkdown(h) {\n const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {\n autolink: this.autolink,\n useMarkdown: this.useMarkdown,\n useExtendedMarkdown: this.useExtendedMarkdown\n }).use(remarkUnescape).use(this.useExtendedMarkdown ? remarkGfm : void 0).use(breaks).use(remarkUnlinkProtocols, { except: LINK_PROTOCOLS }).use(remark2rehype, {\n handlers: {\n component(toHast, node) {\n return toHast(node, node.component, { value: node.value });\n }\n }\n }).use(this.useExtendedMarkdown ? rehypeHighlight.value : void 0).use(remarkPlaceholder).use(rehypeExternalLinks, {\n target: \"_blank\",\n rel: [\"noopener noreferrer\"]\n }).use(rehype2react, {\n createElement: (tag, attrs, children) => {\n if (!tag.startsWith(\"#\")) {\n if ([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(tag)) {\n tag = `h${Math.min(+String(tag)[1] + 3, 6)}`;\n }\n if (this.useExtendedMarkdown) {\n if (tag === \"code\" && !rehypeHighlight.value && attrs?.attrs?.class?.includes(\"language\")) {\n importRehypeHighlightLibrary();\n }\n if (tag === \"pre\" && Array.isArray(children) && children[0].tag === \"code\") {\n const id = this.parentId + \"-code-block-\" + GenRandomId(5);\n return h(\"p\", { class: \"rich-text__code-block\" }, [\n h(tag, { attrs: { ...attrs, id } }, children),\n h(NcRichTextCopyButton, {\n props: { contentId: id },\n class: \"rich-text__code-block-button\"\n })\n ]);\n }\n let nestedNode = null;\n if (tag === \"li\" && Array.isArray(children) && children[0].tag === \"input\" && children[0].data.attrs.type === \"checkbox\") {\n const [inputNode, ...labelParts] = children;\n const nestedNodeIndex = labelParts.findIndex((child) => [\"ul\", \"ol\", \"li\", \"blockquote\", \"pre\"].includes(child.tag));\n if (nestedNodeIndex !== -1) {\n nestedNode = labelParts[nestedNodeIndex];\n labelParts.splice(nestedNodeIndex);\n }\n const id = this.parentId + \"-markdown-input-\" + GenRandomId(5);\n const inputComponent = h(NcCheckboxRadioSwitch, {\n attrs: {\n ...inputNode.data.attrs,\n id,\n disabled: !this.interactive\n },\n on: {\n \"update:checked\": () => {\n this.$emit(\"interact-todo\", id);\n this.$emit(\"interact:todo\", id);\n }\n }\n }, labelParts);\n return h(tag, attrs, [inputComponent, nestedNode]);\n }\n }\n if (tag === \"a\") {\n const route = getRoute(this.$router, attrs.attrs.href);\n if (route) {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(RouterLink, {\n ...attrs,\n props: {\n to: route\n }\n }, children);\n }\n const isAllowedScheme = /^(https?:\\/\\/|tel:|mailto:)/.test(attrs.attrs.href);\n if (isAllowedScheme) {\n attrs.attrs.href = attrs.attrs.href.trim();\n return h(NcRichTextExternalLink, attrs, children);\n } else {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(\"span\", attrs, children);\n }\n }\n return h(tag, attrs, children);\n }\n const placeholder = this.arguments[tag.slice(1)];\n if (!placeholder) {\n return h(\"span\", { ...{ attrs }, ...{ class: \"rich-text--fallback\" } }, [`{${tag.slice(1)}}`]);\n }\n if (!placeholder.component) {\n return h(\"span\", attrs, [placeholder]);\n }\n return h(\n placeholder.component,\n {\n attrs,\n props: placeholder.props,\n class: \"rich-text--component\"\n },\n children\n );\n },\n prefix: false\n }).processSync(this.text.replace(/<[^>]+>/g, (match) => match.replace(/</g, \"<\")).replace(/>/gmi, \">\")).result;\n return h(\"div\", { class: \"rich-text--wrapper rich-text--wrapper-markdown\" }, [\n renderedMarkdown,\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.prepareReferenceSource(this.text),\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n /**\n * Strip content of inline code and code blocks for reference widgets\n * (e.g. ignore fenced links from being added as reference)\n *\n * @param {string} text - Content of the node\n */\n prepareReferenceSource(text2) {\n if (!this.useMarkdown && !this.useExtendedMarkdown) {\n return text2;\n }\n const processor = unified();\n processor.compiler = (tree) => toString(tree);\n return processor.use(remarkParse).use(remarkStripCode).processSync(text2.replace(/\\s/g, \" \")).value;\n }\n },\n render(h) {\n return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown(h) : this.renderPlaintext(h);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e55203a2\"\n);\nconst NcRichText = __component__.exports;\nexport {\n NcRichText as N,\n NcReferenceList as a\n};\n//# sourceMappingURL=NcRichText-K2ZjNIbK.mjs.map\n","import '../assets/NcProfileHoverCard-D3V682nS.css';\nimport { defineComponent, ref, computed, watch, onMounted } from \"vue\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { generateUrl, generateOcsUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-D7uypboC.mjs\";\nimport NcActionLink from \"../Components/NcActionLink.mjs\";\nimport NcActionRouter from \"../Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-C1ty7wsG.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcRichText } from \"./NcRichText-K2ZjNIbK.mjs\";\nimport { useIsSmallMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, U as t1, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nconst _sfc_main$5 = {\n name: \"AccountOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$5 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon account-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n null\n);\nconst AccountIcon = __component__$5.exports;\nconst _sfc_main$4 = {\n name: \"BriefcaseOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon briefcase-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6C20.58,6 21.05,6.2 21.42,6.59C21.8,7 22,7.45 22,8V19C22,19.55 21.8,20 21.42,20.41C21.05,20.8 20.58,21 20,21H4C3.42,21 2.95,20.8 2.58,20.41C2.2,20 2,19.55 2,19V8C2,7.45 2.2,7 2.58,6.59C2.95,6.2 3.42,6 4,6H8V4C8,3.42 8.2,2.95 8.58,2.58C8.95,2.2 9.42,2 10,2H14C14.58,2 15.05,2.2 15.42,2.58C15.8,2.95 16,3.42 16,4V6H20M4,8V19H20V8H4M14,6V4H10V6H14Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst BriefcaseIcon = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"ClockOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon clock-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst ClockIcon = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"MapMarkerOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon map-marker-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5M12,2A7,7 0 0,1 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9C7,10 7,12 12,18.71C17,12 17,10 17,9A5,5 0 0,0 12,4Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst MapMarkerIcon = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"PencilOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pencil-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst PencilIcon = __component__$1.exports;\nregister(t1);\n/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst PROFILE_CACHE_TTL_MS = 30 * 60 * 1e3;\nconst cache = /* @__PURE__ */ new Map();\nconst inflight = /* @__PURE__ */ new Map();\nfunction getCachedProfile(userId) {\n const entry = cache.get(userId);\n if (!entry) {\n return null;\n }\n if (Date.now() >= entry.expiresAt) {\n cache.delete(userId);\n return null;\n }\n return entry.data;\n}\nfunction setCachedProfile(userId, data, ttlMs = PROFILE_CACHE_TTL_MS) {\n cache.set(userId, {\n data,\n expiresAt: Date.now() + ttlMs\n });\n}\nasync function fetchProfileCached(userId, fetcher, ttlMs = PROFILE_CACHE_TTL_MS) {\n const cached = getCachedProfile(userId);\n if (cached) {\n return cached;\n }\n const pending = inflight.get(userId);\n if (pending) {\n return pending;\n }\n const promise = (async () => {\n try {\n const data = await fetcher();\n if (data) {\n setCachedProfile(userId, data, ttlMs);\n }\n return data;\n } finally {\n inflight.delete(userId);\n }\n })();\n inflight.set(userId, promise);\n return promise;\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProfileHoverCard\",\n props: {\n user: { default: null },\n profile: { default: null },\n preloadedUserStatus: { default: null },\n open: { type: Boolean, default: false },\n actions: { default: null },\n actionsLoading: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n const loading = ref(false);\n const error = ref(false);\n const profileData = ref(props.profile);\n const userStatus = ref(props.preloadedUserStatus ?? {});\n const isMobile = useIsSmallMobile();\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n const isCurrentUser = computed(() => !!props.user && getCurrentUser()?.uid === props.user);\n const settingsUrl = generateUrl(\"/settings/user\");\n const resolvedActions = computed(() => {\n if (props.actions && props.actions.length > 0) {\n return props.actions.filter((action) => action.appId !== \"timezone\");\n }\n return (profileData.value?.actions ?? []).filter((action) => action.appId !== \"timezone\").map((action) => ({\n id: action.id,\n appId: action.appId,\n text: action.title,\n href: action.target || void 0,\n icon: action.icon,\n target: action.id === \"phone\" ? \"_self\" : \"_blank\",\n rel: action.id === \"fediverse\" ? \"me\" : void 0\n }));\n });\n const localTimeLabel = computed(() => {\n const time = formatProfileLocalTime(/* @__PURE__ */ new Date());\n if (!time) {\n return null;\n }\n return t(\"Local time: {time}\", { time });\n });\n const primaryAction = computed(() => resolvedActions.value[0]);\n const otherActions = computed(() => resolvedActions.value.slice(1));\n const primaryActionButtonProps = computed(() => {\n const action = primaryAction.value;\n if (!action) {\n return {};\n }\n if (action.to) {\n return { to: action.to };\n }\n if (action.href) {\n return {\n href: action.href,\n target: action.target ?? (action.href.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel\n };\n }\n return {};\n });\n const emptyProfileMessage = computed(() => {\n if (isCurrentUser.value) {\n return t(\"You have not added any info yet\");\n }\n const name = profileData.value?.displayname || props.user || \"\";\n return t(\"{user} has not added any info yet\", { user: name });\n });\n const avatarUserStatus = computed(() => ({\n status: userStatus.value.status ?? null,\n icon: userStatus.value.icon ?? null,\n message: userStatus.value.message ?? null\n }));\n function formatProfileLocalTime(date) {\n const timeZone = profileData.value?.timezone;\n if (timeZone) {\n try {\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone,\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(date);\n } catch {\n }\n }\n if (typeof profileData.value?.timezoneOffset === \"number\") {\n const shifted = new Date(date.getTime() + profileData.value.timezoneOffset * 1e3);\n return new Intl.DateTimeFormat(getCanonicalLocale(), {\n timeZone: \"UTC\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n }).format(shifted);\n }\n return null;\n }\n function isIconUrl(icon) {\n return !!icon && (/^(https?:)?\\/\\//.test(icon) || icon.startsWith(\"/\") || icon.startsWith(\"data:\"));\n }\n function otherActionComponent(action) {\n if (action.to) {\n return NcActionRouter;\n }\n if (action.onClick && !action.href) {\n return NcActionButton;\n }\n return NcActionLink;\n }\n function otherActionProps(action) {\n if (action.to) {\n return { to: action.to, closeAfterClick: true };\n }\n if (action.onClick && !action.href) {\n return { closeAfterClick: true };\n }\n return {\n href: action.href,\n target: action.target ?? (action.href?.startsWith(\"tel:\") ? \"_self\" : \"_blank\"),\n rel: action.rel,\n closeAfterClick: true\n };\n }\n watch(() => props.profile, (value) => {\n if (value) {\n profileData.value = value;\n if (props.user) {\n setCachedProfile(props.user, value);\n }\n error.value = false;\n }\n });\n watch(() => props.preloadedUserStatus, (value) => {\n if (value) {\n userStatus.value = value;\n }\n });\n watch(() => props.user, () => {\n profileData.value = props.profile;\n userStatus.value = props.preloadedUserStatus ?? {};\n error.value = false;\n if (props.user && props.profile) {\n setCachedProfile(props.user, props.profile);\n }\n if (props.open) {\n loadProfile();\n }\n });\n watch(() => props.open, (isOpen) => {\n if (isOpen) {\n loadProfile();\n }\n });\n onMounted(() => {\n if (props.open) {\n loadProfile();\n }\n });\n function hasPreloadedUserStatus() {\n return props.preloadedUserStatus !== null || !!(userStatus.value.icon || userStatus.value.message || userStatus.value.status);\n }\n async function ensureUserStatus(userId) {\n if (!hasPreloadedUserStatus()) {\n userStatus.value = await fetchUserStatus(userId);\n }\n }\n async function loadProfile() {\n if (!props.user || loading.value) {\n return;\n }\n const userId = props.user;\n if (!profileData.value) {\n const cached = getCachedProfile(userId);\n if (cached) {\n profileData.value = cached;\n }\n }\n if (profileData.value) {\n await ensureUserStatus(userId);\n return;\n }\n loading.value = true;\n error.value = false;\n try {\n const [profile, status] = await Promise.all([\n fetchProfileCached(userId, async () => {\n const { data } = await axios.get(generateOcsUrl(\"/profile/{userId}\", { userId }));\n return data.ocs?.data ?? null;\n }),\n hasPreloadedUserStatus() ? Promise.resolve(userStatus.value) : fetchUserStatus(userId)\n ]);\n profileData.value = profile;\n userStatus.value = status;\n if (!profileData.value) {\n error.value = true;\n }\n } catch (e) {\n logger.debug(\"Failed to load profile for hovercard\", { error: e, user: userId });\n error.value = true;\n } finally {\n loading.value = false;\n }\n }\n async function fetchUserStatus(userId) {\n try {\n if (!getCapabilities()?.user_status?.enabled || !getCurrentUser()) {\n return {};\n }\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{userId}\", { userId }));\n return data.ocs?.data ?? {};\n } catch (e) {\n logger.debug(\"Failed to load user status for hovercard\", { error: e, userId });\n return {};\n }\n }\n return { __sfc: true, props, loading, error, profileData, userStatus, isMobile, isCurrentUser, settingsUrl, resolvedActions, localTimeLabel, primaryAction, otherActions, primaryActionButtonProps, emptyProfileMessage, avatarUserStatus, formatProfileLocalTime, isIconUrl, otherActionComponent, otherActionProps, hasPreloadedUserStatus, ensureUserStatus, loadProfile, fetchUserStatus, AccountIcon, BriefcaseIcon, ClockIcon, MapMarkerIcon, PencilIcon, NcActions, NcAvatar, NcButton, NcEmptyContent, NcLoadingIcon, NcRichText, t, NcIconSvgWrapper };\n }\n});\nvar _sfc_render = function render6() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"profile-hover-card\", attrs: { \"role\": \"dialog\", \"aria-label\": _setup.t(\"Profile of {user}\", { user: _setup.profileData?.displayname || _vm.user || \"\" }) } }, [_setup.loading ? _c(\"div\", { staticClass: \"profile-hover-card__loading\" }, [_c(_setup.NcLoadingIcon, { attrs: { \"size\": 32, \"name\": _setup.t(\"Loading profile\") } })], 1) : _setup.profileData && !_setup.error ? [_c(\"div\", { staticClass: \"profile-hover-card__header\" }, [_setup.isCurrentUser ? _c(_setup.NcButton, { staticClass: \"profile-hover-card__header__edit\", attrs: { \"variant\": \"tertiary\", \"aria-label\": _setup.t(\"Edit profile\"), \"title\": _setup.t(\"Edit profile\"), \"href\": _setup.settingsUrl, \"target\": \"_blank\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.PencilIcon, { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3660207582) }) : _vm._e(), _c(\"div\", { staticClass: \"profile-hover-card__header__container\" }, [_setup.isMobile ? _c(_setup.NcAvatar, { staticClass: \"avatar profile-hover-card__header__container__avatar\", attrs: { \"user\": _setup.profileData.userId, \"size\": 96, \"disableMenu\": \"\", \"disableTooltip\": \"\", \"preloadedUserStatus\": _setup.avatarUserStatus, \"isNoUser\": !_setup.profileData.isUserAvatarVisible } }) : _c(\"div\", { staticClass: \"profile-hover-card__header__container__placeholder\" }), _c(\"div\", { staticClass: \"profile-hover-card__header__container__identity\" }, [_c(\"div\", { staticClass: \"profile-hover-card__header__container__displayname\" }, [_c(\"h2\", [_vm._v(_vm._s(_setup.profileData.displayname || _setup.profileData.userId))]), _setup.profileData.pronouns ? _c(\"span\", { staticClass: \"profile-hover-card__header__container__pronoun-separator\" }, [_vm._v(\"·\")]) : _vm._e(), _setup.profileData.pronouns ? _c(\"span\", { staticClass: \"profile-hover-card__header__container__pronouns\" }, [_vm._v(_vm._s(_setup.profileData.pronouns))]) : _vm._e()]), _setup.userStatus.icon || _setup.userStatus.message ? _c(\"div\", { staticClass: \"profile-hover-card__header__container__status\" }, [_c(\"span\", { staticClass: \"profile-hover-card__header__container__status-content\" }, [_c(\"span\", [_vm._v(_vm._s(_setup.userStatus.icon) + \" \" + _vm._s(_setup.userStatus.message))])])]) : _vm._e()])], 1)], 1), _c(\"div\", { staticClass: \"profile-hover-card__body\" }, [_c(\"div\", { staticClass: \"profile-hover-card__content\" }, [_c(\"div\", { staticClass: \"profile-hover-card__sidebar\" }, [!_setup.isMobile ? _c(_setup.NcAvatar, { staticClass: \"avatar\", attrs: { \"user\": _setup.profileData.userId, \"size\": 135, \"disableMenu\": \"\", \"disableTooltip\": \"\", \"preloadedUserStatus\": _setup.avatarUserStatus, \"isNoUser\": !_setup.profileData.isUserAvatarVisible } }) : _vm._e(), _c(\"div\", { staticClass: \"user-actions\" }, [_vm.actionsLoading && _setup.resolvedActions.length === 0 ? _c(\"div\", { staticClass: \"user-actions__loading\" }, [_c(_setup.NcLoadingIcon, { attrs: { \"size\": 20, \"name\": _setup.t(\"Loading actions\") } })], 1) : [_setup.primaryAction ? _c(_setup.NcButton, _vm._b({ staticClass: \"user-actions__primary\", attrs: { \"variant\": \"primary\" }, on: { \"click\": _setup.primaryAction.onClick }, scopedSlots: _vm._u([_setup.primaryAction.iconSvg || _setup.primaryAction.icon ? { key: \"icon\", fn: function() {\n return [_setup.primaryAction.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": _setup.primaryAction.iconSvg } }) : _setup.isIconUrl(_setup.primaryAction.icon) ? _c(\"img\", { staticClass: \"user-actions__primary__icon\", attrs: { \"src\": _setup.primaryAction.icon, \"alt\": \"\" } }) : _c(\"span\", { staticClass: \"user-actions__primary__icon-class\", class: _setup.primaryAction.icon, attrs: { \"aria-hidden\": \"true\" } })];\n }, proxy: true } : null], null, true) }, \"NcButton\", _setup.primaryActionButtonProps, false), [_vm._v(\" \" + _vm._s(_setup.primaryAction.text) + \" \")]) : _vm._e(), _setup.otherActions.length > 0 ? _c(_setup.NcActions, { staticClass: \"user-actions__other\", attrs: { \"inline\": _setup.isMobile ? 5 : 4 } }, _vm._l(_setup.otherActions, function(action, index) {\n return _c(_setup.otherActionComponent(action), _vm._b({ key: action.id || action.href || index, tag: \"component\", on: { \"click\": action.onClick }, scopedSlots: _vm._u([action.iconSvg || action.icon ? { key: \"icon\", fn: function() {\n return [action.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": action.iconSvg } }) : _setup.isIconUrl(action.icon) ? _c(\"img\", { staticClass: \"user-actions__other__icon\", attrs: { \"src\": action.icon, \"alt\": \"\" } }) : _c(\"span\", { staticClass: \"user-actions__other__icon-class\", class: action.icon, attrs: { \"aria-hidden\": \"true\" } })];\n }, proxy: true } : null], null, true) }, \"component\", _setup.otherActionProps(action), false), [_vm._v(\" \" + _vm._s(action.text) + \" \")]);\n }), 1) : _vm._e()]], 2)], 1), _c(\"div\", { staticClass: \"profile-hover-card__blocks\" }, [_setup.profileData.organisation || _setup.profileData.role || _setup.profileData.address || _setup.localTimeLabel ? _c(\"div\", { staticClass: \"profile-hover-card__blocks-details\" }, [_setup.profileData.organisation || _setup.profileData.role ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.BriefcaseIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.profileData.organisation) + \" \"), _setup.profileData.organisation && _setup.profileData.role ? _c(\"span\", [_vm._v(\"•\")]) : _vm._e(), _vm._v(\" \" + _vm._s(_setup.profileData.role) + \" \")], 1)]) : _vm._e(), _setup.profileData.address ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.MapMarkerIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.profileData.address) + \" \")], 1)]) : _vm._e(), _setup.localTimeLabel ? _c(\"div\", { staticClass: \"detail\" }, [_c(\"p\", [_c(_setup.ClockIcon, { staticClass: \"detail-icon\", attrs: { \"size\": 16, \"title\": \"\" } }), _vm._v(\" \" + _vm._s(_setup.localTimeLabel) + \" \")], 1)]) : _vm._e()]) : _vm._e(), _setup.profileData.headline || _setup.profileData.biography ? [_setup.profileData.headline ? _c(\"h3\", { staticClass: \"profile-hover-card__blocks-headline\" }, [_vm._v(\" \" + _vm._s(_setup.profileData.headline) + \" \")]) : _vm._e(), _setup.profileData.biography ? _c(\"div\", { staticClass: \"profile-hover-card__blocks-biography\" }, [_c(_setup.NcRichText, { attrs: { \"text\": _setup.profileData.biography, \"useExtendedMarkdown\": \"\" } })], 1) : _vm._e()] : _c(_setup.NcEmptyContent, { staticClass: \"profile-hover-card__blocks-empty-info\", attrs: { \"name\": _setup.emptyProfileMessage, \"description\": _setup.t(\"The headline and about sections will show up here\") }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.AccountIcon, { attrs: { \"size\": 40 } })];\n }, proxy: true }]) })], 2)])])] : _c(\"div\", { staticClass: \"profile-hover-card__error\" }, [_vm._v(\" \" + _vm._s(_setup.t(\"Failed to load profile\")) + \" \")])], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"cf5e55fe\"\n);\nconst NcProfileHoverCard = __component__.exports;\nexport {\n NcProfileHoverCard as default\n};\n//# sourceMappingURL=NcProfileHoverCard-DK5YkGF0.mjs.map\n","import '../assets/NcProgressBar-CU_ib_HL.css';\nimport { useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n name: \"NcProgressBar\",\n props: {\n /**\n * An integer between 1 and 100\n */\n value: {\n type: Number,\n default: 0,\n validator(value) {\n return value >= 0 && value <= 100;\n }\n },\n /**\n * Determines the height of the progressbar.\n * Possible values:\n * - 'small' (default)\n * - 'medium'\n * - Number\n *\n * @type {'small'|'medium'|number}\n */\n size: {\n type: [String, Number],\n default: \"small\",\n validator(value) {\n return [\"small\", \"medium\"].includes(value) || typeof value === \"number\";\n }\n },\n /**\n * Applies an error color to the progressbar if true.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * ProgressBar type\n */\n type: {\n type: String,\n default: \"linear\",\n validator(value) {\n return [\"linear\", \"circular\"].includes(value);\n }\n },\n /**\n * The color of the progress bar\n */\n color: {\n type: String,\n default: null\n }\n },\n data() {\n return {\n stroke: 4\n };\n },\n computed: {\n height() {\n if (this.type === \"circular\") {\n if (Number.isInteger(this.size)) {\n return this.size;\n }\n return 44;\n }\n if (this.size === \"small\") {\n return 4;\n } else if (this.size === \"medium\") {\n return 6;\n }\n return this.size;\n },\n progress() {\n return this.value / 100;\n },\n radius() {\n return this.height / 2;\n },\n radiusNormalized() {\n return this.radius - 3 * this.stroke;\n },\n circumference() {\n return this.radiusNormalized * 2 * Math.PI;\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"15a054de\": _vm.color\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.type === \"circular\" ? _c(\"span\", { staticClass: \"progress-bar progress-bar--circular\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"role\": \"progressbar\", \"aria-valuenow\": _vm.value } }, [_c(\"svg\", { attrs: { \"height\": _vm.height, \"width\": _vm.height } }, [_c(\"circle\", { attrs: { \"stroke\": \"currentColor\", \"fill\": \"transparent\", \"stroke-dasharray\": `${_vm.progress * _vm.circumference} ${(1 - _vm.progress) * _vm.circumference}`, \"stroke-dashoffset\": 0.25 * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } }), _c(\"circle\", { attrs: { \"stroke\": \"var(--color-background-darker)\", \"fill\": \"transparent\", \"stroke-dasharray\": `${(1 - _vm.progress) * _vm.circumference} ${_vm.progress * _vm.circumference}`, \"stroke-dashoffset\": (0.25 - _vm.progress) * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } })])]) : _c(\"progress\", { staticClass: \"progress-bar progress-bar--linear vue\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"max\": \"100\" }, domProps: { \"value\": _vm.value } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"06c9abdc\"\n);\nconst NcProgressBar = __component__.exports;\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-D7zYeXBH.mjs.map\n","if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the <li> container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"<li>No Match Found!</li>\";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"<li>No Match Found!</li>\";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '<span class=\"tribute-mention\">' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"</span>\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"<span>\",\n post: this.current.collection.searchOpts.post || \"</span>\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcRelatedResourcesPanel-D5DxWJPc.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, V as t39, a as t, W as t43, X as t10 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport { g as getRoute } from \"./autolink-COrOqbJu.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-C7Dy9Bph.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t39);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n icon: {\n type: String,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"resource\" }, [_c(\"NcButton\", { staticClass: \"resource__button\", attrs: { \"aria-label\": _vm.labelTranslated, \"to\": _vm.route, \"href\": _vm.route ? null : _vm.url, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"div\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": _vm.icon } })])];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"2660b55a\"\n);\nconst NcResource = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon account-group-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst AccountGroup = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon open-in-new-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst OpenInNew = __component__$2.exports;\nregister(t43);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n providerId: {\n type: String,\n default: null\n },\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"Could not fetch Teams resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"team-resources\" }, [_c(\"h5\", { staticClass: \"team-resources__header\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Related team resources\")) + \" \")]), _vm._l(_vm.teamResources, function(team) {\n return _c(\"details\", { key: team.teamId, staticClass: \"related-team\", attrs: { \"name\": \"Team resources\", \"open\": _vm.open(team.teamId) }, on: { \"toggle\": (event) => _vm.toggleOpen(team.teamId, event.target.open) } }, [_c(\"summary\", { staticClass: \"related-team__header\" }, [_c(\"h5\", { staticClass: \"related-team__name\" }, [_c(\"AccountGroup\", { attrs: { \"size\": 20 } }), _vm._v(\" \" + _vm._s(team.displayName) + \" \")], 1), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"View team\"), \"href\": team.link, \"title\": _vm.t(\"View team\"), \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"OpenInNew\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }), _vm.open(team.teamId) ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })], 1), _c(\"div\", _vm._l(_vm.teamProviders(team.teamId), function(provider) {\n return _c(\"div\", { key: provider.id, staticClass: \"related-team-provider\" }, [provider.resources.length > 0 ? _c(\"h6\", [_vm._v(\" \" + _vm._s(provider.name) + \" \")]) : _vm._e(), _c(\"ul\", _vm._l(provider.resources, function(resource) {\n return _c(\"li\", { key: resource.url, staticClass: \"related-team-resource\" }, [_c(\"a\", { staticClass: \"related-team-resource__link\", attrs: { \"href\": resource.url } }, [resource.iconEmoji ? _c(\"span\", { staticClass: \"resource__icon\" }, [_vm._v(\" \" + _vm._s(resource.iconEmoji) + \" \")]) : resource.iconSvg ? _c(\"NcIconSvgWrapper\", { staticClass: \"resource__icon\", attrs: { \"svg\": resource.iconSvg, \"size\": 20 } }) : resource.iconURL ? _c(\"span\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": resource.iconURL, \"alt\": \"\" } })]) : _vm._e(), _c(\"span\", { staticClass: \"resource__name\" }, [_vm._v(\" \" + _vm._s(resource.label) + \" \")])], 1)]);\n }), 0)]);\n }), 0)]);\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"82938a03\"\n);\nconst NcTeamResources = __component__$1.exports;\nregister(t10);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * Make the header name dynamic\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"has-error\",\n \"has-resources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId;\n let itemId;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"has-error\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"has-resources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = e;\n logger.error(\"Could not fetch related resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_c(\"NcTeamResources\", { attrs: { \"provider-id\": _vm.providerId, \"item-id\": _vm.itemId } }), _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"related-resources\" }, [_c(\"div\", { staticClass: \"related-resources__header\" }, [_c(\"h5\", [_vm._v(_vm._s(_vm.header))]), _c(\"p\", [_vm._v(_vm._s(_vm.subline))])]), _vm._l(_vm.resources, function(resource) {\n return _c(\"NcResource\", { key: resource.itemId, staticClass: \"related-resources__entry\", attrs: { \"icon\": resource.icon, \"name\": resource.title, \"url\": resource.url } });\n })], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3ca2fd14\"\n);\nconst NcRelatedResourcesPanel = __component__.exports;\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-BKygMHvP.mjs.map\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_custom_picker_elements ??= {};\nwindow._registerCustomPickerElement ??= registerCustomPickerElement;\nclass NcCustomPickerRenderResult {\n element;\n object;\n /**\n * @param element - The HTML element\n * @param object - The object\n */\n constructor(element, object) {\n this.element = element;\n this.object = object;\n }\n}\nfunction isCustomPickerElementRegistered(id) {\n return !!window._vue_richtext_custom_picker_elements[id];\n}\nfunction getCustomPickerElementSize(id) {\n const size = window._vue_richtext_custom_picker_elements[id]?.size;\n if ([\"small\", \"normal\", \"large\", \"full\"].includes(size)) {\n return size;\n }\n return null;\n}\nfunction registerCustomPickerElement(id, callback, onDestroy = () => {\n}, size = \"large\") {\n if (window._vue_richtext_custom_picker_elements[id]) {\n logger.error(`Custom reference picker element for id ${id} already registered`);\n return;\n }\n window._vue_richtext_custom_picker_elements[id] = {\n id,\n callback,\n onDestroy,\n size\n };\n}\nfunction renderCustomPickerElement(el, options) {\n const { providerId, accessible } = options;\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n logger.error(`Custom reference picker element for reference provider ID ${providerId} not registered`);\n return;\n }\n return window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible });\n}\nfunction destroyCustomPickerElement(providerId, el, renderResult) {\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n return;\n }\n window._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult);\n}\nexport {\n NcCustomPickerRenderResult as N,\n renderCustomPickerElement as a,\n destroyCustomPickerElement as d,\n getCustomPickerElementSize as g,\n isCustomPickerElementRegistered as i,\n registerCustomPickerElement as r\n};\n//# sourceMappingURL=customPickerElements-CYpmyl0b.mjs.map\n","import '../assets/referencePickerModal-0oYth4rX.css';\nimport Vue from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { a as renderCustomPickerElement, d as destroyCustomPickerElement, i as isCustomPickerElementRegistered, g as getCustomPickerElementSize } from \"./customPickerElements-CYpmyl0b.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { imagePath, generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, _ as t9, a as t, $ as t48, a0 as t42, a1 as t25, A as t44, a2 as t32, n as t19, a3 as t13 } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { N as NcHighlight } from \"./index-CxTT94_h.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { N as NcReferenceWidget } from \"./NcReferenceWidget-CMq5QVka.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CQp8XS4C.mjs\";\nimport { D as DotsHorizontalIcon } from \"./NcActions-CX1MSord.mjs\";\nimport { N as NcButton } from \"./NcButton-DAGirW_B.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nconst _sfc_main$7 = {\n name: \"NcCustomPickerElement\",\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n isRegistered: isCustomPickerElementRegistered(this.provider.id),\n renderResult: null\n };\n },\n mounted() {\n if (this.isRegistered) {\n this.renderElement();\n }\n },\n beforeDestroy() {\n if (this.isRegistered) {\n destroyCustomPickerElement(this.provider.id, this.$el, this.renderResult);\n }\n },\n methods: {\n renderElement() {\n if (this.$refs.domElement) {\n this.$refs.domElement.innerHTML = \"\";\n }\n const renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false });\n Promise.resolve(renderFunctionResult).then((result) => {\n this.renderResult = result;\n if (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n this.renderResult.object.$on(\"submit\", this.onSubmit);\n this.renderResult.object.$on(\"cancel\", this.onCancel);\n }\n this.renderResult.element.addEventListener(\"submit\", (e) => {\n this.onSubmit(e.detail);\n });\n this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n });\n },\n onSubmit(value) {\n this.$emit(\"submit\", value);\n },\n onCancel() {\n this.$emit(\"cancel\");\n }\n }\n};\nvar _sfc_render$7 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"domElement\" });\n};\nvar _sfc_staticRenderFns$7 = [];\nvar __component__$7 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$7,\n _sfc_render$7,\n _sfc_staticRenderFns$7,\n false,\n null,\n \"0547d92f\"\n);\nconst NcCustomPickerElement = __component__$7.exports;\nconst _sfc_main$6 = {\n name: \"LinkVariantIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst LinkVariantIcon = __component__$6.exports;\nregister(t9);\nconst anyLinkProviderId = \"any-link\";\nconst anyLinkProvider = {\n id: anyLinkProviderId,\n title: t(\"Any link\"),\n order: 0,\n icon_url: imagePath(\"core\", \"filetypes/link.svg\")\n};\nwindow._vue_richtext_reference_providers ??= loadState(\"core\", \"reference-provider-list\", []);\nwindow._vue_richtext_reference_provider_timestamps ??= loadState(\"core\", \"reference-provider-timestamps\", {});\nfunction getProvider(providerId) {\n if (providerId === anyLinkProviderId) {\n return anyLinkProvider;\n }\n return getProviders().find((p) => p.id === providerId);\n}\nfunction getProviders() {\n return window._vue_richtext_reference_providers.filter((p) => {\n const keep = !!p.search_providers_ids && p.search_providers_ids.length > 0 || isCustomPickerElementRegistered(p.id);\n if (!keep) {\n logger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`);\n }\n return keep;\n });\n}\nfunction sortProviders(providerList) {\n const timestamps = window._vue_richtext_reference_provider_timestamps;\n return providerList.sort((a, b) => {\n return a.order === b.order ? 0 : a.order > b.order ? 1 : -1;\n }).sort((a, b) => {\n const ta = timestamps[a.id];\n const tb = timestamps[b.id];\n return ta === tb ? 0 : tb === void 0 ? -1 : ta === void 0 ? 1 : ta > tb ? -1 : 1;\n });\n}\nfunction searchProvider(query, limit) {\n const providers = getProviders();\n const escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const regexp = new RegExp(escapedQuery, \"i\");\n const sortedProviders = sortProviders(providers);\n const filteredSortedProviders = sortedProviders.filter((p) => {\n return p.title.match(regexp);\n });\n const searchResult = limit ? filteredSortedProviders.slice(0, limit) : filteredSortedProviders;\n if (query === \"\" || searchResult.length === 0) {\n searchResult.push(anyLinkProvider);\n }\n return searchResult;\n}\nasync function touchProvider(providerId) {\n const timestamp = Math.floor(Date.now() / 1e3);\n const url = generateOcsUrl(\"references/provider/{providerId}\", { providerId });\n await axios.put(url, { timestamp });\n window._vue_richtext_reference_provider_timestamps[providerId] = timestamp;\n}\nregister(t42, t48);\nlet mytimer = 0;\nfunction delay(callback, ms) {\n return function() {\n const context = this;\n const args = arguments;\n clearTimeout(mytimer);\n mytimer = setTimeout(function() {\n callback.apply(context, args);\n }, ms);\n };\n}\nfunction isUrl(str) {\n try {\n return Boolean(new URL(str));\n } catch {\n return false;\n }\n}\nconst _sfc_main$5 = {\n name: \"NcProviderList\",\n components: {\n NcSelect,\n NcHighlight,\n NcEmptyContent,\n LinkVariantIcon\n },\n emits: [\n \"select-provider\",\n \"submit\"\n ],\n data() {\n return {\n selectedProvider: null,\n query: \"\",\n multiselectPlaceholder: t(\"Select provider\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n options() {\n const result = [];\n if (this.query !== \"\" && isUrl(this.query)) {\n result.push({\n id: this.query,\n title: this.query,\n isLink: true\n });\n }\n result.push(...searchProvider(this.query));\n return result;\n }\n },\n methods: {\n focus() {\n setTimeout(() => {\n this.$refs[\"provider-select\"]?.$el?.querySelector(\"#provider-select-input\")?.focus();\n }, 300);\n },\n onProviderSelected(p) {\n if (p !== null) {\n if (p.isLink) {\n this.$emit(\"submit\", p.title);\n } else {\n this.$emit(\"select-provider\", p);\n }\n this.selectedProvider = null;\n }\n },\n onSearch(query) {\n this.query = query;\n }\n }\n};\nvar _sfc_render$5 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"provider-list\" }, [_c(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", \"label\": \"title\", \"placeholder\": _vm.multiselectPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"clear-search-on-select\": true, \"clear-search-on-blur\": () => false, \"filterable\": false }, on: { \"search\": _vm.onSearch, \"input\": _vm.onProviderSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isLink ? _c(\"div\", { staticClass: \"provider\" }, [_c(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { \"size\": 20 } }), _c(\"span\", [_vm._v(_vm._s(option.title))])], 1) : _c(\"div\", { staticClass: \"provider\" }, [_c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": option.icon_url, \"alt\": _vm.providerIconAlt } }), _c(\"NcHighlight\", { staticClass: \"option-text\", attrs: { \"search\": _vm.query, \"text\": option.title } })], 1)];\n } }]), model: { value: _vm.selectedProvider, callback: function($$v) {\n _vm.selectedProvider = $$v;\n }, expression: \"selectedProvider\" } }), _c(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n \"f39d58d9\"\n);\nconst NcProviderList = __component__$5.exports;\nregister(t25);\nconst _sfc_main$4 = {\n name: \"NcRawLinkInput\",\n components: {\n LinkVariantIcon,\n NcEmptyContent,\n NcLoadingIcon,\n NcReferenceWidget,\n NcTextField\n },\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n inputValue: \"\",\n loading: false,\n reference: null,\n abortController: null,\n inputPlaceholder: t(\"Enter link\")\n };\n },\n computed: {\n isLinkValid() {\n return isUrl(this.inputValue);\n }\n },\n methods: {\n focus() {\n this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]?.focus();\n },\n onSubmit(e) {\n const value = e.target.value;\n if (this.isLinkValid) {\n this.$emit(\"submit\", value);\n }\n },\n onClear() {\n this.inputValue = \"\";\n this.reference = null;\n },\n onInput() {\n this.reference = null;\n if (this.abortController) {\n this.abortController.abort();\n }\n if (this.isLinkValid) {\n delay(() => {\n this.updateReference();\n }, 500)();\n }\n },\n updateReference() {\n this.loading = true;\n this.abortController = new AbortController();\n axios.get(generateOcsUrl(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n signal: this.abortController.signal\n }).then((response) => {\n this.reference = response.data.ocs.data.references[this.inputValue];\n }).catch((error) => {\n logger.error(\"Could not update reference\", { error });\n }).then(() => {\n this.loading = false;\n });\n }\n }\n};\nvar _sfc_render$4 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"raw-link\" }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"NcTextField\", { ref: \"url-input\", attrs: { \"value\": _vm.inputValue, \"show-trailing-button\": _vm.inputValue !== \"\", \"label\": _vm.inputPlaceholder }, on: { \"update:value\": [function($event) {\n _vm.inputValue = $event;\n }, _vm.onInput], \"trailing-button-click\": _vm.onClear }, nativeOn: { \"keyup\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_vm.loading ? _c(\"NcLoadingIcon\", { attrs: { \"size\": 16 } }) : _c(\"LinkVariantIcon\", { attrs: { \"size\": 16 } })], 1)], 1), _vm.reference !== null ? _c(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { \"reference\": _vm.reference } }) : _c(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"be630586\"\n);\nconst NcRawLinkInput = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"NcSearchResult\",\n components: {\n NcHighlight\n },\n props: {\n /**\n * Unified search result entry\n */\n entry: {\n type: Object,\n required: true\n },\n /**\n * The query that led to getting this result\n * Used to highlight the entry text\n */\n query: {\n type: String,\n required: true\n }\n }\n};\nvar _sfc_render$3 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"result\" }, [_vm.entry.icon ? _c(\"div\", { staticClass: \"result--icon-class\", class: { [_vm.entry.icon]: true, rounded: _vm.entry.rounded } }) : _c(\"img\", { staticClass: \"result--image\", class: { rounded: _vm.entry.rounded }, attrs: { \"src\": _vm.entry.thumbnailUrl } }), _c(\"div\", { staticClass: \"result--content\" }, [_c(\"span\", { staticClass: \"result--content--name\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.title } })], 1), _c(\"span\", { staticClass: \"result--content--subline\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.subline } })], 1)])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n \"995c2758\"\n);\nconst NcSearchResult = __component__$3.exports;\nregister(t32, t42, t44);\nconst LIMIT = 5;\nconst _sfc_main$2 = {\n name: \"NcSearch\",\n components: {\n LinkVariantIcon,\n DotsHorizontalIcon,\n NcEmptyContent,\n NcSelect,\n NcSearchResult\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The selected reference provider\n */\n provider: {\n type: Object,\n required: true\n },\n showEmptyContent: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Placeholder of the search\n */\n searchPlaceholder: {\n type: String,\n default: null\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n searchQuery: \"\",\n selectedResult: null,\n resultsBySearchProvider: {},\n searching: false,\n searchingMoreOf: null,\n abortController: null,\n noOptionsText: t(\"Start typing to search\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n mySearchPlaceholder() {\n return this.searchPlaceholder || t(\"Search\");\n },\n searchProviderIds() {\n return this.provider.search_providers_ids;\n },\n options() {\n if (this.searchQuery === \"\") {\n return [];\n }\n const options = [];\n if (isUrl(this.searchQuery)) {\n options.push(this.rawLinkEntry);\n }\n options.push(...this.formattedSearchResults);\n return options;\n },\n rawLinkEntry() {\n return {\n id: \"rawLinkEntry\",\n resourceUrl: this.searchQuery,\n isRawLink: true\n };\n },\n formattedSearchResults() {\n const results = [];\n this.searchProviderIds.forEach((pid) => {\n if (this.resultsBySearchProvider[pid].entries.length > 0) {\n if (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n results.push({\n id: \"groupTitle-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isCustomGroupTitle: true,\n providerId: pid\n });\n }\n const providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n return {\n id: \"provider-\" + pid + \"-entry-\" + index,\n ...entry\n };\n });\n results.push(...providerEntriesWithId);\n if (this.resultsBySearchProvider[pid].isPaginated) {\n results.push({\n id: \"moreOf-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isMore: true,\n providerId: pid,\n isLoading: this.searchingMoreOf === pid\n });\n }\n }\n });\n return results;\n }\n },\n mounted() {\n this.resetResults();\n },\n beforeDestroy() {\n this.cancelSearchRequests();\n },\n methods: {\n t,\n resetResults() {\n const resultsBySearchProvider = {};\n this.searchProviderIds.forEach((pid) => {\n resultsBySearchProvider[pid] = {\n entries: []\n };\n });\n this.resultsBySearchProvider = resultsBySearchProvider;\n },\n focus() {\n setTimeout(() => {\n this.$refs[\"search-select\"]?.$el?.querySelector(\"#search-select-input\")?.focus();\n }, 300);\n },\n cancelSearchRequests() {\n if (this.abortController) {\n this.abortController.abort();\n }\n },\n onSearchInput(query) {\n this.searchQuery = query;\n delay(() => {\n this.updateSearch();\n }, 500)();\n },\n onSelectResultSelected(item) {\n if (item !== null) {\n if (item.resourceUrl) {\n this.cancelSearchRequests();\n this.$emit(\"submit\", item.resourceUrl);\n } else if (item.isMore) {\n this.searchMoreOf(item.providerId).then(() => {\n this.selectedResult = null;\n });\n }\n }\n },\n searchMoreOf(searchProviderId) {\n this.searchingMoreOf = searchProviderId;\n this.cancelSearchRequests();\n return this.searchProviders(searchProviderId);\n },\n updateSearch() {\n this.cancelSearchRequests();\n this.resetResults();\n if (this.searchQuery === \"\") {\n this.searching = false;\n return;\n }\n return this.searchProviders();\n },\n searchProviders(searchProviderId = null) {\n this.abortController = new AbortController();\n this.searching = true;\n const searchPromises = searchProviderId === null ? [...this.searchProviderIds].map((pid) => {\n return this.searchOneProvider(pid);\n }) : [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)];\n return Promise.allSettled(searchPromises).then((promises) => {\n const isOneCanceled = !!promises.find((p) => {\n return p.status === \"rejected\" && (p.reason.name === \"CanceledError\" || p.reason.code === \"ERR_CANCELED\");\n });\n if (!isOneCanceled) {\n this.searching = false;\n this.searchingMoreOf = null;\n }\n });\n },\n searchOneProvider(providerId, cursor = null) {\n const url = cursor === null ? generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId, term: this.searchQuery, limit: LIMIT }) : generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId, term: this.searchQuery, limit: LIMIT, cursor });\n return axios.get(url, {\n signal: this.abortController.signal\n }).then((response) => {\n const data = response.data.ocs.data;\n this.resultsBySearchProvider[providerId].name = data.name;\n this.resultsBySearchProvider[providerId].cursor = data.cursor;\n this.resultsBySearchProvider[providerId].isPaginated = data.isPaginated;\n this.resultsBySearchProvider[providerId].entries.push(...data.entries);\n });\n }\n }\n};\nvar _sfc_render$2 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": _vm.showEmptyContent } }, [_c(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", \"label\": \"name\", \"placeholder\": _vm.mySearchPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"close-on-select\": false, \"clear-search-on-select\": false, \"clear-search-on-blur\": () => false, \"reset-focus-on-options-change\": false, \"filterable\": false, \"autoscroll\": true, \"reset-on-options-change\": false, \"loading\": _vm.searching }, on: { \"search\": _vm.onSearchInput, \"input\": _vm.onSelectResultSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isRawLink ? _c(\"div\", { staticClass: \"custom-option\" }, [_c(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Raw link {options}\", { options: option.resourceUrl })) + \" \")])], 1) : option.resourceUrl ? _c(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { \"entry\": option, \"query\": _vm.searchQuery } }) : option.isCustomGroupTitle ? _c(\"span\", { staticClass: \"custom-option group-name\" }, [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _vm._e(), _c(\"span\", { staticClass: \"option-text\" }, [_c(\"strong\", [_vm._v(_vm._s(option.name))])])]) : option.isMore ? _c(\"span\", { staticClass: \"custom-option\" }, [option.isLoading ? _c(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : _c(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t('Load more \"{options}\"', { options: option.name })) + \" \")])], 1) : _vm._e()];\n } }, { key: \"no-options\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.noOptionsText) + \" \")];\n }, proxy: true }]), model: { value: _vm.selectedResult, callback: function($$v) {\n _vm.selectedResult = $$v;\n }, expression: \"selectedResult\" } }), _vm.showEmptyContent ? _c(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"alt\": _vm.providerIconAlt, \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }], null, false, 2922132592) }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"e61f71e3\"\n);\nconst NcSearch = __component__$2.exports;\nconst MODES = {\n providerList: 1,\n standardLinkInput: 2,\n searchInput: 3,\n customElement: 4\n};\nconst _sfc_main$1 = {\n name: \"NcReferencePicker\",\n components: {\n NcCustomPickerElement,\n NcProviderList,\n NcRawLinkInput,\n NcSearch\n },\n props: {\n /**\n * Provider to select on creation\n * Default: null. Show the provider list\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Optional width in pixels\n * Default: 100%\n */\n width: {\n type: Number,\n default: null\n },\n /**\n * Focus on the provider list select input on creation\n * Default: true\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"cancel\",\n \"cancel-raw-link\",\n \"cancel-search\",\n \"provider-selected\",\n \"submit\"\n ],\n data() {\n return {\n MODES,\n selectedProvider: this.initialProvider\n };\n },\n computed: {\n mode() {\n return this.selectedProvider === null ? MODES.providerList : isCustomPickerElementRegistered(this.selectedProvider.id) ? MODES.customElement : this.selectedProvider.search_providers_ids ? MODES.searchInput : MODES.standardLinkInput;\n },\n pickerWrapperStyle() {\n return {\n width: this.width ? this.width + \"px\" : void 0\n };\n }\n },\n mounted() {\n if (this.focusOnCreate) {\n if (this.initialProvider) {\n setTimeout(() => {\n this.$refs[\"url-input\"]?.focus();\n }, 300);\n } else {\n this.$nextTick(() => {\n this.$refs[\"provider-list\"]?.focus();\n });\n }\n }\n },\n methods: {\n onEscapePressed() {\n if (this.selectedProvider !== null) {\n this.deselectProvider();\n } else {\n this.cancelProviderSelection();\n }\n },\n onProviderSelected(provider) {\n this.selectedProvider = provider;\n this.$emit(\"provider-selected\", provider);\n this.$nextTick(() => {\n this.$refs[\"url-input\"]?.focus();\n });\n },\n cancelCustomElement() {\n this.deselectProvider();\n },\n cancelSearch() {\n this.$emit(\"cancel-search\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelRawLinkInput() {\n this.$emit(\"cancel-raw-link\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelProviderSelection() {\n this.$emit(\"cancel\");\n },\n submitLink(link) {\n if (this.selectedProvider !== null) {\n touchProvider(this.selectedProvider.id);\n }\n this.$emit(\"submit\", link);\n this.deselectProvider();\n },\n deselectProvider() {\n this.selectedProvider = null;\n this.$emit(\"provider-selected\", null);\n setTimeout(() => {\n this.$refs[\"provider-list\"]?.focus();\n }, 300);\n }\n }\n};\nvar _sfc_render$1 = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"reference-picker\", style: _vm.pickerWrapperStyle, attrs: { \"tabindex\": \"-1\" }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onEscapePressed.apply(null, arguments);\n } } }, [_vm.mode === _vm.MODES.providerList ? _c(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": _vm.onProviderSelected, \"submit\": _vm.submitLink, \"cancel\": _vm.cancelProviderSelection } }) : _vm.mode === _vm.MODES.standardLinkInput ? _c(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelRawLinkInput } }) : _vm.mode === _vm.MODES.searchInput ? _c(\"NcSearch\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"cancel\": _vm.cancelSearch, \"submit\": _vm.submitLink } }) : _vm.mode === _vm.MODES.customElement ? _c(\"div\", { staticClass: \"custom-element-wrapper\" }, [_c(\"NcCustomPickerElement\", { staticClass: \"custom-element\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelCustomElement } })], 1) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"646d5538\"\n);\nconst NcReferencePicker = __component__$1.exports;\nregister(t13, t19);\nconst _sfc_main = {\n name: \"NcReferencePickerModal\",\n components: {\n NcReferencePicker,\n NcModal,\n NcButton,\n ArrowLeftIcon: ArrowLeft,\n CloseIcon: Close\n },\n props: {\n /**\n * Provider to select on creation\n * Show the provider list if no initial one is provided\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Focus on the input item on create\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * If true, add the modal content to the Viewer trap elements via the event-bus\n */\n isInsideViewer: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n show: true,\n selectedProvider: this.initialProvider,\n backButtonTitle: t(\"Back to provider selection\"),\n closeButtonTitle: t(\"Close\"),\n closeButtonLabel: t(\"Close Smart Picker\")\n };\n },\n computed: {\n isProviderSelected() {\n return this.selectedProvider !== null;\n },\n showBackButton() {\n return this.initialProvider === null && this.isProviderSelected;\n },\n modalSize() {\n return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? getCustomPickerElementSize(this.selectedProvider.id) ?? \"large\" : \"normal\";\n },\n showModalName() {\n return !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id);\n },\n modalName() {\n return this.isProviderSelected ? this.selectedProvider.title : t(\"Smart Picker\");\n }\n },\n mounted() {\n if (this.isInsideViewer) {\n const elem = this.$refs.modal_content;\n emit(\"viewer:trapElements:changed\", elem);\n }\n },\n methods: {\n onCancel() {\n this.show = false;\n this.$emit(\"cancel\");\n },\n onSubmit(value) {\n this.show = false;\n this.$emit(\"submit\", value);\n },\n onProviderSelect(provider) {\n this.selectedProvider = provider;\n if (provider === null && this.initialProvider !== null) {\n this.onCancel();\n }\n },\n onBackClicked() {\n this.$refs.referencePicker.deselectProvider();\n }\n }\n};\nvar _sfc_render = function render8() {\n var _vm = this, _c = _vm._self._c;\n return _vm.show ? _c(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { \"size\": _vm.modalSize, \"can-close\": true }, on: { \"close\": _vm.onCancel } }, [_c(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [_vm.showBackButton ? _c(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": _vm.backButtonTitle, \"title\": _vm.backButtonTitle }, on: { \"click\": _vm.onBackClicked }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowLeftIcon\")];\n }, proxy: true }], null, false, 3001860362) }) : _vm._e(), _c(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": _vm.closeButtonLabel, \"title\": _vm.closeButtonTitle, \"variant\": \"tertiary\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"CloseIcon\")];\n }, proxy: true }], null, false, 2491825086) }), _vm.showModalName ? _c(\"h2\", [_vm._v(\" \" + _vm._s(_vm.modalName) + \" \")]) : _vm._e(), _c(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": _vm.initialProvider, \"focus-on-create\": _vm.focusOnCreate }, on: { \"provider-selected\": _vm.onProviderSelect, \"submit\": _vm.onSubmit, \"cancel\": _vm.onCancel } })], 1)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"00990f2a\"\n);\nconst NcReferencePickerModal = __component__.exports;\nasync function getLinkWithPicker(providerId, isInsideViewer) {\n const modalId = \"referencePickerModal\";\n const modalElement = document.createElement(\"div\");\n modalElement.id = modalId;\n document.body.append(modalElement);\n const { promise, reject, resolve } = Promise.withResolvers();\n const initialProvider = providerId && getProvider(providerId) || null;\n const View = Vue.extend(NcReferencePickerModal);\n const view = new View({\n propsData: {\n initialProvider,\n isInsideViewer\n }\n }).$mount(modalElement);\n view.$on(\"cancel\", () => {\n view.$destroy();\n reject(new Error(\"User cancellation\"));\n });\n view.$on(\"submit\", (link) => {\n view.$destroy();\n resolve(link);\n });\n return promise;\n}\nexport {\n NcReferencePicker as N,\n anyLinkProviderId as a,\n getProvider as b,\n getProviders as c,\n sortProviders as d,\n NcReferencePickerModal as e,\n NcSearch as f,\n getLinkWithPicker as g,\n searchProvider as s\n};\n//# sourceMappingURL=referencePickerModal-P_15xB7f.mjs.map\n","import '../assets/NcRichContenteditable-DRPzKa4Z.css';\nimport debounce from \"debounce\";\nimport stringLength from \"string-length\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-BGOeDmNO.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-gpl3yJFX.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { e as emojiSearch, a as emojiAddRecent } from \"./emoji-Dtn2mDf7.mjs\";\nimport { r as register, B as t37, I as t34, a as t, J as n } from \"./_l10n-CAnZaLWU.mjs\";\nimport { r as richEditor } from \"./index-BCqXu_og.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"./NcRichText-K2ZjNIbK.mjs\";\nimport \"./customPickerElements-CYpmyl0b.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-P_15xB7f.mjs\";\nimport \"./createElementId-DhjFt1I9.mjs\";\nimport \"../Components/NcEmptyContent.mjs\";\nimport \"./NcSelect-CxHfXvZV.mjs\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"./NcReferenceWidget-CMq5QVka.mjs\";\nimport \"../Components/NcLoadingIcon.mjs\";\nimport \"./NcTextField-CQp8XS4C.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"./legacy-Cy3dCXuB.mjs\";\nimport \"vue\";\nimport \"./NcButton-DAGirW_B.mjs\";\nimport \"../Components/NcModal.mjs\";\nimport \"./widgets-XxirL-2f.mjs\";\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * @deprecated Use `label` instead\n */\n title: {\n type: String,\n required: false,\n default: null\n },\n label: {\n type: String,\n required: false,\n default: null\n },\n subline: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: null\n },\n icon: {\n type: String,\n required: true\n },\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n // For backwards compatibility\n labelWithFallback() {\n return this.label || this.title;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"autocomplete-result\" }, [_c(\"div\", { staticClass: \"autocomplete-result__icon\", class: [_vm.icon, `autocomplete-result__icon--${_vm.avatarUrl ? \"with-avatar\" : \"\"}`], style: _vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null }, [_vm.status.icon ? _c(\"span\", { staticClass: \"autocomplete-result__status autocomplete-result__status--icon\" }, [_vm._v(\" \" + _vm._s(_vm.status && _vm.status.icon || \"\") + \" \")]) : _vm.status.status && _vm.status.status !== \"offline\" ? _c(\"NcUserStatusIcon\", { staticClass: \"autocomplete-result__status\", attrs: { \"status\": _vm.status.status } }) : _vm._e()], 1), _c(\"span\", { staticClass: \"autocomplete-result__content\" }, [_c(\"span\", { staticClass: \"autocomplete-result__title\", attrs: { \"title\": _vm.labelWithFallback } }, [_vm._v(\" \" + _vm._s(_vm.labelWithFallback) + \" \")]), _vm.subline ? _c(\"span\", { staticClass: \"autocomplete-result__subline\" }, [_vm._v(\" \" + _vm._s(_vm.subline) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"ef14f1ec\"\n);\nconst NcAutoCompleteResult = __component__$1.exports;\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_zixlO\",\n \"tribute-container\": \"_tribute-container_v5Jrn\",\n \"tribute-container__item\": \"_tribute-container__item_pWyWv\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_-ySA2\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_Cw6vn\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_9wjvV\",\n \"tribute-container-link\": \"_tribute-container-link_tv648\",\n \"tribute-item\": \"_tribute-item_GdOxt\",\n \"tribute-item__title\": \"_tribute-item__title_Q03Nj\",\n \"tribute-item__icon\": \"_tribute-item__icon_UvP7g\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => GenRandomId(7)\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element or selector for the tribute (menu popover)\n * Defaults to `body` element\n */\n menuContainer: {\n type: [String, Element, null],\n default: null\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"submit\",\n \"paste\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"smart-picker-submit\"\n ],\n setup() {\n const uid = GenRandomId(5);\n const model = useModelMigration(\"value\", \"update:value\", true);\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n model,\n // Constants\n labelId: `nc-rich-contenteditable-${uid}-label`,\n tributeId: `nc-rich-contenteditable-${uid}-tribute`,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.model,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n return stringLength(this.localValue) > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Proxied native event handlers without custom event handlers\n *\n * @return {Record<string, Function>}\n */\n listeners() {\n const listeners = { ...this.$listeners };\n delete listeners.paste;\n return listeners;\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n model() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.model.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.model);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.model);\n },\n beforeDestroy() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `<div id=\"nc-rich-contenteditable-tribute-item-${GenRandomId(5)}\" class=\"${this.$style[\"tribute-item\"]}\" role=\"option\">${content}</div>`;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '<span class=\"hidden\"></span>',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`<span class=\"${this.$style[\"tribute-item__emoji\"]}\">${item.original.native}</span> :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(`<img class=\"${this.$style[\"tribute-item__icon\"]}\" src=\"${item.original.icon_url}\"> <span class=\"${this.$style[\"tribute-item__title\"]}\">${item.original.title}</span>`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n const menuContainer = typeof this.menuContainer === \"string\" ? document.querySelector(this.menuContainer) : this.menuContainer;\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smart-picker-submit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"Smart picker promise rejected\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '<span id=\"tmp-smart-picker-result-node\"></span>';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.model = text;\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"rich-contenteditable\" }, [_c(\"div\", _vm._g(_vm._b({ ref: \"contenteditable\", staticClass: \"rich-contenteditable__input\", class: {\n \"rich-contenteditable__input--empty\": _vm.isEmptyValue,\n \"rich-contenteditable__input--multiline\": _vm.multiline,\n \"rich-contenteditable__input--has-label\": _vm.label,\n \"rich-contenteditable__input--overflow\": _vm.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": _vm.disabled\n }, attrs: { \"id\": _vm.id, \"contenteditable\": _vm.contenteditableAttributeValue, \"aria-labelledby\": _vm.label ? _vm.labelId : void 0, \"aria-placeholder\": _vm.placeholder, \"aria-multiline\": \"true\", \"role\": \"textbox\", \"aria-haspopup\": \"listbox\", \"aria-autocomplete\": \"inline\", \"aria-controls\": _vm.tributeId, \"aria-expanded\": _vm.isAutocompleteOpen ? \"true\" : \"false\", \"aria-activedescendant\": _vm.autocompleteActiveId, \"title\": _vm.tooltipString }, on: { \"focus\": _vm.moveCursorToEnd, \"input\": _vm.onInput, \"compositionstart\": function($event) {\n _vm.isComposing = true;\n }, \"compositionend\": function($event) {\n _vm.isComposing = false;\n }, \"!keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeyEsc.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.onEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if (!$event.ctrlKey) return null;\n if ($event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onCtrlEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }], \"paste\": _vm.onPaste, \"!keyup\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onKeyUp.apply(null, arguments);\n }, \"tribute-active-true\": function($event) {\n return _vm.onTributeActive(true);\n }, \"tribute-active-false\": function($event) {\n return _vm.onTributeActive(false);\n } } }, \"div\", _vm.$attrs, false), _vm.listeners)), _vm.label ? _c(\"div\", { staticClass: \"rich-contenteditable__label\", attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style1\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n \"2d84a6b6\"\n);\nconst NcRichContenteditable = __component__.exports;\nexport {\n NcAutoCompleteResult as N,\n NcRichContenteditable as a\n};\n//# sourceMappingURL=NcRichContenteditable-rJPX28V6.mjs.map\n","import { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, k as t0, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEllipsisedOption from \"../Components/NcEllipsisedOption.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [Number, Array, Object],\n default: void 0\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n */\n \"input\",\n /**\n * Emitted on input events of the multiselect field\n *\n * @type {number|number[]}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n const noop = () => {\n };\n return {\n model,\n noop\n };\n },\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.model.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.model);\n }\n },\n propsToForward() {\n const {\n // Props handled by this component\n fetchTags,\n optionsFilter,\n passthru,\n // Props to forward\n ...propsToForward\n } = this.$props;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"Loading systemtags failed\", { error });\n }\n },\n methods: {\n handleInput(value) {\n if (this.multiple) {\n this.model = value.map((element) => element.id);\n } else {\n if (value === null) {\n this.model = null;\n } else {\n this.model = value.id;\n }\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcSelect\", _vm._g(_vm._b({ attrs: { \"options\": _vm.availableOptions, \"close-on-select\": !_vm.multiple, \"value\": _vm.passthru ? _vm.model : _vm.localValue }, on: { \"search\": (searchString) => _vm.search = searchString }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(option), \"search\": _vm.search } })];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(selectedOption), \"search\": _vm.search } })];\n } }, _vm._l(_vm.$scopedSlots, function(_, name) {\n return { key: name, fn: function(data) {\n return [_vm._t(name, null, null, data)];\n } };\n })], null, true) }, \"NcSelect\", _vm.propsToForward, false), {\n ..._vm.$listeners,\n input: _vm.passthru ? _vm.$listeners.input : _vm.noop,\n \"update:modelValue\": _vm.passthru ? _vm.$listeners[\"update:modelValue\"] : _vm.handleInput,\n \"update:model-value\": _vm.passthru ? _vm.$listeners[\"update:model-value\"] : _vm.noop\n }));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSelectTags = __component__.exports;\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-BWTTPN2O.mjs.map\n","import '../assets/NcSelectUsers-BDh2CSCJ.css';\nimport { defineComponent, ref, watch } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DIecVacf.mjs\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { r as register, x as t47, h as t17, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t17, t47);\nconst __default__ = {\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcSelectUsers\",\n props: {\n /**\n * `aria-label` for the clear input button\n */\n ariaLabelClearSelected: {\n type: String,\n default: t(\"Clear selected\")\n },\n /**\n * `aria-label` for the listbox element\n */\n ariaLabelListbox: {\n type: String,\n default: t(\"Options\")\n },\n /**\n * Allows to customize the `aria-label` for the deselect-option button\n * The default is \"Deselect \" + optionLabel\n */\n ariaLabelDeselectOption: {\n type: Function,\n default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n },\n /**\n * Keep the dropdown open after selecting an entry.\n */\n keepOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the component\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Callback to determine if the provided option should match the current search text.\n * Used to determine if the option should be displayed.\n *\n * By default it filters by the `displayName` and `subname` properties of the user\n * option object unless this prop is set explicitly\n */\n filterBy: {\n type: Function,\n default: null\n },\n /**\n * Input element id\n */\n inputId: {\n type: String,\n default: () => GenRandomId()\n },\n /**\n * Visible label for the input element\n *\n * @default 'Select account'\n */\n inputLabel: {\n type: String,\n default: t(\"Select account\")\n },\n /**\n * Pass true if you are using an external label.\n * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Show a loading icon.\n *\n * @default false\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Allow selection of multiple options\n *\n * @default false\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Disable automatic wrapping when selected options overflow the width.\n *\n * @default false\n */\n noWrap: {\n type: Boolean,\n default: false\n },\n /**\n * Array of users.\n */\n options: {\n type: Array,\n default: () => []\n },\n /**\n * Placeholder text.\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * Enable if a value is required for native form validation\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Currently selected value\n *\n * The `v-model` directive may be used for two-way data binding\n */\n modelValue: {\n type: Object,\n default: null\n }\n },\n emits: [\"search\", \"update:modelValue\"],\n setup(__props, { emit }) {\n const props = __props;\n const search = ref(\"\");\n watch(search, () => {\n emit(\"search\", search.value);\n });\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function localFilterBy(option, label, search2) {\n if (props.filterBy) {\n return props.filterBy;\n }\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return { __sfc: true, props, emit, search, clickableArea, gridBaseLine, avatarSize, localFilterBy, NcListItemIcon, NcSelect };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcSelect, _vm._b({ staticClass: \"nc-select-users\", attrs: { \"filter-by\": _setup.localFilterBy, \"label\": \"displayName\" }, on: { \"search\": function($event) {\n _setup.search = $event;\n }, \"update:model-value\": function($event) {\n return _vm.$emit(\"update:modelValue\", $event);\n } }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(_setup.NcListItemIcon, _vm._b({ attrs: { \"avatar-size\": 32, \"name\": option.displayName, \"search\": _setup.search } }, \"NcListItemIcon\", option, false))];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(_setup.NcListItemIcon, _vm._b({ attrs: { \"avatar-size\": _setup.avatarSize, \"name\": selectedOption.displayName, \"no-margin\": \"\", \"search\": _setup.search } }, \"NcListItemIcon\", selectedOption, false))];\n } }]) }, \"NcSelect\", _vm.$props, false));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7f7ecbfe\"\n);\nconst NcSelectUsers = __component__.exports;\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-D2jOjPs4.mjs.map\n","import '../assets/NcSettingsInputText-18lfGViv.css';\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, j as t51, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t51);\nconst _sfc_main = {\n name: \"NcSettingsInputText\",\n model: {\n prop: \"value\",\n event: \"update:value\"\n },\n props: {\n /**\n * label of the select group element\n */\n label: {\n type: String,\n required: true\n },\n /**\n * hint of the select group input\n */\n hint: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * value of the select group input\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"settings-input-text-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n *\n * @type {string}\n */\n \"update:modelValue\",\n /* Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"input\",\n \"submit\",\n \"change\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n data() {\n return {\n submitTranslated: t(\"Submit\")\n };\n },\n computed: {\n /**\n * @return {string}\n */\n idSubmit() {\n return this.id + \"-submit\";\n }\n },\n methods: {\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target.value;\n },\n onSubmit(event) {\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n }\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"form\", { ref: \"form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"label\", { staticClass: \"action-input__label\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _c(\"input\", { attrs: { \"id\": _vm.id, \"type\": \"text\", \"disabled\": _vm.disabled }, domProps: { \"value\": _vm.model }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }), _c(\"input\", { staticClass: \"action-input__submit\", attrs: { \"id\": _vm.idSubmit, \"type\": \"submit\" }, domProps: { \"value\": _vm.submitTranslated } }), _vm.hint ? _c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.hint) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9938ac79\"\n);\nconst NcSettingsInputText = __component__.exports;\nexport {\n NcSettingsInputText as N\n};\n//# sourceMappingURL=NcSettingsInputText-Cc7cCwNm.mjs.map\n","import '../assets/NcSettingsSection-Fyy2lFk_.css';\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, w as t26, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon help-circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst HelpCircle = __component__$1.exports;\nregister(t26);\nconst [major] = loadState(\"core\", \"config\", { version: \"30.0\" }).version.split(\".\", 2) ?? [];\nconst isLegacy = major && Number.parseInt(major) < 30;\nconst _sfc_main = {\n name: \"NcSettingsSection\",\n components: {\n HelpCircle\n },\n props: {\n /**\n * The name of the settings section.\n * This is used for the headline and needs to be set.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Further informational description of the section.\n */\n description: {\n type: String,\n default: \"\"\n },\n /**\n * The URL for the documentation about this section\n */\n docUrl: {\n type: String,\n default: \"\"\n },\n /**\n * Limit the width of the setting's content\n *\n * Setting this to false allows unrestricted (width) settings content.\n * Note that the name and description have always a width limit.\n *\n * @deprecated Will be removed with next version and will not be used on Nextcloud 30+ (always forced to true)\n */\n limitWidth: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n data() {\n return {\n docNameTranslated: t(\"External documentation for {name}\", {\n name: this.name\n })\n };\n },\n computed: {\n forceLimitWidth() {\n return this.limitWidth || !isLegacy;\n },\n hasDescription() {\n return this.description.length > 0;\n },\n hasDocUrl() {\n return this.docUrl.length > 0;\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"settings-section\", class: { \"settings-section--limit-width\": _vm.forceLimitWidth } }, [_c(\"h2\", { staticClass: \"settings-section__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \"), _vm.hasDocUrl ? _c(\"a\", { staticClass: \"settings-section__info\", attrs: { \"href\": _vm.docUrl, \"title\": _vm.docNameTranslated, \"aria-label\": _vm.docNameTranslated, \"target\": \"_blank\", \"rel\": \"noreferrer nofollow\" } }, [_c(\"HelpCircle\", { attrs: { \"size\": 20 } })], 1) : _vm._e()]), _vm.hasDescription ? _c(\"p\", { staticClass: \"settings-section__desc\" }, [_vm._v(\" \" + _vm._s(_vm.description) + \" \")]) : _vm._e(), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9fdd9dcb\"\n);\nconst NcSettingsSection = __component__.exports;\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-D9qxzYDc.mjs.map\n","import '../assets/NcSettingsSelectGroup-B9FlWQVH.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect-CxHfXvZV.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, i as t52, a as t } from \"./_l10n-CAnZaLWU.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t52);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: Array,\n default: void 0\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /** Emitted when the groups selection changes<br />**Payload:** `value` (`Array`) - *Ids of selected groups */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"error\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: GenRandomId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.model.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.model.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n value: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.model = value;\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_vm.label ? _c(\"label\", { staticClass: \"hidden-visually\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.label))]) : _vm._e(), _c(\"NcSelect\", { attrs: { \"value\": _vm.inputValue, \"options\": _vm.groupsArray, \"placeholder\": _vm.placeholder || _vm.label, \"filter-by\": _vm.filterGroups, \"input-id\": _vm.id, \"limit\": 5, \"label\": \"displayname\", \"multiple\": true, \"close-on-select\": false, \"disabled\": _vm.disabled }, on: { \"update:model-value\": _vm.update, \"search\": _vm.onSearch } }), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasError, expression: \"hasError\" }], staticClass: \"select-group-error\" }, [_vm._v(\" \" + _vm._s(_vm.errorMessage) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9d59765b\"\n);\nconst NcSettingsSelectGroup = __component__.exports;\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-DzzNyHN_.mjs.map\n","import '../assets/Tooltip-C-QZMStp.css';\nimport { options } from \"floating-vue\";\nimport { VTooltip, options as options2 } from \"floating-vue\";\noptions.themes.tooltip.html = false;\noptions.themes.tooltip.delay = { show: 500, hide: 200 };\noptions.themes.tooltip.distance = 10;\noptions.themes.tooltip[\"arrow-padding\"] = 3;\nexport {\n VTooltip as default,\n options2 as options\n};\n//# sourceMappingURL=Tooltip.mjs.map\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Translations file from library source\n * We also use that to edit the end strings of\n * some buttons, like resetOperations\n *\n * @see https://raw.githubusercontent.com/scaleflex/filerobot-image-editor/v4.8.1/packages/react-filerobot-image-editor/src/context/defaultTranslations.js\n */\nexport default {\n\tname: t('viewer', 'Name'),\n\tsave: t('viewer', 'Save'),\n\tsaveAs: t('viewer', 'Save as'),\n\tback: t('viewer', 'Back'),\n\tloading: t('viewer', 'Loading …'),\n\t// resetOperations: 'Reset/delete all operations',\n\tresetOperations: t('viewer', 'Reset'),\n\tchangesLoseWarningHint: t('viewer', 'All changes will be lost.'),\n\tdiscardChangesWarningHint: t('viewer', 'Are you sure you want to continue?'),\n\tcancel: t('viewer', 'Cancel'),\n\tapply: t('viewer', 'Apply'),\n\twarning: t('viewer', 'Warning'),\n\tconfirm: t('viewer', 'Confirm'),\n\tdiscardChanges: t('viewer', 'Discard changes'),\n\tundoTitle: t('viewer', 'Undo'),\n\tredoTitle: t('viewer', 'Redo'),\n\tshowImageTitle: t('viewer', 'Show original image'),\n\tzoomInTitle: t('viewer', 'Zoom in'),\n\tzoomOutTitle: t('viewer', 'Zoom out'),\n\ttoggleZoomMenuTitle: t('viewer', 'Toggle zoom menu'),\n\tadjustTab: t('viewer', 'Adjust'),\n\tfinetuneTab: t('viewer', 'Fine-tune'),\n\tfiltersTab: t('viewer', 'Filters'),\n\twatermarkTab: t('viewer', 'Watermark'),\n\tannotateTabLabel: t('viewer', 'Draw'),\n\tresize: t('viewer', 'Resize'),\n\tresizeTab: t('viewer', 'Resize'),\n\timageName: t('viewer', 'Image name'),\n\tinvalidImageError: t('viewer', 'Invalid image.'),\n\tuploadImageError: t('viewer', 'Error while uploading the image.'),\n\tareNotImages: t('viewer', 'are not images'),\n\tisNotImage: t('viewer', 'is not an image'),\n\ttoBeUploaded: t('viewer', 'to be uploaded'),\n\tcropTool: t('viewer', 'Crop'),\n\toriginal: t('viewer', 'Original'),\n\tcustom: t('viewer', 'Custom'),\n\tsquare: t('viewer', 'Square'),\n\tlandscape: t('viewer', 'Landscape'),\n\tportrait: t('viewer', 'Portrait'),\n\tellipse: t('viewer', 'Ellipse'),\n\tclassicTv: t('viewer', 'Classic TV'),\n\tcinemascope: t('viewer', 'CinemaScope'),\n\tarrowTool: t('viewer', 'Arrow'),\n\tblurTool: t('viewer', 'Blur'),\n\tbrightnessTool: t('viewer', 'Brightness'),\n\tcontrastTool: t('viewer', 'Contrast'),\n\tellipseTool: t('viewer', 'Ellipse'),\n\tunFlipX: t('viewer', 'Un-flip X'),\n\tflipX: t('viewer', 'Flip X'),\n\tunFlipY: t('viewer', 'Un-flip Y'),\n\tflipY: t('viewer', 'Flip Y'),\n\thsvTool: t('viewer', 'HSV'),\n\thue: t('viewer', 'Hue'),\n\tbrightness: t('viewer', 'Brightness'),\n\tsaturation: t('viewer', 'Saturation'),\n\tvalue: t('viewer', 'Value'),\n\timageTool: t('viewer', 'Image'),\n\timporting: t('viewer', 'Importing …'),\n\taddImage: t('viewer', '+ Add image'),\n\tuploadImage: t('viewer', 'Upload image'),\n\tfromGallery: t('viewer', 'From gallery'),\n\tlineTool: t('viewer', 'Line'),\n\tpenTool: t('viewer', 'Pen'),\n\tpolygonTool: t('viewer', 'Polygon'),\n\tsides: t('viewer', 'Sides'),\n\trectangleTool: t('viewer', 'Rectangle'),\n\tcornerRadius: t('viewer', 'Corner Radius'),\n\tresizeWidthTitle: t('viewer', 'Width in pixels'),\n\tresizeHeightTitle: t('viewer', 'Height in pixels'),\n\ttoggleRatioLockTitle: t('viewer', 'Toggle ratio lock'),\n\tresetSize: t('viewer', 'Reset to original image size'),\n\trotateTool: t('viewer', 'Rotate'),\n\ttextTool: t('viewer', 'Text'),\n\ttextSpacings: t('viewer', 'Text spacing'),\n\ttextAlignment: t('viewer', 'Text alignment'),\n\tfontFamily: t('viewer', 'Font family'),\n\tsize: t('viewer', 'Size'),\n\tletterSpacing: t('viewer', 'Letter spacing'),\n\tlineHeight: t('viewer', 'Line height'),\n\twarmthTool: t('viewer', 'Warmth'),\n\taddWatermark: t('viewer', '+ Add watermark'),\n\taddTextWatermark: t('viewer', '+ Add text watermark'),\n\taddWatermarkTitle: t('viewer', 'Choose watermark type'),\n\tuploadWatermark: t('viewer', 'Upload watermark'),\n\taddWatermarkAsText: t('viewer', 'Add as text'),\n\tpadding: t('viewer', 'Padding'),\n\tpaddings: t('viewer', 'Paddings'),\n\tshadow: t('viewer', 'Shadow'),\n\thorizontal: t('viewer', 'Horizontal'),\n\tvertical: t('viewer', 'Vertical'),\n\tblur: t('viewer', 'Blur'),\n\topacity: t('viewer', 'Opacity'),\n\ttransparency: t('viewer', 'Transparency'),\n\tposition: t('viewer', 'Position'),\n\tstroke: t('viewer', 'Stroke'),\n\tsaveAsModalTitle: t('viewer', 'Save image as'),\n\textension: t('viewer', 'Extension'),\n\tformat: t('viewer', 'Format'),\n\tnameIsRequired: t('viewer', 'Name is required.'),\n\tquality: t('viewer', 'Quality'),\n\timageDimensionsHoverTitle: t('viewer', 'Saved image size (width x height)'),\n\tcropSizeLowerThanResizedWarning: t('viewer', 'Note that the selected crop area is lower than the applied resize which might cause quality decrease'),\n\tactualSize: t('viewer', 'Actual size (100%)'),\n\tfitSize: t('viewer', 'Fit size'),\n\taddImageTitle: t('viewer', 'Select image to add …'),\n\tmutualizedFailedToLoadImg: t('viewer', 'Failed to load image.'),\n\ttabsMenu: t('viewer', 'Menu'),\n\tdownload: t('viewer', 'Download'),\n\twidth: t('viewer', 'Width'),\n\theight: t('viewer', 'Height'),\n\tplus: '+',\n\tcropItemNoEffect: t('viewer', 'No preview available for this crop item'),\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div>\n\t\t<div ref=\"editor\" class=\"viewer__image-editor\" v-bind=\"themeDataAttr\" />\n\t</div>\n</template>\n<script>\nimport { showConfirmation, showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { Node } from '@nextcloud/files'\nimport { linkTo } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport { basename, dirname, extname, join } from 'path'\nimport translations from '../models/editorTranslations.js'\nimport { rawStat } from '../services/FileInfo.ts'\nimport logger from '../services/logger.js'\n\nlet TABS, TOOLS\n\nexport default {\n\tname: 'ImageEditor',\n\n\tprops: {\n\t\tfileid: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsrc: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\timageEditor: null,\n\t\t\tobserver: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tconfig() {\n\t\t\treturn {\n\t\t\t\tsource: this.src,\n\n\t\t\t\tdefaultSavedImageName: this.defaultSavedImageName,\n\t\t\t\tdefaultSavedImageType: this.defaultSavedImageType,\n\t\t\t\t// We use our own translations\n\t\t\t\tuseBackendTranslations: false,\n\n\t\t\t\t// Watch resize\n\t\t\t\tobservePluginContainerSize: true,\n\n\t\t\t\t// Default tab and tool\n\t\t\t\tdefaultTabId: TABS.ADJUST,\n\t\t\t\tdefaultToolId: TOOLS.CROP,\n\n\t\t\t\t// Displayed tabs, disabling watermark\n\t\t\t\ttabsIds: Object.values(TABS)\n\t\t\t\t\t.filter(tab => tab !== TABS.WATERMARK)\n\t\t\t\t\t.sort((a, b) => a.localeCompare(b)),\n\n\t\t\t\t// onBeforeSave: this.onBeforeSave,\n\t\t\t\tonClose: this.onClose,\n\t\t\t\t// onModify: this.onModify,\n\t\t\t\tonSave: this.onSave,\n\n\t\t\t\t// Translations\n\t\t\t\ttranslations,\n\n\t\t\t\ttheme: {\n\t\t\t\t\tpalette: {\n\t\t\t\t\t\t'bg-secondary': 'var(--color-main-background)',\n\t\t\t\t\t\t'bg-primary': 'var(--color-background-dark)',\n\t\t\t\t\t\t'bg-hover': 'var(--color-background-hover)',\n\t\t\t\t\t\t'bg-stateless': 'var(--color-background-dark)',\n\t\t\t\t\t\t// Accent\n\t\t\t\t\t\t'accent-primary': 'var(--color-primary-element)',\n\t\t\t\t\t\t'accent-stateless': 'var(--color-primary-element)',\n\t\t\t\t\t\t'border-active-bottom': 'var(--color-primary-element)',\n\t\t\t\t\t\t// Active state\n\t\t\t\t\t\t'bg-primary-active': 'var(--color-background-dark)',\n\t\t\t\t\t\t'bg-primary-hover': 'var(--color-background-hover)',\n\t\t\t\t\t\t'accent-primary-active': 'var(--color-main-text)',\n\t\t\t\t\t\t'accent-primary-hover': 'var(--color-primary-element)',\n\n\t\t\t\t\t\twarning: 'var(--color-error)',\n\t\t\t\t\t},\n\t\t\t\t\ttypography: {\n\t\t\t\t\t\tfontFamily: 'var(--font-face)',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tText: {\n\t\t\t\t\t// this must be the value of one of the fonts\n\t\t\t\t\tfontFamily: '\"NotoSans\", \"Noto Sans\", \"Arial\", \"Roboto\"',\n\t\t\t\t\tfonts: [\n\t\t\t\t\t\t{ label: 'Sans-serif', value: '\"NotoSans\", \"Noto Sans\", \"Arial\", \"Roboto\"' },\n\t\t\t\t\t\t{ label: 'Serif', value: '\"PTSerif\", \"Georgia\", \"Times New Roman\"' },\n\t\t\t\t\t\t{ label: 'Comic', value: '\"Comic Neue\", \"Comic Sans\"' },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\t\tdecodedSourceName() {\n\t\t\treturn decodeURIComponent(basename(this.src))\n\t\t},\n\t\tdefaultSavedImageName() {\n\t\t\treturn basename(this.decodedSourceName, extname(this.decodedSourceName))\n\t\t},\n\t\tdefaultSavedImageType() {\n\t\t\treturn extname(this.decodedSourceName).slice(1) || 'jpeg'\n\t\t},\n\n\t\thasHighContrastEnabled() {\n\t\t\tconst themes = OCA?.Theming?.enabledThemes || []\n\t\t\treturn themes.find(theme => theme.indexOf('highcontrast') !== -1)\n\t\t},\n\n\t\tthemeDataAttr() {\n\t\t\tif (this.hasHighContrastEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\t'data-theme-dark-highcontrast': true,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'data-theme-dark': true,\n\t\t\t}\n\t\t},\n\t},\n\n\tcreated() {\n\t\t// we need to apply our fonts on the root, but we cannot do this from Vue as we can only access the component.\n\t\t// so we do this manually\n\t\tif (document.getElementById('oca-viewer_image-editor-fonts')) {\n\t\t\treturn\n\t\t}\n\n\t\tconst styleElement = document.createElement('style')\n\t\tstyleElement.id = 'oca-viewer_image-editor-fonts'\n\t\tstyleElement.appendChild(document.createTextNode(`\n\t\t@font-face {\n\t\t\tfont-display: swap;\n\t\t\tfont-family: 'Comic Neue';\n\t\t\tfont-style: normal;\n\t\t\tfont-weight: 400;\n\t\t\tsrc: url('${linkTo('viewer', 'css/fonts/comic-neue-regular.woff2')}') format('woff2');\n\t\t}\n\t\t@font-face {\n\t\t\tfont-display: swap;\n\t\t\tfont-family: 'NotoSans';\n\t\t\tfont-style: normal;\n\t\t\tfont-weight: 400;\n\t\t\tsrc: url('${linkTo('core', 'fonts/NotoSans-Regular-latin.woff2')}') format('woff2');\n\t\t}\n\t\t@font-face {\n\t\t\tfont-display: swap;\n\t\t\tfont-family: 'PTSerif';\n\t\t\tfont-style: normal;\n\t\t\tfont-weight: 400;\n\t\t\tsrc: url('${linkTo('viewer', 'css/fonts/pt-serif-regular.woff2')}') format('woff2');\n\t\t}\n\t\t`))\n\t\tdocument.head.appendChild(styleElement)\n\t},\n\n\tasync mounted() {\n\t\t// Lazy load the image editor\n\t\tconst FilerobotImageEditor = (await import(/* webpackChunkName: 'filerobot' */'filerobot-image-editor')).default\n\t\tTABS = FilerobotImageEditor.TABS\n\t\tTOOLS = FilerobotImageEditor.TOOLS\n\n\t\tthis.imageEditor = new FilerobotImageEditor(\n\t\t\tthis.$refs.editor,\n\t\t\tthis.config,\n\t\t)\n\t\tthis.imageEditor.render()\n\t\twindow.addEventListener('keydown', this.handleKeydown, true)\n\n\t\tthis.observer = new MutationObserver((mutations) => {\n\t\t\tmutations.forEach((mutation) => {\n\t\t\t\tif (mutation.type === 'childList') {\n\t\t\t\t\tmutation.addedNodes.forEach((node) => {\n\t\t\t\t\t\tif (node.classList?.contains('FIE_root') || node.classList?.contains('SfxModal-Wrapper')) {\n\t\t\t\t\t\t\temit('viewer:trapElements:changed', node)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t\t// using body instead of the editor ref because save modal is not mounted in editor\n\t\tthis.observer.observe(document.body, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t})\n\n\t},\n\n\tbeforeDestroy() {\n\t\tif (this.imageEditor) {\n\t\t\tthis.imageEditor.terminate()\n\t\t}\n\t\tthis.observer.disconnect()\n\t\twindow.removeEventListener('keydown', this.handleKeydown, true)\n\t},\n\n\tmethods: {\n\t\tonClose() {\n\t\t\twindow.removeEventListener('keydown', this.handleKeydown, true)\n\t\t\tthis.$emit('close')\n\t\t},\n\t\t/**\n\t\t * Check if a file exists at the given URL\n\t\t * @param {string} url The URL to check\n\t\t * @return {Promise<boolean>} True if the file exists, false otherwise\n\t\t */\n\t\t async fileExists(url) {\n\t\t\ttry {\n\t\t\t\tawait axios.head(url, { validateStatus: status => status === 200 || status === 404 })\n\t\t\t\tconst response = await axios.head(url)\n\t\t\t\treturn response.status === 200\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * User saved the image\n\t\t *\n\t\t * @see https://github.com/scaleflex/filerobot-image-editor#onsave\n\t\t * @param {object} props destructuring object\n\t\t * @param {string} props.fullName the file name\n\t\t * @param {HTMLCanvasElement} props.imageCanvas the image canvas\n\t\t * @param {string} props.mimeType the image mime type\n\t\t * @param {number} props.quality the image saving quality\n\t\t */\n\t\tasync onSave({ fullName, imageCanvas, mimeType, quality }) {\n\t\t\tconst { origin, pathname } = new URL(this.src)\n\t\t\tconst putUrl = origin + join(dirname(pathname), fullName)\n\t\t\tlogger.debug('Saving image...', { putUrl, src: this.src, fullName })\n\n\t\t\tconst fileExists = await this.fileExists(putUrl)\n\t\t\tlogger.debug('File exists', { fileExists })\n\t\t\tif (fileExists) {\n\t\t\t\tlogger.debug('File exists, showing confirmation dialog')\n\t\t\t\ttry {\n\t\t\t\t\tconst isOriginal = fullName === basename(this.src)\n\t\t\t\t\tconst message = isOriginal\n\t\t\t\t\t\t? t('viewer', 'You are about to overwrite the original file. Are you sure you want to continue?')\n\t\t\t\t\t\t: t('viewer', 'A file with this name already exists. Do you want to overwrite it?')\n\n\t\t\t\t\tconst confirmed = await showConfirmation({\n\t\t\t\t\t\tname: t('viewer', 'Confirm overwrite'),\n\t\t\t\t\t\ttext: message,\n\t\t\t\t\t\tlabelConfirm: t('viewer', 'Overwrite'),\n\t\t\t\t\t\tlabelReject: t('viewer', 'Cancel'),\n\t\t\t\t\t})\n\n\t\t\t\t\tif (!confirmed) {\n\t\t\t\t\t\tlogger.debug('User cancelled overwrite')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Error showing confirmation dialog', { error })\n\t\t\t\t\tshowError(t('viewer', 'An error occurred while trying to confirm the file overwrite.'))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// toBlob is not very smart...\n\t\t\tmimeType = mimeType.replace('jpg', 'jpeg')\n\n\t\t\t// Sanity check, 0 < quality < 1\n\t\t\tquality = Math.max(Math.min(quality, 1), 0) || 1\n\n\t\t\ttry {\n\t\t\t\tconst blob = await new Promise(resolve => imageCanvas.toBlob(resolve, mimeType, quality))\n\t\t\t\tconst response = await axios.put(putUrl, new File([blob], fullName))\n\t\t\t\tlogger.info('Edited image saved!', { response })\n\t\t\t\tshowSuccess(t('viewer', 'Image saved'))\n\t\t\t\tif (putUrl !== this.src) {\n\t\t\t\t\tconst fileId = parseInt(response?.headers?.['oc-fileid']?.split('oc')[0]) || null\n\t\t\t\t\temit('editor:file:created', putUrl)\n\t\t\t\t\tif (fileId) {\n\t\t\t\t\t\tconst newParams = window.OCP.Files.Router.params\n\t\t\t\t\t\tnewParams.fileId = fileId\n\t\t\t\t\t\twindow.OCP.Files.Router.goToRoute(null, newParams, window.OCP.Files.Router.query)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('updated')\n\t\t\t\t\tconst updatedFile = await rawStat(origin, decodeURI(pathname))\n\n\t\t\t\t\tconst node = new Node({\n\t\t\t\t\t\tid: Number.parseInt(this.fileid),\n\t\t\t\t\t\tsource: this.src,\n\t\t\t\t\t\tmtime: new Date(updatedFile.lastmod),\n\t\t\t\t\t\t...updatedFile,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...updatedFile,\n\t\t\t\t\t\t\t...updatedFile.props,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\temit('files:node:updated', node)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Error saving image', { error })\n\t\t\t\tshowError(t('viewer', 'Error saving image'))\n\t\t\t}\n\t\t},\n\n\t\t// Key Handlers, override default Viewer arrow and escape key\n\t\thandleKeydown(event) {\n\t\t\t// Enter needs to be reached through as otherwise saving text does not work\n\t\t\tif (event.key !== 'Enter') {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t}\n\t\t\t// escape key\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\t// Since we cannot call the closeMethod and know if there\n\t\t\t\t// are unsaved changes, let's fake a close button trigger.\n\t\t\t\tevent.preventDefault()\n\t\t\t\tdocument.querySelector('.FIE_topbar-close-button').click()\n\t\t\t}\n\n\t\t\t// ctrl + S = save\n\t\t\tif (event.ctrlKey && event.key === 's') {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tdocument.querySelector('.FIE_topbar-save-button').click()\n\t\t\t}\n\n\t\t\t// ctrl + Z = undo\n\t\t\tif (event.ctrlKey && event.key === 'z') {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tdocument.querySelector('.FIE_topbar-undo-button').click()\n\t\t\t}\n\t\t},\n\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Take full screen size ()\n.viewer__image-editor {\n\tposition: absolute;\n\tz-index: 10100;\n\ttop: calc(var(--header-height) * -1);\n\tbottom: calc(var(--header-height) * -1);\n\tleft: 0;\n\twidth: 100%;\n\theight: 100dvh;\n}\n</style>\n\n<style lang=\"scss\">\n// Make sure the editor and its modals are above everything\n.SfxModal-Wrapper {\n\tz-index: 10102 !important;\n}\n\n#SfxPopper {\n\tz-index: 10102;\n\tposition: relative;\n}\n\n// Default styling\n.viewer__image-editor,\n.SfxModal-Wrapper,\n.SfxPopper-wrapper {\n\t* {\n\t\t// Fix font size for the entire image editor\n\t\tfont-size: var(--default-font-size) !important;\n\t}\n\n\tlabel,\n\tbutton {\n\t\tcolor: var(--color-main-text);\n\t\tline-height: var(--default-line-height, 1.5) !important;\n\t\t> span {\n\t\t\tfont-size: var(--default-font-size) !important;\n\t\t}\n\t}\n\n\t// Fix button ratio and center content\n\tbutton {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tmin-width: var(--default-clickable-area);\n\t\tmin-height: var(--default-clickable-area);\n\t\tpadding: 6px 12px;\n\t}\n}\n\n// Input styling\n.SfxInput-root {\n\theight: auto !important;\n\tpadding: 0 !important;\n\t.SfxInput-Base {\n\t\tmargin: 0 !important;\n\t}\n}\n\n// Select styling\n.SfxSelect-root {\n\tpadding: 8px !important;\n}\n\n// Global buttons\n.SfxButton-root {\n\tmin-height: var(--default-clickable-area) !important;\n\tmargin: 0 !important;\n\tborder: transparent !important;\n\t&[color='error'] {\n\t\tcolor: white !important;\n\t\tbackground-color: var(--color-error) !important;\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder-color: white !important;\n\t\t\tbackground-color: var(--color-error-hover) !important;\n\t\t}\n\t}\n\t&[color='primary'] {\n\t\tcolor: var(--color-primary-element-text) !important;\n\t\tbackground-color: var(--color-primary-element) !important;\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-primary-element-hover) !important;\n\t\t}\n\t}\n}\n\n// Menu items\n.SfxMenuItem-root {\n\theight: var(--default-clickable-area);\n\tpadding-inline-start: 8px !important;\n\t// Center the menu entry icon and fix width\n\t> div {\n\t\tmargin-inline-end: 0;\n\t\tpadding: 14px;\n\t\t// Minus the parent padding-left\n\t\tpadding: calc(14px - 8px);\n\t\tcursor: pointer;\n\t}\n\n\t// Disable jpeg saving (jpg is already here)\n\t&[value='jpeg'] {\n\t\tdisplay: none;\n\t}\n}\n\n// Modal\n.SfxModal-Container {\n\tmin-height: 300px;\n\tpadding: 22px;\n\n\t// Fill height\n\t.SfxModal-root,\n\t.SfxModalTitle-root {\n\t\tflex: 1 1 100%;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.SfxModalTitle-Icon {\n\t\tmargin-bottom: 22px !important;\n\t\tbackground: none !important;\n\t\t// Fit EmptyContent styling\n\t\tsvg {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\t\t\topacity: .4;\n\t\t\t// Override all coloured icons\n\n\t\t\t--color-primary: var(--color-main-text);\n\t\t\t--color-error: var(--color-main-text);\n\t\t}\n\t}\n\t// Hide close icon (use cancel button)\n\t.SfxModalTitle-Close {\n\t\tdisplay: none !important;\n\t}\n\t// Modal actions buttons display\n\t.SfxModalActions-root {\n\t\tjustify-content: space-evenly !important;\n\t}\n}\n\n// Header buttons\n.FIE_topbar-center-options > button,\n.FIE_topbar-center-options > label {\n\tmargin-inline-start: 6px !important;\n}\n\n.FIE_tabs_toggle_btn{\n\tdisplay: none !important;\n}\n\n// Tabs\n.FIE_tabs {\n\tpadding: 6px !important;\n\toverflow: hidden;\n\toverflow-y: auto;\n}\n\n.FIE_tab {\n\twidth: 80px !important;\n\theight: 80px !important;\n\tpadding: 8px;\n\tborder-radius: var(--border-radius-large) !important;\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n\t&-label {\n\t\tmargin-top: 8px !important;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tmax-width: 100%;\n\t\twhite-space: nowrap;\n\t\tdisplay: block !important;\n\t}\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover) !important;\n\t}\n\n\t&[aria-selected=true] {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t\tbox-shadow: 0 0 0 2px var(--color-primary-element);\n\t}\n}\n\n// Tools bar\n.FIE_tools-bar {\n\t&-wrapper {\n\t\tmax-height: max-content !important;\n\t}\n\n\t// Matching buttons tools\n\t& > div[class$='-tool-button'],\n\t& > div[class$='-tool'] {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tmin-width: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\tpadding: 6px 16px;\n\t\tborder-radius: var(--border-radius-pill);\n\t}\n}\n\n// Crop preset select button\n.FIE_crop-presets-opener-button {\n\t// override default button width\n\tmin-width: 0 !important;\n\tpadding: 5px !important;\n\tpadding-inline-start: 10px !important;\n\tborder: none !important;\n\tbackground-color: transparent !important;\n}\n\n// Force icon-only style\n.FIE_topbar-history-buttons button,\n.FIE_topbar-close-button,\n.FIE_resize-ratio-locker {\n\tborder: none !important;\n\tbackground-color: transparent !important;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover) !important;\n\t}\n\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n}\n\n// Left top bar buttons\n.FIE_topbar-history-buttons button {\n\t&.FIE_topbar-reset-button {\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t\tfont-weight: normal;\n\t\t}\n\t\tsvg {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n// Save button fixes\n.FIE_topbar-save-wrapper {\n\twidth: auto !important;\n}\n\n.FIE_topbar-save-button {\n\tcolor: var(--color-primary-text) !important;\n\tborder: none !important;\n\tbackground-color: var(--color-primary-element) !important;\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-primary-element-hover) !important;\n\t}\n}\n\n// Save Modal fixes\n.FIE_resize-tool-options {\n\t.FIE_resize-width-option,\n\t.FIE_resize-height-option {\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t}\n}\n\n// Resize lock\n.FIE_resize-ratio-locker {\n\tmargin-inline-end: 8px !important;\n\t// Icon is very thin\n\tsvg {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tpath {\n\t\t\tstroke-width: 1;\n\t\t\tstroke: var(--color-main-text);\n\t\t\tfill: var(--color-main-text);\n\t\t}\n\t}\n}\n\n// Canvas container\n.FIE_canvas-container {\n\tbackground-color: var(--color-main-background) !important;\n}\n\n// Loader\n.FIE_spinner::after,\n.FIE_spinner-label {\n\tdisplay: none !important;\n}\n\n.FIE_spinner-wrapper {\n\tbackground-color: transparent !important;\n}\n\n.FIE_spinner::before {\n\tposition: absolute;\n\tz-index: 2;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 28px;\n\theight: 28px;\n\tmargin: -16px 0 0 -16px;\n\tcontent: '';\n\t-webkit-transform-origin: center;\n\t-ms-transform-origin: center;\n\ttransform-origin: center;\n\t-webkit-animation: rotate .8s infinite linear;\n\tanimation: rotate .8s infinite linear;\n\tborder: 2px solid var(--color-loading-light);\n\tborder-top-color: var(--color-loading-dark);\n\tborder-radius: 100%;\n\n\tfilter: var(--background-invert-if-dark);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { BasicFileInfo } from './models'\n\nconst livePictureExt = ['jpg', 'jpeg', 'png']\nconst livePictureExtRegex = new RegExp(`\\\\.(${livePictureExt.join('|')})$`, 'i')\n\n/**\n * Return the peer live photo from a list of files based on its fileId\n * @param peerFileId\n * @param fileList\n */\nexport function findLivePhotoPeerFromFileId(peerFileId: number, fileList: BasicFileInfo[]): BasicFileInfo | undefined {\n\treturn fileList.find(file => file.fileid === peerFileId)\n}\n\n/**\n * Return the peer live photo from a list of files based on the original file name.\n * @param referenceFile\n * @param fileList\n */\nexport function findLivePhotoPeerFromName(referenceFile: BasicFileInfo, fileList: BasicFileInfo[]): BasicFileInfo | undefined {\n\treturn fileList.find(comparedFile => {\n\t\t// if same filename and extension is allowed\n\t\treturn comparedFile.filename !== referenceFile.filename\n\t\t\t\t&& (comparedFile.basename.startsWith(referenceFile.name) && livePictureExtRegex.test(comparedFile.basename))\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ResponseDataDetailed } from 'webdav'\n\nimport { getClient, getRootPath } from '@nextcloud/files/dav'\n\n/**\n * Manually load a WebDAV media from its filename, then expose the received Blob as an object URL.\n * This is needed for E2EE files that will error when loading them directly from the HTML element's src attribute.\n * Can be removed if we ever move the E2EE proxy to a service worker.\n *\n * @param filename - The file's path\n */\nexport async function preloadMedia(filename: string): Promise<string> {\n\tconst client = getClient()\n\tconst response = await client.getFileContents(`${getRootPath()}${filename}`, { details: true }) as ResponseDataDetailed<ArrayBuffer>\n\treturn URL.createObjectURL(new Blob([response.data], { type: response.headers['content-type'] }))\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"image_container\">\n\t\t<ImageEditor v-if=\"editing\"\n\t\t\t:mime=\"mime\"\n\t\t\t:src=\"src\"\n\t\t\t:fileid=\"fileid\"\n\t\t\t@close=\"onClose\" />\n\n\t\t<template v-else-if=\"data !== null\">\n\t\t\t<img v-if=\"!livePhotoCanBePlayed\"\n\t\t\t\tref=\"image\"\n\t\t\t\t:alt=\"alt\"\n\t\t\t\t:class=\"{\n\t\t\t\t\tdragging,\n\t\t\t\t\tloaded,\n\t\t\t\t\tzoomed: zoomRatio > 1\n\t\t\t\t}\"\n\t\t\t\t:src=\"data\"\n\t\t\t\t:style=\"imgStyle\"\n\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t@load=\"updateImgSize\"\n\t\t\t\t@wheel.stop.prevent=\"updateZoom\"\n\t\t\t\t@dblclick.prevent=\"onDblclick\"\n\t\t\t\t@pointerdown.prevent=\"pointerDown\"\n\t\t\t\t@pointerup.prevent=\"pointerUp\"\n\t\t\t\t@pointermove.prevent=\"pointerMove\">\n\n\t\t\t<template v-if=\"livePhoto\">\n\t\t\t\t<video v-show=\"livePhotoCanBePlayed\"\n\t\t\t\t\tref=\"video\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\tdragging,\n\t\t\t\t\t\tloaded,\n\t\t\t\t\t\tzoomed: zoomRatio > 1\n\t\t\t\t\t}\"\n\t\t\t\t\t:style=\"imgStyle\"\n\t\t\t\t\t:playsinline=\"true\"\n\t\t\t\t\t:poster=\"data\"\n\t\t\t\t\t:src=\"livePhotoSrc\"\n\t\t\t\t\tpreload=\"metadata\"\n\t\t\t\t\t@canplaythrough=\"doneLoadingLivePhoto\"\n\t\t\t\t\t@loadedmetadata=\"updateImgSize\"\n\t\t\t\t\t@wheel.stop.prevent=\"updateZoom\"\n\t\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t\t@dblclick.prevent=\"onDblclick\"\n\t\t\t\t\t@pointerdown.prevent=\"pointerDown\"\n\t\t\t\t\t@pointerup.prevent=\"pointerUp\"\n\t\t\t\t\t@pointermove.prevent=\"pointerMove\"\n\t\t\t\t\t@ended=\"stopLivePhoto\" />\n\t\t\t\t<button v-if=\"width !== 0\"\n\t\t\t\t\tclass=\"live-photo_play_button\"\n\t\t\t\t\t:style=\"{left: `calc(50% - ${width/2}px)`}\"\n\t\t\t\t\t:disabled=\"!livePhotoCanBePlayed\"\n\t\t\t\t\t:aria-description=\"t('viewer', 'Play the live photo')\"\n\t\t\t\t\t@click=\"playLivePhoto\"\n\t\t\t\t\t@pointerenter=\"playLivePhoto\"\n\t\t\t\t\t@focus=\"playLivePhoto\"\n\t\t\t\t\t@pointerleave=\"stopLivePhoto\"\n\t\t\t\t\t@blur=\"stopLivePhoto\">\n\t\t\t\t\t<PlayCircleOutline v-if=\"livePhotoCanBePlayed\" />\n\t\t\t\t\t<NcLoadingIcon v-else />\n\t\t\t\t\t<!-- TRANSLATORS Label of the button used at the top left corner of live photos to play them -->\n\t\t\t\t\t{{ t('viewer', 'LIVE') }}\n\t\t\t\t</button>\n\t\t\t</template>\n\t\t</template>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue'\nimport AsyncComputed from 'vue-async-computed'\nimport PlayCircleOutline from 'vue-material-design-icons/PlayCircleOutline.vue'\nimport DOMPurify from 'dompurify'\n\nimport axios from '@nextcloud/axios'\nimport { basename } from '@nextcloud/paths'\nimport { translate } from '@nextcloud/l10n'\nimport { NcLoadingIcon } from '@nextcloud/vue'\n\nimport ImageEditor from './ImageEditor.vue'\nimport { findLivePhotoPeerFromFileId } from '../utils/livePhotoUtils'\nimport { getDavPath } from '../utils/fileUtils'\nimport { preloadMedia } from '../services/mediaPreloader'\n\nVue.use(AsyncComputed)\n\nexport default {\n\tname: 'Images',\n\n\tcomponents: {\n\t\tImageEditor,\n\t\tPlayCircleOutline,\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\tediting: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdragging: false,\n\t\t\tshiftX: 0,\n\t\t\tshiftY: 0,\n\t\t\tzoomRatio: 1,\n\t\t\tfallback: false,\n\t\t\tlivePhotoCanBePlayed: false,\n\t\t\tzooming: false,\n\t\t\tpinchDistance: 0,\n\t\t\tpinchStartZoomRatio: 1,\n\t\t\tpointerCache: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tsrc() {\n\t\t\treturn this.source ?? this.davPath\n\t\t},\n\t\tzoomHeight() {\n\t\t\treturn Math.round(this.height * this.zoomRatio)\n\t\t},\n\t\tzoomWidth() {\n\t\t\treturn Math.round(this.width * this.zoomRatio)\n\t\t},\n\t\talt() {\n\t\t\treturn this.basename\n\t\t},\n\t\timgStyle() {\n\t\t\tif (this.zoomRatio === 1) {\n\t\t\t\treturn {\n\t\t\t\t\theight: this.zoomHeight + 'px',\n\t\t\t\t\twidth: this.zoomWidth + 'px',\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmarginTop: Math.round(this.shiftY * 2) + 'px',\n\t\t\t\tmarginLeft: Math.round(this.shiftX * 2) + 'px',\n\t\t\t\theight: this.zoomHeight + 'px',\n\t\t\t\twidth: this.zoomWidth + 'px',\n\t\t\t}\n\t\t},\n\t\tlivePhoto() {\n\t\t\tif (this.metadataFilesLivePhoto === undefined) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn findLivePhotoPeerFromFileId(this.metadataFilesLivePhoto, this.fileList)\n\t\t},\n\t\tlivePhotoSrc() {\n\t\t\treturn this.livePhoto?.source ?? this.livePhotoDavPath\n\t\t},\n\t\t/** @return {string|null} */\n\t\tlivePhotoDavPath() {\n\t\t\treturn this.livePhoto\n\t\t\t\t? getDavPath({\n\t\t\t\t\tfilename: this.livePhoto.filename,\n\t\t\t\t\tbasename: this.livePhoto.basename,\n\t\t\t\t})\n\t\t\t\t: null\n\t\t},\n\t},\n\n\tasyncComputed: {\n\t\tdata() {\n\t\t\t// Avoid svg xss attack vector\n\t\t\tif (this.mime === 'image/svg+xml') {\n\t\t\t\treturn this.getBase64FromImage()\n\t\t\t}\n\n\t\t\t// Load the raw gif instead of the static preview\n\t\t\tif (this.mime === 'image/gif') {\n\t\t\t\treturn this.src\n\t\t\t}\n\n\t\t\t// If there is no preview and we have a direct source\n\t\t\t// load it instead\n\t\t\tif (this.source && !this.hasPreview && !this.previewUrl) {\n\t\t\t\t// If loading the source failed once, let's try fetching it by had\n\t\t\t\tif (this.fallback) {\n\t\t\t\t\treturn preloadMedia(this.filename)\n\t\t\t\t} else {\n\t\t\t\t\treturn this.source\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If loading the preview failed once, let's load the original file\n\t\t\tif (this.fallback) {\n\t\t\t\treturn this.src\n\t\t\t}\n\n\t\t\treturn this.previewPath\n\t\t},\n\t},\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\tthis.resetZoom()\n\t\t\t\t// end the dragging if your pointer (mouse or touch) go out of the content\n\t\t\t\t// Not sure why ???\n\t\t\t\twindow.addEventListener('pointerout', this.pointerUp)\n\t\t\t// the item is not displayed\n\t\t\t} else if (val === false) {\n\t\t\t\t// Not sure why ???\n\t\t\t\twindow.removeEventListener('pointerout', this.pointerUp)\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t// Updates the dimensions of the modal\n\t\tupdateImgSize() {\n\t\t\tif (this.$refs.image) {\n\t\t\t\tthis.naturalHeight = this.$refs.image.naturalHeight\n\t\t\t\tthis.naturalWidth = this.$refs.image.naturalWidth\n\t\t\t} else if (this.$refs.video) {\n\t\t\t\tthis.naturalHeight = this.$refs.video.videoHeight\n\t\t\t\tthis.naturalWidth = this.$refs.video.videoWidth\n\t\t\t}\n\n\t\t\tthis.updateHeightWidth()\n\t\t\tthis.doneLoading()\n\t\t},\n\n\t\t/**\n\t\t * Manually retrieve the path and return its base64\n\t\t *\n\t\t * @return {Promise<string>}\n\t\t */\n\t\tasync getBase64FromImage() {\n\t\t\tconst file = await axios.get(this.src)\n\t\t\tconst sanitized = DOMPurify.sanitize(file.data)\n\t\t\treturn `data:${this.mime};base64,${btoa(unescape(encodeURIComponent(sanitized)))}`\n\t\t},\n\n\t\t// Helper methods for zoom/pan operations\n\t\tupdateShift(newShiftX, newShiftY, newZoomRatio) {\n\t\t\tconst maxShiftX = this.width * newZoomRatio - this.width\n\t\t\tconst maxShiftY = this.height * newZoomRatio - this.height\n\t\t\tthis.shiftX = Math.min(Math.max(newShiftX, -maxShiftX / 2), maxShiftX / 2)\n\t\t\tthis.shiftY = Math.min(Math.max(newShiftY, -maxShiftY / 2), maxShiftY / 2)\n\t\t},\n\n\t\t// Change zoom ratio of the image to newZoomRatio.\n\t\t// Try to make sure that image position at stableX, stableY\n\t\t// in client coordinates stays in the same place on the screen.\n\t\tupdateZoomAndShift(stableX, stableY, newZoomRatio) {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// scrolling position relative to the image\n\t\t\tconst element = this.$refs.image ?? this.$refs.video\n\t\t\tconst scrollX = stableX - element.getBoundingClientRect().x - (this.width * this.zoomRatio / 2)\n\t\t\tconst scrollY = stableY - element.getBoundingClientRect().y - (this.height * this.zoomRatio / 2)\n\t\t\tconst scrollPercX = scrollX / (this.width * this.zoomRatio)\n\t\t\tconst scrollPercY = scrollY / (this.height * this.zoomRatio)\n\n\t\t\t// calc how much the img grow from its current size\n\t\t\t// and adjust the margin accordingly\n\t\t\tconst growX = this.width * newZoomRatio - this.width * this.zoomRatio\n\t\t\tconst growY = this.height * newZoomRatio - this.height * this.zoomRatio\n\n\t\t\t// compensate for existing margins\n\t\t\tconst newShiftX = this.shiftX - scrollPercX * growX\n\t\t\tconst newShiftY = this.shiftY - scrollPercY * growY\n\t\t\tthis.updateShift(newShiftX, newShiftY, newZoomRatio)\n\t\t\tthis.zoomRatio = newZoomRatio\n\t\t},\n\n\t\tdistanceBetweenTouches() {\n\t\t\tconst t0 = this.pointerCache[0]\n\t\t\tconst t1 = this.pointerCache[1]\n\t\t\tconst diffX = (t1.x - t0.x)\n\t\t\tconst diffY = (t1.y - t0.y)\n\t\t\treturn Math.sqrt(diffX * diffX + diffY * diffY)\n\t\t},\n\n\t\t/**\n\t\t * Handle zooming\n\t\t *\n\t\t * @param {WheelEvent} event the scroll event\n\t\t * @return {void}\n\t\t */\n\t\tupdateZoom(event) {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst isZoomIn = event.deltaY < 0\n\t\t\tconst newZoomRatio = isZoomIn\n\t\t\t\t? Math.min(this.zoomRatio * 1.1, 5) // prevent too big zoom\n\t\t\t\t: Math.max(this.zoomRatio / 1.1, 1) // prevent too small zoom\n\n\t\t\t// do not continue, img is back to its original state\n\t\t\tif (newZoomRatio === 1) {\n\t\t\t\treturn this.resetZoom()\n\t\t\t}\n\n\t\t\tthis.disableSwipe()\n\t\t\tthis.updateZoomAndShift(event.clientX, event.clientY, newZoomRatio)\n\t\t},\n\n\t\tresetZoom() {\n\t\t\tthis.enableSwipe()\n\t\t\tthis.zoomRatio = 1\n\t\t\tthis.shiftX = 0\n\t\t\tthis.shiftY = 0\n\t\t},\n\n\t\t// Pinch-zoom implementation based on:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events/Pinch_zoom_gestures\n\n\t\t/**\n\t\t * Dragging and (pinch) zooming handlers\n\t\t *\n\t\t * @param {DragEvent} event the event\n\t\t */\n\t\tpointerDown(event) {\n\t\t\t// New pointer - mouse down or additional touch --> store client coordinates in the pointer cache\n\t\t\tthis.pointerCache.push({ pointerId: event.pointerId, x: event.clientX, y: event.clientY })\n\n\t\t\t// Single touch or mouse down --> start dragging\n\t\t\tif (this.pointerCache.length === 1) {\n\t\t\t\tthis.dragX = event.clientX\n\t\t\t\tthis.dragY = event.clientY\n\t\t\t\tthis.dragging = true\n\t\t\t}\n\n\t\t\t// Two touches --> start (pinch) zooming\n\t\t\tif (this.pointerCache.length === 2) {\n\t\t\t\t// Calculate base (reference) distance between touches\n\t\t\t\tthis.pinchDistance = this.distanceBetweenTouches()\n\t\t\t\tthis.pinchStartZoomRatio = this.zoomRatio\n\t\t\t\tthis.zooming = true\n\t\t\t\tthis.disableSwipe()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * @param {DragEvent} event the event\n\t\t */\n\t\t pointerUp(event) {\n\t\t\t// Remove pointer from the pointer cache\n\t\t\tconst index = this.pointerCache.findIndex(\n\t\t\t\t(cachedEv) => cachedEv.pointerId === event.pointerId,\n\t\t\t)\n\t\t\tthis.pointerCache.splice(index, 1)\n\t\t\tthis.dragging = false\n\t\t\tthis.zooming = false\n\t\t},\n\t\t/**\n\t\t * @param {DragEvent} event the event\n\t\t */\n\t\t pointerMove(event) {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.pointerCache.length > 0) {\n\t\t\t\t// Update pointer position in the pointer cache\n\t\t\t\tconst index = this.pointerCache.findIndex(\n\t\t\t\t\t(cachedEv) => cachedEv.pointerId === event.pointerId,\n\t\t\t\t)\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tthis.pointerCache[index].x = event.clientX\n\t\t\t\t\tthis.pointerCache[index].y = event.clientY\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Single touch or mouse down --> dragging\n\t\t\tif (this.pointerCache.length === 1 && this.dragging && !this.zooming && this.zoomRatio > 1) {\n\t\t\t\tconst { clientX, clientY } = event\n\t\t\t\tconst newShiftX = this.shiftX + (clientX - this.dragX)\n\t\t\t\tconst newShiftY = this.shiftY + (clientY - this.dragY)\n\n\t\t\t\tthis.updateShift(newShiftX, newShiftY, this.zoomRatio)\n\n\t\t\t\tthis.dragX = clientX\n\t\t\t\tthis.dragY = clientY\n\t\t\t}\n\n\t\t\t// Two touches --> (pinch) zooming\n\t\t\tif (this.pointerCache.length === 2 && this.zooming) {\n\t\t\t\t// Calculate current distance between touches\n\t\t\t\tconst newDistance = this.distanceBetweenTouches()\n\n\t\t\t\t// Calculate new zoom ratio - keep it between 1 and 5\n\t\t\t\tconst newZoomRatio = Math.min(Math.max(this.pinchStartZoomRatio * (newDistance / this.pinchDistance), 1), 5)\n\n\t\t\t\t// Calculate \"stable\" point - in the middle between touches\n\t\t\t\tconst t0 = this.pointerCache[0]\n\t\t\t\tconst t1 = this.pointerCache[1]\n\t\t\t\tconst stableX = (t0.x + t1.x) / 2\n\t\t\t\tconst stableY = (t0.y + t1.y) / 2\n\n\t\t\t\tthis.updateZoomAndShift(stableX, stableY, newZoomRatio)\n\t\t\t}\n\n\t\t},\n\t\tonDblclick() {\n\t\t\tif (!this.canZoom) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.zoomRatio > 1) {\n\t\t\t\tthis.resetZoom()\n\t\t\t} else {\n\t\t\t\tthis.zoomRatio = 1.3\n\t\t\t}\n\t\t},\n\n\t\tonClose() {\n\t\t\tthis.$emit('update:editing', false)\n\t\t},\n\n\t\t// Fallback to the original image if not already done\n\t\tonFail() {\n\t\t\tif (!this.fallback) {\n\t\t\t\tconsole.error(`Loading of file preview ${basename(this.src)} failed, falling back to original file`)\n\t\t\t\tthis.fallback = true\n\t\t\t}\n\t\t},\n\t\tdoneLoadingLivePhoto() {\n\t\t\tthis.livePhotoCanBePlayed = true\n\t\t\tthis.doneLoading()\n\t\t},\n\t\tplayLivePhoto() {\n\t\t\tif (!this.livePhotoCanBePlayed) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t/** @type {HTMLVideoElement} */\n\t\t\tconst video = this.$refs.video\n\t\t\tvideo.play()\n\t\t},\n\t\tstopLivePhoto() {\n\t\t\t/** @type {HTMLVideoElement} */\n\t\t\tconst video = this.$refs.video\n\t\t\tvideo.load()\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n$checkered-size: 8px;\n$checkered-color: #efefef;\n\n.image_container {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 100%;\n\tjustify-content: center;\n}\n\nimg, video {\n\talign-self: center;\n\tjustify-self: center;\n\t// black while loading\n\tbackground-color: #000;\n\t// disable animations during zooming/resize\n\ttransition: none !important;\n\ttouch-action: none;\n\t// show checkered bg on hover if not currently zooming (but ok if zoomed)\n\t&:hover {\n\t\tbackground-image: linear-gradient(45deg, #{$checkered-color} 25%, transparent 25%),\n\t\t\tlinear-gradient(45deg, transparent 75%, #{$checkered-color} 75%),\n\t\t\tlinear-gradient(45deg, transparent 75%, #{$checkered-color} 75%),\n\t\t\tlinear-gradient(45deg, #{$checkered-color} 25%, #fff 25%);\n\t\tbackground-size: #{2 * $checkered-size} #{2 * $checkered-size};\n\t\tbackground-position: 0 0, 0 0, -#{$checkered-size} -#{$checkered-size}, $checkered-size $checkered-size;\n\t}\n\t&.loaded {\n\t\t// white once done loading\n\t\tbackground-color: #fff;\n\t}\n\t&.zoomed {\n\t\tz-index: 10010;\n\t\tcursor: move;\n\t}\n\n\t&.dragging {\n\t\ttransition: none !important;\n\t\tcursor: move;\n\t}\n}\n\n.live-photo_play_button {\n\tposition: absolute;\n\ttop: 0;\n\t// left: is set dynamically on the element itself\n\tmargin: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n\tborder: none;\n\tgap: 4px;\n\tborder-radius: var(--border-radius);\n\tpadding: 4px 8px;\n\tbackground-color: var(--color-main-background-blur);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../services/logger.js'\nimport Images from '../components/Images.vue'\n\nconst enabledPreviewProviders = loadState(appName, 'enabled_preview_providers', [])\n\n/**\n * Those mimes needs a proper preview to be displayed\n * if they are not enabled on the server, let's not activate them.\n */\nconst previewSupportedMimes = [\n\t'image/heic',\n\t'image/heif',\n\t'image/tiff',\n\t'image/x-xbitmap',\n\t'image/emf',\n]\n\n/**\n * Those mimes are always supported by the browser\n * Since we fallback to the source image if there is no\n * preview, we can always include them.\n */\nconst browserSupportedMimes = [\n\t'image/apng',\n\t'image/bmp',\n\t'image/gif',\n\t'image/jpeg',\n\t'image/png',\n\t'image/svg+xml',\n\t'image/webp',\n\t'image/x-icon',\n]\n\n// Filter out supported mimes that are _not_\n// enabled in the preview API\nconst filterEnabledMimes = () => {\n\treturn previewSupportedMimes.filter(filter => {\n\t\treturn enabledPreviewProviders.findIndex(mimeRegex => {\n\t\t\t// Remove leading and trailing slash from string regex\n\t\t\tconst regex = new RegExp(mimeRegex.replace(/^\\/|\\/$/g, ''), 'i')\n\t\t\treturn filter.match(regex)\n\t\t}) > -1\n\t})\n}\n\nconst enabledMimes = filterEnabledMimes()\nconst ignoredMimes = previewSupportedMimes.filter(x => !enabledMimes.includes(x))\nif (ignoredMimes.length > 0) {\n\tlogger.warn('Some mimes were ignored because they are not enabled in the server previews config', { ignoredMimes })\n}\n\nexport default {\n\tid: 'images',\n\tgroup: 'media',\n\tmimes: [\n\t\t...browserSupportedMimes,\n\t\t...enabledMimes,\n\t],\n\tcomponent: Images,\n}\n","/**\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCanonicalLocale, translate as t } from '@nextcloud/l10n'\n\n/**\n * Plyr `i18n` option so the player controls and menus\n * (e.g. the settings/speed dropdown) are translated.\n *\n * Plyr ships English defaults only; passing this map makes it use the\n * Nextcloud translations instead.\n */\nexport const plyrTranslations: Record<string, string> = {\n\trestart: t('viewer', 'Restart'),\n\trewind: t('viewer', 'Rewind {seektime}s'),\n\tplay: t('viewer', 'Play'),\n\tpause: t('viewer', 'Pause'),\n\tfastForward: t('viewer', 'Forward {seektime}s'),\n\tseek: t('viewer', 'Seek'),\n\tseekLabel: t('viewer', '{currentTime} of {duration}'),\n\tplayed: t('viewer', 'Played'),\n\tbuffered: t('viewer', 'Buffered'),\n\tcurrentTime: t('viewer', 'Current time'),\n\tduration: t('viewer', 'Duration'),\n\tvolume: t('viewer', 'Volume'),\n\tmute: t('viewer', 'Mute'),\n\tunmute: t('viewer', 'Unmute'),\n\tenableCaptions: t('viewer', 'Enable captions'),\n\tdisableCaptions: t('viewer', 'Disable captions'),\n\tdownload: t('viewer', 'Download'),\n\tenterFullscreen: t('viewer', 'Enter fullscreen'),\n\texitFullscreen: t('viewer', 'Exit fullscreen'),\n\tframeTitle: t('viewer', 'Player for {title}'),\n\tcaptions: t('viewer', 'Captions'),\n\tsettings: t('viewer', 'Settings'),\n\tpip: t('viewer', 'PIP'),\n\tmenuBack: t('viewer', 'Go back to previous menu'),\n\tspeed: t('viewer', 'Speed'),\n\tnormal: t('viewer', 'Normal'),\n\tquality: t('viewer', 'Quality'),\n\tloop: t('viewer', 'Loop'),\n\tstart: t('viewer', 'Start'),\n\tend: t('viewer', 'End'),\n\tall: t('viewer', 'All'),\n\treset: t('viewer', 'Reset'),\n\tdisabled: t('viewer', 'Disabled'),\n\tenabled: t('viewer', 'Enabled'),\n\tadvertisement: t('viewer', 'Ad'),\n}\n\n/**\n * Plyr renders speed values via a plain template literal (`` `${speed}×` ``),\n * which always uses a `.` decimal separator regardless of locale — so German\n * shows `1.5×` instead of `1,5×`. Plyr exposes no hook for this, so we\n * re-format the rendered labels using the user's locale.\n *\n * The speed panel's id always ends in `-speed`. Each entry is a\n * `button[role=\"menuitemradio\"]` carrying the numeric speed in its `value`\n * attribute (the source of truth). The home-pane `.plyr__menu__value` badge\n * shows the current speed as a bare `<number>×` string, which we match by\n * pattern so we never touch the quality/captions badges.\n *\n * @param root the Plyr root element to localize labels within\n */\nexport function localizeSpeedLabels(root: ParentNode): void {\n\tconst formatter = new Intl.NumberFormat(getCanonicalLocale())\n\tconst speedLabel = (value: number): string =>\n\t\tvalue === 1 ? t('viewer', 'Normal') : `${formatter.format(value)}×`\n\n\t// Speed submenu radio items, scoped to the speed panel so we don't touch\n\t// quality (e.g. \"1080\") or captions entries.\n\tconst items = root.querySelectorAll<HTMLButtonElement>(\n\t\t'.plyr__menu__container [id$=\"-speed\"] [role=\"menuitemradio\"]',\n\t)\n\titems.forEach((item) => {\n\t\tconst value = Number.parseFloat(item.value)\n\t\tif (Number.isNaN(value)) {\n\t\t\treturn\n\t\t}\n\t\tconst label = item.querySelector('span')\n\t\tif (label) {\n\t\t\tlabel.textContent = speedLabel(value)\n\t\t}\n\t})\n\n\t// Home-pane badge showing the current speed (e.g. \"Speed: 1,5×\"). Match the\n\t// bare \"<number>×\" form so quality/captions badges are left untouched.\n\troot.querySelectorAll<HTMLElement>('.plyr__menu__value').forEach((badge) => {\n\t\tconst match = /^(\\d+(?:\\.\\d+)?)×$/.exec((badge.textContent ?? '').trim())\n\t\tif (match) {\n\t\t\tbadge.textContent = `${formatter.format(Number.parseFloat(match[1]))}×`\n\t\t}\n\t})\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<!-- Plyr currently replaces the parent. Wrapping to prevent this\n\thttps://github.com/redxtech/vue-plyr/issues/259 -->\n\t<div v-if=\"url\">\n\t\t<VuePlyr ref=\"plyr\"\n\t\t\t:options=\"options\"\n\t\t\t:style=\"{\n\t\t\t\theight: height + 'px',\n\t\t\t\twidth: width + 'px'\n\t\t\t}\">\n\t\t\t<video ref=\"video\"\n\t\t\t\t:autoplay=\"active ? true : null\"\n\t\t\t\t:playsinline=\"true\"\n\t\t\t\t:poster=\"livePhotoPath\"\n\t\t\t\t:src=\"url\"\n\t\t\t\tpreload=\"metadata\"\n\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t@ended=\"donePlaying\"\n\t\t\t\t@canplay=\"doneLoading\"\n\t\t\t\t@loadedmetadata=\"onLoadedMetadata\">\n\n\t\t\t\t<!-- Omitting `type` on purpose because most of the\n\t\t\t\t\tbrowsers auto detect the appropriate codec.\n\t\t\t\t\tHaving it set force the browser to comply to\n\t\t\t\t\tthe provided mime instead of detecting a potential\n\t\t\t\t\tcompatibility. -->\n\n\t\t\t\t{{ t('viewer', 'Your browser does not support videos.') }}\n\t\t\t</video>\n\t\t</VuePlyr>\n\t</div>\n</template>\n\n<script lang='ts'>\n// eslint-disable-next-line n/no-missing-import\nimport Vue from 'vue'\nimport AsyncComputed from 'vue-async-computed'\nimport '@skjnldsv/vue-plyr/dist/vue-plyr.css'\n\nimport { imagePath } from '@nextcloud/router'\n\nimport logger from '../services/logger.js'\nimport { findLivePhotoPeerFromName } from '../utils/livePhotoUtils'\nimport { getPreviewIfAny } from '../utils/previewUtils'\nimport { preloadMedia } from '../services/mediaPreloader.js'\nimport { localizeSpeedLabels, plyrTranslations } from '../utils/plyrTranslations'\n\nconst VuePlyr = () => import(/* webpackChunkName: 'plyr' */'@skjnldsv/vue-plyr')\n\nconst blankVideo = imagePath('viewer', 'blank.mp4')\n\nVue.use(AsyncComputed)\n\nexport default {\n\tname: 'Videos',\n\n\tcomponents: {\n\t\tVuePlyr,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisFullscreenButtonVisible: false,\n\t\t\tfallback: false,\n\t\t\tspeedListenerBound: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tlivePhotoPath() {\n\t\t\tconst peerFile = findLivePhotoPeerFromName(this, this.fileList)\n\n\t\t\tif (peerFile === undefined) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn getPreviewIfAny(peerFile)\n\t\t},\n\t\tplayer() {\n\t\t\treturn this.$refs.plyr.player\n\t\t},\n\t\toptions() {\n\t\t\treturn {\n\t\t\t\tautoplay: this.active === true,\n\t\t\t\t// Used to reset the video streams https://github.com/sampotts/plyr#javascript-1\n\t\t\t\tblankVideo,\n\t\t\t\tcontrols: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'captions', 'settings', 'fullscreen'],\n\t\t\t\tloadSprite: false,\n\t\t\t\ti18n: plyrTranslations,\n\t\t\t\tfullscreen: {\n\t\t\t\t\tiosNative: true,\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t},\n\n\tasyncComputed: {\n\t\tasync url(): Promise<string> {\n\t\t\tif (this.fallback) {\n\t\t\t\treturn preloadMedia(this.filename)\n\t\t\t} else {\n\t\t\t\treturn this.src\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\tthis.player.play()\n\n\t\t\t// the item was playing before and is now hidden\n\t\t\t} else if (val === false && old === true) {\n\t\t\t\tthis.player.pause()\n\t\t\t}\n\t\t},\n\t},\n\n\t// for some reason the video controls don't get mounted to the dom until after the component (Videos) is mounted,\n\t// using the mounted() hook will leave us with an empty array\n\tupdated() {\n\t\t// Prevent swiping to the next/previous item when scrubbing the timeline or changing volume\n\t\tconst plyrControls = this.$el.querySelectorAll('.plyr__controls__item')\n\t\tif (!plyrControls || !plyrControls.length) {\n\t\t\treturn\n\t\t}\n\t\t[...plyrControls].forEach(control => {\n\t\t\tif (control.getAttribute('data-plyr') === 'fullscreen') {\n\t\t\t\tcontrol.addEventListener('click', this.hideHeaderAndFooter)\n\t\t\t}\n\t\t\tif (!control?.addEventListener) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontrol.addEventListener('mouseenter', this.disableSwipe)\n\t\t\tcontrol.addEventListener('mouseleave', this.enableSwipe)\n\t\t})\n\n\t\t// The Plyr menu is only in the DOM once the controls are mounted (see\n\t\t// above), so wire up the speed-label localization here rather than in\n\t\t// mounted(). Register the rate-change listener once.\n\t\tif (!this.speedListenerBound && this.$refs.plyr?.player) {\n\t\t\tthis.$refs.plyr.player.on('ratechange', this.localizeSpeed)\n\t\t\tthis.speedListenerBound = true\n\t\t}\n\t\tthis.localizeSpeed()\n\t},\n\n\tbeforeDestroy() {\n\t\t// Force stop any ongoing request\n\t\tlogger.debug('Closing video stream', { filename: this.filename })\n\t\tthis.$refs.video?.pause?.()\n\t\tthis.player.stop()\n\t\tthis.player.destroy()\n\t},\n\n\tmethods: {\n\t\tlocalizeSpeed() {\n\t\t\t// Defer so we run after Plyr's own label/badge update for this event.\n\t\t\tthis.$nextTick(() => localizeSpeedLabels(this.$el))\n\t\t},\n\n\t\thideHeaderAndFooter() {\n\t\t\t// work arround to get the state of the fullscreen button, aria-selected attribute is not reliable\n\t\t\tthis.isFullscreenButtonVisible = !this.isFullscreenButtonVisible\n\t\t\tif (this.isFullscreenButtonVisible) {\n\t\t\t\tdocument.body.querySelector('main').classList.add('viewer__hidden-fullscreen')\n\t\t\t\tdocument.body.querySelector('footer').classList.add('viewer__hidden-fullscreen')\n\t\t\t} else {\n\t\t\t\tdocument.body.querySelector('main').classList.remove('viewer__hidden-fullscreen')\n\t\t\t\tdocument.body.querySelector('footer').classList.remove('viewer__hidden-fullscreen')\n\t\t\t}\n\t\t},\n\t\t// Updates the dimensions of the modal\n\t\tupdateVideoSize() {\n\t\t\tthis.naturalHeight = this.$refs.video?.videoHeight\n\t\t\tthis.naturalWidth = this.$refs.video?.videoWidth\n\t\t\tthis.updateHeightWidth()\n\t\t},\n\n\t\tdonePlaying() {\n\t\t\t// reset and show poster after play\n\t\t\tthis.$refs.video.autoplay = false\n\t\t\tthis.$refs.video.load()\n\t\t},\n\n\t\tonLoadedMetadata() {\n\t\t\tthis.updateVideoSize()\n\t\t\t// Force any further loading once we have the metadata\n\t\t\tif (!this.active) {\n\t\t\t\tthis.player.stop()\n\t\t\t}\n\t\t},\n\n\t\t// Fallback to the original image if not already done\n\t\tonFail() {\n\t\t\tif (!this.fallback) {\n\t\t\t\tconsole.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`)\n\t\t\t\tthis.fallback = true\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\nvideo {\n\t/* over arrows in tiny screens */\n\tz-index: 20050;\n\talign-self: center;\n\tmax-width: 100%;\n\tmax-height: 100% !important;\n\tbackground-color: black;\n\n\tjustify-self: center;\n}\n\n:deep() {\n\t.plyr:-webkit-full-screen video {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n\t.plyr:fullscreen video {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n\t.plyr__progress__container {\n\t\tflex: 1 1;\n\t}\n\n\t@import '../mixins/Plyr.scss';\n\n\t// Override server font style\n\t.plyr button {\n\t\tcolor: white;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n}\n</style>\n\n<style lang=\"scss\">\nmain.viewer__hidden-fullscreen {\n\theight: 100vh !important;\n\twidth: 100vw !important;\n\tmargin: 0 !important;\n}\n\nfooter.viewer__hidden-fullscreen {\n\tdisplay: none !important;\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Videos from '../components/Videos.vue'\n\nexport default {\n\tid: 'videos',\n\tgroup: 'media',\n\tmimes: [\n\t\t'video/mpeg',\n\t\t'video/ogg',\n\t\t'video/webm',\n\t\t'video/mp4',\n\t\t'video/x-m4v',\n\t\t'video/x-flv',\n\t\t'video/quicktime',\n\t],\n\tmimesAliases: {\n\t\t'video/x-matroska': 'video/webm',\n\t},\n\tcomponent: Videos,\n}\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<!-- Plyr currently replaces the parent. Wrapping to prevent this\n\thttps://github.com/redxtech/vue-plyr/issues/259 -->\n\t<div v-if=\"url\">\n\t\t<VuePlyr ref=\"plyr\"\n\t\t\t:options=\"options\">\n\t\t\t<audio ref=\"audio\"\n\t\t\t\t:autoplay=\"active\"\n\t\t\t\t:src=\"url\"\n\t\t\t\tpreload=\"metadata\"\n\t\t\t\t@error.capture.prevent.stop.once=\"onFail\"\n\t\t\t\t@ended=\"donePlaying\"\n\t\t\t\t@canplay=\"doneLoading\">\n\n\t\t\t\t<!-- Omitting `type` on purpose because most of the\n\t\t\t\t\tbrowsers auto detect the appropriate codec.\n\t\t\t\t\tHaving it set force the browser to comply to\n\t\t\t\t\tthe provided mime instead of detecting a potential\n\t\t\t\t\tcompatibility. -->\n\n\t\t\t\t{{ t('viewer', 'Your browser does not support audio.') }}\n\t\t\t</audio>\n\t\t</VuePlyr>\n\t</div>\n</template>\n\n<script lang='ts'>\nimport Vue from 'vue'\nimport AsyncComputed from 'vue-async-computed'\n// eslint-disable-next-line n/no-missing-import\nimport '@skjnldsv/vue-plyr/dist/vue-plyr.css'\n\nimport logger from '../services/logger.js'\nimport { preloadMedia } from '../services/mediaPreloader'\nimport { localizeSpeedLabels, plyrTranslations } from '../utils/plyrTranslations'\n\nconst VuePlyr = () => import(/* webpackChunkName: 'plyr' */'@skjnldsv/vue-plyr')\n\nVue.use(AsyncComputed)\n\nexport default {\n\tname: 'Audios',\n\n\tcomponents: {\n\t\tVuePlyr,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfallback: false,\n\t\t\tspeedListenerBound: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tplayer() {\n\t\t\treturn this.$refs.plyr.player\n\t\t},\n\t\toptions() {\n\t\t\treturn {\n\t\t\t\tautoplay: this.active === true,\n\t\t\t\t// Used to reset the audio streams https://github.com/sampotts/plyr#javascript-1\n\t\t\t\tblankVideo: '/blank.aac',\n\t\t\t\tcontrols: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume', 'settings'],\n\t\t\t\tloadSprite: false,\n\t\t\t\ti18n: plyrTranslations,\n\t\t\t}\n\t\t},\n\t},\n\n\tasyncComputed: {\n\t\tasync url(): Promise<string> {\n\t\t\tif (this.fallback) {\n\t\t\t\treturn preloadMedia(this.filename)\n\t\t\t} else {\n\t\t\t\treturn this.src\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\tthis.player.play()\n\n\t\t\t// the item was playing before and is now hidden\n\t\t\t} else if (val === false && old === true) {\n\t\t\t\tthis.player.pause()\n\t\t\t}\n\t\t},\n\t},\n\n\t// for some reason the video controls don't get mounted to the dom until after the component (Videos) is mounted,\n\t// using the mounted() hook will leave us with an empty array\n\tupdated() {\n\t\t// Prevent swiping to the next/previous item when scrubbing the timeline or changing volume\n\t\tconst plyrControls = this.$el.querySelectorAll('.plyr__controls__item')\n\t\tif (!plyrControls || !plyrControls.length) {\n\t\t\treturn\n\t\t}\n\n\t\t[...plyrControls].forEach(control => {\n\t\t\tif (!control?.addEventListener) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcontrol.addEventListener('mouseenter', this.disableSwipe)\n\t\t\tcontrol.addEventListener('mouseleave', this.enableSwipe)\n\t\t})\n\n\t\t// The Plyr menu is only in the DOM once the controls are mounted (see\n\t\t// above), so wire up the speed-label localization here rather than in\n\t\t// mounted(). Register the rate-change listener once.\n\t\tif (!this.speedListenerBound && this.$refs.plyr?.player) {\n\t\t\tthis.$refs.plyr.player.on('ratechange', this.localizeSpeed)\n\t\t\tthis.speedListenerBound = true\n\t\t}\n\t\tthis.localizeSpeed()\n\t},\n\n\tbeforeDestroy() {\n\t\t// Force stop any ongoing request\n\t\tlogger.debug('Closing audio stream', { filename: this.filename })\n\t\tthis.$refs.audio.pause()\n\t\tthis.player.stop()\n\t\tthis.player.destroy()\n\t},\n\n\tmethods: {\n\t\tlocalizeSpeed() {\n\t\t\t// Defer so we run after Plyr's own label/badge update for this event.\n\t\t\tthis.$nextTick(() => localizeSpeedLabels(this.$el))\n\t\t},\n\n\t\tdonePlaying() {\n\t\t\tthis.$refs.audio.autoplay = false\n\t\t\tthis.$refs.audio.load()\n\t\t},\n\n\t\t// Fallback to the original image if not already done\n\t\tonFail() {\n\t\t\tif (!this.fallback) {\n\t\t\t\tconsole.error(`Loading of file ${this.filename} failed, falling back to fetching it by hand`)\n\t\t\t\tthis.fallback = true\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\naudio {\n\t/* over arrows in tiny screens */\n\tz-index: 20050;\n\talign-self: center;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tbackground-color: black;\n\n\tjustify-self: center;\n}\n\n:deep() {\n\t@import '../mixins/Plyr.scss';\n\n\t.plyr__progress__container {\n\t\tflex: 1 1;\n\t}\n\n\t// The settings menu (e.g. speed selection) is absolutely positioned and\n\t// opens upward from the controls. On short viewports its full height does\n\t// not fit and options get clipped off-screen. Cap its height to the\n\t// available viewport space and let it scroll internally so no option is\n\t// ever clipped, regardless of where the centered player sits.\n\t.plyr__menu__container {\n\t\t// The player is vertically centered, so the controls bar sits at\n\t\t// ~50vh and the menu opens upward into the top half of the viewport.\n\t\t// Cap to that available space (half the viewport, minus half the\n\t\t// controls bar and a top margin) so options never clip off-screen.\n\t\tmax-height: calc(40vh - var(--plyr-button-size, 44px) / 2 - 20px);\n\t\toverflow-y: auto;\n\t}\n\n\t// make it a bit off-center in order to fix mobile controls\n\t@media only screen and (max-width: 500px) {\n\t\t.plyr--audio {\n\t\t\ttop: calc(35vw / 2 + 60px / 2);\n\t\t}\n\t}\n}\n\n</style>\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Audios from '../components/Audios.vue'\n\nexport default {\n\tid: 'audios',\n\tgroup: 'media',\n\tmimes: [\n\t\t'audio/aac',\n\t\t'audio/aacp',\n\t\t'audio/flac',\n\t\t'audio/mp4',\n\t\t'audio/mpeg',\n\t\t'audio/ogg',\n\t\t'audio/vorbis',\n\t\t'audio/wav',\n\t\t'audio/webm',\n\t],\n\tcomponent: Audios,\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Images from '../models/images.js'\nimport Videos from '../models/videos.js'\nimport Audios from '../models/audios.js'\nimport logger from './logger.js'\n\n/**\n * Handler type definition\n *\n * @typedef {object} Handler\n * @property {string} id unique identifier for the handler\n * @property {string[]} mimes list of mime types that are supported for opening\n * @property {object} component Vue component to render the file\n * @property {string} group group identifier to combine for navigating to the next/previous files\n * @property {?string} theme viewer modal theme (one of 'dark', 'light', 'default')\n * @property {boolean} canCompare Indicate support for comparing two files\n * @property {?Function} downloadCallback Optional callback to be called before download\n */\n\n/**\n * File info type definition\n *\n * @typedef {object} Fileinfo\n * @property {string} filename File path of the remote item\n * @property {string} basename Base filename of the remote item, no path\n * @property {?string} source absolute path of a non-dav file, e.g. a static resource or provided by an app route\n * @property {string} mime file MIME type in the format type/sub-type\n * @property {string} [previewUrl] URL of the file preview\n * @property {boolean} hasPreview is there a WebDAV preview of this file?\n * @property {number} fileid Nextcloud file ID\n */\n\nexport default class Viewer {\n\n\t_state\n\t_mimetypes\n\t_mimetypesCompare\n\n\tconstructor() {\n\t\tthis._mimetypes = []\n\t\tthis._mimetypesCompare = []\n\t\tthis._state = {}\n\t\tthis._state.file = ''\n\t\tthis._state.fileInfo = null\n\t\tthis._state.compareFileInfo = null\n\t\tthis._state.files = []\n\t\tthis._state.enableSidebar = true\n\t\tthis._state.el = null\n\t\tthis._state.loadMore = () => ([])\n\t\tthis._state.onPrev = () => {}\n\t\tthis._state.onNext = () => {}\n\t\tthis._state.onClose = () => {}\n\t\tthis._state.canLoop = true\n\t\tthis._state.handlers = []\n\t\tthis._state.overrideHandlerId = null\n\n\t\t// ! built-in handlers\n\t\tthis.registerHandler(Images)\n\t\tthis.registerHandler(Videos)\n\t\tthis.registerHandler(Audios)\n\n\t\tlogger.debug('OCA.Viewer initialized')\n\t}\n\n\t/**\n\t * Return the registered handlers\n\t *\n\t * @readonly\n\t * @memberof Viewer\n\t * @return {Handler[]}\n\t */\n\tget availableHandlers() {\n\t\treturn this._state.handlers\n\t}\n\n\t/**\n\t * Register a new handler\n\t *\n\t * @memberof Viewer\n\t * @param {Handler} handler a new unregistered handler\n\t */\n\tregisterHandler(handler) {\n\t\tconst error = this.validateHandler(handler)\n\t\tif (error) {\n\t\t\tlogger.error('Could not register handler', { error, handler })\n\t\t\treturn\n\t\t}\n\n\t\t// Set default empty function for downloadCallback if not provided\n\t\tif (!handler.downloadCallback) {\n\t\t\thandler.downloadCallback = () => {}\n\t\t}\n\n\t\tthis._state.handlers.push(handler)\n\t\tconst handledMimes = [\n\t\t\t...handler.mimes,\n\t\t\t...Object.keys(handler.mimesAliases || {}),\n\t\t]\n\t\tthis._mimetypes.push.apply(this._mimetypes, handledMimes)\n\t\tif (handler?.canCompare === true) {\n\t\t\tthis._mimetypesCompare.push.apply(this._mimetypesCompare, handledMimes)\n\t\t}\n\t}\n\n\tvalidateHandler({ id, mimes, mimesAliases, component }) {\n\t\t// checking valid handler id\n\t\tif (!id || id.trim() === '' || typeof id !== 'string') {\n\t\t\treturn 'The handler doesn\\'t have a valid id'\n\t\t}\n\n\t\t// checking if handler is not already registered\n\t\tif (this._state.handlers.find(h => h.id === id)) {\n\t\t\treturn 'The handler is already registered'\n\t\t}\n\n\t\t// Nothing available to process! Failure\n\t\tif (!(mimes && Array.isArray(mimes)) && !mimesAliases) {\n\t\t\treturn 'Handler needs a valid mime array or mimesAliases'\n\t\t}\n\n\t\t// checking valid handler component data\n\t\tif ((!component || (typeof component !== 'object' && typeof component !== 'function'))) {\n\t\t\treturn 'The handler doesn\\'t have a valid component'\n\t\t}\n\t}\n\n\t/**\n\t * Get the current opened file\n\t *\n\t * @memberof Viewer\n\t * @return {string} the currently opened file\n\t */\n\tget file() {\n\t\treturn this._state.file\n\t}\n\n\t/**\n\t * Get the current opened file fileInfo\n\t *\n\t * @memberof Viewer\n\t * @return {?Fileinfo} the currently opened file fileInfo\n\t */\n\tget fileInfo() {\n\t\treturn this._state.fileInfo\n\t}\n\n\t/**\n\t * Get the current comparison view opened file fileInfo\n\t *\n\t * @memberof Viewer\n\t * @return {?Fileinfo} the currently opened file fileInfo\n\t */\n\tget compareFileInfo() {\n\t\treturn this._state.compareFileInfo\n\t}\n\n\t/**\n\t * Get the current files list\n\t *\n\t * @memberof Viewer\n\t * @return {Fileinfo[]} the current files list\n\t */\n\tget files() {\n\t\treturn this._state.files\n\t}\n\n\t/**\n\t * Whether to enable the sidebar or not\n\t *\n\t * @memberof Viewer\n\t * @return {boolean} whether to enable the sidebar or not\n\t */\n\tget enableSidebar() {\n\t\treturn this._state.enableSidebar\n\t}\n\n\t/**\n\t * Get the element to render the current file in\n\t *\n\t * @memberof Viewer\n\t * @return {string} selector of the element\n\t */\n\tget el() {\n\t\treturn this._state.el\n\t}\n\n\t/**\n\t * Get the supported mimetypes that can be opened with the viewer\n\t *\n\t * @memberof Viewer\n\t * @return {Array} list of mimetype strings that the viewer can open\n\t */\n\tget mimetypes() {\n\t\treturn this._mimetypes\n\t}\n\n\t/**\n\t * Get the supported mimetypes that can be opened side by side for comparison\n\t *\n\t * @memberof Viewer\n\t * @return {Array} list of mimetype strings that the viewer can open side by side for comparison\n\t */\n\tget mimetypesCompare() {\n\t\treturn this._mimetypesCompare\n\t}\n\n\t/**\n\t * Return the method provided to fetch more results\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget loadMore() {\n\t\treturn this._state.loadMore\n\t}\n\n\t/**\n\t * Get the method to run on previous navigation\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget onPrev() {\n\t\treturn this._state.onPrev\n\t}\n\n\t/**\n\t * Get the method to run on next navigation\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget onNext() {\n\t\treturn this._state.onNext\n\t}\n\n\t/**\n\t * Get the method to run on viewer close\n\t *\n\t * @memberof Viewer\n\t * @return {Function}\n\t */\n\tget onClose() {\n\t\treturn this._state.onClose\n\t}\n\n\t/**\n\t * Is looping over the provided list allowed?\n\t *\n\t * @memberof Viewer\n\t * @return {boolean}\n\t */\n\tget canLoop() {\n\t\treturn this._state.canLoop\n\t}\n\n\t/**\n\t * If this handler is set, it should be used for viewing the next file.\n\t *\n\t * @memberof Viewer\n\t */\n\tget overrideHandlerId() {\n\t\treturn this._state.overrideHandlerId\n\t}\n\n\t/**\n\t * Set element to open viewer in\n\t *\n\t * @memberof Viewer\n\t * @param {string} el selector of the element to render the file in\n\t */\n\tsetRootElement(el = null) {\n\t\tif (this._state.file) {\n\t\t\tthrow new Error('Please set root element before calling Viewer.open().')\n\t\t}\n\t\tthis._state.el = el\n\t}\n\n\t/**\n\t * Open the path into the viewer\n\t *\n\t * @memberof Viewer\n\t * @param {object} options Options for opening the viewer\n\t * @param {?string} options.path path of the file to open\n\t * @param {?Fileinfo} options.fileInfo file info of the file to open\n\t * @param {Fileinfo[]} [options.list] the list of files as objects (fileinfo) format\n\t * @param {boolean} options.enableSidebar whether to enable the sidebar or not\n\t * @param {Function} options.loadMore callback for loading more files\n\t * @param {boolean} options.canLoop can the viewer loop over the array\n\t * @param {Function} options.onPrev callback when navigating back to previous file\n\t * @param {Function} options.onNext callback when navigation forward to next file\n\t * @param {Function} options.onClose callback when closing the viewer\n\t */\n\topen({ path, fileInfo, list = [], enableSidebar = true, loadMore = () => ([]), canLoop = true, onPrev = () => {}, onNext = () => {}, onClose = () => {} } = {}) {\n\t\tif (typeof arguments[0] === 'string') {\n\t\t\tthrow new Error('Opening the viewer with a single string parameter is deprecated. Please use a destructuring object instead', `OCA.Viewer.open({ path: '${path}' })`)\n\t\t}\n\t\tif (!path && !fileInfo) {\n\t\t\tthrow new Error('Viewer needs either an URL or path to open. None given')\n\t\t}\n\n\t\tif (path && !path.startsWith('/')) {\n\t\t\tthrow new Error('Please use an absolute path')\n\t\t}\n\n\t\tif (!Array.isArray(list)) {\n\t\t\tthrow new Error('The files list must be an array')\n\t\t}\n\n\t\tif (typeof loadMore !== 'function') {\n\t\t\tthrow new Error('The loadMore method must be a function')\n\t\t}\n\n\t\t// Only assign the one that is used to prevent false watcher runs\n\t\tif (path) {\n\t\t\tthis._state.file = path\n\t\t} else {\n\t\t\tthis._state.fileInfo = fileInfo\n\t\t}\n\n\t\tif (!this._state.el) {\n\t\t\tthis._state.files = list\n\t\t\tthis._state.enableSidebar = enableSidebar\n\t\t\tthis._state.loadMore = loadMore\n\t\t\tthis._state.onPrev = onPrev\n\t\t\tthis._state.onNext = onNext\n\t\t\tthis._state.onClose = onClose\n\t\t\tthis._state.canLoop = canLoop\n\t\t}\n\t}\n\n\t/**\n\t * Open the path into the viewer\n\t *\n\t * @memberof Viewer\n\t * @param {object} handlerId ID of the handler with which to open the files\n\t * @param {object} options Options for opening the viewer\n\t * @param {string} options.path path of the file to open\n\t * @param {object[]} [options.list] the list of files as objects (fileinfo) format\n\t * @param {boolean} [options.enableSidebar] Whether to enable the sidebar or not\n\t * @param {Function} options.loadMore callback for loading more files\n\t * @param {boolean} options.canLoop can the viewer loop over the array\n\t * @param {Function} options.onPrev callback when navigating back to previous file\n\t * @param {Function} options.onNext callback when navigation forward to next file\n\t * @param {Function} options.onClose callback when closing the viewer\n\t */\n\topenWith(handlerId, options = {}) {\n\t\tthis._state.overrideHandlerId = handlerId\n\t\tthis.open(options)\n\t}\n\n\t/**\n\t * Open the viewer with two files side by side\n\t *\n\t * @memberof Viewer\n\t * @param {Fileinfo} fileInfo current file\n\t * @param {Fileinfo} compareFileInfo older file to compare\n\t */\n\tcompare(fileInfo, compareFileInfo) {\n\t\tthis.open({\n\t\t\tfileInfo,\n\t\t})\n\t\tthis._state.compareFileInfo = compareFileInfo\n\t}\n\n\t/**\n\t * Close the opened file\n\t *\n\t * @memberof Viewer\n\t */\n\tclose() {\n\t\tthis._state.file = ''\n\t\tthis._state.fileInfo = null\n\t\tthis._state.files = []\n\t\tthis._state.enableSidebar = true\n\t\tthis._state.canLoop = true\n\t\tthis._state.loadMore = () => ([])\n\t\tthis._state.overrideHandlerId = null\n\t}\n\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerViewerAction } from './files_actions/viewerAction'\nimport ViewerService from './services/Viewer.js'\n\n// Register the files action\nregisterViewerAction()\n\n// Init Viewer Service\nwindow.OCA = window.OCA ?? {}\nwindow.OCA.Viewer = new ViewerService()\nwindow.OCA.Viewer.version = appVersion\n\n// Eagerly register any handlers queued before the viewer was initialized.\n// This must happen synchronously so that OCA.Viewer.mimetypes is complete\n// before the file action's enabled() callback is evaluated by the files app.\nif (window._oca_viewer_handlers) {\n\twindow._oca_viewer_handlers.forEach((handler) => {\n\t\tif (!window.OCA.Viewer.availableHandlers.some((h) => h.id === handler.id)) {\n\t\t\twindow.OCA.Viewer.registerHandler(handler)\n\t\t}\n\t})\n}\n"],"file":"viewer-init.mjs"} \ No newline at end of file diff --git a/js/viewer-init.mjs.map.license b/js/viewer-init.mjs.map.license index dfd34d470..b911d5d2f 100644 --- a/js/viewer-init.mjs.map.license +++ b/js/viewer-init.mjs.map.license @@ -292,7 +292,7 @@ This file is generated from multiple sources. Included packages: - version: 0.14.10 - license: MIT - vue-material-design-icons - - version: 5.3.1 + - version: 5.3.2 - license: MIT - vue-router - version: 3.6.5 diff --git a/js/viewer-main.mjs b/js/viewer-main.mjs index 4d99622ec..f0819d102 100644 --- a/js/viewer-main.mjs +++ b/js/viewer-main.mjs @@ -1,9 +1,9 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('viewer', '', 'js/NcModal-D51sfqoj.chunk.mjs'),window.OC.filePath('viewer', '', 'js/NcIconSvgWrapper-Bui9PhAS-40hkHiO1.chunk.mjs'),window.OC.filePath('viewer', '', 'js/previewUtils-B8MVMkXI.chunk.mjs'),window.OC.filePath('viewer', '', 'css/previewUtils-CU5qdRbf.chunk.css'),window.OC.filePath('viewer', '', 'js/_plugin-vue2_normalizer-DU4iP6Vu-UEw9p-J1.chunk.mjs'),window.OC.filePath('viewer', '', 'css/NcIconSvgWrapper-Bui9PhAS-3xIBDiQU.chunk.css'),window.OC.filePath('viewer', '', 'css/NcModal-8EYmpmQk.chunk.css'),window.OC.filePath('viewer', '', 'js/NcActionLink-DDQUkWaO.chunk.mjs'),window.OC.filePath('viewer', '', 'js/actionText-BMig9Egt-DrBqWVOB.chunk.mjs'),window.OC.filePath('viewer', '', 'css/NcActionLink-DqmJtdZG.chunk.css'),window.OC.filePath('viewer', '', 'js/NcActionButton-CAlaHBIk.chunk.mjs'),window.OC.filePath('viewer', '', 'css/NcActionButton-BjaRp7qa.chunk.css'),window.OC.filePath('viewer', '', 'css/index-CS3F8E0B.chunk.css')])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('viewer', '', 'js/NcModal-D51sfqoj.chunk.mjs'),window.OC.filePath('viewer', '', 'js/NcIconSvgWrapper-Bui9PhAS-40hkHiO1.chunk.mjs'),window.OC.filePath('viewer', '', 'js/previewUtils-B8MVMkXI.chunk.mjs'),window.OC.filePath('viewer', '', 'css/previewUtils-CU5qdRbf.chunk.css'),window.OC.filePath('viewer', '', 'js/_plugin-vue2_normalizer-DU4iP6Vu-UEw9p-J1.chunk.mjs'),window.OC.filePath('viewer', '', 'css/NcIconSvgWrapper-Bui9PhAS-3xIBDiQU.chunk.css'),window.OC.filePath('viewer', '', 'css/NcModal-8EYmpmQk.chunk.css'),window.OC.filePath('viewer', '', 'js/NcActionLink-DDQUkWaO.chunk.mjs'),window.OC.filePath('viewer', '', 'js/actionText-BMig9Egt-DrBqWVOB.chunk.mjs'),window.OC.filePath('viewer', '', 'css/NcActionLink-DqmJtdZG.chunk.css'),window.OC.filePath('viewer', '', 'js/NcActionButton-CAlaHBIk.chunk.mjs'),window.OC.filePath('viewer', '', 'css/NcActionButton-BjaRp7qa.chunk.css'),window.OC.filePath('viewer', '', 'css/index-DEuo5tsF.chunk.css')])))=>i.map(i=>d[i]); import{D as B,E as N,F as u,G as T,H as $,I as m,J as q,K as S,L as R,M as G,N as W,O as K,P as j,Q as U,R as I,S as Z,T as J,U as Y,W as Q,C as X,X as s,Y as v,Z as _,_ as y,$ as x,V as g,a0 as E,a1 as ee,a2 as te,a3 as b,a4 as ie,a5 as F,a6 as p,a7 as ne,a8 as se,a9 as re,aa as le}from"./previewUtils-B8MVMkXI.chunk.mjs";const ae={computed:{isFullscreen(){return B.value}}},oe={computed:{isMobile(){return N.value}}};function de(e){if(e.hideDownload)return!1;const i=typeof e?.shareAttributes=="string"?JSON.parse(e.shareAttributes||"[]"):e?.shareAttributes;return i&&i.length>0?i.find(({scope:n,key:r})=>n==="permissions"&&r==="download")?.value!==!1:!0}const H=function(e){const i=new AbortController;return{request:async function(n,r){return e(n,{...r,signal:i.signal})},cancel:()=>i.abort()}},ce={name:"Error",props:{name:{type:String,default:""}}};var he=function(){var e=this,i=e._self._c;return i("div",{attrs:{id:"emptycontent"}},[i("div",{staticClass:"icon-error"}),i("h2",[e._t("default",function(){return[e._v(e._s(e.t("viewer","Error loading {name}",{name:e.name})))]})],2)])},ue=[],me=u(ce,he,ue,!1,null,"6a8e09db");const pe=me.exports,fe=async e=>{e.startsWith("/")||(e=`/${e}`);const i=T(),n=$(),r=await i.stat(`${m()}${e}`,{details:!0,data:n});return q(r.data)};function w(e,i,n){const r={mime:i,modal:n,failed:!1,loaded:!1,davPath:S(e),source:e.source??S(e)};return Object.assign({},e,r)}async function we(e,i={}){return(await R.getDirectoryContents(e,Object.assign({data:`<?xml version="1.0"?> <d:propfind ${G()}> <d:prop> <oc:tags /> ${W()} </d:prop> - </d:propfind>`,details:!0},i))).data.map(K)}async function ge(){const e=await ve();if(!e)return{key:"basename",asc:!0};const i={mtime:"lastmod"}[e.sorting_mode]||e.sorting_mode||"basename",n=e.sorting_direction==="asc"||!e.sorting_direction;return{key:i,asc:n}}async function ve(){if(j())return null;const e=U("apps/files/api/v1/views");return await I.get(e).then(i=>i.data.data?.files).catch(()=>null)}const ye={computed:{previewPath(){return this.getPreviewIfAny({fileid:this.fileid,filename:this.filename,previewUrl:this.previewUrl,hasPreview:this.hasPreview,davPath:this.davPath,etag:this.$attrs.etag})},davPath(){return S({filename:this.filename,basename:this.basename})}},methods:{getPreviewIfAny(e){return Z(e)}}};var f={exports:{}},V;function Fe(){if(V)return f.exports;V=1;var e=J.platform==="win32",i=/^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/,n={};function r(o){return i.exec(o).slice(1)}n.parse=function(o){if(typeof o!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof o);var a=r(o);if(!a||a.length!==5)throw new TypeError("Invalid path '"+o+"'");return{root:a[1],dir:a[0]===a[1]?a[0]:a[0].slice(0,-1),base:a[2],ext:a[4],name:a[3]}};var l=/^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/,d={};function h(o){return l.exec(o).slice(1)}return d.parse=function(o){if(typeof o!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof o);var a=h(o);if(!a||a.length!==5)throw new TypeError("Invalid path '"+o+"'");return{root:a[1],dir:a[0].slice(0,-1),base:a[2],ext:a[4],name:a[3]}},e?f.exports=n.parse:f.exports=d.parse,f.exports.posix=d.parse,f.exports.win32=n.parse,f.exports}var be=Fe();const k=Y(be),_e={inheritAttrs:!1,mixins:[ye],props:{active:{type:Boolean,default:!1},basename:{type:String,required:!0},filename:{type:String,required:!0},source:{type:String,default:void 0},previewUrl:{type:String,default:void 0},hasPreview:{type:Boolean,default:!1},fileid:{type:[Number,String],required:!1},fileList:{type:Array,default:()=>[]},mime:{type:String,required:!0},canSwipe:{type:Boolean,default:!0},canZoom:{type:Boolean,default:!1},loaded:{type:Boolean,default:!1},isSidebarShown:{type:Boolean,default:!1},isFullScreen:{type:Boolean,default:!1},metadataFilesLivePhoto:{type:Number,default:void 0}},data(){return{height:null,width:null,naturalHeight:null,naturalWidth:null,isLoaded:!1}},computed:{name(){return k(this.basename).name},ext(){return k(this.basename).ext},src(){return this.source??this.davPath}},watch:{active(e,i){e===!0&&i===!1&&this.isLoaded&&this.doneLoading()},isSidebarShown(){setTimeout(this.updateHeightWidth,200)}},mounted(){this.$el.addEventListener("error",e=>{console.error("Error loading",this.filename,e),this.$emit("error",e)}),window.addEventListener("resize",Q(()=>{this.updateHeightWidth()},100))},methods:{doneLoading(){this.$emit("update:loaded",!0),this.isLoaded=!0},updateHeightWidth(){const e=this.$parent.$el.querySelector(".modal-wrapper");if(e&&this.naturalHeight>0&&this.naturalWidth>0){const i=e.querySelector(".modal-container"),n=i.clientHeight,r=i.clientWidth,l=n/this.naturalHeight,d=r/this.naturalWidth;l<d&&l<1?(this.height=n,this.width=Math.round(this.naturalWidth/this.naturalHeight*n)):l>d&&d<1?(this.width=r,this.height=Math.round(this.naturalHeight/this.naturalWidth*r)):(this.height=this.naturalHeight,this.width=this.naturalWidth)}else this.height=this.naturalHeight,this.width=this.naturalWidth},enableSwipe(){this.$emit("update:canSwipe",!0)},disableSwipe(){this.$emit("update:canSwipe",!1)},toggleFullScreen(){this.isFullScreen?document.exitFullscreen():this.$el.requestFullscreen()}}},xe={name:"TrashCanOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ce=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon trash-can-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},Se=[],Le=u(xe,Ce,Se,!1,null,null);const Ee=Le.exports,He={name:"TrayArrowDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ve=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon tray-arrow-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},ke=[],Me=u(He,Ve,ke,!1,null,null);const Ie=Me.exports,Ae={name:"FullscreenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var ze=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon fullscreen-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},Oe=[],De=u(Ae,ze,Oe,!1,null,null);const Pe=De.exports,Be={name:"FullscreenExitIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ne=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon fullscreen-exit-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},Te=[],$e=u(Be,Ne,Te,!1,null,null);const qe=$e.exports,Re={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ge=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon pencil-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},We=[],Ke=u(Re,Ge,We,!1,null,null);const je=Ke.exports,Ue={name:"DockRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ze=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon dock-right-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},Je=[],Ye=u(Ue,Ze,Je,!1,null,null);const Qe=Ye.exports,Xe=()=>b(()=>import("./NcModal-D51sfqoj.chunk.mjs").then(e=>e.as),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url),et=()=>b(()=>import("./NcActionLink-DDQUkWaO.chunk.mjs"),__vite__mapDeps([7,8,4,9]),import.meta.url),tt=()=>b(()=>import("./NcActionButton-CAlaHBIk.chunk.mjs"),__vite__mapDeps([10,1,2,3,4,5,8,11]),import.meta.url),it=X({name:"Viewer",components:{Delete:Ee,DockRight:Qe,Download:Ie,Error:pe,Fullscreen:Pe,FullscreenExit:qe,NcActionButton:tt,NcActionLink:et,NcModal:Xe,Pencil:je},mixins:[ae,oe],data(){return{Viewer:OCA.Viewer,handlers:OCA.Viewer.availableHandlers,components:{},mimeGroups:{},registeredHandlers:{},registeredHandlersCount:0,currentIndex:0,previousFile:{},currentFile:{},comparisonFile:null,nextFile:{},fileList:[],sortingConfig:null,isLoaded:!1,initiated:!1,editing:!1,cancelRequestFile:()=>{},cancelRequestFolder:()=>{},sidebarPosition:0,isSidebarShown:!1,isFullscreenMode:!1,canSwipe:!0,isStandalone:!1,theme:null,lightBackdrop:null,root:y,handlerId:"",trapElements:[]}},computed:{downloadPath(){return this.currentFile.source??this.currentFile.davPath},hasPrevious(){return this.fileList.length>1&&(this.canLoop||!this.isStartOfList)},hasNext(){return this.fileList.length>1&&(this.canLoop||!this.isEndOfList)},file(){return this.Viewer.file},fileInfo(){return this.Viewer.fileInfo},comparisonFileInfo(){return this.Viewer.compareFileInfo},files(){return this.Viewer.files},enableSidebar(){return this.Viewer.enableSidebar},el(){return this.Viewer.el},loadMore(){return this.Viewer.loadMore},canLoop(){return this.Viewer.canLoop},isStartOfList(){return this.currentIndex===0},isEndOfList(){return this.currentIndex===this.fileList.length-1},hasPreviousFile(){return Object.keys(this.previousFile).length>0},hasNextFile(){return Object.keys(this.nextFile).length>0},isImage(){return["image/jpeg","image/png","image/webp"].includes(this.currentFile?.mime)},sidebarOpenFilePath(){try{return this.currentFile?.davPath?.split(se)[1]?.split("/")?.map(decodeURIComponent)?.join("/")}catch{return!1}},canDelete(){return this.currentFile?.permissions?.includes("D")},canDownload(){return this.comparisonFile?!1:this.currentFile&&de(this.currentFile)},canEdit(){return!this.isMobile&&this.canDownload&&this.currentFile?.permissions?.includes("W")&&this.isImage&&!this.comparisonFile&&(ne("core","config",[])["enable_non-accessible_features"]??!0)},modalClass(){return{"icon-loading":!this.currentFile.loaded&&!this.currentFile.failed,"theme--undefined":this.theme===null,"theme--dark":this.theme==="dark","theme--light":this.theme==="light","theme--default":this.theme==="default","image--fullscreen":this.isImage&&this.isFullscreenMode}},showComparison(){return!this.isMobile},contentClass(){return{"viewer--split":this.comparisonFile}},isSameFile(){return(e=null,i=null)=>!!(i&&i===this.currentFile.path&&!this.currentFile.source||i===this.currentFile.filename||e&&e.fileid===this.currentFile.fileid&&e.mtime&&e.mtime===this.currentFile.mtime&&e.source&&e.source===this.currentFile.source)}},watch:{el(e){s.info(e),this.$nextTick(()=>{const i=document.getElementById("viewer");if(e){const n=document.querySelector(e);n?n.appendChild(i):s.warn("Could not find element ",{element:e})}else document.body.appendChild(i)})},file(e){e&&e.trim()!==""?(s.info("Opening viewer for file ",{path:e}),this.openFile(e,OCA.Viewer.overrideHandlerId)):this.cleanup()},fileInfo(e){e?(s.info("Opening viewer for fileInfo ",{fileInfo:e}),this.openFileInfo(e,OCA.Viewer.overrideHandlerId)):this.cleanup()},comparisonFileInfo(e){e?(s.info("Opening viewer for comparisonFileInfo ",{fileInfo:e}),this.compareFile(e)):this.cleanup()},files(e){if(!e||!Array.isArray(e)||e.length===0){s.warn("No files provided, skipping update");return}const i=e.findIndex(n=>n.filename===this.currentFile.filename);i>-1&&(this.currentIndex=i,s.debug("The files list changed, new current file index is "+i)),this.fileList=e},async isEndOfList(e){if(!(!e||this.el)&&this.loadMore&&typeof this.loadMore=="function"){s.debug("Fetching additional files...");const i=await this.loadMore();Array.isArray(i)&&i.length>0&&this.fileList.push(...i)}}},beforeMount(){this.isStandalone=window.OCP?.Files===void 0,this.isStandalone&&s.info("No OCP.Files app found, viewer is now in standalone mode"),document.addEventListener("DOMContentLoaded",()=>{this.registerNewHandlers()}),window.addEventListener("resize",this.onResize)},mounted(){p("files:sidebar:opened",this.handleAppSidebarOpen),p("files:sidebar:closed",this.handleAppSidebarClose),p("files:node:updated",this.handleFileUpdated),p("viewer:trapElements:changed",this.handleTrapElementsChange),p("editor:toggle",this.toggleEditor),p("editor:file:created",this.handleNewFile),window.addEventListener("keydown",this.keyboardDeleteFile),window.addEventListener("keydown",this.keyboardDownloadFile),window.addEventListener("keydown",this.keyboardEditFile),this.addFullscreenEventListeners()},beforeDestroy(){window.removeEventListener("resize",this.onResize)},destroyed(){F("files:sidebar:opened",this.handleAppSidebarOpen),F("files:sidebar:closed",this.handleAppSidebarClose),F("viewer:trapElements:changed",this.handleTrapElementsChange),F("editor:toggle",this.toggleEditor),window.removeEventListener("keydown",this.keyboardDeleteFile),window.removeEventListener("keydown",this.keyboardDownloadFile),window.removeEventListener("keydown",this.keyboardEditFile),this.removeFullscreenEventListeners()},methods:{uniqueKey(e){return""+e.fileid+e.source},toggleEditor(e){ie(e),this.editing=e},preventContextMenu(e){this.canDownload||e.preventDefault()},async beforeOpen(){this.initiated=!0;const e=document.querySelector("aside.app-sidebar");e&&e.style.display!=="none"?(this.isSidebarShown=!0,this.sidebarPosition=e.getBoundingClientRect().left,this.trapElements=[e]):(this.isSidebarShown=!1,this.trapElements=[]),OCA?.Files?.Sidebar?.setFullScreenMode&&OCA.Files.Sidebar.setFullScreenMode(!0),this.sortingConfig=await ge(),window.loadRoboto&&(s.debug("⚠️ Loading roboto font for visual regression tests"),b(()=>Promise.resolve({}),__vite__mapDeps([12]),import.meta.url),delete window.loadRoboto)},async openFile(e,i=null){if(await this.beforeOpen(),this.cancelRequestFile(),this.isSameFile(null,e)){s.debug("Viewer already opened with the same path, ignoring",{path:e});return}const{request:n,cancel:r}=H(re);this.cancelRequestFile=r;const[,l]=E(e);this.el||(document.body.style.overflow="hidden",document.documentElement.style.overflow="hidden");const d=document.getElementsByTagName("head")[0].getElementsByTagName("title")[0];d&&!d.dataset.old&&l!==""&&(d.dataset.old=document.title,this.updateTitle(l));try{const h=await n(e);console.debug("File info for "+e+" fetched",h),await this.openFileInfo(h,i),!this.isStandalone&&this.canEdit&&window.OCP?.Files?.Router?.query?.editing==="true"&&this.toggleEditor(!0)}catch(h){h?.response?.status===404?(s.error("The file no longer exists, error: ",{error:h}),v(t("viewer","This file no longer exists")),this.close()):console.error("Could not open file "+e,h)}},async handleNewFile(e){let i;try{i=te(e),this.openFile(i)}catch(n){s.error("Could not extract file path from source",{source:e,e:n})}try{const n=await fe("/"+i);x("files:node:created",n)}catch(n){s.error("Could not fetch new file",{path:i,e:n})}},async openFileInfo(e,i=null){if(this.beforeOpen(),this.cancelRequestFolder(),this.isSameFile(e)){s.debug("Viewer already opened with the same fileInfo, ignoring",{fileInfo:e});return}this.registerNewHandlers();const n=e.mime,r=n.split("/")[0];let l;if(i!==null&&(l=Object.values(this.registeredHandlers).find(o=>o.id===i)??l),l||(l=this.registeredHandlers[n]??this.registeredHandlers[r]),!l){s.error("The following file could not be displayed",{fileInfo:e}),v(t("viewer","There is no plugin available to display this file type")),this.close();return}this.theme=l.theme??"dark";const d=window.getComputedStyle(document.body).getPropertyValue("--background-invert-if-dark")!=="invert(100%)";this.lightBackdrop=l.theme==="light"||l.theme==="default"&&d,this.handlerId=l.id,this.currentFile=new w(e,n,l.component),this.comparisonFile=null,this.updatePreviousNext();const h=this.mimeGroups[n];if(this.files&&this.files.length>0)s.debug("A files list have been provided. No folder content will be fetched."),this.fileList=this.files,this.currentIndex=this.fileList.findIndex(o=>o.filename===e.filename);else if(h&&this.el===null){const o=this.mimeGroups[h]?this.mimeGroups[h]:[n],{request:a,cancel:A}=H(we);this.cancelRequestFolder=A;const[z]=E(e.filename);this.currentIndex=0,this.fileList=[e];const L=(await a(z)).filter(c=>c.mime&&o.indexOf(c.mime)!==-1),O=L.map(c=>new _({source:y+m()+c.filename,id:c.fileid,displayname:c.displayname,mime:c.mime,mtime:new Date(c.lastmod),owner:this.currentFile.ownerId,root:m()})),D=ee(O,{sortingMode:this.sortingConfig.key,sortingOrder:this.sortingConfig.asc?"asc":"desc"}),P=new Map(L.map(c=>[c.filename,c]));this.fileList=D.map(c=>P.get(c.path)),this.currentIndex=this.fileList.findIndex(c=>c.filename===e.filename),this.updatePreviousNext()}else this.currentIndex=0,this.fileList=[e];this.changeSidebar()},openFileFromList(e){const i=e.mime;this.currentFile=new w(e,i,this.components[i]),this.changeSidebar(),this.updatePreviousNext()},async compareFile(e){this.comparisonFile=new w(e,e.mime,this.components[e.mime])},changeSidebar(){this.isSidebarShown&&this.showSidebar()},updatePreviousNext(){const e=this.fileList[this.currentIndex-1],i=this.fileList[this.currentIndex+1];if(e){const n=e.mime;this.components[n]&&(this.previousFile=new w(e,n,this.components[n]))}else this.previousFile={};if(i){const n=i.mime;this.components[n]&&(this.nextFile=new w(i,n,this.components[n]))}else this.nextFile={}},updateTitle(e){document.title=`${e} - ${OCA.Theming?.name??oc_defaults.name}`},registerNewHandlers(){window._oca_viewer_handlers&&window._oca_viewer_handlers.forEach(i=>{this.handlers.some(n=>n.id===i.id)||OCA.Viewer.registerHandler(i)});const e=this.handlers.slice(this.registeredHandlersCount);e.length!==0&&(this.registeredHandlersCount=this.handlers.length,e.forEach(i=>{this.registerHandler(i)}),e.forEach(i=>{this.registerHandlerAlias(i)}),this.isLoaded=!0,s.info(`${e.length} viewer handlers registered`,{handlers:e}))},registerHandler(e){if(e.id&&Object.values(this.registeredHandlers).findIndex(i=>i.id===e.id)>-1){s.error("The following handler is already registered",{handler:e});return}if(!e.id||e.id.trim()===""||typeof e.id!="string"){s.error("The following handler doesn't have a valid id",{handler:e});return}if(!(!(e.mimes&&Array.isArray(e.mimes))&&e.mimesAliases)){if(!(e.mimes&&Array.isArray(e.mimes))&&!e.mimesAliases){s.error("The following handler doesn't have a valid mime array",{handler:e});return}if(!e.component||typeof e.component!="object"&&typeof e.component!="function"){s.error("The following handler doesn't have a valid component",{handler:e});return}e.component.mixins=[...e?.component?.mixins??[],_e],e.mimes&&e.mimes.forEach(i=>{if(this.components[i]){s.error("The following mime is already registered",{mime:i,handler:e});return}this.registerGroups({mime:i,group:e.group}),this.components[i]=e.component,g.component(e.component.name,e.component),this.registeredHandlers[i]=e})}},registerHandlerAlias(e){e.mimesAliases&&Object.keys(e.mimesAliases).forEach(i=>{if(e.mimesAliases&&typeof e.mimesAliases!="object"){s.error("The following handler doesn't have a valid mimesAliases object",{handler:e});return}const n=e.mimesAliases[i];if(this.components[i]){s.error("The following mime is already registered",{mime:i,handler:e});return}if(!this.components[n]){s.error("The requested alias does not exists",{alias:n,mime:i,handler:e});return}this.registerGroups({mime:i,group:this.mimeGroups[n]}),this.components[i]=this.components[n],this.registeredHandlers[i]=e})},registerGroups({mime:e,group:i}){i&&(this.mimeGroups[e]=i,this.mimeGroups[i]||(this.mimeGroups[i]=[]),this.mimeGroups[i].push(e))},close(){OCA.Viewer.close(),OCA?.Files?.Sidebar&&OCA.Files.Sidebar.setFullScreenMode(!1),this.isFullscreenMode&&this.exitFullscreen()},keyboardDeleteFile(e){this.canDelete&&e.key==="Delete"&&e.ctrlKey===!0&&this.onDelete()},keyboardDownloadFile(e){e.key==="s"&&e.ctrlKey===!0&&(e.preventDefault(),this.canDownload&&this.onDownload())},keyboardEditFile(e){e.key==="e"&&e.ctrlKey===!0&&(e.preventDefault(),this.canEdit&&this.onEdit())},cleanup(){s.info("Cleaning up viewer"),this.currentFile={},this.comparisonFile=null,this.currentModal=null,this.fileList=[],this.initiated=!1,this.theme=null,this.cancelRequestFile(),this.cancelRequestFolder(),document.body.style.overflow=null,document.documentElement.style.overflow=null,this.Viewer.onClose();const e=document.getElementsByTagName("head")[0].getElementsByTagName("title")[0];e&&e.dataset.old&&(document.title=e.dataset.old,delete e.dataset.old)},previous(){this.currentIndex--,this.currentIndex<0&&(this.currentIndex=this.fileList.length-1);const e=this.fileList[this.currentIndex];this.openFileFromList(e),this.Viewer.onPrev(e),this.updateTitle(this.currentFile.basename)},next(){this.currentIndex++,this.currentIndex>this.fileList.length-1&&(this.currentIndex=0);const e=this.fileList[this.currentIndex];this.openFileFromList(e),this.Viewer.onNext(e),this.updateTitle(this.currentFile.basename)},comparisonFailed(){this.comparisonFile.failed=!0},previousFailed(){this.previousFile.failed=!0},currentFailed(){this.currentFile.failed=!0},nextFailed(){this.nextFile.failed=!0},async showSidebar(){if(this.enableSidebar){const e=new _({source:y+m()+this.currentFile.filename,id:this.currentFile.fileid,displayname:this.currentFile.displayname,mime:this.currentFile.mime,mtime:new Date(this.currentFile.lastmod),owner:this.currentFile.ownerId,root:m()});x("viewer:sidebar:open",e),OCA?.Files?.Sidebar&&await OCA.Files.Sidebar.open(this.sidebarOpenFilePath)}},handleAppSidebarOpen(){this.isSidebarShown=!0;const e=document.querySelector("aside.app-sidebar");e&&(this.sidebarPosition=e.getBoundingClientRect().left,this.trapElements=[e])},handleAppSidebarClose(){this.isSidebarShown=!1,this.trapElements=[]},async handleFileUpdated(e){const i=this.fileList.findIndex(({fileid:n})=>n===e.fileid);e.etag=e.attributes.etag,this.fileList.splice(i,1,e),e.fileid===this.currentFile.fileid&&(this.currentFile.etag=e.attributes.etag)},onResize(){const e=document.querySelector("aside.app-sidebar");e&&(this.sidebarPosition=e.getBoundingClientRect().left)},async onDelete(){try{const e=this.currentFile.fileid,i=this.currentFile.source??this.currentFile.davPath,n=i.includes("remote.php/dav"),r=new _({source:n?y+m()+this.currentFile.filename:i,id:e,mime:this.currentFile.mime,owner:this.currentFile.ownerId,root:n?m():void 0});await I.delete(i),x("files:node:deleted",r);const l=this.fileList.findIndex(d=>d.filename===this.currentFile.filename);this.hasPrevious||this.hasNext?(this.hasNext?this.next():this.previous(),this.fileList.splice(l,1)):this.close()}catch(e){console.error(e),v(e)}},onEdit(){this.toggleEditor(!0)},async onDownload(){if(!this.canDownload)return;const e=this.currentFile.mime,i=e?.split("/")[0],n=this.registeredHandlers[e]??this.registeredHandlers[i];if(n?.downloadCallback&&typeof n.downloadCallback=="function")try{s.debug("Calling handler downloadCallback before download"),await n.downloadCallback(this.currentFile)}catch(r){s.error("Failed to execute downloadCallback",{error:r}),v(t("viewer","Failed to save file before download"));return}this.performDownload()},performDownload(){s.debug("Performing download",{file:this.currentFile});const e=document.createElement("a");e.href=this.currentFile.source??this.currentFile.davPath,e.download=this.currentFile.basename,document.body.appendChild(e),e.click(),document.body.removeChild(e)},handleTrapElementsChange(e){this.trapElements.push(e)},toggleFullScreen(){this.isFullscreenMode?this.exitFullscreen():this.requestFullscreen()},requestFullscreen(){const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},addFullscreenEventListeners(){document.addEventListener("fullscreenchange",this.onFullscreenchange),document.addEventListener("webkitfullscreenchange",this.onFullscreenchange)},removeFullscreenEventListeners(){document.addEventListener("fullscreenchange",this.onFullscreenchange),document.addEventListener("webkitfullscreenchange",this.onFullscreenchange)},onFullscreenchange(){document.fullscreenElement===document.documentElement||document.webkitFullscreenElement===document.documentElement?this.isFullscreenMode=!0:this.isFullscreenMode=!1}}});var nt=function(){var e=this,i=e._self._c;return e._self._setupProxy,e.el?i("div",{attrs:{id:"viewer","data-handler":e.handlerId}},[e.currentFile.failed?i("Error",{attrs:{name:e.currentFile.basename}}):i(e.currentFile.modal,e._b({key:e.uniqueKey(e.currentFile),ref:"content",tag:"component",staticClass:"viewer__file viewer__file--active",attrs:{active:!0,"can-swipe":!1,"can-zoom":!1,"file-list":[e.currentFile],"is-full-screen":!1,loaded:e.currentFile.loaded,"is-sidebar-shown":!1},on:{"update:loaded":function(n){return e.$set(e.currentFile,"loaded",n)},error:e.currentFailed}},"component",e.currentFile,!1))],1):e.initiated||e.currentFile.modal?i("NcModal",{staticClass:"viewer",class:e.modalClass,style:{width:e.isSidebarShown?`${e.sidebarPosition}px`:null},attrs:{id:"viewer","additional-trap-elements":e.trapElements,"clear-view-delay":-1,"close-button-contained":!1,dark:!0,"light-backdrop":e.lightBackdrop,"data-handler":e.handlerId,"enable-slideshow":e.hasPrevious||e.hasNext,"slideshow-paused":e.editing,"enable-swipe":e.canSwipe&&!e.editing,"has-next":e.hasNext,"has-previous":e.hasPrevious,"inline-actions":e.canEdit?1:0,"spread-navigation":!0,name:e.currentFile.basename,size:"full"},on:{close:e.close,previous:e.previous,next:e.next},scopedSlots:e._u([{key:"actions",fn:function(){return[e.canEdit?i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.onEdit},scopedSlots:e._u([{key:"icon",fn:function(){return[i("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)},[e._v(" "+e._s(e.t("viewer","Edit"))+" ")]):e._e(),i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.toggleFullScreen},scopedSlots:e._u([{key:"icon",fn:function(){return[e.isFullscreenMode?i("FullscreenExit",{attrs:{size:20}}):i("Fullscreen",{attrs:{size:20}})]},proxy:!0}])},[e._v(" "+e._s(e.isFullscreenMode?e.t("viewer","Exit full screen"):e.t("viewer","Full screen"))+" ")]),e.enableSidebar&&e.sidebarOpenFilePath&&!e.isSidebarShown?i("NcActionButton",{attrs:{"close-after-click":""},on:{click:e.showSidebar},scopedSlots:e._u([{key:"icon",fn:function(){return[i("DockRight",{attrs:{size:20}})]},proxy:!0}],null,!1,151993963)},[e._v(" "+e._s(e.t("viewer","Open sidebar"))+" ")]):e._e(),e.canDownload?i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.onDownload},scopedSlots:e._u([{key:"icon",fn:function(){return[i("Download",{attrs:{size:20}})]},proxy:!0}],null,!1,3312959228)},[e._v(" "+e._s(e.t("viewer","Download"))+" ")]):e._e(),e.canDelete?i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.onDelete},scopedSlots:e._u([{key:"icon",fn:function(){return[i("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[e._v(" "+e._s(e.t("viewer","Delete"))+" ")]):e._e()]},proxy:!0}])},[i("div",{staticClass:"viewer__content",class:e.contentClass,on:{click:function(n){return n.target!==n.currentTarget||n.ctrlKey||n.shiftKey||n.altKey||n.metaKey?null:e.close.apply(null,arguments)},contextmenu:e.preventContextMenu}},[e.comparisonFile&&!e.comparisonFile.failed&&e.showComparison?i("div",{staticClass:"viewer__file-wrapper"},[i(e.comparisonFile.modal,e._b({key:e.uniqueKey(e.comparisonFile),ref:"comparison-content",tag:"component",staticClass:"viewer__file viewer__file--active",attrs:{active:!0,"can-swipe":!1,"can-zoom":!1,editing:!1,"is-full-screen":e.isFullscreen,"is-sidebar-shown":e.isSidebarShown,loaded:e.comparisonFile.loaded},on:{"update:loaded":function(n){return e.$set(e.comparisonFile,"loaded",n)},error:e.comparisonFailed}},"component",e.comparisonFile,!1))],1):e._e(),e.hasPreviousFile?i("div",{key:e.uniqueKey(e.previousFile),staticClass:"viewer__file-wrapper viewer__file-wrapper--hidden",attrs:{"aria-hidden":"true",inert:""}},[e.previousFile.failed?i("Error",{attrs:{name:e.previousFile.basename}}):i(e.previousFile.modal,e._b({ref:"previous-content",tag:"component",staticClass:"viewer__file",attrs:{"file-list":e.fileList},on:{error:e.previousFailed}},"component",e.previousFile,!1))],1):e._e(),i("div",{key:e.uniqueKey(e.currentFile),staticClass:"viewer__file-wrapper"},[e.currentFile.failed?i("Error",{attrs:{name:e.currentFile.basename}}):i(e.currentFile.modal,e._b({ref:"content",tag:"component",staticClass:"viewer__file viewer__file--active",attrs:{active:!0,"can-swipe":e.canSwipe,"can-zoom":!0,editing:e.editing,"file-list":e.fileList,"is-full-screen":e.isFullscreen,"is-sidebar-shown":e.isSidebarShown,loaded:e.currentFile.loaded},on:{"update:canSwipe":function(n){e.canSwipe=n},"update:can-swipe":function(n){e.canSwipe=n},"update:editing":[function(n){e.editing=n},e.toggleEditor],"update:loaded":function(n){return e.$set(e.currentFile,"loaded",n)},error:e.currentFailed}},"component",e.currentFile,!1))],1),e.hasNextFile?i("div",{key:e.uniqueKey(e.nextFile),staticClass:"viewer__file-wrapper viewer__file-wrapper--hidden",attrs:{"aria-hidden":"true",inert:""}},[e.nextFile.failed?i("Error",{attrs:{name:e.nextFile.basename}}):i(e.nextFile.modal,e._b({ref:"next-content",tag:"component",staticClass:"viewer__file",attrs:{"file-list":e.fileList},on:{error:e.nextFailed}},"component",e.nextFile,!1))],1):e._e()])]):e._e()},st=[],rt=u(it,nt,st,!1,null,"b24bef65");const lt=rt.exports;g.mixin({methods:{t:le}}),g.prototype.OC=window.OC,g.prototype.OCA=window.OCA;const M=document.createElement("div");M.id="viewer",document.body.appendChild(M);const C=document.createElement("div");C.innerHTML='<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol id="plyr-airplay" viewBox="0 0 18 18"><path d="M16 1H2a1 1 0 00-1 1v10a1 1 0 001 1h3v-2H3V3h12v8h-2v2h3a1 1 0 001-1V2a1 1 0 00-1-1z"/><path d="M4 17h10l-5-6z"/></symbol><symbol id="plyr-captions-off" viewBox="0 0 18 18"><path d="M1 1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h4.6l2.7 2.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l2.7-2.7H17c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1H1zm4.52 10.15c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41C8.47 4.96 7.46 3.76 5.5 3.76c-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69zm7.57 0c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41c-.28-1.15-1.29-2.35-3.25-2.35-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69z" fill-rule="evenodd" fill-opacity=".5"/></symbol><symbol id="plyr-captions-on" viewBox="0 0 18 18"><path d="M1 1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h4.6l2.7 2.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l2.7-2.7H17c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1H1zm4.52 10.15c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41C8.47 4.96 7.46 3.76 5.5 3.76c-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69zm7.57 0c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41c-.28-1.15-1.29-2.35-3.25-2.35-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69z" fill-rule="evenodd"/></symbol><symbol id="plyr-download" viewBox="0 0 18 18"><path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z"/></symbol><symbol id="plyr-enter-fullscreen" viewBox="0 0 18 18"><path d="M10 3h3.6l-4 4L11 8.4l4-4V8h2V1h-7zM7 9.6l-4 4V10H1v7h7v-2H4.4l4-4z"/></symbol><symbol id="plyr-exit-fullscreen" viewBox="0 0 18 18"><path d="M1 12h3.6l-4 4L2 17.4l4-4V17h2v-7H1zM16 .6l-4 4V1h-2v7h7V6h-3.6l4-4z"/></symbol><symbol id="plyr-fast-forward" viewBox="0 0 18 18"><path d="M7.875 7.171L0 1v16l7.875-6.171V17L18 9 7.875 1z"/></symbol><symbol id="plyr-logo-vimeo" viewBox="0 0 18 18"><path d="M17 5.3c-.1 1.6-1.2 3.7-3.3 6.4-2.2 2.8-4 4.2-5.5 4.2-.9 0-1.7-.9-2.4-2.6C5 10.9 4.4 6 3 6c-.1 0-.5.3-1.2.8l-.8-1c.8-.7 3.5-3.4 4.7-3.5 1.2-.1 2 .7 2.3 2.5.3 2 .8 6.1 1.8 6.1.9 0 2.5-3.4 2.6-4 .1-.9-.3-1.9-2.3-1.1.8-2.6 2.3-3.8 4.5-3.8 1.7.1 2.5 1.2 2.4 3.3z"/></symbol><symbol id="plyr-logo-youtube" viewBox="0 0 18 18"><path d="M16.8 5.8c-.2-1.3-.8-2.2-2.2-2.4C12.4 3 9 3 9 3s-3.4 0-5.6.4C2 3.6 1.3 4.5 1.2 5.8 1 7.1 1 9 1 9s0 1.9.2 3.2c.2 1.3.8 2.2 2.2 2.4C5.6 15 9 15 9 15s3.4 0 5.6-.4c1.4-.3 2-1.1 2.2-2.4.2-1.3.2-3.2.2-3.2s0-1.9-.2-3.2zM7 12V6l5 3-5 3z"/></symbol><symbol id="plyr-muted" viewBox="0 0 18 18"><path d="M12.4 12.5l2.1-2.1 2.1 2.1 1.4-1.4L15.9 9 18 6.9l-1.4-1.4-2.1 2.1-2.1-2.1L11 6.9 13.1 9 11 11.1zM3.786 6.008H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol><symbol id="plyr-pause" viewBox="0 0 18 18"><path d="M6 1H3c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zm6 0c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1h-3z"/></symbol><symbol id="plyr-pip" viewBox="0 0 18 18"><path d="M13.293 3.293L7.022 9.564l1.414 1.414 6.271-6.271L17 7V1h-6z"/><path d="M13 15H3V5h5V3H2a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1v-6h-2v5z"/></symbol><symbol id="plyr-play" viewBox="0 0 18 18"><path d="M15.562 8.1L3.87.225c-.818-.562-1.87 0-1.87.9v15.75c0 .9 1.052 1.462 1.87.9L15.563 9.9c.584-.45.584-1.35 0-1.8z"/></symbol><symbol id="plyr-restart" viewBox="0 0 18 18"><path d="M9.7 1.2l.7 6.4 2.1-2.1c1.9 1.9 1.9 5.1 0 7-.9 1-2.2 1.5-3.5 1.5-1.3 0-2.6-.5-3.5-1.5-1.9-1.9-1.9-5.1 0-7 .6-.6 1.4-1.1 2.3-1.3l-.6-1.9C6 2.6 4.9 3.2 4 4.1 1.3 6.8 1.3 11.2 4 14c1.3 1.3 3.1 2 4.9 2 1.9 0 3.6-.7 4.9-2 2.7-2.7 2.7-7.1 0-9.9L16 1.9l-6.3-.7z"/></symbol><symbol id="plyr-rewind" viewBox="0 0 18 18"><path d="M10.125 1L0 9l10.125 8v-6.171L18 17V1l-7.875 6.171z"/></symbol><symbol id="plyr-settings" viewBox="0 0 18 18"><path d="M16.135 7.784a2 2 0 01-1.23-2.969c.322-.536.225-.998-.094-1.316l-.31-.31c-.318-.318-.78-.415-1.316-.094a2 2 0 01-2.969-1.23C10.065 1.258 9.669 1 9.219 1h-.438c-.45 0-.845.258-.997.865a2 2 0 01-2.969 1.23c-.536-.322-.999-.225-1.317.093l-.31.31c-.318.318-.415.781-.093 1.317a2 2 0 01-1.23 2.969C1.26 7.935 1 8.33 1 8.781v.438c0 .45.258.845.865.997a2 2 0 011.23 2.969c-.322.536-.225.998.094 1.316l.31.31c.319.319.782.415 1.316.094a2 2 0 012.969 1.23c.151.607.547.865.997.865h.438c.45 0 .845-.258.997-.865a2 2 0 012.969-1.23c.535.321.997.225 1.316-.094l.31-.31c.318-.318.415-.781.094-1.316a2 2 0 011.23-2.969c.607-.151.865-.547.865-.997v-.438c0-.451-.26-.846-.865-.997zM9 12a3 3 0 110-6 3 3 0 010 6z"/></symbol><symbol id="plyr-volume" viewBox="0 0 18 18"><path d="M15.6 3.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4C15.4 5.9 16 7.4 16 9c0 1.6-.6 3.1-1.8 4.3-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7z"/><path d="M11.282 5.282a.909.909 0 000 1.316c.735.735.995 1.458.995 2.402 0 .936-.425 1.917-.995 2.487a.909.909 0 000 1.316c.145.145.636.262 1.018.156a.725.725 0 00.298-.156C13.773 11.733 14.13 10.16 14.13 9c0-.17-.002-.34-.011-.51-.053-.992-.319-2.005-1.522-3.208a.909.909 0 00-1.316 0zm-7.496.726H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol></svg>',C.style.display="none",document.body.appendChild(C),new g({el:"#viewer",name:"ViewerRoot",render:e=>e(lt)}); + </d:propfind>`,details:!0},i))).data.map(K)}async function ge(){const e=await ve();if(!e)return{key:"basename",asc:!0};const i={mtime:"lastmod"}[e.sorting_mode]||e.sorting_mode||"basename",n=e.sorting_direction==="asc"||!e.sorting_direction;return{key:i,asc:n}}async function ve(){if(j())return null;const e=U("apps/files/api/v1/views");return await I.get(e).then(i=>i.data.data?.files).catch(()=>null)}const ye={computed:{previewPath(){return this.getPreviewIfAny({fileid:this.fileid,filename:this.filename,previewUrl:this.previewUrl,hasPreview:this.hasPreview,davPath:this.davPath,etag:this.$attrs.etag})},davPath(){return S({filename:this.filename,basename:this.basename})}},methods:{getPreviewIfAny(e){return Z(e)}}};var f={exports:{}},V;function Fe(){if(V)return f.exports;V=1;var e=J.platform==="win32",i=/^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/,n={};function r(o){return i.exec(o).slice(1)}n.parse=function(o){if(typeof o!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof o);var a=r(o);if(!a||a.length!==5)throw new TypeError("Invalid path '"+o+"'");return{root:a[1],dir:a[0]===a[1]?a[0]:a[0].slice(0,-1),base:a[2],ext:a[4],name:a[3]}};var l=/^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/,d={};function h(o){return l.exec(o).slice(1)}return d.parse=function(o){if(typeof o!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof o);var a=h(o);if(!a||a.length!==5)throw new TypeError("Invalid path '"+o+"'");return{root:a[1],dir:a[0].slice(0,-1),base:a[2],ext:a[4],name:a[3]}},e?f.exports=n.parse:f.exports=d.parse,f.exports.posix=d.parse,f.exports.win32=n.parse,f.exports}var be=Fe();const k=Y(be),_e={inheritAttrs:!1,mixins:[ye],props:{active:{type:Boolean,default:!1},basename:{type:String,required:!0},filename:{type:String,required:!0},source:{type:String,default:void 0},previewUrl:{type:String,default:void 0},hasPreview:{type:Boolean,default:!1},fileid:{type:[Number,String],required:!1},fileList:{type:Array,default:()=>[]},mime:{type:String,required:!0},canSwipe:{type:Boolean,default:!0},canZoom:{type:Boolean,default:!1},loaded:{type:Boolean,default:!1},isSidebarShown:{type:Boolean,default:!1},isFullScreen:{type:Boolean,default:!1},metadataFilesLivePhoto:{type:Number,default:void 0}},data(){return{height:null,width:null,naturalHeight:null,naturalWidth:null,isLoaded:!1}},computed:{name(){return k(this.basename).name},ext(){return k(this.basename).ext},src(){return this.source??this.davPath}},watch:{active(e,i){e===!0&&i===!1&&this.isLoaded&&this.doneLoading()},isSidebarShown(){setTimeout(this.updateHeightWidth,200)}},mounted(){this.$el.addEventListener("error",e=>{console.error("Error loading",this.filename,e),this.$emit("error",e)}),window.addEventListener("resize",Q(()=>{this.updateHeightWidth()},100))},methods:{doneLoading(){this.$emit("update:loaded",!0),this.isLoaded=!0},updateHeightWidth(){const e=this.$parent.$el.querySelector(".modal-wrapper");if(e&&this.naturalHeight>0&&this.naturalWidth>0){const i=e.querySelector(".modal-container"),n=i.clientHeight,r=i.clientWidth,l=n/this.naturalHeight,d=r/this.naturalWidth;l<d&&l<1?(this.height=n,this.width=Math.round(this.naturalWidth/this.naturalHeight*n)):l>d&&d<1?(this.width=r,this.height=Math.round(this.naturalHeight/this.naturalWidth*r)):(this.height=this.naturalHeight,this.width=this.naturalWidth)}else this.height=this.naturalHeight,this.width=this.naturalWidth},enableSwipe(){this.$emit("update:canSwipe",!0)},disableSwipe(){this.$emit("update:canSwipe",!1)},toggleFullScreen(){this.isFullScreen?document.exitFullscreen():this.$el.requestFullscreen()}}},xe={name:"TrashCanOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ce=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon trash-can-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e(),i("path",{attrs:{d:"M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z"}})])])},Se=[],Le=u(xe,Ce,Se,!1,null,null);const Ee=Le.exports,He={name:"TrayArrowDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ve=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon tray-arrow-down-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e(),i("path",{attrs:{d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z"}})])])},ke=[],Me=u(He,Ve,ke,!1,null,null);const Ie=Me.exports,Ae={name:"FullscreenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var ze=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon fullscreen-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e(),i("path",{attrs:{d:"M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"}})])])},Oe=[],De=u(Ae,ze,Oe,!1,null,null);const Pe=De.exports,Be={name:"FullscreenExitIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ne=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon fullscreen-exit-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e(),i("path",{attrs:{d:"M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z"}})])])},Te=[],$e=u(Be,Ne,Te,!1,null,null);const qe=$e.exports,Re={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ge=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon pencil-outline-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e(),i("path",{attrs:{d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"}})])])},We=[],Ke=u(Re,Ge,We,!1,null,null);const je=Ke.exports,Ue={name:"DockRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ze=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon dock-right-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(n){return e.$emit("click",n)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e(),i("path",{attrs:{d:"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z"}})])])},Je=[],Ye=u(Ue,Ze,Je,!1,null,null);const Qe=Ye.exports,Xe=()=>b(()=>import("./NcModal-D51sfqoj.chunk.mjs").then(e=>e.as),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url),et=()=>b(()=>import("./NcActionLink-DDQUkWaO.chunk.mjs"),__vite__mapDeps([7,8,4,9]),import.meta.url),tt=()=>b(()=>import("./NcActionButton-CAlaHBIk.chunk.mjs"),__vite__mapDeps([10,1,2,3,4,5,8,11]),import.meta.url),it=X({name:"Viewer",components:{Delete:Ee,DockRight:Qe,Download:Ie,Error:pe,Fullscreen:Pe,FullscreenExit:qe,NcActionButton:tt,NcActionLink:et,NcModal:Xe,Pencil:je},mixins:[ae,oe],data(){return{Viewer:OCA.Viewer,handlers:OCA.Viewer.availableHandlers,components:{},mimeGroups:{},registeredHandlers:{},registeredHandlersCount:0,currentIndex:0,previousFile:{},currentFile:{},comparisonFile:null,nextFile:{},fileList:[],sortingConfig:null,isLoaded:!1,initiated:!1,editing:!1,cancelRequestFile:()=>{},cancelRequestFolder:()=>{},sidebarPosition:0,isSidebarShown:!1,isFullscreenMode:!1,canSwipe:!0,isStandalone:!1,theme:null,lightBackdrop:null,root:y,handlerId:"",trapElements:[]}},computed:{downloadPath(){return this.currentFile.source??this.currentFile.davPath},hasPrevious(){return this.fileList.length>1&&(this.canLoop||!this.isStartOfList)},hasNext(){return this.fileList.length>1&&(this.canLoop||!this.isEndOfList)},file(){return this.Viewer.file},fileInfo(){return this.Viewer.fileInfo},comparisonFileInfo(){return this.Viewer.compareFileInfo},files(){return this.Viewer.files},enableSidebar(){return this.Viewer.enableSidebar},el(){return this.Viewer.el},loadMore(){return this.Viewer.loadMore},canLoop(){return this.Viewer.canLoop},isStartOfList(){return this.currentIndex===0},isEndOfList(){return this.currentIndex===this.fileList.length-1},hasPreviousFile(){return Object.keys(this.previousFile).length>0},hasNextFile(){return Object.keys(this.nextFile).length>0},isImage(){return["image/jpeg","image/png","image/webp"].includes(this.currentFile?.mime)},sidebarOpenFilePath(){try{return this.currentFile?.davPath?.split(se)[1]?.split("/")?.map(decodeURIComponent)?.join("/")}catch{return!1}},canDelete(){return this.currentFile?.permissions?.includes("D")},canDownload(){return this.comparisonFile?!1:this.currentFile&&de(this.currentFile)},canEdit(){return!this.isMobile&&this.canDownload&&this.currentFile?.permissions?.includes("W")&&this.isImage&&!this.comparisonFile&&(ne("core","config",[])["enable_non-accessible_features"]??!0)},modalClass(){return{"icon-loading":!this.currentFile.loaded&&!this.currentFile.failed,"theme--undefined":this.theme===null,"theme--dark":this.theme==="dark","theme--light":this.theme==="light","theme--default":this.theme==="default","image--fullscreen":this.isImage&&this.isFullscreenMode}},showComparison(){return!this.isMobile},contentClass(){return{"viewer--split":this.comparisonFile}},isSameFile(){return(e=null,i=null)=>!!(i&&i===this.currentFile.path&&!this.currentFile.source||i===this.currentFile.filename||e&&e.fileid===this.currentFile.fileid&&e.mtime&&e.mtime===this.currentFile.mtime&&e.source&&e.source===this.currentFile.source)}},watch:{el(e){s.info(e),this.$nextTick(()=>{const i=document.getElementById("viewer");if(e){const n=document.querySelector(e);n?n.appendChild(i):s.warn("Could not find element ",{element:e})}else document.body.appendChild(i)})},file(e){e&&e.trim()!==""?(s.info("Opening viewer for file ",{path:e}),this.openFile(e,OCA.Viewer.overrideHandlerId)):this.cleanup()},fileInfo(e){e?(s.info("Opening viewer for fileInfo ",{fileInfo:e}),this.openFileInfo(e,OCA.Viewer.overrideHandlerId)):this.cleanup()},comparisonFileInfo(e){e?(s.info("Opening viewer for comparisonFileInfo ",{fileInfo:e}),this.compareFile(e)):this.cleanup()},files(e){if(!e||!Array.isArray(e)||e.length===0){s.warn("No files provided, skipping update");return}const i=e.findIndex(n=>n.filename===this.currentFile.filename);i>-1&&(this.currentIndex=i,s.debug("The files list changed, new current file index is "+i)),this.fileList=e},async isEndOfList(e){if(!(!e||this.el)&&this.loadMore&&typeof this.loadMore=="function"){s.debug("Fetching additional files...");const i=await this.loadMore();Array.isArray(i)&&i.length>0&&this.fileList.push(...i)}}},beforeMount(){this.isStandalone=window.OCP?.Files===void 0,this.isStandalone&&s.info("No OCP.Files app found, viewer is now in standalone mode"),document.addEventListener("DOMContentLoaded",()=>{this.registerNewHandlers()}),window.addEventListener("resize",this.onResize)},mounted(){p("files:sidebar:opened",this.handleAppSidebarOpen),p("files:sidebar:closed",this.handleAppSidebarClose),p("files:node:updated",this.handleFileUpdated),p("viewer:trapElements:changed",this.handleTrapElementsChange),p("editor:toggle",this.toggleEditor),p("editor:file:created",this.handleNewFile),window.addEventListener("keydown",this.keyboardDeleteFile),window.addEventListener("keydown",this.keyboardDownloadFile),window.addEventListener("keydown",this.keyboardEditFile),this.addFullscreenEventListeners()},beforeDestroy(){window.removeEventListener("resize",this.onResize)},destroyed(){F("files:sidebar:opened",this.handleAppSidebarOpen),F("files:sidebar:closed",this.handleAppSidebarClose),F("viewer:trapElements:changed",this.handleTrapElementsChange),F("editor:toggle",this.toggleEditor),window.removeEventListener("keydown",this.keyboardDeleteFile),window.removeEventListener("keydown",this.keyboardDownloadFile),window.removeEventListener("keydown",this.keyboardEditFile),this.removeFullscreenEventListeners()},methods:{uniqueKey(e){return""+e.fileid+e.source},toggleEditor(e){ie(e),this.editing=e},preventContextMenu(e){this.canDownload||e.preventDefault()},async beforeOpen(){this.initiated=!0;const e=document.querySelector("aside.app-sidebar");e&&e.style.display!=="none"?(this.isSidebarShown=!0,this.sidebarPosition=e.getBoundingClientRect().left,this.trapElements=[e]):(this.isSidebarShown=!1,this.trapElements=[]),OCA?.Files?.Sidebar?.setFullScreenMode&&OCA.Files.Sidebar.setFullScreenMode(!0),this.sortingConfig=await ge(),window.loadRoboto&&(s.debug("⚠️ Loading roboto font for visual regression tests"),b(()=>Promise.resolve({}),__vite__mapDeps([12]),import.meta.url),delete window.loadRoboto)},async openFile(e,i=null){if(await this.beforeOpen(),this.cancelRequestFile(),this.isSameFile(null,e)){s.debug("Viewer already opened with the same path, ignoring",{path:e});return}const{request:n,cancel:r}=H(re);this.cancelRequestFile=r;const[,l]=E(e);this.el||(document.body.style.overflow="hidden",document.documentElement.style.overflow="hidden");const d=document.getElementsByTagName("head")[0].getElementsByTagName("title")[0];d&&!d.dataset.old&&l!==""&&(d.dataset.old=document.title,this.updateTitle(l));try{const h=await n(e);console.debug("File info for "+e+" fetched",h),await this.openFileInfo(h,i),!this.isStandalone&&this.canEdit&&window.OCP?.Files?.Router?.query?.editing==="true"&&this.toggleEditor(!0)}catch(h){h?.response?.status===404?(s.error("The file no longer exists, error: ",{error:h}),v(t("viewer","This file no longer exists")),this.close()):console.error("Could not open file "+e,h)}},async handleNewFile(e){let i;try{i=te(e),this.openFile(i)}catch(n){s.error("Could not extract file path from source",{source:e,e:n})}try{const n=await fe("/"+i);x("files:node:created",n)}catch(n){s.error("Could not fetch new file",{path:i,e:n})}},async openFileInfo(e,i=null){if(this.beforeOpen(),this.cancelRequestFolder(),this.isSameFile(e)){s.debug("Viewer already opened with the same fileInfo, ignoring",{fileInfo:e});return}this.registerNewHandlers();const n=e.mime,r=n.split("/")[0];let l;if(i!==null&&(l=Object.values(this.registeredHandlers).find(o=>o.id===i)??l),l||(l=this.registeredHandlers[n]??this.registeredHandlers[r]),!l){s.error("The following file could not be displayed",{fileInfo:e}),v(t("viewer","There is no plugin available to display this file type")),this.close();return}this.theme=l.theme??"dark";const d=window.getComputedStyle(document.body).getPropertyValue("--background-invert-if-dark")!=="invert(100%)";this.lightBackdrop=l.theme==="light"||l.theme==="default"&&d,this.handlerId=l.id,this.currentFile=new w(e,n,l.component),this.comparisonFile=null,this.updatePreviousNext();const h=this.mimeGroups[n];if(this.files&&this.files.length>0)s.debug("A files list have been provided. No folder content will be fetched."),this.fileList=this.files,this.currentIndex=this.fileList.findIndex(o=>o.filename===e.filename);else if(h&&this.el===null){const o=this.mimeGroups[h]?this.mimeGroups[h]:[n],{request:a,cancel:A}=H(we);this.cancelRequestFolder=A;const[z]=E(e.filename);this.currentIndex=0,this.fileList=[e];const L=(await a(z)).filter(c=>c.mime&&o.indexOf(c.mime)!==-1),O=L.map(c=>new _({source:y+m()+c.filename,id:c.fileid,displayname:c.displayname,mime:c.mime,mtime:new Date(c.lastmod),owner:this.currentFile.ownerId,root:m()})),D=ee(O,{sortingMode:this.sortingConfig.key,sortingOrder:this.sortingConfig.asc?"asc":"desc"}),P=new Map(L.map(c=>[c.filename,c]));this.fileList=D.map(c=>P.get(c.path)),this.currentIndex=this.fileList.findIndex(c=>c.filename===e.filename),this.updatePreviousNext()}else this.currentIndex=0,this.fileList=[e];this.changeSidebar()},openFileFromList(e){const i=e.mime;this.currentFile=new w(e,i,this.components[i]),this.changeSidebar(),this.updatePreviousNext()},async compareFile(e){this.comparisonFile=new w(e,e.mime,this.components[e.mime])},changeSidebar(){this.isSidebarShown&&this.showSidebar()},updatePreviousNext(){const e=this.fileList[this.currentIndex-1],i=this.fileList[this.currentIndex+1];if(e){const n=e.mime;this.components[n]&&(this.previousFile=new w(e,n,this.components[n]))}else this.previousFile={};if(i){const n=i.mime;this.components[n]&&(this.nextFile=new w(i,n,this.components[n]))}else this.nextFile={}},updateTitle(e){document.title=`${e} - ${OCA.Theming?.name??oc_defaults.name}`},registerNewHandlers(){window._oca_viewer_handlers&&window._oca_viewer_handlers.forEach(i=>{this.handlers.some(n=>n.id===i.id)||OCA.Viewer.registerHandler(i)});const e=this.handlers.slice(this.registeredHandlersCount);e.length!==0&&(this.registeredHandlersCount=this.handlers.length,e.forEach(i=>{this.registerHandler(i)}),e.forEach(i=>{this.registerHandlerAlias(i)}),this.isLoaded=!0,s.info(`${e.length} viewer handlers registered`,{handlers:e}))},registerHandler(e){if(e.id&&Object.values(this.registeredHandlers).findIndex(i=>i.id===e.id)>-1){s.error("The following handler is already registered",{handler:e});return}if(!e.id||e.id.trim()===""||typeof e.id!="string"){s.error("The following handler doesn't have a valid id",{handler:e});return}if(!(!(e.mimes&&Array.isArray(e.mimes))&&e.mimesAliases)){if(!(e.mimes&&Array.isArray(e.mimes))&&!e.mimesAliases){s.error("The following handler doesn't have a valid mime array",{handler:e});return}if(!e.component||typeof e.component!="object"&&typeof e.component!="function"){s.error("The following handler doesn't have a valid component",{handler:e});return}e.component.mixins=[...e?.component?.mixins??[],_e],e.mimes&&e.mimes.forEach(i=>{if(this.components[i]){s.error("The following mime is already registered",{mime:i,handler:e});return}this.registerGroups({mime:i,group:e.group}),this.components[i]=e.component,g.component(e.component.name,e.component),this.registeredHandlers[i]=e})}},registerHandlerAlias(e){e.mimesAliases&&Object.keys(e.mimesAliases).forEach(i=>{if(e.mimesAliases&&typeof e.mimesAliases!="object"){s.error("The following handler doesn't have a valid mimesAliases object",{handler:e});return}const n=e.mimesAliases[i];if(this.components[i]){s.error("The following mime is already registered",{mime:i,handler:e});return}if(!this.components[n]){s.error("The requested alias does not exists",{alias:n,mime:i,handler:e});return}this.registerGroups({mime:i,group:this.mimeGroups[n]}),this.components[i]=this.components[n],this.registeredHandlers[i]=e})},registerGroups({mime:e,group:i}){i&&(this.mimeGroups[e]=i,this.mimeGroups[i]||(this.mimeGroups[i]=[]),this.mimeGroups[i].push(e))},close(){OCA.Viewer.close(),OCA?.Files?.Sidebar&&OCA.Files.Sidebar.setFullScreenMode(!1),this.isFullscreenMode&&this.exitFullscreen()},keyboardDeleteFile(e){this.canDelete&&e.key==="Delete"&&e.ctrlKey===!0&&this.onDelete()},keyboardDownloadFile(e){e.key==="s"&&e.ctrlKey===!0&&(e.preventDefault(),this.canDownload&&this.onDownload())},keyboardEditFile(e){e.key==="e"&&e.ctrlKey===!0&&(e.preventDefault(),this.canEdit&&this.onEdit())},cleanup(){s.info("Cleaning up viewer"),this.currentFile={},this.comparisonFile=null,this.currentModal=null,this.fileList=[],this.initiated=!1,this.theme=null,this.cancelRequestFile(),this.cancelRequestFolder(),document.body.style.overflow=null,document.documentElement.style.overflow=null,this.Viewer.onClose();const e=document.getElementsByTagName("head")[0].getElementsByTagName("title")[0];e&&e.dataset.old&&(document.title=e.dataset.old,delete e.dataset.old)},previous(){this.currentIndex--,this.currentIndex<0&&(this.currentIndex=this.fileList.length-1);const e=this.fileList[this.currentIndex];this.openFileFromList(e),this.Viewer.onPrev(e),this.updateTitle(this.currentFile.basename)},next(){this.currentIndex++,this.currentIndex>this.fileList.length-1&&(this.currentIndex=0);const e=this.fileList[this.currentIndex];this.openFileFromList(e),this.Viewer.onNext(e),this.updateTitle(this.currentFile.basename)},comparisonFailed(){this.comparisonFile.failed=!0},previousFailed(){this.previousFile.failed=!0},currentFailed(){this.currentFile.failed=!0},nextFailed(){this.nextFile.failed=!0},async showSidebar(){if(this.enableSidebar){const e=new _({source:y+m()+this.currentFile.filename,id:this.currentFile.fileid,displayname:this.currentFile.displayname,mime:this.currentFile.mime,mtime:new Date(this.currentFile.lastmod),owner:this.currentFile.ownerId,root:m()});x("viewer:sidebar:open",e),OCA?.Files?.Sidebar&&await OCA.Files.Sidebar.open(this.sidebarOpenFilePath)}},handleAppSidebarOpen(){this.isSidebarShown=!0;const e=document.querySelector("aside.app-sidebar");e&&(this.sidebarPosition=e.getBoundingClientRect().left,this.trapElements=[e])},handleAppSidebarClose(){this.isSidebarShown=!1,this.trapElements=[]},async handleFileUpdated(e){const i=this.fileList.findIndex(({fileid:n})=>n===e.fileid);e.etag=e.attributes.etag,this.fileList.splice(i,1,e),e.fileid===this.currentFile.fileid&&(this.currentFile.etag=e.attributes.etag)},onResize(){const e=document.querySelector("aside.app-sidebar");e&&(this.sidebarPosition=e.getBoundingClientRect().left)},async onDelete(){try{const e=this.currentFile.fileid,i=this.currentFile.source??this.currentFile.davPath,n=i.includes("remote.php/dav"),r=new _({source:n?y+m()+this.currentFile.filename:i,id:e,mime:this.currentFile.mime,owner:this.currentFile.ownerId,root:n?m():void 0});await I.delete(i),x("files:node:deleted",r);const l=this.fileList.findIndex(d=>d.filename===this.currentFile.filename);this.hasPrevious||this.hasNext?(this.hasNext?this.next():this.previous(),this.fileList.splice(l,1)):this.close()}catch(e){console.error(e),v(e)}},onEdit(){this.toggleEditor(!0)},async onDownload(){if(!this.canDownload)return;const e=this.currentFile.mime,i=e?.split("/")[0],n=this.registeredHandlers[e]??this.registeredHandlers[i];if(n?.downloadCallback&&typeof n.downloadCallback=="function")try{s.debug("Calling handler downloadCallback before download"),await n.downloadCallback(this.currentFile)}catch(r){s.error("Failed to execute downloadCallback",{error:r}),v(t("viewer","Failed to save file before download"));return}this.performDownload()},performDownload(){s.debug("Performing download",{file:this.currentFile});const e=document.createElement("a");e.href=this.currentFile.source??this.currentFile.davPath,e.download=this.currentFile.basename,document.body.appendChild(e),e.click(),document.body.removeChild(e)},handleTrapElementsChange(e){this.trapElements.push(e)},toggleFullScreen(){this.isFullscreenMode?this.exitFullscreen():this.requestFullscreen()},requestFullscreen(){const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},addFullscreenEventListeners(){document.addEventListener("fullscreenchange",this.onFullscreenchange),document.addEventListener("webkitfullscreenchange",this.onFullscreenchange)},removeFullscreenEventListeners(){document.addEventListener("fullscreenchange",this.onFullscreenchange),document.addEventListener("webkitfullscreenchange",this.onFullscreenchange)},onFullscreenchange(){document.fullscreenElement===document.documentElement||document.webkitFullscreenElement===document.documentElement?this.isFullscreenMode=!0:this.isFullscreenMode=!1}}});var nt=function(){var e=this,i=e._self._c;return e._self._setupProxy,e.el?i("div",{attrs:{id:"viewer","data-handler":e.handlerId}},[e.currentFile.failed?i("Error",{attrs:{name:e.currentFile.basename}}):i(e.currentFile.modal,e._b({key:e.uniqueKey(e.currentFile),ref:"content",tag:"component",staticClass:"viewer__file viewer__file--active",attrs:{active:!0,"can-swipe":!1,"can-zoom":!1,"file-list":[e.currentFile],"is-full-screen":!1,loaded:e.currentFile.loaded,"is-sidebar-shown":!1},on:{"update:loaded":function(n){return e.$set(e.currentFile,"loaded",n)},error:e.currentFailed}},"component",e.currentFile,!1))],1):e.initiated||e.currentFile.modal?i("NcModal",{staticClass:"viewer",class:e.modalClass,style:{width:e.isSidebarShown?`${e.sidebarPosition}px`:null},attrs:{id:"viewer","additional-trap-elements":e.trapElements,"clear-view-delay":-1,"close-button-contained":!1,dark:!0,"light-backdrop":e.lightBackdrop,"data-handler":e.handlerId,"enable-slideshow":e.hasPrevious||e.hasNext,"slideshow-paused":e.editing,"enable-swipe":e.canSwipe&&!e.editing,"has-next":e.hasNext,"has-previous":e.hasPrevious,"inline-actions":e.canEdit?1:0,"spread-navigation":!0,name:e.currentFile.basename,size:"full"},on:{close:e.close,previous:e.previous,next:e.next},scopedSlots:e._u([{key:"actions",fn:function(){return[e.canEdit?i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.onEdit},scopedSlots:e._u([{key:"icon",fn:function(){return[i("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)},[e._v(" "+e._s(e.t("viewer","Edit"))+" ")]):e._e(),i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.toggleFullScreen},scopedSlots:e._u([{key:"icon",fn:function(){return[e.isFullscreenMode?i("FullscreenExit",{attrs:{size:20}}):i("Fullscreen",{attrs:{size:20}})]},proxy:!0}])},[e._v(" "+e._s(e.isFullscreenMode?e.t("viewer","Exit full screen"):e.t("viewer","Full screen"))+" ")]),e.enableSidebar&&e.sidebarOpenFilePath&&!e.isSidebarShown?i("NcActionButton",{attrs:{"close-after-click":""},on:{click:e.showSidebar},scopedSlots:e._u([{key:"icon",fn:function(){return[i("DockRight",{attrs:{size:20}})]},proxy:!0}],null,!1,151993963)},[e._v(" "+e._s(e.t("viewer","Open sidebar"))+" ")]):e._e(),e.canDownload?i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.onDownload},scopedSlots:e._u([{key:"icon",fn:function(){return[i("Download",{attrs:{size:20}})]},proxy:!0}],null,!1,3312959228)},[e._v(" "+e._s(e.t("viewer","Download"))+" ")]):e._e(),e.canDelete?i("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.onDelete},scopedSlots:e._u([{key:"icon",fn:function(){return[i("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[e._v(" "+e._s(e.t("viewer","Delete"))+" ")]):e._e()]},proxy:!0}])},[i("div",{staticClass:"viewer__content",class:e.contentClass,on:{click:function(n){return n.target!==n.currentTarget||n.ctrlKey||n.shiftKey||n.altKey||n.metaKey?null:e.close.apply(null,arguments)},contextmenu:e.preventContextMenu}},[e.comparisonFile&&!e.comparisonFile.failed&&e.showComparison?i("div",{staticClass:"viewer__file-wrapper"},[i(e.comparisonFile.modal,e._b({key:e.uniqueKey(e.comparisonFile),ref:"comparison-content",tag:"component",staticClass:"viewer__file viewer__file--active",attrs:{active:!0,"can-swipe":!1,"can-zoom":!1,editing:!1,"is-full-screen":e.isFullscreen,"is-sidebar-shown":e.isSidebarShown,loaded:e.comparisonFile.loaded},on:{"update:loaded":function(n){return e.$set(e.comparisonFile,"loaded",n)},error:e.comparisonFailed}},"component",e.comparisonFile,!1))],1):e._e(),e.hasPreviousFile?i("div",{key:e.uniqueKey(e.previousFile),staticClass:"viewer__file-wrapper viewer__file-wrapper--hidden",attrs:{"aria-hidden":"true",inert:""}},[e.previousFile.failed?i("Error",{attrs:{name:e.previousFile.basename}}):i(e.previousFile.modal,e._b({ref:"previous-content",tag:"component",staticClass:"viewer__file",attrs:{"file-list":e.fileList},on:{error:e.previousFailed}},"component",e.previousFile,!1))],1):e._e(),i("div",{key:e.uniqueKey(e.currentFile),staticClass:"viewer__file-wrapper"},[e.currentFile.failed?i("Error",{attrs:{name:e.currentFile.basename}}):i(e.currentFile.modal,e._b({ref:"content",tag:"component",staticClass:"viewer__file viewer__file--active",attrs:{active:!0,"can-swipe":e.canSwipe,"can-zoom":!0,editing:e.editing,"file-list":e.fileList,"is-full-screen":e.isFullscreen,"is-sidebar-shown":e.isSidebarShown,loaded:e.currentFile.loaded},on:{"update:canSwipe":function(n){e.canSwipe=n},"update:can-swipe":function(n){e.canSwipe=n},"update:editing":[function(n){e.editing=n},e.toggleEditor],"update:loaded":function(n){return e.$set(e.currentFile,"loaded",n)},error:e.currentFailed}},"component",e.currentFile,!1))],1),e.hasNextFile?i("div",{key:e.uniqueKey(e.nextFile),staticClass:"viewer__file-wrapper viewer__file-wrapper--hidden",attrs:{"aria-hidden":"true",inert:""}},[e.nextFile.failed?i("Error",{attrs:{name:e.nextFile.basename}}):i(e.nextFile.modal,e._b({ref:"next-content",tag:"component",staticClass:"viewer__file",attrs:{"file-list":e.fileList},on:{error:e.nextFailed}},"component",e.nextFile,!1))],1):e._e()])]):e._e()},st=[],rt=u(it,nt,st,!1,null,"b24bef65");const lt=rt.exports;g.mixin({methods:{t:le}}),g.prototype.OC=window.OC,g.prototype.OCA=window.OCA;const M=document.createElement("div");M.id="viewer",document.body.appendChild(M);const C=document.createElement("div");C.innerHTML='<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol id="plyr-airplay" viewBox="0 0 18 18"><path d="M16 1H2a1 1 0 00-1 1v10a1 1 0 001 1h3v-2H3V3h12v8h-2v2h3a1 1 0 001-1V2a1 1 0 00-1-1z"/><path d="M4 17h10l-5-6z"/></symbol><symbol id="plyr-captions-off" viewBox="0 0 18 18"><path d="M1 1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h4.6l2.7 2.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l2.7-2.7H17c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1H1zm4.52 10.15c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41C8.47 4.96 7.46 3.76 5.5 3.76c-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69zm7.57 0c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41c-.28-1.15-1.29-2.35-3.25-2.35-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69z" fill-rule="evenodd" fill-opacity=".5"/></symbol><symbol id="plyr-captions-on" viewBox="0 0 18 18"><path d="M1 1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h4.6l2.7 2.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l2.7-2.7H17c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1H1zm4.52 10.15c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41C8.47 4.96 7.46 3.76 5.5 3.76c-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69zm7.57 0c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41c-.28-1.15-1.29-2.35-3.25-2.35-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69z" fill-rule="evenodd"/></symbol><symbol id="plyr-download" viewBox="0 0 18 18"><path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z"/></symbol><symbol id="plyr-enter-fullscreen" viewBox="0 0 18 18"><path d="M10 3h3.6l-4 4L11 8.4l4-4V8h2V1h-7zM7 9.6l-4 4V10H1v7h7v-2H4.4l4-4z"/></symbol><symbol id="plyr-exit-fullscreen" viewBox="0 0 18 18"><path d="M1 12h3.6l-4 4L2 17.4l4-4V17h2v-7H1zM16 .6l-4 4V1h-2v7h7V6h-3.6l4-4z"/></symbol><symbol id="plyr-fast-forward" viewBox="0 0 18 18"><path d="M7.875 7.171L0 1v16l7.875-6.171V17L18 9 7.875 1z"/></symbol><symbol id="plyr-logo-vimeo" viewBox="0 0 18 18"><path d="M17 5.3c-.1 1.6-1.2 3.7-3.3 6.4-2.2 2.8-4 4.2-5.5 4.2-.9 0-1.7-.9-2.4-2.6C5 10.9 4.4 6 3 6c-.1 0-.5.3-1.2.8l-.8-1c.8-.7 3.5-3.4 4.7-3.5 1.2-.1 2 .7 2.3 2.5.3 2 .8 6.1 1.8 6.1.9 0 2.5-3.4 2.6-4 .1-.9-.3-1.9-2.3-1.1.8-2.6 2.3-3.8 4.5-3.8 1.7.1 2.5 1.2 2.4 3.3z"/></symbol><symbol id="plyr-logo-youtube" viewBox="0 0 18 18"><path d="M16.8 5.8c-.2-1.3-.8-2.2-2.2-2.4C12.4 3 9 3 9 3s-3.4 0-5.6.4C2 3.6 1.3 4.5 1.2 5.8 1 7.1 1 9 1 9s0 1.9.2 3.2c.2 1.3.8 2.2 2.2 2.4C5.6 15 9 15 9 15s3.4 0 5.6-.4c1.4-.3 2-1.1 2.2-2.4.2-1.3.2-3.2.2-3.2s0-1.9-.2-3.2zM7 12V6l5 3-5 3z"/></symbol><symbol id="plyr-muted" viewBox="0 0 18 18"><path d="M12.4 12.5l2.1-2.1 2.1 2.1 1.4-1.4L15.9 9 18 6.9l-1.4-1.4-2.1 2.1-2.1-2.1L11 6.9 13.1 9 11 11.1zM3.786 6.008H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol><symbol id="plyr-pause" viewBox="0 0 18 18"><path d="M6 1H3c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zm6 0c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1h-3z"/></symbol><symbol id="plyr-pip" viewBox="0 0 18 18"><path d="M13.293 3.293L7.022 9.564l1.414 1.414 6.271-6.271L17 7V1h-6z"/><path d="M13 15H3V5h5V3H2a1 1 0 00-1 1v12a1 1 0 001 1h12a1 1 0 001-1v-6h-2v5z"/></symbol><symbol id="plyr-play" viewBox="0 0 18 18"><path d="M15.562 8.1L3.87.225c-.818-.562-1.87 0-1.87.9v15.75c0 .9 1.052 1.462 1.87.9L15.563 9.9c.584-.45.584-1.35 0-1.8z"/></symbol><symbol id="plyr-restart" viewBox="0 0 18 18"><path d="M9.7 1.2l.7 6.4 2.1-2.1c1.9 1.9 1.9 5.1 0 7-.9 1-2.2 1.5-3.5 1.5-1.3 0-2.6-.5-3.5-1.5-1.9-1.9-1.9-5.1 0-7 .6-.6 1.4-1.1 2.3-1.3l-.6-1.9C6 2.6 4.9 3.2 4 4.1 1.3 6.8 1.3 11.2 4 14c1.3 1.3 3.1 2 4.9 2 1.9 0 3.6-.7 4.9-2 2.7-2.7 2.7-7.1 0-9.9L16 1.9l-6.3-.7z"/></symbol><symbol id="plyr-rewind" viewBox="0 0 18 18"><path d="M10.125 1L0 9l10.125 8v-6.171L18 17V1l-7.875 6.171z"/></symbol><symbol id="plyr-settings" viewBox="0 0 18 18"><path d="M16.135 7.784a2 2 0 01-1.23-2.969c.322-.536.225-.998-.094-1.316l-.31-.31c-.318-.318-.78-.415-1.316-.094a2 2 0 01-2.969-1.23C10.065 1.258 9.669 1 9.219 1h-.438c-.45 0-.845.258-.997.865a2 2 0 01-2.969 1.23c-.536-.322-.999-.225-1.317.093l-.31.31c-.318.318-.415.781-.093 1.317a2 2 0 01-1.23 2.969C1.26 7.935 1 8.33 1 8.781v.438c0 .45.258.845.865.997a2 2 0 011.23 2.969c-.322.536-.225.998.094 1.316l.31.31c.319.319.782.415 1.316.094a2 2 0 012.969 1.23c.151.607.547.865.997.865h.438c.45 0 .845-.258.997-.865a2 2 0 012.969-1.23c.535.321.997.225 1.316-.094l.31-.31c.318-.318.415-.781.094-1.316a2 2 0 011.23-2.969c.607-.151.865-.547.865-.997v-.438c0-.451-.26-.846-.865-.997zM9 12a3 3 0 110-6 3 3 0 010 6z"/></symbol><symbol id="plyr-volume" viewBox="0 0 18 18"><path d="M15.6 3.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4C15.4 5.9 16 7.4 16 9c0 1.6-.6 3.1-1.8 4.3-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7z"/><path d="M11.282 5.282a.909.909 0 000 1.316c.735.735.995 1.458.995 2.402 0 .936-.425 1.917-.995 2.487a.909.909 0 000 1.316c.145.145.636.262 1.018.156a.725.725 0 00.298-.156C13.773 11.733 14.13 10.16 14.13 9c0-.17-.002-.34-.011-.51-.053-.992-.319-2.005-1.522-3.208a.909.909 0 00-1.316 0zm-7.496.726H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol></svg>',C.style.display="none",document.body.appendChild(C),new g({el:"#viewer",name:"ViewerRoot",render:e=>e(lt)}); //# sourceMappingURL=viewer-main.mjs.map diff --git a/js/viewer-main.mjs.license b/js/viewer-main.mjs.license index 190f27da1..1b8f4d6c0 100644 --- a/js/viewer-main.mjs.license +++ b/js/viewer-main.mjs.license @@ -16,5 +16,5 @@ This file is generated from multiple sources. Included packages: - version: 6.0.0-dev.0 - license: AGPL-3.0-or-later - vue-material-design-icons - - version: 5.3.1 + - version: 5.3.2 - license: MIT diff --git a/js/viewer-main.mjs.map b/js/viewer-main.mjs.map index dd56f7197..a4e978943 100644 --- a/js/viewer-main.mjs.map +++ b/js/viewer-main.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":";oUACA,MAAMA,GAAQ,CACZ,SAAU,CAKR,cAAe,CACb,OAAOC,EAAkB,KAC3B,CACJ,CACA,ECVMD,GAAQ,CACZ,SAAU,CAKR,UAAW,CACT,OAAOE,EAAc,KACvB,CACJ,CACA,ECAO,SAASC,GAAYC,EAAoB,CAC/C,GAAIA,EAAS,aACZ,MAAO,GAKR,MAAMC,EAAkB,OAAOD,GAAU,iBAAoB,SAAW,KAAK,MAAMA,EAAS,iBAAmB,IAAI,EAAIA,GAAU,gBAEjI,OAAIC,GAAmBA,EAAgB,OAAS,EACrBA,EAAgB,KAAK,CAAC,CAAE,MAAAC,EAAO,IAAAC,CAAA,IAAUD,IAAU,eAAiBC,IAAQ,UAAU,GAEtF,QAAU,GAG9B,EACR,CChBA,MAAMC,EAAoB,SAASC,EAAS,CAC3C,MAAMC,EAAa,IAAI,gBAcvB,MAAO,CACN,QAPa,eAAeC,EAAKC,EAAS,CAC1C,OAAOH,EACNE,EACA,CAAE,GAAGC,EAAS,OAAQF,EAAW,MAAM,CAC1C,CACC,EAGC,OAAQ,IAAMA,EAAW,MAAK,CAChC,CACA,ECfAG,GAAA,CACA,aAEA,OACA,MACA,YACA,UACA,CACA,CACA,0SCdAC,GAAe,MAAOC,GAAiC,CACjDA,EAAK,WAAW,GAAG,IACvBA,EAAO,IAAIA,CAAI,IAEhB,MAAMC,EAASC,EAAA,EACTC,EAAkBC,EAAA,EAClBC,EAAS,MAAMJ,EAAO,KAAK,GAAGK,EAAA,CAAa,GAAGN,CAAI,GAAI,CAC3D,QAAS,GACT,KAAMG,CAAA,CACN,EACD,OAAOI,EAAaF,EAAO,IAAI,CAChC,ECVe,SAAAG,EAASnB,EAAUoB,EAAMC,EAAW,CAClD,MAAMC,EAAO,CACZ,KAAAF,EACA,MAAOC,EACP,OAAQ,GACR,OAAQ,GACR,QAASE,EAAWvB,CAAQ,EAC5B,OAAQA,EAAS,QAAUuB,EAAWvB,CAAQ,CAChD,EAEC,OAAO,OAAO,OAAO,GAAIA,EAAUsB,CAAI,CACxC,CCNA,eAAAE,GAA8Bb,EAAcH,EAAU,GAAyB,CAY9E,OAXiB,MAAMI,EAAO,qBAAqBD,EAAM,OAAO,OAAO,CACtE,KAAM;AAAA,iBACSc,GAAkB;AAAA;AAAA;AAAA,OAG5BC,GAAkB;AAAA;AAAA,kBAGvB,QAAS,IACPlB,CAAO,CAAC,GAEK,KAAK,IAAImB,CAAW,CACrC,CCjBA,eAA8BC,IAAmB,CAChD,MAAMC,EAAc,MAAMC,GAAA,EAE1B,GAAI,CAACD,EACJ,MAAO,CAAE,IAAK,WAAY,IAAK,IAIhC,MAAM1B,EADS,CAAE,MAAO,WACL0B,EAAY,YAAY,GAAKA,EAAY,cAAgB,WACtEE,EAAMF,EAAY,oBAAsB,OAAS,CAACA,EAAY,kBAEpE,MAAO,CAAE,IAAA1B,EAAK,IAAA4B,CAAA,CACf,CAKA,eAAeD,IAAiB,CAC/B,GAAIE,IACH,OAAO,KAER,MAAMzB,EAAM0B,EAAY,yBAAyB,EACjD,OAAO,MAAMC,EAAM,IAAI3B,CAAG,EACxB,KAAM4B,GACCA,EAAS,KAAK,MAAM,KAC3B,EACA,MAAM,IACC,IACP,CACH,CClCA,MAAAC,GAAe,CACd,SAAU,CAMT,aAAc,CACb,OAAO,KAAK,gBAAgB,CAC3B,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,KAAM,KAAK,OAAO,IACtB,CAAI,CACF,EAOA,SAAU,CACT,OAAOb,EAAW,CACjB,SAAU,KAAK,SACf,SAAU,KAAK,QACnB,CAAI,CACF,CACF,EACC,QAAS,CAcR,gBAAgBD,EAAM,CACrB,OAAOe,EAAgBf,CAAI,CAC5B,CACF,CACA,+DCrDA,IAAIgB,EAAYC,EAAQ,WAAa,QAGjCC,EACA,6HAEAC,EAAQ,GAEZ,SAASC,EAAeC,EAAU,CAChC,OAAOH,EAAe,KAAKG,CAAQ,EAAE,MAAM,CAAC,CAC9C,CAEAF,EAAM,MAAQ,SAASG,EAAY,CACjC,GAAI,OAAOA,GAAe,SACxB,MAAM,IAAI,UACN,gDAAkD,OAAOA,GAG/D,IAAIC,EAAWH,EAAeE,CAAU,EACxC,GAAI,CAACC,GAAYA,EAAS,SAAW,EACnC,MAAM,IAAI,UAAU,iBAAmBD,EAAa,GAAG,EAEzD,MAAO,CACL,KAAMC,EAAS,CAAC,EAChB,IAAKA,EAAS,CAAC,IAAMA,EAAS,CAAC,EAAIA,EAAS,CAAC,EAAIA,EAAS,CAAC,EAAE,MAAM,EAAG,EAAE,EACxE,KAAMA,EAAS,CAAC,EAChB,IAAKA,EAAS,CAAC,EACf,KAAMA,EAAS,CAAC,EAEpB,EAMA,IAAIC,EACA,8DACAC,EAAQ,GAGZ,SAASC,EAAeL,EAAU,CAChC,OAAOG,EAAY,KAAKH,CAAQ,EAAE,MAAM,CAAC,CAC3C,CAGA,OAAAI,EAAM,MAAQ,SAASH,EAAY,CACjC,GAAI,OAAOA,GAAe,SACxB,MAAM,IAAI,UACN,gDAAkD,OAAOA,GAG/D,IAAIC,EAAWG,EAAeJ,CAAU,EACxC,GAAI,CAACC,GAAYA,EAAS,SAAW,EACnC,MAAM,IAAI,UAAU,iBAAmBD,EAAa,GAAG,EAGzD,MAAO,CACL,KAAMC,EAAS,CAAC,EAChB,IAAKA,EAAS,CAAC,EAAE,MAAM,EAAG,EAAE,EAC5B,KAAMA,EAAS,CAAC,EAChB,IAAKA,EAAS,CAAC,EACf,KAAMA,EAAS,CAAC,EAEpB,EAGIP,EACFW,EAAA,QAAiBR,EAAM,MAEvBQ,EAAA,QAAiBF,EAAM,MAEzBE,EAAA,cAAuBF,EAAM,MAC7BE,EAAA,cAAuBR,EAAM,0CClE7BS,GAAe,CACd,aAAc,GACd,OAAQ,CAACd,EAAU,EACnB,MAAO,CAEN,OAAQ,CACP,KAAM,QACN,QAAS,EACZ,EAEE,SAAU,CACT,KAAM,OACN,SAAU,EACb,EAEE,SAAU,CACT,KAAM,OACN,SAAU,EACb,EAEE,OAAQ,CACP,KAAM,OACN,QAAS,MACZ,EAEE,WAAY,CACX,KAAM,OACN,QAAS,MACZ,EAEE,WAAY,CACX,KAAM,QACN,QAAS,EACZ,EAEE,OAAQ,CACP,KAAM,CAAC,OAAQ,MAAM,EACrB,SAAU,EACb,EAEE,SAAU,CACT,KAAM,MACN,QAAS,IAAM,EAClB,EAEE,KAAM,CACL,KAAM,OACN,SAAU,EACb,EAEE,SAAU,CACT,KAAM,QACN,QAAS,EACZ,EACE,QAAS,CACR,KAAM,QACN,QAAS,EACZ,EAGE,OAAQ,CACP,KAAM,QACN,QAAS,EACZ,EAEE,eAAgB,CACf,KAAM,QACN,QAAS,EACZ,EAEE,aAAc,CACb,KAAM,QACN,QAAS,EACZ,EAEE,uBAAwB,CACvB,KAAM,OACN,QAAS,MACZ,CACA,EAEC,MAAO,CACN,MAAO,CACN,OAAQ,KACR,MAAO,KACP,cAAe,KACf,aAAc,KACd,SAAU,EACb,CACC,EAEA,SAAU,CACT,MAAO,CACN,OAAOe,EAAU,KAAK,QAAQ,EAAE,IACjC,EACA,KAAM,CACL,OAAOA,EAAU,KAAK,QAAQ,EAAE,GACjC,EACA,KAAM,CACL,OAAO,KAAK,QAAU,KAAK,OAC5B,CACF,EAEC,MAAO,CACN,OAAOC,EAAKC,EAAK,CAEZD,IAAQ,IAAQC,IAAQ,IAEvB,KAAK,UACR,KAAK,YAAW,CAGnB,EAEA,gBAAiB,CAEhB,WAAW,KAAK,kBAAmB,GAAG,CACvC,CACF,EAEC,SAAU,CAET,KAAK,IAAI,iBAAiB,QAASC,GAAK,CACvC,QAAQ,MAAM,gBAAiB,KAAK,SAAUA,CAAC,EAC/C,KAAK,MAAM,QAASA,CAAC,CACtB,CAAC,EAGD,OAAO,iBAAiB,SAAUC,EAAS,IAAM,CAChD,KAAK,kBAAiB,CACvB,EAAG,GAAG,CAAC,CACR,EAEA,QAAS,CAMR,aAAc,CAEb,KAAK,MAAM,gBAAiB,EAAI,EAEhC,KAAK,SAAW,EACjB,EAMA,mBAAoB,CACnB,MAAMC,EAAe,KAAK,QAAQ,IAAI,cAAc,gBAAgB,EACpE,GAAIA,GAAgB,KAAK,cAAgB,GAAK,KAAK,aAAe,EAAG,CACpE,MAAMC,EAAiBD,EAAa,cAAc,kBAAkB,EAE9DE,EAAeD,EAAe,aAC9BE,EAAcF,EAAe,YAE7BG,EAAcF,EAAe,KAAK,cAClCG,EAAaF,EAAc,KAAK,aAIlCC,EAAcC,GAAcD,EAAc,GAC7C,KAAK,OAASF,EACd,KAAK,MAAQ,KAAK,MAAM,KAAK,aAAe,KAAK,cAAgBA,CAAY,GAInEE,EAAcC,GAAcA,EAAa,GACnD,KAAK,MAAQF,EACb,KAAK,OAAS,KAAK,MAAM,KAAK,cAAgB,KAAK,aAAeA,CAAW,IAI7E,KAAK,OAAS,KAAK,cACnB,KAAK,MAAQ,KAAK,aAEpB,MACC,KAAK,OAAS,KAAK,cACnB,KAAK,MAAQ,KAAK,YAEpB,EAKA,aAAc,CACb,KAAK,MAAM,kBAAmB,EAAI,CACnC,EAKA,cAAe,CACd,KAAK,MAAM,kBAAmB,EAAK,CACpC,EAKA,kBAAmB,CACd,KAAK,aACR,SAAS,eAAc,EAEvB,KAAK,IAAI,kBAAiB,CAE5B,CACF,CACA,ECrMAlD,GAAA,CACA,2BACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,2nBChBAA,GAAA,CACA,yBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,+pBChBAA,GAAA,CACA,sBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,8lBChBAA,GAAA,CACA,0BACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,kmBChBAA,GAAA,CACA,yBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,8uBChBAA,GAAA,CACA,qBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,imBCiLAqD,GAAA,IAAAC,EAAA,gDAAAC,KAAA,sDACAC,GAAA,IAAAF,EAAA,4FACAG,GAAA,IAAAH,EAAA,wGAEAtD,GAAA0D,EAAA,CACA,cAEA,YACA,OAAAC,GACA,UAAAC,GACA,SAAAC,GACA,MAAAC,GACA,WAAAC,GACA,eAAAC,GACA,eAAAP,GACA,aAAAD,GACA,QAAAH,GACA,OAAAY,EACA,EAEA,QAAAC,GAAAC,EAAA,EAEA,OACA,OAEA,kBACA,sCAGA,cACA,cACA,sBACA,0BAGA,eACA,gBACA,eACA,oBACA,YACA,YACA,mBAGA,YACA,aACA,WAGA,yBACA,2BAGA,kBACA,kBACA,oBACA,YACA,gBACA,WACA,mBACA,KAAAC,EACA,aAEA,eACA,CACA,EAEA,UACA,eACA,wDACA,EACA,cACA,gCACA,kCACA,EACA,UACA,gCACA,gCACA,EACA,OACA,uBACA,EACA,WACA,2BACA,EACA,qBACA,kCACA,EACA,QACA,wBACA,EACA,gBACA,gCACA,EACA,KACA,qBACA,EACA,WACA,2BACA,EACA,UACA,0BACA,EACA,gBACA,4BACA,EACA,cACA,iDACA,EAEA,kBAEA,8CACA,EACA,cAEA,0CACA,EAEA,UACA,8EACA,EAEA,sBACA,IAEA,OADA,iCAAAC,EAAA,MACA,8CACA,OACA,QACA,CACA,EAOA,YACA,mDACA,EAOA,cAEA,2BACA,GAEA,kBAAA/E,GAAA,iBACA,EAQA,UACA,sBACA,kBACA,8CACA,cACA,uBACAgF,GAAA,0DACA,EAEA,aACA,OACA,kEACA,qCACA,kCACA,oCACA,wCACA,uDACA,CACA,EAEA,iBACA,oBACA,EAEA,eACA,OACA,mCACA,CACA,EAEA,aACA,OAAA/E,EAAA,KAAAW,EAAA,OAEA,GAAAA,OAAA,uBACA,0BAKAA,IAAA,2BAMAX,KAAA,kCACAA,EAAA,OAAAA,EAAA,gCACAA,EAAA,QAAAA,EAAA,iCAOA,CACA,EAEA,OACA,GAAAgF,EAAA,CACAC,EAAA,KAAAD,CAAA,EACA,oBACA,MAAAE,EAAA,kCACA,GAAAF,EAAA,CACA,MAAAG,EAAA,uBAAAH,CAAA,EACAG,EACAA,EAAA,YAAAD,CAAA,EAEAD,EAAA,wCAAAD,CAAA,EAEA,MACA,0BAAAE,CAAA,CAEA,EACA,EAEA,KAAAvE,EAAA,CAEAA,KAAA,aACAsE,EAAA,sCAAAtE,CAAA,GACA,cAAAA,EAAA,+BAGA,cAEA,EAEA,SAAAX,EAAA,CACAA,GACAiF,EAAA,8CAAAjF,CAAA,GACA,kBAAAA,EAAA,+BAGA,cAEA,EAEA,mBAAAA,EAAA,CACAA,GACAiF,EAAA,wDAAAjF,CAAA,GACA,iBAAAA,CAAA,GAGA,cAEA,EAEA,MAAAoF,EAAA,CACA,IAAAA,GAAA,eAAAA,CAAA,GAAAA,EAAA,YACAH,EAAA,2CACA,MACA,CAGA,MAAAI,EAAAD,EAAA,UAAAE,KAAA,sCACAD,EAAA,KACA,kBAAAA,EACAJ,EAAA,2DAAAI,CAAA,GAIA,cAAAD,CACA,EAGA,kBAAAG,EAAA,CACA,MAAAA,GAAA,UAKA,iDACAN,EAAA,sCACA,MAAAO,EAAA,sBAEA,cAAAA,CAAA,GAAAA,EAAA,UACA,sBAAAA,CAAA,CAEA,CACA,CAEA,EAEA,cACA,6CACA,mBACAP,EAAA,iEAKA,kDACA,0BACA,GAEA,+CACA,EAEA,UAEAQ,EAAA,kDACAA,EAAA,mDACAA,EAAA,6CACAA,EAAA,6DACAA,EAAA,mCACAA,EAAA,0CACA,2DACA,6DACA,yDACA,kCACA,EAEA,gBACA,kDACA,EAEA,YAEAC,EAAA,kDACAA,EAAA,mDACAA,EAAA,6DACAA,EAAA,mCACA,8DACA,gEACA,4DACA,qCACA,EAEA,SACA,UAAAJ,EAAA,CACA,SAAAA,EAAA,OAAAA,EAAA,MACA,EAEA,aAAAK,EAAA,CACAC,GAAAD,CAAA,EACA,aAAAA,CACA,EAMA,mBAAAE,EAAA,CACA,kBAGAA,EAAA,gBACA,EAEA,mBAEA,kBAEA,MAAAC,EAAA,4CACAA,KAAA,wBACA,uBACA,qBAAAA,EAAA,6BACA,mBAAAA,CAAA,IAEA,uBACA,sBAGA,wCACA,wCAEA,yBAAAlE,GAAA,EAGA,oBACAqD,EAAA,4DACAlB,EAAA,+DACA,yBAEA,EAQA,eAAApD,EAAAoF,EAAA,MAOA,GANA,wBAGA,yBAGA,qBAAApF,CAAA,GACAsE,EAAA,iEAAAtE,CAAA,GACA,MACA,CAEA,cAAAqF,EAAA,OAAAC,CAAA,EAAAC,EAAAC,EAAA,EACA,uBAAAF,EAGA,OAAAG,CAAA,EAAAC,EAAA1F,CAAA,EAGA,UACA,sCACA,kDAIA,MAAA2F,EAAA,0EACAA,GAAA,CAAAA,EAAA,aAAAF,IAAA,KACAE,EAAA,2BACA,iBAAAF,CAAA,GAGA,IAEA,MAAApG,EAAA,MAAAgG,EAAArF,CAAA,EACA,+BAAAA,EAAA,WAAAX,CAAA,EACA,wBAAAA,EAAA+F,CAAA,EACA,kCACA,oDACA,qBAEA,OAAAQ,EAAA,CACAA,GAAA,wBACAtB,EAAA,kDAAAsB,CAAA,GACAC,EAAA,0CACA,cAEA,qCAAA7F,EAAA4F,CAAA,CAEA,CACA,EACA,oBAAAE,EAAA,CACA,IAAA9F,EACA,IACAA,EAAA+F,GAAAD,CAAA,EACA,cAAA9F,CAAA,CAEA,OAAA2C,EAAA,CACA2B,EAAA,wDAAAwB,EAAA,EAAAnD,CAAA,EACA,CACA,IACA,MAAAqD,EAAA,MAAAjG,GAAA,IAAAC,CAAA,EACAiG,EAAA,qBAAAD,CAAA,CACA,OAAArD,EAAA,CACA2B,EAAA,uCAAAtE,EAAA,EAAA2C,CAAA,EACA,CACA,EAQA,mBAAAtD,EAAA+F,EAAA,MAMA,GALA,kBAEA,2BAGA,gBAAA/F,CAAA,GACAiF,EAAA,yEAAAjF,CAAA,GACA,MACA,CAEA,2BAGA,MAAAoB,EAAApB,EAAA,KACA6G,EAAAzF,EAAA,cAEA,IAAA0F,EAYA,GAVAf,IAAA,OAEAe,EADA,4CAAAC,KAAA,KAAAhB,CAAA,GACAe,GAGAA,IACAA,EAAA,wBAAA1F,CAAA,2BAAAyF,CAAA,GAIA,CAAAC,EAAA,CACA7B,EAAA,4DAAAjF,CAAA,GACAwG,EAAA,sEACA,aACA,MACA,CAEA,WAAAM,EAAA,cACA,MAAAE,EAAA,wGACA,mBAAAF,EAAA,iBAAAA,EAAA,mBAAAE,EACA,eAAAF,EAAA,GAEA,qBAAA3F,EAAAnB,EAAAoB,EAAA0F,EAAA,WACA,yBACA,0BAGA,MAAAG,EAAA,gBAAA7F,CAAA,EACA,mCACA6D,EAAA,6EAEA,yBAGA,0CAAAK,KAAA,WAAAtF,EAAA,kBACAiH,GAAA,gBACA,MAAAC,EAAA,gBAAAD,CAAA,EACA,gBAAAA,CAAA,EACA,CAAA7F,CAAA,EAGA,SAAA+F,EAAA,OAAAC,CAAA,EAAAlB,EAAA1E,EAAA,EACA,yBAAA4F,EACA,MAAAC,CAAA,EAAAhB,EAAArG,EAAA,UAEA,oBACA,eAAAA,CAAA,EAKA,MAAAsH,GAHA,MAAAH,EAAAE,CAAA,GAGA,OAAA/B,KAAA,MAAA4B,EAAA,QAAA5B,EAAA,YAKAiC,EAAAD,EAAA,IACAhC,GAAA,IAAAkC,EAAA,CACA,OAAA3C,EAAA5D,EAAA,EAAAqE,EAAA,SACA,GAAAA,EAAA,OACA,YAAAA,EAAA,YACA,KAAAA,EAAA,KACA,eAAAA,EAAA,SACA,+BACA,KAAArE,EAAA,CACA,EACA,EACAwG,EAAAC,GAAAH,EAAA,CACA,mCACA,gDACA,GAEAI,EAAA,QACAL,EAAA,IAAAhC,GAAA,CAAAA,EAAA,SAAAA,CAAA,EACA,EAEA,cAAAmC,EAAA,IAAAd,GACAgB,EAAA,IAAAhB,EAAA,KACA,EAEA,0CAAArB,KAAA,WAAAtF,EAAA,UACA,yBACA,MACA,oBACA,eAAAA,CAAA,EAIA,oBACA,EAOA,iBAAAA,EAAA,CAEA,MAAAoB,EAAApB,EAAA,KACA,qBAAAmB,EAAAnB,EAAAoB,EAAA,gBAAAA,CAAA,GACA,qBACA,yBACA,EAEA,kBAAApB,EAAA,CACA,wBAAAmB,EAAAnB,IAAA,qBAAAA,EAAA,MACA,EAKA,gBACA,qBACA,kBAEA,EAKA,qBACA,MAAA4H,EAAA,mCACAC,EAAA,mCAEA,GAAAD,EAAA,CACA,MAAAxG,EAAAwG,EAAA,KACA,gBAAAxG,CAAA,IACA,sBAAAD,EAAAyG,EAAAxG,EAAA,gBAAAA,CAAA,GAEA,MAEA,qBAGA,GAAAyG,EAAA,CACA,MAAAzG,EAAAyG,EAAA,KACA,gBAAAzG,CAAA,IACA,kBAAAD,EAAA0G,EAAAzG,EAAA,gBAAAA,CAAA,GAEA,MAEA,gBAGA,EAEA,YAAAgF,EAAA,CACA,kBAAAA,CAAA,2CACA,EAEA,sBAEA,6BACA,oCAAAU,GAAA,CACA,mBAAAC,KAAA,KAAAD,EAAA,KACA,2BAAAA,CAAA,CAEA,GAIA,MAAAgB,EAAA,kDACAA,EAAA,aAGA,kDAGAA,EAAA,QAAAhB,GAAA,CACA,qBAAAA,CAAA,CACA,GAIAgB,EAAA,QAAAhB,GAAA,CACA,0BAAAA,CAAA,CACA,GACA,iBAEA7B,EAAA,QAAA6C,EAAA,8CAAAA,CAAA,GACA,EAWA,gBAAAhB,EAAA,CAEA,GAAAA,EAAA,qDAAAC,KAAA,KAAAD,EAAA,QACA7B,EAAA,6DAAA6B,CAAA,GACA,MACA,CAGA,IAAAA,EAAA,IAAAA,EAAA,uBAAAA,EAAA,cACA7B,EAAA,+DAAA6B,CAAA,GACA,MACA,CAGA,OAAAA,EAAA,qBAAAA,EAAA,SAAAA,EAAA,cAKA,MAAAA,EAAA,qBAAAA,EAAA,UAAAA,EAAA,cACA7B,EAAA,uEAAA6B,CAAA,GACA,MACA,CAGA,IAAAA,EAAA,kBAAAA,EAAA,4BAAAA,EAAA,uBACA7B,EAAA,sEAAA6B,CAAA,GACA,MACA,CAGAA,EAAA,qBAAAA,GAAA,sBAAA5D,EAAA,EAGA4D,EAAA,OACAA,EAAA,cAAA1F,GAAA,CAEA,mBAAAA,CAAA,GACA6D,EAAA,uDAAA7D,EAAA,QAAA0F,CAAA,GACA,MACA,CAGA,0BAAA1F,EAAA,MAAA0F,EAAA,QAGA,gBAAA1F,CAAA,EAAA0F,EAAA,UACAiB,EAAA,UAAAjB,EAAA,eAAAA,EAAA,WAGA,wBAAA1F,CAAA,EAAA0F,CACA,GAEA,EAEA,qBAAAA,EAAA,CAEAA,EAAA,cACA,YAAAA,EAAA,sBAAA1F,GAAA,CAEA,GAAA0F,EAAA,qBAAAA,EAAA,wBACA7B,EAAA,gFAAA6B,CAAA,GACA,MAEA,CAGA,MAAAD,EAAAC,EAAA,aAAA1F,CAAA,EAGA,mBAAAA,CAAA,GACA6D,EAAA,uDAAA7D,EAAA,QAAA0F,CAAA,GACA,MACA,CACA,oBAAAD,CAAA,GACA5B,EAAA,mDAAA4B,EAAA,KAAAzF,EAAA,QAAA0F,CAAA,GACA,MACA,CAGA,0BAAA1F,EAAA,sBAAAyF,CAAA,IAGA,gBAAAzF,CAAA,kBAAAyF,CAAA,EAGA,wBAAAzF,CAAA,EAAA0F,CACA,EAEA,EAEA,qBAAA1F,EAAA,MAAA6F,GAAA,CACAA,IACA,gBAAA7F,CAAA,EAAA6F,EAEA,gBAAAA,CAAA,IACA,gBAAAA,CAAA,MAEA,gBAAAA,CAAA,OAAA7F,CAAA,EAEA,EAKA,QAGA,mBAEA,qBACA,wCAGA,uBACA,qBAEA,EAEA,mBAAAyE,EAAA,CACA,gBAAAA,EAAA,gBAAAA,EAAA,cACA,eAEA,EAEA,qBAAAA,EAAA,CACAA,EAAA,WAAAA,EAAA,eACAA,EAAA,iBACA,kBACA,kBAGA,EAEA,iBAAAA,EAAA,CACAA,EAAA,WAAAA,EAAA,eACAA,EAAA,iBACA,cACA,cAGA,EAEA,UACAZ,EAAA,2BAGA,oBACA,yBACA,uBACA,iBACA,kBACA,gBAGA,yBACA,2BAGA,kCACA,6CAMA,sBAGA,MAAAqB,EAAA,0EACAA,KAAA,cACA,eAAAA,EAAA,YACA,OAAAA,EAAA,YAEA,EAKA,WACA,oBACA,sBACA,0CAGA,MAAAtG,EAAA,iCACA,sBAAAA,CAAA,EACA,mBAAAA,CAAA,EACA,2CACA,EAKA,OACA,oBACA,2CACA,qBAGA,MAAAA,EAAA,iCACA,sBAAAA,CAAA,EACA,mBAAAA,CAAA,EAEA,2CACA,EAKA,mBACA,6BACA,EAEA,iBACA,2BACA,EAEA,gBACA,0BACA,EAEA,aACA,uBACA,EAKA,oBACA,uBAEA,MAAA2G,EAAA,IAAAa,EAAA,CACA,OAAA3C,EAAA5D,EAAA,4BACA,2BACA,yCACA,2BACA,yCACA,+BACA,KAAAA,EAAA,CACA,GACA2F,EAAA,sBAAAD,CAAA,EAIA,qBAEA,sDAEA,CACA,EAEA,uBACA,uBACA,MAAAb,EAAA,4CACAA,IACA,qBAAAA,EAAA,6BACA,mBAAAA,CAAA,EAEA,EAEA,wBACA,uBACA,oBACA,EAOA,wBAAAa,EAAA,CACA,MAAA/G,EAAA,iCAAAoI,CAAA,IAAAA,IAAArB,EAAA,QAIAA,EAAA,KAAAA,EAAA,gBACA,qBAAA/G,EAAA,EAAA+G,CAAA,EACAA,EAAA,mCACA,sBAAAA,EAAA,gBAEA,EAEA,WACA,MAAAb,EAAA,4CACAA,IACA,qBAAAA,EAAA,6BAEA,EAEA,iBACA,IACA,MAAAmC,EAAA,wBACA1H,EAAA,kDACA2H,EAAA3H,EAAA,2BAMAoG,EAAA,IAAAa,EAAA,CACA,OAAAU,EAAArD,EAAA5D,EAAA,4BAAAV,EACA,GAAA0H,EACA,2BACA,+BACA,KAAAC,EAAAjH,EAAA,QACA,GAEA,MAAAiB,EAAA,OAAA3B,CAAA,EACAqG,EAAA,qBAAAD,CAAA,EAGA,MAAAtB,EAAA,wBAAAC,KAAA,sCACA,gCAEA,yCAEA,qBAAAD,EAAA,IAEA,YAEA,OAAAkB,EAAA,CACA,cAAAA,CAAA,EACAC,EAAAD,CAAA,CACA,CACA,EAEA,SACA,qBACA,EAKA,mBACA,qBACA,OAIA,MAAAnF,EAAA,sBACAyF,EAAAzF,GAAA,cACA0F,EAAA,wBAAA1F,CAAA,2BAAAyF,CAAA,EAEA,GAAAC,GAAA,yBAAAA,EAAA,6BACA,IACA7B,EAAA,0DACA,MAAA6B,EAAA,kCACA,OAAAP,EAAA,CACAtB,EAAA,kDAAAsB,CAAA,GACAC,EAAA,mDACA,MACA,CAGA,sBACA,EAEA,kBACAvB,EAAA,qDACA,MAAAkD,EAAA,4BACAA,EAAA,uDACAA,EAAA,mCACA,0BAAAA,CAAA,EACAA,EAAA,QACA,0BAAAA,CAAA,CACA,EAEA,yBAAAnD,EAAA,CACA,uBAAAA,CAAA,CACA,EAMA,mBACA,sBACA,sBAEA,wBAEA,EAEA,oBACA,MAAAG,EAAA,yBACAA,EAAA,kBACAA,EAAA,oBACAA,EAAA,yBACAA,EAAA,yBAEA,EAEA,iBACA,wBACA,0BACA,+BACA,+BAEA,EAEA,8BACA,sEACA,2EACA,EAEA,iCACA,sEACA,2EACA,EAEA,qBACA,uDACA,4DACA,yBAEA,wBAEA,CAEA,CACA,0iKC7xCA4C,EAAI,MAAM,CACT,QAAS,CACV,EAAEK,EACF,CACA,CAAC,EAEDL,EAAI,UAAU,GAAK,OAAO,GAC1BA,EAAI,UAAU,IAAM,OAAO,IAG3B,MAAMM,EAAa,SAAS,cAAc,KAAK,EAC/CA,EAAW,GAAK,SAChB,SAAS,KAAK,YAAYA,CAAU,EAIpC,MAAMC,EAAgB,SAAS,cAAc,KAAK,EAClDA,EAAc,UAAY,4pLAC1BA,EAAc,MAAM,QAAU,OAC9B,SAAS,KAAK,YAAYA,CAAa,EAGxB,IAAIP,EAAI,CACtB,GAAI,UAKJ,KAAM,aACN,OAAQhB,GAAKA,EAAEwB,EAAe,CAC/B,CAAC","names":["index","isFullscreenState","isMobileState","canDownload","fileInfo","shareAttributes","scope","key","CancelableRequest","request","controller","url","options","_sfc_main","fetchNode","path","client","getClient","propfindPayload","getDefaultPropfind","result","getRootPath","resultToNode","File","mime","component","data","getDavPath","getFileList","getDavNameSpaces","getDavProperties","genFileInfo","getSortingConfig","viewConfigs","getViewConfigs","asc","isPublicShare","generateUrl","axios","response","PreviewUrl","getPreviewIfAny","isWindows","process","splitWindowsRe","win32","win32SplitPath","filename","pathString","allParts","splitPathRe","posix","posixSplitPath","pathParseModule","Mime","parsePath","val","old","e","debounce","modalWrapper","modalContainer","parentHeight","parentWidth","heightRatio","widthRatio","NcModal","__vitePreload","n","NcActionLink","NcActionButton","defineComponent","Delete","DockRight","Download","Error","Fullscreen","FullscreenExit","Pencil","isFullscreen","isMobile","defaultRemoteURL","defaultRootPath","loadState","element","logger","viewerRoot","el","fileList","currentIndex","file","isEndOfList","list","subscribe","unsubscribe","isOpen","toggleEditor","event","sidebar","overrideHandlerId","fileRequest","cancelRequestFile","cancelableRequest","getFileInfo","fileName","extractFilePaths","title","error","showError","source","extractFilePathFromSource","node","emit","alias","handler","h","defaultThemeIsLight","group","mimes","folderRequest","cancelRequestFolder","dirPath","filteredFiles","nodes","NcFile","sortedNodes","sortNodes","filesByPath","prev","next","newHandlers","Vue","currentFileId","fileid","isDavResource","a","t","ViewerRoot","VideoControls","ViewerComponent"],"ignoreList":[0,1,10,12,13,14,15,16,17],"sources":["../node_modules/@nextcloud/vue/dist/Mixins/isFullscreen.mjs","../node_modules/@nextcloud/vue/dist/Mixins/isMobile.mjs","../src/utils/canDownload.ts","../src/utils/CancelableRequest.js","../src/components/Error.vue","../src/services/FetchFile.ts","../src/models/file.js","../src/services/FileList.ts","../src/services/FileSortingConfig.ts","../src/mixins/PreviewUrl.js","../node_modules/path-parse/index.js","../src/mixins/Mime.js","../node_modules/vue-material-design-icons/TrashCanOutline.vue","../node_modules/vue-material-design-icons/TrayArrowDown.vue","../node_modules/vue-material-design-icons/Fullscreen.vue","../node_modules/vue-material-design-icons/FullscreenExit.vue","../node_modules/vue-material-design-icons/PencilOutline.vue","../node_modules/vue-material-design-icons/DockRight.vue","../src/views/Viewer.vue","../src/main.js"],"sourcesContent":["import { isFullscreenState } from \"../Composables/useIsFullscreen.mjs\";\nconst index = {\n computed: {\n /**\n * @deprecated Is to be removed in v9.0.0 with Vue 3 migration.\n * Use `composables/useIsFullscreen` instead.\n */\n isFullscreen() {\n return isFullscreenState.value;\n }\n }\n};\nexport {\n index as default\n};\n//# sourceMappingURL=isFullscreen.mjs.map\n","import { isMobileState } from \"../Composables/useIsMobile.mjs\";\nconst index = {\n computed: {\n /**\n * @deprecated Is to be removed in v9.0.0 with Vue 3 migration.\n * Use `composables/useIsMobile` instead.\n */\n isMobile() {\n return isMobileState.value;\n }\n }\n};\nexport {\n index as default\n};\n//# sourceMappingURL=isMobile.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FileInfo } from './fileUtils'\n\n/**\n * Check if download permissions are granted for a file\n * @param fileInfo The file info to check\n */\nexport function canDownload(fileInfo: FileInfo) {\n\tif (fileInfo.hideDownload) {\n\t\treturn false\n\t}\n\n\t// TODO: This should probably be part of `@nextcloud/sharing`\n\t// check share attributes\n\tconst shareAttributes = typeof fileInfo?.shareAttributes === 'string' ? JSON.parse(fileInfo.shareAttributes || '[]') : fileInfo?.shareAttributes\n\n\tif (shareAttributes && shareAttributes.length > 0) {\n\t\tconst downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download')\n\t\t// We only forbid download if the attribute is *explicitly* set to 'false'\n\t\treturn downloadAttribute?.value !== false\n\t}\n\t// otherwise return true (as the file needs read permission otherwise we would not have opened it)\n\treturn true\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst CancelableRequest = function(request) {\n\tconst controller = new AbortController()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\t{ ...options, signal: controller.signal },\n\t\t)\n\t}\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: () => controller.abort(),\n\t}\n}\n\nexport default CancelableRequest\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div id=\"emptycontent\">\n\t\t<div class=\"icon-error\" />\n\t\t<h2>\n\t\t\t<slot>{{ t('viewer', 'Error loading {name}', { name }) }}</slot>\n\t\t</h2>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'Error',\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n#emptycontent {\n\tmargin: 0;\n\tpadding: 10% 5%;\n\tbackground-color: var(--color-main-background);\n}\n</style>\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav'\n\nexport default async (path: string): Promise<INode> => {\n\tif (!path.startsWith('/')) {\n\t\tpath = `/${path}`\n\t}\n\tconst client = getClient()\n\tconst propfindPayload = getDefaultPropfind()\n\tconst result = await client.stat(`${getRootPath()}${path}`, {\n\t\tdetails: true,\n\t\tdata: propfindPayload,\n\t}) as ResponseDataDetailed<FileStat>\n\treturn resultToNode(result.data)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getDavPath } from '../utils/fileUtils.ts'\n\n/**\n * @param {object} fileInfo a FileInfo object\n * @param {string} mime the file mime type\n * @param {object} component the component to render\n */\nexport default function(fileInfo, mime, component) {\n\tconst data = {\n\t\tmime,\n\t\tmodal: component,\n\t\tfailed: false,\n\t\tloaded: false,\n\t\tdavPath: getDavPath(fileInfo),\n\t\tsource: fileInfo.source ?? getDavPath(fileInfo),\n\t}\n\n\treturn Object.assign({}, fileInfo, data)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getDavNameSpaces, getDavProperties } from '@nextcloud/files/dav'\nimport { client } from './WebdavClient'\nimport { genFileInfo, type FileInfo } from '../utils/fileUtils'\n\n/**\n * Retrieve the files list\n * @param path\n * @param options\n */\nexport default async function(path: string, options = {}): Promise<FileInfo[]> {\n\tconst response = await client.getDirectoryContents(path, Object.assign({\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propfind ${getDavNameSpaces()}>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:tags />\n\t\t\t\t\t${getDavProperties()}\n\t\t\t\t</d:prop>\n\t\t\t</d:propfind>`,\n\t\tdetails: true,\n\t}, options)) as ResponseDataDetailed<FileStat[]>\n\n\treturn response.data.map(genFileInfo)\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { isPublicShare } from '@nextcloud/sharing/public'\n\n/**\n * @return {object}\n */\nexport default async function getSortingConfig() {\n\tconst viewConfigs = await getViewConfigs()\n\n\tif (!viewConfigs) {\n\t\treturn { key: 'basename', asc: true }\n\t}\n\n\tconst keyMap = { mtime: 'lastmod' }\n\tconst key = keyMap[viewConfigs.sorting_mode] || viewConfigs.sorting_mode || 'basename'\n\tconst asc = viewConfigs.sorting_direction === 'asc' || !viewConfigs.sorting_direction\n\n\treturn { key, asc }\n}\n\n/**\n * @return {object}\n */\nasync function getViewConfigs() {\n\tif (isPublicShare()) {\n\t\treturn null\n\t}\n\tconst url = generateUrl('apps/files/api/v1/views')\n\treturn await axios.get(url)\n\t\t.then((response) => {\n\t\t\treturn response.data.data?.files\n\t\t})\n\t\t.catch(() => {\n\t\t\treturn null\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getPreviewIfAny } from '../utils/previewUtils.ts'\nimport { getDavPath } from '../utils/fileUtils.ts'\n\nexport default {\n\tcomputed: {\n\t\t/**\n\t\t * Link to the preview path if the file have a preview\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tpreviewPath() {\n\t\t\treturn this.getPreviewIfAny({\n\t\t\t\tfileid: this.fileid,\n\t\t\t\tfilename: this.filename,\n\t\t\t\tpreviewUrl: this.previewUrl,\n\t\t\t\thasPreview: this.hasPreview,\n\t\t\t\tdavPath: this.davPath,\n\t\t\t\tetag: this.$attrs.etag,\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Absolute dav remote path of the file\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tdavPath() {\n\t\t\treturn getDavPath({\n\t\t\t\tfilename: this.filename,\n\t\t\t\tbasename: this.basename,\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Return the preview url if the file have an existing\n\t\t * preview or the absolute dav remote path if none.\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.fileid the file id\n\t\t * @param {string} [data.previewUrl] URL of the file preview\n\t\t * @param {boolean} data.hasPreview have the file an existing preview ?\n\t\t * @param {string} data.davPath the absolute dav path\n\t\t * @param {string} data.filename the file name\n\t\t * @param {string|null} data.etag the etag of the file\n\t\t * @return {string} the absolute url\n\t\t */\n\t\tgetPreviewIfAny(data) {\n\t\t\treturn getPreviewIfAny(data)\n\t\t},\n\t},\n}\n","'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into into [dir, root, basename, name, ext]\nvar splitWindowsRe =\n /^(((?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?[\\\\\\/]?)(?:[^\\\\\\/]*[\\\\\\/])*)((\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))[\\\\\\/]*$/;\n\nvar win32 = {};\n\nfunction win32SplitPath(filename) {\n return splitWindowsRe.exec(filename).slice(1);\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[1],\n dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3]\n };\n};\n\n\n\n// Split a filename into [dir, root, basename, name, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^((\\/?)(?:[^\\/]*\\/)*)((\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))[\\/]*$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n \n return {\n root: allParts[1],\n dir: allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3],\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport debounce from 'debounce'\nimport PreviewUrl from '../mixins/PreviewUrl.js'\nimport parsePath from 'path-parse'\n\nexport default {\n\tinheritAttrs: false,\n\tmixins: [PreviewUrl],\n\tprops: {\n\t\t// Is the current component shown\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// file name\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file path relative to user folder\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file source to fetch contents from\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t// URL the file preview\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t// should the standard core preview be used?\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// unique file id\n\t\tfileid: {\n\t\t\ttype: [Number, String],\n\t\t\trequired: false,\n\t\t},\n\t\t// list of all the visible files\n\t\tfileList: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\t// file mime (aliased if specified in the model)\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// can the user swipe\n\t\tcanSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tcanZoom: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the content loaded?\n\t\t// synced with parent\n\t\tloaded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the sidebar currently opened ?\n\t\tisSidebarShown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// are we in fullscreen mode ?\n\t\tisFullScreen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// The file id of the peer live photo file\n\t\tmetadataFilesLivePhoto: {\n\t\t\ttype: Number,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theight: null,\n\t\t\twidth: null,\n\t\t\tnaturalHeight: null,\n\t\t\tnaturalWidth: null,\n\t\t\tisLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tname() {\n\t\t\treturn parsePath(this.basename).name\n\t\t},\n\t\text() {\n\t\t\treturn parsePath(this.basename).ext\n\t\t},\n\t\tsrc() {\n\t\t\treturn this.source ?? this.davPath\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\t// just in case the file was preloaded, let's warn the viewer\n\t\t\t\tif (this.isLoaded) {\n\t\t\t\t\tthis.doneLoading()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// update image size on sidebar toggle\n\t\tisSidebarShown() {\n\t\t\t// wait for transition to complete (100ms)\n\t\t\tsetTimeout(this.updateHeightWidth, 200)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// detect error and let the viewer know\n\t\tthis.$el.addEventListener('error', e => {\n\t\t\tconsole.error('Error loading', this.filename, e)\n\t\t\tthis.$emit('error', e)\n\t\t})\n\n\t\t// update image size on window resize\n\t\twindow.addEventListener('resize', debounce(() => {\n\t\t\tthis.updateHeightWidth()\n\t\t}, 100))\n\t},\n\n\tmethods: {\n\n\t\t/**\n\t\t * This is used to make the viewer know this file is complete or ready\n\t\t * ! you NEED to use it to make the viewer aware of the current loading state\n\t\t */\n\t\tdoneLoading() {\n\t\t\t// send the current state\n\t\t\tthis.$emit('update:loaded', true)\n\t\t\t// save the current state\n\t\t\tthis.isLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Updates the current height and width data\n\t\t * based on the viewer maximum size\n\t\t */\n\t\tupdateHeightWidth() {\n\t\t\tconst modalWrapper = this.$parent.$el.querySelector('.modal-wrapper')\n\t\t\tif (modalWrapper && this.naturalHeight > 0 && this.naturalWidth > 0) {\n\t\t\t\tconst modalContainer = modalWrapper.querySelector('.modal-container')\n\n\t\t\t\tconst parentHeight = modalContainer.clientHeight\n\t\t\t\tconst parentWidth = modalContainer.clientWidth\n\n\t\t\t\tconst heightRatio = parentHeight / this.naturalHeight\n\t\t\t\tconst widthRatio = parentWidth / this.naturalWidth\n\n\t\t\t\t// if the video height is capped by the parent height\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\tif (heightRatio < widthRatio && heightRatio < 1) {\n\t\t\t\t\tthis.height = parentHeight\n\t\t\t\t\tthis.width = Math.round(this.naturalWidth / this.naturalHeight * parentHeight)\n\n\t\t\t\t// if the video width is capped by the parent width\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\t} else if (heightRatio > widthRatio && widthRatio < 1) {\n\t\t\t\t\tthis.width = parentWidth\n\t\t\t\t\tthis.height = Math.round(this.naturalHeight / this.naturalWidth * parentWidth)\n\n\t\t\t\t// RESET\n\t\t\t\t} else {\n\t\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\t\tthis.width = this.naturalWidth\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\tthis.width = this.naturalWidth\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enable the viewer swiping previous/next capability\n\t\t */\n\t\tenableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', true)\n\t\t},\n\n\t\t/**\n\t\t * Disable the viewer swiping previous/next capability\n\t\t */\n\t\tdisableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', false)\n\t\t},\n\n\t\t/**\n\t\t * Toggle the fullscreen on the current visible element\n\t\t */\n\t\ttoggleFullScreen() {\n\t\t\tif (this.isFullScreen) {\n\t\t\t\tdocument.exitFullscreen()\n\t\t\t} else {\n\t\t\t\tthis.$el.requestFullscreen()\n\t\t\t}\n\t\t},\n\t},\n}\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon trash-can-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z\">\n <title v-if=\"title\">{{ title }}\n \n \n \n\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport ViewerComponent from './views/Viewer.vue'\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nVue.prototype.OC = window.OC\nVue.prototype.OCA = window.OCA\n\n// Create document root\nconst ViewerRoot = document.createElement('div')\nViewerRoot.id = 'viewer'\ndocument.body.appendChild(ViewerRoot)\n\n// Put controls for video viewer\n// Needed as Firefox CSP blocks the loading of the svg through the normal plyr system\nconst VideoControls = document.createElement('div')\nVideoControls.innerHTML = PLYR_ICONS\nVideoControls.style.display = 'none'\ndocument.body.appendChild(VideoControls)\n\n// Init vue\nexport default new Vue({\n\tel: '#viewer',\n\t// When debugging the page, it's easier to find which app\n\t// is which. Especially when there is multiple apps\n\t// roots mounted o the same page!\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'ViewerRoot',\n\trender: h => h(ViewerComponent),\n})\n"],"file":"viewer-main.mjs"} \ No newline at end of file +{"version":3,"mappings":"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KA,aAAc,CACb,KAAK,MAAM,kBAAmB,EAAI,CACnC,EAKA,cAAe,CACd,KAAK,MAAM,kBAAmB,EAAK,CACpC,EAKA,kBAAmB,CACd,KAAK,aACR,SAAS,eAAc,EAEvB,KAAK,IAAI,kBAAiB,CAE5B,CACF,CACA,ECtMAlD,GAAA,CACA,2BACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,ynBChBAA,GAAA,CACA,yBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,6pBChBAA,GAAA,CACA,sBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,4lBChBAA,GAAA,CACA,0BACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,gmBChBAA,GAAA,CACA,yBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,4uBChBAA,GAAA,CACA,qBACA,gBACA,OACA,OACA,WACA,EACA,WACA,YACA,sBACA,EACA,MACA,YACA,UACA,CACA,CACA,+lBCkLAqD,GAAA,IAAAC,EAAA,gDAAAC,KAAA,sDACAC,GAAA,IAAAF,EAAA,4FACAG,GAAA,IAAAH,EAAA,wGAEAtD,GAAA0D,EAAA,CACA,cAEA,YACA,OAAAC,GACA,UAAAC,GACA,SAAAC,GACA,MAAAC,GACA,WAAAC,GACA,eAAAC,GACA,eAAAP,GACA,aAAAD,GACA,QAAAH,GACA,OAAAY,EACA,EAEA,QAAAC,GAAAC,EAAA,EAEA,OACA,OAEA,kBACA,sCAGA,cACA,cACA,sBACA,0BAGA,eACA,gBACA,eACA,oBACA,YACA,YACA,mBAGA,YACA,aACA,WAGA,yBACA,2BAGA,kBACA,kBACA,oBACA,YACA,gBACA,WACA,mBACA,KAAAC,EACA,aAEA,eACA,CACA,EAEA,UACA,eACA,wDACA,EACA,cA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","names":["index","isFullscreenState","isMobileState","canDownload","fileInfo","shareAttributes","scope","key","CancelableRequest","request","controller","url","options","_sfc_main","fetchNode","path","client","getClient","propfindPayload","getDefaultPropfind","result","getRootPath","resultToNode","File","mime","component","data","getDavPath","getFileList","getDavNameSpaces","getDavProperties","genFileInfo","getSortingConfig","viewConfigs","getViewConfigs","asc","isPublicShare","generateUrl","axios","response","PreviewUrl","getPreviewIfAny","isWindows","process","splitWindowsRe","win32","win32SplitPath","filename","pathString","allParts","splitPathRe","posix","posixSplitPath","pathParseModule","Mime","parsePath","val","old","e","debounce","modalWrapper","modalContainer","parentHeight","parentWidth","heightRatio","widthRatio","NcModal","__vitePreload","n","NcActionLink","NcActionButton","defineComponent","Delete","DockRight","Download","Error","Fullscreen","FullscreenExit","Pencil","isFullscreen","isMobile","defaultRemoteURL","defaultRootPath","loadState","element","logger","viewerRoot","el","fileList","currentIndex","file","isEndOfList","list","subscribe","unsubscribe","isOpen","toggleEditor","event","sidebar","overrideHandlerId","fileRequest","cancelRequestFile","cancelableRequest","getFileInfo","fileName","extractFilePaths","title","error","showError","source","extractFilePathFromSource","node","emit","alias","handler","h","defaultThemeIsLight","group","mimes","folderRequest","cancelRequestFolder","dirPath","filteredFiles","nodes","NcFile","sortedNodes","sortNodes","filesByPath","prev","next","newHandlers","Vue","currentFileId","fileid","isDavResource","a","t","ViewerRoot","VideoControls","ViewerComponent"],"ignoreList":[0,1,10,12,13,14,15,16,17],"sources":["../node_modules/@nextcloud/vue/dist/Mixins/isFullscreen.mjs","../node_modules/@nextcloud/vue/dist/Mixins/isMobile.mjs","../src/utils/canDownload.ts","../src/utils/CancelableRequest.js","../src/components/Error.vue","../src/services/FetchFile.ts","../src/models/file.js","../src/services/FileList.ts","../src/services/FileSortingConfig.ts","../src/mixins/PreviewUrl.js","../node_modules/path-parse/index.js","../src/mixins/Mime.js","../node_modules/vue-material-design-icons/TrashCanOutline.vue","../node_modules/vue-material-design-icons/TrayArrowDown.vue","../node_modules/vue-material-design-icons/Fullscreen.vue","../node_modules/vue-material-design-icons/FullscreenExit.vue","../node_modules/vue-material-design-icons/PencilOutline.vue","../node_modules/vue-material-design-icons/DockRight.vue","../src/views/Viewer.vue","../src/main.js"],"sourcesContent":["import { isFullscreenState } from \"../Composables/useIsFullscreen.mjs\";\nconst index = {\n computed: {\n /**\n * @deprecated Is to be removed in v9.0.0 with Vue 3 migration.\n * Use `composables/useIsFullscreen` instead.\n */\n isFullscreen() {\n return isFullscreenState.value;\n }\n }\n};\nexport {\n index as default\n};\n//# sourceMappingURL=isFullscreen.mjs.map\n","import { isMobileState } from \"../Composables/useIsMobile.mjs\";\nconst index = {\n computed: {\n /**\n * @deprecated Is to be removed in v9.0.0 with Vue 3 migration.\n * Use `composables/useIsMobile` instead.\n */\n isMobile() {\n return isMobileState.value;\n }\n }\n};\nexport {\n index as default\n};\n//# sourceMappingURL=isMobile.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FileInfo } from './fileUtils'\n\n/**\n * Check if download permissions are granted for a file\n * @param fileInfo The file info to check\n */\nexport function canDownload(fileInfo: FileInfo) {\n\tif (fileInfo.hideDownload) {\n\t\treturn false\n\t}\n\n\t// TODO: This should probably be part of `@nextcloud/sharing`\n\t// check share attributes\n\tconst shareAttributes = typeof fileInfo?.shareAttributes === 'string' ? JSON.parse(fileInfo.shareAttributes || '[]') : fileInfo?.shareAttributes\n\n\tif (shareAttributes && shareAttributes.length > 0) {\n\t\tconst downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download')\n\t\t// We only forbid download if the attribute is *explicitly* set to 'false'\n\t\treturn downloadAttribute?.value !== false\n\t}\n\t// otherwise return true (as the file needs read permission otherwise we would not have opened it)\n\treturn true\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst CancelableRequest = function(request) {\n\tconst controller = new AbortController()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\t{ ...options, signal: controller.signal },\n\t\t)\n\t}\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: () => controller.abort(),\n\t}\n}\n\nexport default CancelableRequest\n","\n\n\n\n\n\n\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav'\n\nexport default async (path: string): Promise => {\n\tif (!path.startsWith('/')) {\n\t\tpath = `/${path}`\n\t}\n\tconst client = getClient()\n\tconst propfindPayload = getDefaultPropfind()\n\tconst result = await client.stat(`${getRootPath()}${path}`, {\n\t\tdetails: true,\n\t\tdata: propfindPayload,\n\t}) as ResponseDataDetailed\n\treturn resultToNode(result.data)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getDavPath } from '../utils/fileUtils.ts'\n\n/**\n * @param {object} fileInfo a FileInfo object\n * @param {string} mime the file mime type\n * @param {object} component the component to render\n */\nexport default function(fileInfo, mime, component) {\n\tconst data = {\n\t\tmime,\n\t\tmodal: component,\n\t\tfailed: false,\n\t\tloaded: false,\n\t\tdavPath: getDavPath(fileInfo),\n\t\tsource: fileInfo.source ?? getDavPath(fileInfo),\n\t}\n\n\treturn Object.assign({}, fileInfo, data)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getDavNameSpaces, getDavProperties } from '@nextcloud/files/dav'\nimport { client } from './WebdavClient'\nimport { genFileInfo, type FileInfo } from '../utils/fileUtils'\n\n/**\n * Retrieve the files list\n * @param path\n * @param options\n */\nexport default async function(path: string, options = {}): Promise {\n\tconst response = await client.getDirectoryContents(path, Object.assign({\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${getDavProperties()}\n\t\t\t\t\n\t\t\t`,\n\t\tdetails: true,\n\t}, options)) as ResponseDataDetailed\n\n\treturn response.data.map(genFileInfo)\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { isPublicShare } from '@nextcloud/sharing/public'\n\n/**\n * @return {object}\n */\nexport default async function getSortingConfig() {\n\tconst viewConfigs = await getViewConfigs()\n\n\tif (!viewConfigs) {\n\t\treturn { key: 'basename', asc: true }\n\t}\n\n\tconst keyMap = { mtime: 'lastmod' }\n\tconst key = keyMap[viewConfigs.sorting_mode] || viewConfigs.sorting_mode || 'basename'\n\tconst asc = viewConfigs.sorting_direction === 'asc' || !viewConfigs.sorting_direction\n\n\treturn { key, asc }\n}\n\n/**\n * @return {object}\n */\nasync function getViewConfigs() {\n\tif (isPublicShare()) {\n\t\treturn null\n\t}\n\tconst url = generateUrl('apps/files/api/v1/views')\n\treturn await axios.get(url)\n\t\t.then((response) => {\n\t\t\treturn response.data.data?.files\n\t\t})\n\t\t.catch(() => {\n\t\t\treturn null\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getPreviewIfAny } from '../utils/previewUtils.ts'\nimport { getDavPath } from '../utils/fileUtils.ts'\n\nexport default {\n\tcomputed: {\n\t\t/**\n\t\t * Link to the preview path if the file have a preview\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tpreviewPath() {\n\t\t\treturn this.getPreviewIfAny({\n\t\t\t\tfileid: this.fileid,\n\t\t\t\tfilename: this.filename,\n\t\t\t\tpreviewUrl: this.previewUrl,\n\t\t\t\thasPreview: this.hasPreview,\n\t\t\t\tdavPath: this.davPath,\n\t\t\t\tetag: this.$attrs.etag,\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Absolute dav remote path of the file\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tdavPath() {\n\t\t\treturn getDavPath({\n\t\t\t\tfilename: this.filename,\n\t\t\t\tbasename: this.basename,\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Return the preview url if the file have an existing\n\t\t * preview or the absolute dav remote path if none.\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.fileid the file id\n\t\t * @param {string} [data.previewUrl] URL of the file preview\n\t\t * @param {boolean} data.hasPreview have the file an existing preview ?\n\t\t * @param {string} data.davPath the absolute dav path\n\t\t * @param {string} data.filename the file name\n\t\t * @param {string|null} data.etag the etag of the file\n\t\t * @return {string} the absolute url\n\t\t */\n\t\tgetPreviewIfAny(data) {\n\t\t\treturn getPreviewIfAny(data)\n\t\t},\n\t},\n}\n","'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into into [dir, root, basename, name, ext]\nvar splitWindowsRe =\n /^(((?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?[\\\\\\/]?)(?:[^\\\\\\/]*[\\\\\\/])*)((\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))[\\\\\\/]*$/;\n\nvar win32 = {};\n\nfunction win32SplitPath(filename) {\n return splitWindowsRe.exec(filename).slice(1);\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[1],\n dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3]\n };\n};\n\n\n\n// Split a filename into [dir, root, basename, name, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^((\\/?)(?:[^\\/]*\\/)*)((\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))[\\/]*$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 5) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n \n return {\n root: allParts[1],\n dir: allParts[0].slice(0, -1),\n base: allParts[2],\n ext: allParts[4],\n name: allParts[3],\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport debounce from 'debounce'\nimport PreviewUrl from '../mixins/PreviewUrl.js'\nimport parsePath from 'path-parse'\n\nexport default {\n\tinheritAttrs: false,\n\tmixins: [PreviewUrl],\n\tprops: {\n\t\t// Is the current component shown\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// file name\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file path relative to user folder\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file source to fetch contents from\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t// URL the file preview\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t// should the standard core preview be used?\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// unique file id\n\t\tfileid: {\n\t\t\ttype: [Number, String],\n\t\t\trequired: false,\n\t\t},\n\t\t// list of all the visible files\n\t\tfileList: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\t// file mime (aliased if specified in the model)\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// can the user swipe\n\t\tcanSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tcanZoom: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the content loaded?\n\t\t// synced with parent\n\t\tloaded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the sidebar currently opened ?\n\t\tisSidebarShown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// are we in fullscreen mode ?\n\t\tisFullScreen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// The file id of the peer live photo file\n\t\tmetadataFilesLivePhoto: {\n\t\t\ttype: Number,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theight: null,\n\t\t\twidth: null,\n\t\t\tnaturalHeight: null,\n\t\t\tnaturalWidth: null,\n\t\t\tisLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tname() {\n\t\t\treturn parsePath(this.basename).name\n\t\t},\n\t\text() {\n\t\t\treturn parsePath(this.basename).ext\n\t\t},\n\t\tsrc() {\n\t\t\treturn this.source ?? this.davPath\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\t// just in case the file was preloaded, let's warn the viewer\n\t\t\t\tif (this.isLoaded) {\n\t\t\t\t\tthis.doneLoading()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// update image size on sidebar toggle\n\t\tisSidebarShown() {\n\t\t\t// wait for transition to complete (100ms)\n\t\t\tsetTimeout(this.updateHeightWidth, 200)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// detect error and let the viewer know\n\t\tthis.$el.addEventListener('error', e => {\n\t\t\tconsole.error('Error loading', this.filename, e)\n\t\t\tthis.$emit('error', e)\n\t\t})\n\n\t\t// update image size on window resize\n\t\twindow.addEventListener('resize', debounce(() => {\n\t\t\tthis.updateHeightWidth()\n\t\t}, 100))\n\t},\n\n\tmethods: {\n\n\t\t/**\n\t\t * This is used to make the viewer know this file is complete or ready\n\t\t * ! you NEED to use it to make the viewer aware of the current loading state\n\t\t */\n\t\tdoneLoading() {\n\t\t\t// send the current state\n\t\t\tthis.$emit('update:loaded', true)\n\t\t\t// save the current state\n\t\t\tthis.isLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Updates the current height and width data\n\t\t * based on the viewer maximum size\n\t\t */\n\t\tupdateHeightWidth() {\n\t\t\tconst modalWrapper = this.$parent.$el.querySelector('.modal-wrapper')\n\t\t\tif (modalWrapper && this.naturalHeight > 0 && this.naturalWidth > 0) {\n\t\t\t\tconst modalContainer = modalWrapper.querySelector('.modal-container')\n\n\t\t\t\tconst parentHeight = modalContainer.clientHeight\n\t\t\t\tconst parentWidth = modalContainer.clientWidth\n\n\t\t\t\tconst heightRatio = parentHeight / this.naturalHeight\n\t\t\t\tconst widthRatio = parentWidth / this.naturalWidth\n\n\t\t\t\t// if the video height is capped by the parent height\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\tif (heightRatio < widthRatio && heightRatio < 1) {\n\t\t\t\t\tthis.height = parentHeight\n\t\t\t\t\tthis.width = Math.round(this.naturalWidth / this.naturalHeight * parentHeight)\n\n\t\t\t\t// if the video width is capped by the parent width\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\t} else if (heightRatio > widthRatio && widthRatio < 1) {\n\t\t\t\t\tthis.width = parentWidth\n\t\t\t\t\tthis.height = Math.round(this.naturalHeight / this.naturalWidth * parentWidth)\n\n\t\t\t\t// RESET\n\t\t\t\t} else {\n\t\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\t\tthis.width = this.naturalWidth\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\tthis.width = this.naturalWidth\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enable the viewer swiping previous/next capability\n\t\t */\n\t\tenableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', true)\n\t\t},\n\n\t\t/**\n\t\t * Disable the viewer swiping previous/next capability\n\t\t */\n\t\tdisableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', false)\n\t\t},\n\n\t\t/**\n\t\t * Toggle the fullscreen on the current visible element\n\t\t */\n\t\ttoggleFullScreen() {\n\t\t\tif (this.isFullScreen) {\n\t\t\t\tdocument.exitFullscreen()\n\t\t\t} else {\n\t\t\t\tthis.$el.requestFullscreen()\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport ViewerComponent from './views/Viewer.vue'\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nVue.prototype.OC = window.OC\nVue.prototype.OCA = window.OCA\n\n// Create document root\nconst ViewerRoot = document.createElement('div')\nViewerRoot.id = 'viewer'\ndocument.body.appendChild(ViewerRoot)\n\n// Put controls for video viewer\n// Needed as Firefox CSP blocks the loading of the svg through the normal plyr system\nconst VideoControls = document.createElement('div')\nVideoControls.innerHTML = PLYR_ICONS\nVideoControls.style.display = 'none'\ndocument.body.appendChild(VideoControls)\n\n// Init vue\nexport default new Vue({\n\tel: '#viewer',\n\t// When debugging the page, it's easier to find which app\n\t// is which. Especially when there is multiple apps\n\t// roots mounted o the same page!\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'ViewerRoot',\n\trender: h => h(ViewerComponent),\n})\n"],"file":"viewer-main.mjs"} \ No newline at end of file diff --git a/js/viewer-main.mjs.map.license b/js/viewer-main.mjs.map.license index 190f27da1..1b8f4d6c0 100644 --- a/js/viewer-main.mjs.map.license +++ b/js/viewer-main.mjs.map.license @@ -16,5 +16,5 @@ This file is generated from multiple sources. Included packages: - version: 6.0.0-dev.0 - license: AGPL-3.0-or-later - vue-material-design-icons - - version: 5.3.1 + - version: 5.3.2 - license: MIT