From 34675806dfa5f6820e71be37a54df9f79e17535c Mon Sep 17 00:00:00 2001 From: Peter West Date: Sat, 4 Mar 2023 19:57:23 +0000 Subject: [PATCH] Upgrade deps, enable bundle minification Bundle minification has been enabled because a change in eslint (https://github.com/evanw/esbuild/issues/2721) means some comments are now preserved in the bundle, which isn't useful in the bundle generated for the UI. Minification prevents this. --- bibtex-tidy.js | 14 +- bin/bibtex-tidy | 2 + build.ts | 42 +- docs/bundle.css | 763 +- docs/bundle.js | 41345 ++++++++++++++++++-------------------------- package-lock.json | 1603 +- package.json | 44 +- 7 files changed, 17329 insertions(+), 26484 deletions(-) diff --git a/bibtex-tidy.js b/bibtex-tidy.js index 27b1553..3b08956 100644 --- a/bibtex-tidy.js +++ b/bibtex-tidy.js @@ -223,7 +223,7 @@ var BracedNode = class BracedNode { this.parent = parent; this.type = "braced"; this.value = ""; - this.depth = 0; + /** Used to count opening and closing braces */ this.depth = 0; parent.concat.push(this); } }; @@ -233,7 +233,7 @@ var QuotedNode = class QuotedNode { this.parent = parent; this.type = "quoted"; this.value = ""; - this.depth = 0; + /** Used to count opening and closing braces */ this.depth = 0; parent.concat.push(this); } }; @@ -3634,7 +3634,7 @@ var SPECIAL_MARKERS = { (_b = authors[0]) == null ? void 0 : _b.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, "_" ); return author ? [author] : []; @@ -3650,7 +3650,7 @@ var SPECIAL_MARKERS = { .slice(0, 2) .map((author) => author.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, "_" ) ), @@ -3665,7 +3665,7 @@ var SPECIAL_MARKERS = { var authors = parseAuthors((_a = v.get("author")) != null ? _a : "", true); return authors.map((author) => author.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, "_" ) ); @@ -3681,7 +3681,7 @@ var SPECIAL_MARKERS = { .slice(0, n) .map((author) => author.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, "_" ) ), @@ -3905,7 +3905,7 @@ __name(nonFunctionWords, "nonFunctionWords"); function words(value) { return value .split( - /(?:(?![0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/ + /(?:[\0-\/:-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/ ) .filter((word) => word.length > 0); } diff --git a/bin/bibtex-tidy b/bin/bibtex-tidy index 77e9d1a..96ca78a 100755 --- a/bin/bibtex-tidy +++ b/bin/bibtex-tidy @@ -847,6 +847,7 @@ var BracedNode = class { this.parent = parent; this.type = "braced"; this.value = ""; + /** Used to count opening and closing braces */ this.depth = 0; parent.concat.push(this); } @@ -856,6 +857,7 @@ var QuotedNode = class { this.parent = parent; this.type = "quoted"; this.value = ""; + /** Used to count opening and closing braces */ this.depth = 0; parent.concat.push(this); } diff --git a/build.ts b/build.ts index 689866f..410a8a1 100644 --- a/build.ts +++ b/build.ts @@ -4,7 +4,7 @@ import { transform as swc, type Options, type Output } from '@swc/core'; import { generateDtsBundle } from 'dts-bundle-generator'; import { build, - serve, + context, type OnLoadResult, type OutputFile, type Plugin, @@ -294,7 +294,7 @@ async function buildWebBundle() { bundle: true, write: false, keepNames: true, - banner: { js: jsBanner.join('\n') }, + minify: true, plugins: [ sveltePlugin({ preprocess: autoPreprocess() }), googleFontPlugin, @@ -305,7 +305,8 @@ async function buildWebBundle() { for (const file of outputFiles) { let text = file.text; if (file.path.endsWith('.js')) { - text = (await transpileForOldBrowsers(file)).code; + text = (await transpileForOldBrowsers(file, { minify: true })).code; + text = jsBanner.join('\n') + text; text = prettier.format(text, { parser: 'babel', printWidth: 400 }); } await writeFile(file.path, text); @@ -315,24 +316,23 @@ async function buildWebBundle() { } async function serveWeb() { - const server = await serve( - { servedir: WEB_PATH }, - { - platform: 'browser', - entryPoints: ['./src/ui/index.ts'], - // esbuild replaces the extension, e.g. js for css - outfile: join(WEB_PATH, 'bundle.js'), - bundle: true, - sourcemap: true, - plugins: [ - sveltePlugin({ - preprocess: autoPreprocess(), - compilerOptions: { enableSourcemap: true }, - }), - googleFontPlugin, - ], - } - ); + const ctx = await context({ + platform: 'browser', + entryPoints: ['./src/ui/index.ts'], + // esbuild replaces the extension, e.g. js for css + outfile: join(WEB_PATH, 'bundle.js'), + bundle: true, + sourcemap: true, + write: false, + plugins: [ + sveltePlugin({ + preprocess: autoPreprocess(), + compilerOptions: { enableSourcemap: true }, + }), + googleFontPlugin, + ], + }); + const server = await ctx.serve({ servedir: WEB_PATH }); console.log(`Access on http://localhost:${server.port}`); } diff --git a/docs/bundle.css b/docs/bundle.css index 5ce2b9b..bf75b7b 100644 --- a/docs/bundle.css +++ b/docs/bundle.css @@ -1,762 +1 @@ -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/CopyButton.esbuild-svelte-fake-css */ -#copy.svelte-1ha11jr.svelte-1ha11jr { - position: absolute; - top: 12px; - right: 12px; - font-weight: bold; - font-size: 15px; - z-index: 100; - display: flex; - align-items: center; - justify-content: flex-start; - padding: 8px 8px 8px 12px; - transition: width 0.5s ease; - width: 40px; -} -#copy.svelte-1ha11jr.svelte-1ha11jr:after { - content: "Copy"; - overflow: hidden; - white-space: nowrap; - text-indent: 6px; -} -#copy.svelte-1ha11jr.svelte-1ha11jr:hover { - width: 90px; -} -#copy.copied.svelte-1ha11jr.svelte-1ha11jr { - width: 110px; -} -#copy.copied.svelte-1ha11jr.svelte-1ha11jr:after { - content: "Copied!"; -} -#copy.svelte-1ha11jr svg.svelte-1ha11jr { - fill: currentColor; - width: 20px; - flex-shrink: 0; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Editor.esbuild-svelte-fake-css */ -#editor.svelte-x4zh2g { - flex-grow: 1; - position: relative; - overflow: hidden; -} -.cm-editor { - color: var(--dark-gray); - height: 100%; -} -.cm-editor .cm-scroller { - font: var(--mono-normal); - font-size: 14px; - line-height: 1.3em; - padding: 12px 0 12px 0; -} -.cm-editor .cm-gutters { - background: var(--main-bg); - border-right: 14px solid var(--main-bg); - color: var(--light6); - padding-left: 12px; -} -.cm-editor .cm-activeLineGutter { - background: var(--main-bg); - color: var(--light1); -} -.cm-editor .cm-gutters .cm-gutter { - min-width: 32px; -} -.cm-editor .cm-selectionBackground { - background: #283655 !important; -} -.cm-editor .cm-cursor { - border-left: 2px solid #ffffec; -} -.cm-editor .cm-lintRange-error { - background: none; - border-bottom: 2px solid var(--red); -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Collapsible.esbuild-svelte-fake-css */ -details[open].svelte-ee92zc.svelte-ee92zc { - padding-bottom: 20px; -} -details.svelte-ee92zc:not([open]) summary.svelte-ee92zc { - padding-bottom: 20px; -} -summary.svelte-ee92zc.svelte-ee92zc { - font: var(--sans-h2); - margin: 0 -20px; - cursor: pointer; - user-select: none; - padding: 20px 20px 12px 20px; - border-top: 1px solid var(--border-color); - display: flex; - gap: 8px; - align-items: center; -} -summary.svelte-ee92zc.svelte-ee92zc::-webkit-details-marker { - display: none; -} -summary.svelte-ee92zc.svelte-ee92zc::marker { - content: none; -} -summary.svelte-ee92zc.svelte-ee92zc::after { - content: "\25ba"; - font-size: 8px; - color: rgba(255, 255, 255, 0.6); -} -details[open].svelte-ee92zc summary.svelte-ee92zc:after { - content: none; -} -details[open].svelte-ee92zc summary.svelte-ee92zc:hover:after { - content: "\25bc"; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Checkbox.esbuild-svelte-fake-css */ -input.svelte-doypik { - appearance: none; - -webkit-appearance: none; - background: transparent; - margin: 0; - border: 2px solid var(--light6); - border-radius: 3px; - width: 17px; - height: 17px; - position: relative; -} -input.svelte-doypik:checked { - border-color: var(--light-blue); - background: var(--light-blue); -} -input.svelte-doypik:checked:before, -input.svelte-doypik:checked:after { - content: ""; - position: absolute; - background: var(--main-bg); - width: 2px; -} -input.svelte-doypik:checked:before { - height: 11px; - left: 7px; - top: 1px; - transform: rotate(45deg); -} -input.svelte-doypik:checked:after { - height: 5px; - left: 2px; - top: 5px; - transform: rotate(-45deg); -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Label.esbuild-svelte-fake-css */ -label.svelte-a2tm3u { - padding: 8px 12px; - margin: 12px 0; - border-radius: 3px; - display: flex; - align-items: center; - gap: 16px; - cursor: pointer; -} -label.svelte-a2tm3u:hover { - background: var(--hover-bg); - box-shadow: 0 0 0 1px var(--border-color); -} -label.svelte-a2tm3u:first-of-type { - margin-top: 4px; -} -label.svelte-a2tm3u:last-child { - margin-bottom: 0; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/SubOptions.esbuild-svelte-fake-css */ -.suboptions.svelte-1gkj6ol { - margin: 0px 0 28px 45px; -} -.suboptions.svelte-1gkj6ol:last-child { - margin-bottom: 0; -} -.suboptions.svelte-1gkj6ol textarea { - resize: vertical; - width: 100%; - height: 100px; -} -.suboptions.svelte-1gkj6ol input[type=number] { - display: inline-block; - width: 62px; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/CleanupOptions.esbuild-svelte-fake-css */ -textarea.omit.svelte-1t0249j { - height: 50px; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Cli.esbuild-svelte-fake-css */ -#cli.svelte-1xnx1c1.svelte-1xnx1c1 { - display: block; - padding: 8px; - word-wrap: break-word; -} -#cli.svelte-1xnx1c1 .opt-name.svelte-1xnx1c1 { - color: var(--green); -} -#cli.svelte-1xnx1c1 .opt-val.svelte-1xnx1c1 { - color: var(--orange); -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Radio.esbuild-svelte-fake-css */ -input.svelte-qhlda7 { - appearance: none; - -webkit-appearance: none; - background: transparent; - margin: 0; - border: 2px solid var(--light6); - border-radius: 8.5px; - width: 17px; - height: 17px; - position: relative; - flex: 0 0 17px; -} -input.svelte-qhlda7:checked { - border-color: var(--light-blue); - background: transparent; -} -input.svelte-qhlda7:checked:after { - content: ""; - position: absolute; - background: var(--light-blue); - width: 7px; - height: 7px; - left: 3px; - top: 3px; - border-radius: 10px; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/FeedbackError.esbuild-svelte-fake-css */ -.container.svelte-176xcb { - display: flex; - gap: 20px; - margin-left: 8px; - align-items: center; -} -svg.svelte-176xcb { - flex: 0 0 24px; -} -circle.svelte-176xcb, -line.svelte-176xcb { - stroke: var(--red); -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/FeedbackSuccess.esbuild-svelte-fake-css */ -strong.svelte-yy7yvg { - font: var(--sans-h2); -} -.container.svelte-yy7yvg { - display: flex; - gap: 20px; - margin-left: 8px; - align-items: center; -} -svg.svelte-yy7yvg { - flex: 0 0 24px; -} -circle.svelte-yy7yvg, -line.svelte-yy7yvg { - stroke: var(--green); -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Feedback.esbuild-svelte-fake-css */ -div.svelte-1pqmac { - background: var(--dark2); - border: 1px solid var(--border-color); - padding: 12px; - margin-bottom: 20px; - border-radius: 8px; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/Sidebar.esbuild-svelte-fake-css */ -#sidebar.svelte-kvjsp8.svelte-kvjsp8 { - flex: 0 0 400px; - border-left: 1px solid var(--border-color); - display: flex; - flex-direction: column; - scrollbar-gutter: stable; -} -#sidebar.svelte-kvjsp8 form.svelte-kvjsp8 { - flex: 1 1 auto; - padding: 20px; - overflow: auto; -} -#sidebar.svelte-kvjsp8 h1.svelte-kvjsp8 { - font: var(--sans-h1); - color: var(--header-fg); - margin: 0 0 16px 0; - padding: 0; -} -.intro.svelte-kvjsp8.svelte-kvjsp8 { - margin-bottom: 20px; -} -#sidebar.svelte-kvjsp8 .run.svelte-kvjsp8 { - flex: 0 0 auto; - padding: 20px; - border-top: 1px solid var(--border-color); -} -#sidebar.svelte-kvjsp8 #tidy.svelte-kvjsp8 { - background: var(--light-blue); - border: 0; - color: var(--main-bg); - font: var(--sans-h1); - font-size: 15px; - height: 36px; - width: 100%; - border-radius: 3px; - position: relative; -} -#sidebar.svelte-kvjsp8 #tidy[disabled].svelte-kvjsp8 { - background: var(--dark-gray); - color: transparent; - position: relative; -} -#sidebar.svelte-kvjsp8 #tidy[disabled].svelte-kvjsp8:after { - animation: svelte-kvjsp8-pulse 0.9s infinite linear; - animation-delay: -0.45s; - background: #fff; - border-radius: 50%; - content: ""; - height: 20px; - left: 160px; - position: absolute; - top: 8px; - width: 20px; -} -#sidebar.svelte-kvjsp8 code { - font-size: 0.9em; - border: 1px solid rgba(255, 255, 255, 0.2); - background: rgba(0, 0, 0, 0.1); - color: var(--light-gray); - padding: 1px 4px; - border-radius: 3px; -} -@keyframes svelte-kvjsp8-pulse { - 0% { - transform: translateX(-80px) scale(0); - } - 35% { - transform: translateX(-40px) scale(0.85); - } - 50% { - transform: translateX(0px) scale(1); - } - 65% { - transform: translateX(40px) scale(0.85); - } - 100% { - transform: translateX(80px) scale(0); - } -} - -/* http-url:https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;500&family=Inconsolata:wght@400;600&display=swap */ -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0460-052F, - U+1C80-1C88, - U+20B4, - U+2DE0-2DFF, - U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0301, - U+0400-045F, - U+0490-0491, - U+04B0-04B1, - U+2116; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0102-0103, - U+0110-0111, - U+0128-0129, - U+0168-0169, - U+01A0-01A1, - U+01AF-01B0, - U+1EA0-1EF9, - U+20AB; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0100-024F, - U+0259, - U+1E00-1EFF, - U+2020, - U+20A0-20AB, - U+20AD-20CF, - U+2113, - U+2C60-2C7F, - U+A720-A7FF; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0000-00FF, - U+0131, - U+0152-0153, - U+02BB-02BC, - U+02C6, - U+02DA, - U+02DC, - U+2000-206F, - U+2074, - U+20AC, - U+2122, - U+2191, - U+2193, - U+2212, - U+2215, - U+FEFF, - U+FFFD; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0460-052F, - U+1C80-1C88, - U+20B4, - U+2DE0-2DFF, - U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAACk4ABEAAAAAa1QAACjXAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoEmG6Y6HDQGYACBRAg+CYJzERAKgY50gYE3C4IWAAE2AiQDhBoEIAWDGgeJKgyDShtRYgfYNo2eB90BkLTxSiOianXuIxG2WZIaT/D/f0ZyQ4ZIC9RWe/UfIs5EIiFUbBwOVbPC0TiRqLPotRpWlS99bN/P8UDRL60ByYQP04bJ3zAVi9cwDSkidKj4rDCJBiT5ktqYVLj0hp8xxYQyk4jQgsOKyl2dGpUQURBten0bwkrYQW+QYwf7RqahVJjRB6sNC8X+0+h488Iik+ce3HRR3d7JGdg28ic5eXn4fu7z3JcsAdtta4FQEntyX3dqWVj2KNyqskQFmJ9/N/1zbkIwrxgpLdRpGupUsIrho6qMVHQrvA061d8n/i0mn2Y6QNtsP0WYxyoMpBSDHoqghKRICX2HSB5TwOO9Nbro37uI9r9lrSzqI1fpIlMoHbJj7xcKK0uUROX57w/aefc+2Vlf3oSzIAk42mmaZiIMIYutfzitHBXLlizJkkuTvS673nJt9/Zrx3nA7gE7AFMq+4Nh9yi0dBgUeo/TAUsA+2Fu1DItP/9W6XW8EYGJCYKCAeCHOt87Wf5t30lJeUPwB+oGPJNshVVAiFd7LtCGOALvQDxff48ewA0HPAvRTIQjT+AlagFpClS94zvVdvw3gABge/i+zpJoSFOve/5ceIsv6BbAP/+8v7v2YP5QShBSOYdr29cNsmWTJCES0odCJmZor4qY3e/gP7n97XbLowTT8AQjj+G9Uy8CEMaGrIDnhZT8P1PNdv8fLADSiaPwKDvD6xiKhhfD6+3cNIO/wx0uZhcjEaTeAWsoZBLk8UAq8s7vERhQIgHKIcfK3cVAXYihc0ztdS79rqiuclE0IRV1ZYJqOGnlF1QXTjIomIOuGCRdpXgmLsJGRrgYUbpQsTXSBrxgStuDRQ1f6v7Y+/7Afra95129lCrFXIwxRqSph33213wfdpzak6vDhYwZSAD1Q83tr7LRdBOTlmAwUND/UwqgFoAkW4ECqFAhVMQKlSqFKlVDNWogOztUpw5q0gS1aYOcXJBHJ9StG+rVD/kEobAwtM8+aNgwNGUaWrQIxcSguDi0YRNKSkKHpCAEqkVsoVe+9keg7RHfEID/HD4fB+u3f2sFctCA4tBQvr6kLzpQPvmxUbc4U4AAUX8TQYCs/sZlHAVScRQNKu8bs85/VsAotIQYEkFgQsksaj3aj4mb21EpZUDABxGem+jBvGdfb1HW/U7p/ZlBinmfJq7PIJU989OWG1Fku7XGIWCsBUtSoJ2Sq6epOZAlsqOXBuq4h1cOFasW3zaqQAE9xQj9tbZkJyZmmjyPxqiLLLfh0y+oJgT9hsgdTHF0mb8Btt352yEp9i+1O1gwIR0XEUZyCbg7brBPQzkmdpp68AUtKLFiSK285ktxT0BTjMqQ2wXFa3IQP/ZpyEbBDpv9jQS64m/bFejw5/TrvxQV8g3VZcafxOhVpWzSmu6VHwCMd91oGkBjSoAMhvz+RDZEmueNAs9Dbd4k5Orp9+UXkaHEuX4LMZgtcitDZsjfhcUY9AnGsDgMKv/ZA7voZRKzmd+CdbbM3bTf+BvXiIEhZws2N7ojGT2s3omWKdYY+q5O9H9zUFWWKjiDVWDJxItvAqJ2aa/f6x/tWvdn6cE3dwTeP4YhXVZ9fO2lvNz8IPX88uNvIsbhPwtJ6ZweodDN4EYv4aRU1QsLiZhkDSWlIhs9UjYb9hi6Lja0IDqi0lTSJhKp565YM0oWqjZyi+5N9HAlesuPqIf0lUTmCxBDi0K6Tr1CsVu/mloMCkaHsXO7iHfNAUm7vEl71AAqMi4ERg4RVNuqYDBTLwy6ECllFD9+joaLz3lE0L+Ph+kTJS+mlNRmV/w3XP93Ndr9DXcyOoL1evHXHFjQcCqcEXmz+aOU1eqFZ29xDR+W1iiV7FWZqom+GkiIQopQvQx+lFYGNUd9wxO9AlXAgmoaNWpo1Wqj49Ihv7bgZv3lIn7gxYLcInLdrQYNKTFiTJkJ0yrNWsTZT1BnVV6+0Y5drTf8MJc9ezxQgTkmahYWGjlysSxGEwdywFrWElU8mgVqykBWzYwBzRvXA72MgFeCuNWclZxCBhlQ0UAVpyMaTUeNSj8uoleEp8mBz1qhMldLJ5+qtpySnPz1TWaJydFnJcKQIwjG4YS4BjLQJERvGUk1kRKHcQW4pg2UtHQyAZoBaCHL20FcZ7Wh1fomzAFEGtJXpaQpWZIUQnUDLQBvZliaAaAR4JLaiMSj8or9Fxw8esqeCiKiV6Ebf6/lYELRb9Uad8UxKJjNtkOA39sPr6kT7isnkzBSC2qCDFYeitBz4x9/0tpwaBaokTIQfBj2xNsUf4xQtdsPBGHJdq56wrZQLkIaLSiJglKjm+ILjbR/IE8AYD8eopZTuwvPxy+6tsMLN0XAqQKvFuN0VeXFikarKpW60+b94eiQ8w+mNhHXfwYj3CeMivpEqfTH1EWyklmlJPq+RgrV29h4vum2qnDKmd3DKoM52Zw1xvXYZhSi+QtVJP0frhS1iy+ZUjm8aeXny3RKzNHYINVATYRsQEXIFTvarhaNzXjTym3iOFjeU35PbqSsbVeRGqvewpEo60Kgn+dRewlwt1zf2Xv3fPvaryxQv1V+tYp2BU+SVubosL4BtbasFV2Ns4rH4/FgHUpoADN35dbBhQ2HZ9fOyScgJGzGkphlK7YkJKWkVVejjkBGLafB+JIMxAEaQIMktQYZDP2ashouUOH62mYqoKtxi9UKmnGNYjbmiExHHZWeUgKyHLQhKNilVQCETcJBbY7Qs3EZjsvxXMHOldo5zclFfJwR4GIhLhHmUjNcbYnrxbjGMtda4SpbHCW4TpITqfuWgqJoYHwV2Zce7I+dVE+d5VtZa635t9+7I62ZGWNKo5sv5+j8PMNmakKrdC1XjrPX3+5353m5/ehnuB2yMsl5US4eXt18/AKC0saT1yROEDhZs/5Hu946YElsaknw21/MTIprSuZubDRbOiaKKYQyJ+5TKkZBGdmVOYsfBajWJ8/mQHVMgfmbrcp1+J4Dw1Ym9Ipbof7oaXy/NI1V40GKcNmPJGepUY0OnZFxgdhzpbhoidQSbUx/X2qZMF6VDiJgErSxT2PIJC4m6K1gq9iujYTSIZnDmEuz2Asl7+DAqk2ZAwjhLisngkWAHQEYLuPphqNYmiin7jLzkaPkE0fSylEIl4EMRJJF6A+cKdzDAQVcc765NHDXBO/hZAjZvSfSJJZG7aFUpqNk4wYfJnTIMM4tIKAwlEkSk9RRtneH7m2IH/yLxxL9VEjiR8ExLVNifmqrcGP+heND61t3MTQcvy0NYoU4AMGpBJq8pMoo4DJzz3bmMHzMDdzD7Cxdd/0SpyvnkjLU9P/xjeAk33grEghAvIZxvYok2QhQ8yA9HggQQI7ITNqMozw5qklrmu1hyEshIXlZKjIRZ6/DqGQv78lN5E6ynopfAofPfF11iVqOHYl3FMUmFDaD84UCnRTlWVfbCbqmwCFwumzbz+oEZVCtUPIfaKyA5bg5AME/yJCLTfvmVxiQSgGBDe4/gThsYBpBqinPylKGZCAFUAmAdS8D7DjB0K2KIncqF6PlDm8BUmV6CgwiQAIyoBUFgVa0O4B2GhQGqMOuOl9Y/07u5d36lJ8D/WcFdONyG9hLm/hWacXrfzJ4fy9bZ/Mbd8OGNXrTuvWSak2krdm6nPUBB+3ZsW3XNf+anFgxYUbtps5bsGruj4q/Z/utm5SwJNOAiLBWfqM6CfrwSp3TZs6yUaC2EFDEOkycx6RKivSUIn2keAxm39ppxkk3gFsRzYXa8d10wEvoACkpeJjtgAmJpAorE/iK2Q4kaQdcTGa2A5WQ1AlqUltAKkRqYVt64BZWTar3wwl6cvMTZxBqGWaTEhAGw9ddIyA54YSy7k0LQVAZsx1oOEaLktBhUgSIRfJb+Hn6JFGi08VSSxNoBhNpb1bCqYSyyGSSKvHEBhBFUiZD0LJhEOd9dXx4CHYQr2IWB5EEbMBqA85tEwy3nPGuo5ITaduS21IEtZ+oHZ44Hy2C+7jUDsBTqUnVjh+Yhgx8IIWsRuxFPz8oiwwpme0gTXRWUKWk4pAwKYH75pGU0RAVXR6AEiBagRKoqgc1D0BsB7ETTPwgACSIdBi+LUFBFTCIvgwXXYHLSNHlu+r67KJrrUZBBykJ5hiKLl3cGG6r1tnFpP5XPQ1Aswz1Ieex+9jSembYNaHW4yqTdaKPdBzQqUJMk9JMtmkeiiTQplLR02mvrRA91TFLj8yssDIYO1spM0WaSFhowZxCl32kZ4K4vZscDeKZ1pclSogz4wYUIpjTi0zEch50M5EII4dKa60nfrq/Qt/2bJMYtthNxxtAwTlHEc5/KB4LMwelTCihbSUyoyC6y37B/wUX/oc8joNu9EIBpJtI+e5PXWjEU9KNsU8k2L/RhEYxWbiEcM5DoQucG6zUiK4qikYQ3QWA5dQUVqyKp4ID1XDOJ7ApCMmEC5vJ1/cBoznwwtKCL/dWIuVayFfdpR/dwbu8zOmPSQuyaWf0K66z+/gDNBuSihdXRwa3X1rXTTWkYPEdqU9cSDUzDkHa+1CTYFNfH3cxKZB0ff+KDD6dTjdeyjdz/gL4kj9spdhazCVJ3Wt8kp2ThlNoY7ElQ93rd9woxKJsJBrCEoMtQQvtV134QfJAMn/nK+WfI/BpuFojg36R16XZypLpr9fCl6v+dB37fAaIrfk4qGiyldX+Pbp8XOqtHxN/J6vc86lv3nPduvEvMqoRg6tURQM1NBtISrXz85WCDJ6JeRO7QQ2s0fEvy//ptJU2iGyJ4gphoSLW8cxClNMiVE3SCDPm9bt0enJvL59Ok+T7bGAf/9cGkb5La1N3gdlezufqZxTkS+Pq6AM0XU9Q8PLiHa6HVUJgQ9gegbqQeOZvGWX+qZWtYHLtTVEekH9xFyG4p22StFzKCMVssUzg0doJRY6R9GzF5qsL2EfJPmvRTYYg5MQLNpU9XA0hDZt/outq4Tzq5ZqDeEsaE932JzH54V+qwzalvikrXbYaCqzA0CtBRk9RGZTAhMe34+EDq1N6LprZ6ifvgql/LQagUW6p1aatLffMwqI+bWJREmGB4BCms1B3yco7f7EOw6i7WVeqlad8E9IXoZSFsjgo27S/kCQLCI/1blhNU2wcUGrKxD72kWRbgDDVhvzwKeo0cDAk3sL4bVp8WUz2Mvx1Kf/2Cjh5fRfRMg7v5tzMslA0Exk22/OWtg4no4ee4Ko0tuJpcAj9cubJV7P8GZ48EhW9VxgmqSmsygrRJV7sOzKA7Ad/eC1Lsr0D/QojniZ5RTnxC/a9Iw+3A+HLuh+qfao08TjIIhY/5XRBWOU+rWhY14pNpXuf7VAR2jAzF502ZRi1rncvs95SrJwpfnwjcO6vOKByYJW2uIsQduPuhqE5lhZERsxEcbc63hqPbzYQAnakYr9fQUP6kZY10fshbQOGmnbFqwMZ8ucrZvRqkbXZKKAOvfJfA/5SaNlPKk/g4Tzz/w6VlvUY1DNfZ+ooVHvYUM43lvL8w/uisWA+lkHDrkgKlo6kqXgvLSEQZD7E7lbCVtHNTlBVGnf7YFnI6DfRzMvOjiwZ+tuqrFGLrDaPmjau/HeUGjwRGYXD0m32YHkj+FMGS/khTfHJouu5bU+VoB9MmGnyyCCmSVUwn3lPf5D5NPjU7S94X59/mSsSK5XMl5OYp89HH/L5R89M82XKB4BW/2X4l7J/6cdVmGvVXKHZYa00NhoQD4PDK2Utk1SUraoV6EPRWhBTCg1R82QMms6NqvtRbyQHAQJnXrmaCEskKFSwCxMYg6owVLgpwhSJtKLajzPhzE2z0NfVKRQZT3GxmiSwIDa3udCRL1Rn1/ILQ31Far2cIysMfjmGCDT/ZN9M6ZuDfZEuEmuWTIMpTzP6ZjylUK4+HteroBvBIXoDFjGKRCq5FDLzT4WdriMD4IN5YjUZlkhQeMHa8f27lUAChVIFqnZFwZ3zUxiwiAPTSz+0OBidO3kynm+wWM/riclBbmQIFRqRS6QvKxyq4BRsK/gxnfwC0AZ5BpX0sJrG5twiZ3Sf9rq6h0ujoSUL1APpapBOk0tLKyhFzE2EnNqlr+14o1ZK+69GNzg6YFfa1m4TtnakjNkxcmvXDuyEMXtTxu0NzcaGL8a+he8kc6QQSHDuzUHquIRGDKkRTJfsxYj2jnjcMdd+kovNGJh3dJS9o8QZ8FvyHf0SsrQK8q5ORlFm1WtZTr6t0XeYQaBT6ATGYU9b0cUCUsHFoja0Bvh2VXsCzJ+uq2lgKWuaqikGD6+vtkxsrkH8EX8NYpYaKyguPkU33q5wJA/AxsNsmP2fEXZ2Z4s4aBKliWjuVl8pcHu7e90ct6+7z6072PGJRaiCjdmcmnpfT0PdoNlUFtMpXHjLI40OxPAblw8CIbthBjUkZyQDae38JiUb0CCgjLGMrqIZIIjCC9ZO6T89BVwgz7qVoePEOLvvcUueVVAo+ymi3RWOJMMfRn0+/IX17xkU30H/VMQp+kTfUUcDwCbpToNGDzKFCkU5r7DrXzvUL+S1sSjaG1CWoHoEf6pRtdFQWCaSsVkMV0tnfX+f18YlV1cIanOioN2BOo7DfWFxZPr3A1NaB46/Dl+wTV+b0n19yvhL1lCxOVIFuaxWyFXlnh5vciQ5/vdGy5aUwcHFTvh/rHZ5Sr/pv+SuzCvOW5l7+TGJ/a6hafYbQWm1VIyIF1YvbMX0UJaKzM56vxYRxwMDW16TB9WuMeIQHJsACJy54mpSkzOSs1wODyupxGzpFf2p99Q6Ul9TOYan5JWz9JRSWY5HLCYHxCpnXgkklKlVMpWNCEVP+U7/4xMyYAcqNJWiQD0ec+soj1xZP5pKSLEQCIQsQg5hxcKWzuxLmRmZl7JnTZ9vwFqhO22IEAdK/yPNhJeMawNvB2fPmh2cdcvxnTxMmFbip4FlgvGtd6mpLi0nUgaVUHunyOeYTyInzXo+Kb2pJVAZJ6J1pVLvts6ffhkkoXwpUCwxX0GumOVJo+ALRXLtKWAM8qTqiuHqfI6gkoQnrS9oNIUKfs0BCM+L2bI8qaLsMsw31MP6iqF8IWbGL1zDaOdiAzb6pUdTqji2vUcQd+9RU2vAIifd9vm2PZQSqEyG3A/mpvJOX1CNF0IS8mOVfYX7CjI/HVQeyAZkaaBoVRMOadtcqUmP9jNsfKI00/JsBuy0ha+7P+82ARedkkqcemk7QGLqlChiwCInrp1AcMiVa1eQ4QbsT29weifaEG3Hr61QB9RKrpNYx09lB2gO6+S5cy2TnbQgO/UN8iaVHaQ5LdkLrJMdtMBiuxBjX5PsBdFcxKVXaD26AyLuAZ1Hezstt8hMfCE79WQ9PC33Ym1f38G4FdRSq83q3I0kGOd5vP+z/0UmeyYbsKXv2rq74JbUnG/B3af464gs+3Ua9PzXeflvOtcV2HyQ8dNdGy1BLaQeoDUnGt5j8NfpQ3oKrd6nv7w8DU1M3obgkNlho/OMPpflNPczwBUObGH9kSaSaqS8FWlW9nJYZi2H8sTqHF2//UVqV1651VPxn51+ZzlHLtZIe/yxGQDgeBMuFrmC4JATUaB+zIgA35FbriLCFdJ3gWC7lbgEYlklWLkrCj7uj7kFoOCYDk59o9bK8mdfepP/GYcc/Jo/uvALWVLZb30zLUHNJCdoTfaO/bDh1yP+8HB/91FZzAjQP7OKWJ/pe2947R3fwkMcqBAf1ApIykFuYKzx9J+O+g/hpV1Lw2/fj+V4HW5EH3BIxdtUb2FQ4tnTRYAx6uxO088SuJQmEw67EKOhtNjpFEIZrRSW5IvszFZjYEKXZ48EVlMPNqA3YlyUG5MnnYaDVPWbTMDSVL5Lr35noQtVVbwSgHNK3ghHJAt56cyjEr6RNklfMQUVmEaPCzk0et3fmJOhpTPz2VSDotRPQO0dsTnp81JUk4BVw5L3BmrHjwWUFm++UE/JK4GlwTb832rMyMHE2CExrCI/i0+9HeeirT2DBt6FflCPKZ7/jyRRx+3RIfz8wSGKTLl8F51us3f0Pt7KTAeqnRaMrfs4cOzEfvxJqawpDX3QV+4fR7z6PkcHxvlUVYyhNxRGpJKCiMHIRlVU13CXEReRrJRIJ8SUfLiYr3bNz6PLMx6Nz5XkzulUZBS1F+1KnXO8It+Onjd/EtwrLTG+eMu/aZiVGoA1tal50lH0hLGqUsdWp8ct6GyPx95ReuLo7pJk10xnJ++fvyP8IRzdb/8BzsT/7w8Ph2G5AL+kJEDvyeKwetJ/v+d9ixL+SICSHjn191470CTaPDdzhCLfPGB/3DP/vxDAeWrr7AqtkOvm52nHGn3zVm3funXVnnmBCVaK1iXgVUtU9tqoFwCccWDqsvXpK+e8285vHrB89fJmZQNTBxXMcLlQeMF2U8BmdyQQC9yL5o+HbHJBUFw1/ULHEowzFRxmC0RiXmYSzZg46kS8k6xcN/bKdjq+iFOEpzcZsM9mB2/faUNk2UC5q5QECj8A6V/a5pfPAJk7ZnJlIm065k/Tnz1EYp2cc6HQxL4ckC5+henIfmbzPu5F2+KX2ZlWO2nrqYXUNhqa+OYF5pxueGqXK6evIDm2oYvZ8rexqbopiW2wPOZuSRu6xfy4LswPxuLIiBebX0tng9s8OwiKYuafmw6lD+hBDq2sCbxSC0QipVz6g72DtDT8YYgDlQWA+Vz/lc73jTXmad18rlaocLoavvJ0B2Cg91ceV51TVS2hugQU7Xirc1tv+hl/wLeen+/jOI7m9/CXkLiV3fcm7Jb6AhqK3++LvOREdmJzCjjogY1zILvu7fmwd4VjxdPWST+WprSWTnjeSsf2oQ2FpzL2SiZPLQ07Hqnc5IGy4gnGSo2GoUyPy9/1V+r4DsxKNUCfGG+eOCEeGuHlNt+19wcbfMXE/ehB0NDTZzPhTz9l3+B+g/dRPs9v9Z6uhq9SkFzbPUzGj4+uIhDhIhh0vUjN0ZaDVDK0cBMev2mhF2xluXZUp8BPxVGOloeOUj7Pb/WOVvIfKYhjbtSlb190flOIOvqLem5QYdDAAXPqcVag3PEeLTVMxkRMyRRMxdRaC8E6u08vMiPTsQyWyTQsW+dEs8LBo698jOk99g07Eln7UVQah98jJWpcYnItDoX8WoUjhatlEp0XAC4h3Se/MO3aU1XdfOxE1NmPy6LuOByJgjSxhmUN6hmmHzxx31x3A0BqugZy+fkiF95/e8DkmSNJrSo8YNkHOPuF0k2npTCsaz69aYpCML8nYQDxP4kMkK4kKQrSYeu2Lb3UG4pLNi9TG86cy/nDuJtgCLJgimQKT6jj2xR3moWPjI8z9Vpw30KjxFX+C6nBk6/vBZ5d9046eTLvH3Za00Vd/tOn4kG86SHT5kYnTH8TXlDQJtt6A09hccs1gjg2cifOMUCvmnZpb9NdoAL8dD7QAt76Bbx4ANuzAPb+ggawFFIPaJ0/t97Bmxw6gimjsOKVSj5Av9dnEVIwzS977EC0tFeF1QhiSrUs1l9AT/vG5FcTvEN4g9/k1pT/V6EdIEx+qvjHuiQxBTMNzHeLHQRyAJ0+QI4ChHWiIMDKsTIlX1l/ZWgyXqaBTJg3amTTxp7ytZHKads/Rv8Z51u5Mj4gI0LYskc0OSKalCyUtEtjScai7qBFybRoU7agc8EX2eMKJfBMgNAX0PQaLbIeJnHsJ558OLgHMJrvd7p8ielItIjgqPUSg3EiKeR4yFxmR4yyV7IYYzwVVtbieERNhnLEkkLk9rP9tb4jx1mE+aHJIYe2vFoNlN8mY9/2ueYLsnwuH6+15lu+bUiLELvYdnol1UOytO1SDMYlALxZHDnP/MirZYliEAWGBk4HjrnqJoVFlPWrARmCYTAynsbQ6/U4pAuhvOcwDyUpXOi0C9gbGF549nUWAS4F7STe4MAhDEMo/baFHWccZjxjfQ3xDV3tbAK01rX9nMf1umxWcb5xDqA1axMVdXZOAUE1oqNBsNTbcpJCdGgQIKCk5mUUZFu1vMsPDiN1qf3IGEIYTCCJiEY8hCIOGiuXUOQtvBuAhREB12ueQc4hQAwthJ0cvUP2HP0TggeUYpJMRt08RBDmZkti0jdBlmJMQRLHHL0tYcXI+3JURk2ouNfWKhNtrFwPgiEyMTRkHIgO+dbgpvZIeGicq+OO95qUyRlIN5it/bB0OZcWuDl7/sVh6Q8GyA3kdgto492hdYekD6vWmIq06haIETc4hAbFGg6VDXnO4twZhx56jQqUbx7h8V/M+bzYSqWC1XGUvjt98nXYjUo1Frfs4LKTBZhIWZzJzvSj7ksA/4ChTZjYHZSUw/jA9zYAsuymkzVfp29bmOkw+oSRSjGZFgEgmMAU0z3mABAxCP3LkEVUZ4lnPG9h/8Jer8mRtQ/TDoX8vGqRNtYWUvTySSgPBA+pkn/jJ7ZfTx+GbuUcE2EpERjrvVyoX5n3iK14YiV5qzmT5e9iF9jg9s+iIT9wTb0pm3sLtXlp0SgPFrDwsV9qkVxZ/IIUCBUBXLJQ8UWexJiFD5ttEwdAaIFaLFd8F2Ia3ywX2ylSTQBmQImEypqkIMAzFtl1Z8mduOlWM520rTwhU2E9t57AG3NvMDyZe8JwmVrWbpSgXm8ndAN34bkk79spcqnBuLGTrsDEoCkArn7UxHLtdr+GJZtgp4/EbGfBEDvdMQtlWUpAQH/jrnAQ4hm+smTa6GDAbDflgnGF0ceMl7Mbn0Ys1+i4yk6e1+8U78Rj2FbJIfK+HCOMJKgB0/Lk7WrIQOgAdUSmwhbbxoxBHQXUMoBWagscc4BlHciEp2EO8jhx5FjVIwvJMdSudixMKxq0XyzXbhdmf6QxZa2Hub22JdfKhjOOA0pNNZTG9NVZ4DH7pnammGQeF4KISxZ4hktq9GkGuC4tdE/FEddr56+I+NBgg1Ueen8Awd+y+x74Fwyy/wnuhiuCsxaEKiPOnMDhUxwkJQQ6dGSSxNHGPGREQcCaPtcKa1yvb855VuYmOLYNZ964AFQmtXicXVKIEBG/htFY0nQsLV3iuvkpyy1VV6cqJ9MqPJBWUHax/WvKJRVhwvcCB/EW6W6WDiMlA8o/3dOJZd+97LiBf8esFFSAZTH0PpOkprAlJepGuVKlXkuZ8+xLo26jrZfQEtdwhUKhLw9QMIpg/7m6DeQZTqMNxpd9U++NxXuqaEqo/Ogb18tIEGU8QcYyhkG6uQnrAgiB2LdWRvB3Wp4QqQSSvgkIN8155hbzI4IditfaHhQ8YR5AyyvBti4EAPApEUARGl4AAD5CKkJyBACQ9SMEta3kJq86Ul0zYjcY2wli3nIeQwCwlI4BAaMuRYEyyjiALkZAmRn96h3NFzRwpSyms804pqA83qCgVg99RQoeDJKD+XXeJAZqgWEDBGUfCSSwMFm8VXOgADGCrFVCemgd0yYNHEg1Y/ayTQWpugKgvAp6yIz3g6+TX2RR6QpwvJ3b7jQK2dYlCHCtXBjgLbgVTOC67xp3qZ25ZSJvT7pV2nc7JL2HfWo/emnv68HNW0tSl1p7kCwECxk41pjh17BmK9jrE/ZOtJ3Tw+ZiTU3dLmhPQQfl3sSgB+cszaZ9xQ7WHf4OLvFrvbWVduACZJrRh6QPtT6cXC+AXrAmboeXUyuqpm7D71WnLrps9wCJIL6HEXY1roxem7nr3hzMhtr0K3fC5/wYP1YAZEupuBtgr2TDakhNP45IcuzYUDuCmBkM6W7E3N7LSsAQd8YWaGcZTZTd+iUt1iKh/XNd0JgF1EGhK6thW7+UtXeHQs9eJigWKFTUvHPwVWXypNIpx1Y2ppiNHTw2mriBDuL9fpVN+5kTWHYuQy649nQxce8Hsw09HSx/z7qFv+VYp09EGEfxgqzyACpyCLZSA08FhQ3fLBDSJ6oOyhlaehBa62NmAR4Qmoxm2th7N7DQ28S0xz+MDiYSzetJOfRVS6dEt/eltLfLWb8V2aSK1Ra/7v37XmgIj5+oIeAc35dINZWNRjLdLA3CFh/Bgiv2D7lq7D9i9h44dDc2copdplO0Ba3pUIi3lvCjNZ2HNVszDr7Jnj/Mpo7p7fTtZn5gqwEt0dCCXNdu7CNRLDmITVxdiEmvZVBsNUzolgGjY81A08bPaRae7JpV2bEplGMSE+nRCLU5ZR+kgadLF2Z/82qvU4NbqibFvqE2ab09V1Vgy80gHKPx9hXAv46HGmqoZXOTUdD9AEsZmr/b8uUIGW3j+B5hMEsFzKmwVe87fFwR4NCSlCwdMK5oAwg0Z5UYaZEcLohHvWsbd9UqNrS/5hC3HbFlPjuvK4uQE7YEa1YJq7c1+8g0ye4K/G1lDgXjMoBYElUwYHyECqa/VZyOYIuPFG4FzRqPoZosa9cZRhpmTz8UfEtOPYKK3o90ELnMFa7ax2hNMYXYvMxg/Hh9f1vSINq4RyLUGlpmKPIH/oUyH7DHdP5YQ08UxcpCClZeCiQQSaRiP5mdhigpNiKiHb0sAVOqSPCUFkzEiTa5kEiq0ttomaUllkWg+HKAXVTxX9jSulqmIG94aAuIMOltOmLfyPpVxaRImqSJS2LQ6eb4YCtt40T9owlIyZvMaW2u/PD+9NcALgGQ0+F3lT7DS9j4T3H30CGddGDCiPFxx70QeCbHTJM0SRMgaQLEyhM+wm1n5TEQBID4+Mv9/Hqj2z+S+jIA8Pv7ugIAf/4dnk26+P8/N9CngCoEIEAe/w/KViw54BNAuDm763EeC/Cp+1OdxpTO/+ipVDFS3pEWn1OrIgG++R4bHUMIRbopI1dFk9CQoGheEp0bNUYvtzbRvKAhm6KJKo1LVlKMqxWNlzqq+GJRmgbVqeeb+/mySpr6LFuhJEROonwGGsd7yNNzP2FyuggX4R2aj8zGrIwNY7iwskcFvjV8XV2VuRH8GebgiFRuWUkqldGA47mrovNX5V896UzrB8ozyEzL78K1taepsnm/pAcPx5scEMXJM7RdUEm1lG+gexr7zqpVsJHvZPSYp+7IKea+IZVLyqiTJeObNTLltLNtIwo+35Wg5p+o98uib0mTdFFzGv+iEQe7a05pwJ9dOpvXE86NiZFLEj0sVx51lWTbcmXVIueYIWf84idpp927HoGSCLEFIghQDRICcghUWkDBvArY723fi1Gpu15MqNz6Ykq9lbl06ItFMgy9mFGsNlRdR8AxW5Bb06y6ftOsDTEebjFus/lACmxWbVhUza9Tvx5uAwIE8w4Km7ZiU5UB8+bEbFsWNW8D5pxWrWDZ2fBO7Gg/fZYDEkLhIpkQTNuACGINez0oO9Vj1ZpdWnqRrmgvz+PUaAzAtIfir7/GhuUiELCRBA0bwsO83kkS21Tgh1R8GnDzv20JiEgoXp269RsQEhY1akwxC6tSFSpV4fDs6jVwDBW5h6Gl0nTDtGzH9WycpFlelFXtmnbW9cM4X0zL1XpzcHh0fLLdne6vXb9x89btO3fv3X/w8NFjMnIKSipqlTSqaOnoGRhVMzGzsLKxc3ACQVxquNXy8PLxCwiChQxTpz7mzlGERUQ1QGrUj9kK2O6pLZVnKfD7P6xGwjDEkpAVVdMN07KddFsBsSRkRdV0w7RsJ90QDiIiIiIiIiJiZmZmZmZmZo6cLrpZZ1wStqUb6UxmvOwqqhY2aU7AlQAAAA3SAAAAOyYCs5/MjL6UsecvHMTX/BNgg2qC92TTj+2t+dbDeoiFR+q50WT/kwcIZjwEqZCZCfpqpPr4f+zKFcqkAipn/mi04pXIo/U/PA51c7ApYhx+mXCrV85bFI8GFUy0eos2qlezMtm6FunUpEqeXTNa8CxyOYn5ufq2iJ6QrNrMekuqV4tqZgZuyqwY0VmPAt6SO2PdkHZWXRRKsTf7IeMtpWE9mpTJ1VOVxr1e9RAtMfHML8jhGidPTDO85K25kbOmqVzm7E7JrFysrg5jQ6rqAdGOVTdsArLjwVHXAA==) format("woff2"); - unicode-range: - U+0301, - U+0400-045F, - U+0490-0491, - U+04B0-04B1, - U+2116; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0102-0103, - U+0110-0111, - U+0128-0129, - U+0168-0169, - U+01A0-01A1, - U+01AF-01B0, - U+1EA0-1EF9, - U+20AB; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0100-024F, - U+0259, - U+1E00-1EFF, - U+2020, - U+20A0-20AB, - U+20AD-20CF, - U+2113, - U+2C60-2C7F, - U+A720-A7FF; -} -@font-face { - font-family: "IBM Plex Sans"; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0000-00FF, - U+0131, - U+0152-0153, - U+02BB-02BC, - U+02C6, - U+02DA, - U+02DC, - U+2000-206F, - U+2074, - U+20AC, - U+2122, - U+2191, - U+2193, - U+2212, - U+2215, - U+FEFF, - U+FFFD; -} -@font-face { - font-family: "Inconsolata"; - font-style: normal; - font-weight: 400; - font-stretch: 100%; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0102-0103, - U+0110-0111, - U+0128-0129, - U+0168-0169, - U+01A0-01A1, - U+01AF-01B0, - U+1EA0-1EF9, - U+20AB; -} -@font-face { - font-family: "Inconsolata"; - font-style: normal; - font-weight: 400; - font-stretch: 100%; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0100-024F, - U+0259, - U+1E00-1EFF, - U+2020, - U+20A0-20AB, - U+20AD-20CF, - U+2113, - U+2C60-2C7F, - U+A720-A7FF; -} -@font-face { - font-family: "Inconsolata"; - font-style: normal; - font-weight: 400; - font-stretch: 100%; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0000-00FF, - U+0131, - U+0152-0153, - U+02BB-02BC, - U+02C6, - U+02DA, - U+02DC, - U+2000-206F, - U+2074, - U+20AC, - U+2122, - U+2191, - U+2193, - U+2212, - U+2215, - U+FEFF, - U+FFFD; -} -@font-face { - font-family: "Inconsolata"; - font-style: normal; - font-weight: 600; - font-stretch: 100%; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0102-0103, - U+0110-0111, - U+0128-0129, - U+0168-0169, - U+01A0-01A1, - U+01AF-01B0, - U+1EA0-1EF9, - U+20AB; -} -@font-face { - font-family: "Inconsolata"; - font-style: normal; - font-weight: 600; - font-stretch: 100%; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0100-024F, - U+0259, - U+1E00-1EFF, - U+2020, - U+20A0-20AB, - U+20AD-20CF, - U+2113, - U+2C60-2C7F, - U+A720-A7FF; -} -@font-face { - font-family: "Inconsolata"; - font-style: normal; - font-weight: 600; - font-stretch: 100%; - font-display: swap; - src: url(data:font/woff2;base64,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) format("woff2"); - unicode-range: - U+0000-00FF, - U+0131, - U+0152-0153, - U+02BB-02BC, - U+02C6, - U+02DA, - U+02DC, - U+2000-206F, - U+2074, - U+20AC, - U+2122, - U+2191, - U+2193, - U+2212, - U+2215, - U+FEFF, - U+FFFD; -} - -/* fakecss:/home/peter/projects/bibtex-tidy/src/ui/App.esbuild-svelte-fake-css */ -:root { - --dark1:#1c222aff; - --dark2:#222931ff; - --dark3:#283038ff; - --dark4:#2d363fff; - --dark5:#333d46ff; - --dark6:#39444dff; - --dark7:#3f4b54ff; - --dark8:#44515bff; - --dark9:#4a5862ff; - --dark10:#505f69ff; - --light1:#eaeaeaff; - --light2:#d9d7d7ff; - --light3:#c8c4c5ff; - --light4:#b8b2b2ff; - --light5:#a79fa0ff; - --light6:#968c8dff; - --red:#de3040; - --green:#05c46b; - --orange:#f9b653; - --pink:#f36eb7; - --light-blue:#71cafd; - --main-bg:var(--dark1); - --border-color:var(--dark6); - --hover-bg:var(--dark3); - --main-fg:var(--light2); - --header-fg:var(--light1); - --textfield-bg:var(--dark3); - --light-gray:var(--light3); - --dark-gray:var(--light6); - --mono-normal:400 14px "Inconsolata", monospace; - --mono-bold:600 14px "Inconsolata", monospace; - --sans-normal:300 14px "IBM Plex Sans", sans-serif; - --sans-h1:500 16px "IBM Plex Sans", sans-serif; - --sans-h2:500 14px "IBM Plex Sans", sans-serif; -} -* { - box-sizing: border-box; -} -html { - height: 100%; -} -body { - background: var(--main-bg); - color: var(--main-fg); - font: var(--sans-normal); - line-height: 1.5em; - margin: 0; - display: flex; - height: 100%; -} -button { - cursor: pointer; -} -input[type=number], -textarea { - background: var(--textfield-bg); - color: var(--header-fg); - border: 1px solid var(--border-color); - padding: 8px; - font: var(--sans-normal); - border-radius: 3px; - font-size: 15px; - min-height: 24px; -} -input[type=number] { - -moz-appearance: textfield; - margin-left: 8px; -} -input[type=number]::-webkit-inner-spin-button { - -webkit-appearance: none; -} -textarea { - margin-top: 4px; - line-height: 1.4em; -} -a { - color: inherit; -} -p:first-child { - margin-top: 0; -} -p:last-child { - margin-bottom: 0; -} -.btn { - background: var(--main-bg); - border: 1px solid var(--border-color); - border-radius: 3px; - color: var(--header-fg); - font: var(--sans-normal); - display: inline-block; - margin-right: 6px; - padding: 5px 12px; - text-decoration: none; -} +#copy.svelte-1ha11jr.svelte-1ha11jr{position:absolute;top:12px;right:12px;font-weight:700;font-size:15px;z-index:100;display:flex;align-items:center;justify-content:flex-start;padding:8px 8px 8px 12px;transition:width .5s ease;width:40px}#copy.svelte-1ha11jr.svelte-1ha11jr:after{content:"Copy";overflow:hidden;white-space:nowrap;text-indent:6px}#copy.svelte-1ha11jr.svelte-1ha11jr:hover{width:90px}#copy.copied.svelte-1ha11jr.svelte-1ha11jr{width:110px}#copy.copied.svelte-1ha11jr.svelte-1ha11jr:after{content:"Copied!"}#copy.svelte-1ha11jr svg.svelte-1ha11jr{fill:currentColor;width:20px;flex-shrink:0}#editor.svelte-x4zh2g{flex-grow:1;position:relative;overflow:hidden}.cm-editor{color:var(--dark-gray);height:100%}.cm-editor .cm-scroller{font:var(--mono-normal);font-size:14px;line-height:1.3em;padding:12px 0}.cm-editor .cm-gutters{background:var(--main-bg);border-right:14px solid var(--main-bg);color:var(--light6);padding-left:12px}.cm-editor .cm-activeLineGutter{background:var(--main-bg);color:var(--light1)}.cm-editor .cm-gutters .cm-gutter{min-width:32px}.cm-editor .cm-selectionBackground{background:#283655!important}.cm-editor .cm-cursor{border-left:2px solid #ffffec}.cm-editor .cm-lintRange-error{background:none;border-bottom:2px solid var(--red)}details[open].svelte-ee92zc.svelte-ee92zc{padding-bottom:20px}details.svelte-ee92zc:not([open]) summary.svelte-ee92zc{padding-bottom:20px}summary.svelte-ee92zc.svelte-ee92zc{font:var(--sans-h2);margin:0 -20px;cursor:pointer;user-select:none;padding:20px 20px 12px;border-top:1px solid var(--border-color);display:flex;gap:8px;align-items:center}summary.svelte-ee92zc.svelte-ee92zc::-webkit-details-marker{display:none}summary.svelte-ee92zc.svelte-ee92zc::marker{content:none}summary.svelte-ee92zc.svelte-ee92zc:after{content:"\25ba";font-size:8px;color:#fff9}details[open].svelte-ee92zc summary.svelte-ee92zc:after{content:none}details[open].svelte-ee92zc summary.svelte-ee92zc:hover:after{content:"\25bc"}input.svelte-doypik{appearance:none;-webkit-appearance:none;background:transparent;margin:0;border:2px solid var(--light6);border-radius:3px;width:17px;height:17px;position:relative}input.svelte-doypik:checked{border-color:var(--light-blue);background:var(--light-blue)}input.svelte-doypik:checked:before,input.svelte-doypik:checked:after{content:"";position:absolute;background:var(--main-bg);width:2px}input.svelte-doypik:checked:before{height:11px;left:7px;top:1px;transform:rotate(45deg)}input.svelte-doypik:checked:after{height:5px;left:2px;top:5px;transform:rotate(-45deg)}label.svelte-a2tm3u{padding:8px 12px;margin:12px 0;border-radius:3px;display:flex;align-items:center;gap:16px;cursor:pointer}label.svelte-a2tm3u:hover{background:var(--hover-bg);box-shadow:0 0 0 1px var(--border-color)}label.svelte-a2tm3u:first-of-type{margin-top:4px}label.svelte-a2tm3u:last-child{margin-bottom:0}.suboptions.svelte-1gkj6ol{margin:0 0 28px 45px}.suboptions.svelte-1gkj6ol:last-child{margin-bottom:0}.suboptions.svelte-1gkj6ol textarea{resize:vertical;width:100%;height:100px}.suboptions.svelte-1gkj6ol input[type=number]{display:inline-block;width:62px}textarea.omit.svelte-1t0249j{height:50px}#cli.svelte-1xnx1c1.svelte-1xnx1c1{display:block;padding:8px;word-wrap:break-word}#cli.svelte-1xnx1c1 .opt-name.svelte-1xnx1c1{color:var(--green)}#cli.svelte-1xnx1c1 .opt-val.svelte-1xnx1c1{color:var(--orange)}input.svelte-qhlda7{appearance:none;-webkit-appearance:none;background:transparent;margin:0;border:2px solid var(--light6);border-radius:8.5px;width:17px;height:17px;position:relative;flex:0 0 17px}input.svelte-qhlda7:checked{border-color:var(--light-blue);background:transparent}input.svelte-qhlda7:checked:after{content:"";position:absolute;background:var(--light-blue);width:7px;height:7px;left:3px;top:3px;border-radius:10px}.container.svelte-176xcb{display:flex;gap:20px;margin-left:8px;align-items:center}svg.svelte-176xcb{flex:0 0 24px}circle.svelte-176xcb,line.svelte-176xcb{stroke:var(--red)}strong.svelte-yy7yvg{font:var(--sans-h2)}.container.svelte-yy7yvg{display:flex;gap:20px;margin-left:8px;align-items:center}svg.svelte-yy7yvg{flex:0 0 24px}circle.svelte-yy7yvg,line.svelte-yy7yvg{stroke:var(--green)}div.svelte-1pqmac{background:var(--dark2);border:1px solid var(--border-color);padding:12px;margin-bottom:20px;border-radius:8px}#sidebar.svelte-kvjsp8.svelte-kvjsp8{flex:0 0 400px;border-left:1px solid var(--border-color);display:flex;flex-direction:column;scrollbar-gutter:stable}#sidebar.svelte-kvjsp8 form.svelte-kvjsp8{flex:1 1 auto;padding:20px;overflow:auto}#sidebar.svelte-kvjsp8 h1.svelte-kvjsp8{font:var(--sans-h1);color:var(--header-fg);margin:0 0 16px;padding:0}.intro.svelte-kvjsp8.svelte-kvjsp8{margin-bottom:20px}#sidebar.svelte-kvjsp8 .run.svelte-kvjsp8{flex:0 0 auto;padding:20px;border-top:1px solid var(--border-color)}#sidebar.svelte-kvjsp8 #tidy.svelte-kvjsp8{background:var(--light-blue);border:0;color:var(--main-bg);font:var(--sans-h1);font-size:15px;height:36px;width:100%;border-radius:3px;position:relative}#sidebar.svelte-kvjsp8 #tidy[disabled].svelte-kvjsp8{background:var(--dark-gray);color:transparent;position:relative}#sidebar.svelte-kvjsp8 #tidy[disabled].svelte-kvjsp8:after{animation:svelte-kvjsp8-pulse .9s infinite linear;animation-delay:-.45s;background:#fff;border-radius:50%;content:"";height:20px;left:160px;position:absolute;top:8px;width:20px}#sidebar.svelte-kvjsp8 code{font-size:.9em;border:1px solid rgba(255,255,255,.2);background:rgba(0,0,0,.1);color:var(--light-gray);padding:1px 4px;border-radius:3px}@keyframes svelte-kvjsp8-pulse{0%{transform:translate(-80px) scale(0)}35%{transform:translate(-40px) scale(.85)}50%{transform:translate(0) scale(1)}65%{transform:translate(40px) scale(.85)}to{transform:translate(80px) scale(0)}}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAACgUABEAAAAAaVQAACe0AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoEmG6YuHDQGYACBRAg+CYJzERAKgYp4/H8LghYAATYCJAOEGgQgBYMUB4kqDINaGxdgB9g2jYgH3QEc9ZYriJEIYeMEwgOq7IhklBOf/f9/T24MEdkOltnXPygamYnUiCLTMBPECg4rNh+1yVR/iRx31A3JhMF0IXlilqwrFhVEHtFyJisx48BYoQddwu7Y+RySC4N43bcav5B1YBguYW+HEio7fJsKG+UwK1jXNnXc/+AbjyCF1m1NzsBJW3Bnh/8bngwVpzNYkLFCBg9yoBeik76bzcvrk8w31TkfcoTGPskleYC/33vu/VG1DJFKbk0LHz+kmY2k/P/vN+v3uffCwyyiPEhBOXmx7iKixAxSaYg54cWAMohO20YyVKdntNnM/f8/mPjsLwZom52ALrBiRmM0AoecHNUWtHqIAjrCqEUpOnHl9nPRDcvGRfW7ShgHTMvYHwLZda0s4JACGSVBElEiL/6Hbu+zTEPXfpOpKtQUledBAiQckYPe58R7TQNSqmB1GMGRj+F+0IsbnJfzqENqH5xX8gCcoId+ce/O59+McQlBi0I0op6MXKS0PrXW52vg6R7g7Z2dT3x7TDrgWZg74ZCFy5UPCZcI+V0AJZFO/D5dOito/mjNrw8RdEerk5wogNj62gB2JgRB4dDzfP09en5AsuEKLEQ7LRa48KbAUS1QIna5s16Q578EAEFB73EeSXXDafD3NtOE9+0/xZJD+iHW3Ji4aAJcpShd9CHt2/V97f4FgW/mdtcy8OlOdvaAbNYlcxTCiqFzKsmE0IWwSpWizPRUpa+JirqJ/6Vqtnx/uQDPGZfQWgPHpuMJkNxeKBqHppE+/3CHBJd7AedEySHEKsEfDMkxFdWNO0/vcenShOadN19gS2209/60AhmOleO1uKK2iH7eerOslC2vvZ4rPQxhEBERkSBu/RmbfEMXVz93tyhdGMCeRKqgi6v6n1IAZQBRmWrViIcHqeFHLriAXFGL1KlDGjQgTZqQoCDSrh3p1IX06EMGDCBDRpAxk0hEBLnuOhITQ5YsI5s2kbg4kpBAklJIVhY5coIQKJqSJvb6RqbQvu8kVdSf5HoC/ruc3kU5AfwXwL8uzy5PAuyX9eSdDK0cCDD4kwgGUtWH9IcwYbklCDCa209ZutYDXkBSoNyi4Drn2HN9oXxThEf18H2UdVweqGAWJMGbKLRDoysXExggQaxiaQJh8M6hgtB3YZn2aiAzKQ6tAXaqD2UEwIBv3oiicRAakqT3yA6CpG64SPJjvKzvN1UIGuB6sAwW4e0QoNZASvlZAzEPdzq7zFDNGpyZJhmupLbGdo0FSFNaslRG8bWQM9x4sbYfpQgMUYW3dIfh1poYCmnJesKgnsNZh64CkGeSaWQ97hEKWSZa5GujQjnBLFuOg011P7jV4UBzzzAz8CUVTiSd92mwZ/DD71SqL1gPCCRTaPVeVbyUlt/cNnAaGziklaaPqxQBmOQ2zKAfoAe2l2UYYmnDsjZDPSmZSaAKfJzbR7jWqPxGQ6BBRUBc+A5axS4T57Sl7JzHFFOYrwONHoerUQNrcopUwhyapcqo+G8OCTQKaV9SMWaNLQvDT00IHycP1ICbRBm4kSDbhlMuPuDINiOtH+NDO0yvPvzKuS/STdJCr4gjZqUPgd4T6r+ZLU808MW2/8Ce/5RTpwGJoROLRZHGPcC+C8gpj9bX6RSzNsOrwoNl5Knjjk1nczqXvKVY4leHHhoBXVXW2i2LVijIDQyCWotZ5PBTQzRG2pzMjZwlfdxOZYZrqtFNHhuWyC2itTnUtDzR06Qx1H0b3WMVV9UmS4KtIiYaXG+EuxGTckjAYTdMqcKPI+GLmSmFxESbJrMCwdz9OpkDx4GVSVusfGJu1V/e1CCkcntjJ6DCy3/qzF3w7JWQyUJBg7OhlNKTSp2l+hxyI+aGTOUmMFrmAR2nalfBrlq204xp2zVq59ClV9XpBPUasWuMJ3rOJPWZWnO/e0SdN2PORQuWXbFqk2KbqskedHjNTXe0rfuxLmfO9CDV1rhZ+fjYlKsg82XOGpSD37bT2PIFH+I8Q+mCvbQAqmCs6Afkk7RzZSOTYgbNXAoZevoSBj4yzLSGUw0Fowzq8mgeqEMVnqiFzIyMPbqtkhiJ2hpaRgwTwkAqgRRUl9ApJnqMubRETbCqNWZ2DiWAJoAWQ9oFo9K468CdVU0n0HBgJvX0OCQqtFUrgR1Am1xnFgPUAQvqYKnnISDt9C/7UFFITuvQ0PUcDKYceb4kljZWZt+xKsrky3YV2vsER1UCSGlyuAsUF/Evvk08aCkjG2P8t6j1qSEFFzXmBohXiwe4NrvkgJFpoAdPNpQXRoh1CNpzBDkjAdQUbKSsmOqrMW2nOH11BF3wYHXNss8UOOG4YhZkdaFHltw7PlnkCW/qPdi1NbtVEpn5lFrTEKkg7HnvLMnO6L9W6FrsdOKxHV8OaC3hHvz1lA2dunRAiT3z2TGXSU0CsLMjecIxg8bFi63QGLbbCKbRULChEybovQsaS3t++zyXJkpYcOKQwaf6xEEblJJnH5Oqx0xm9Cfryh/vE+XCc+S9hhatbFimwbUc9q3GCPaZVWAI9Y7YTLtpRwpUhplzT/xKqtBFfAwxROMdKk/+ujxBg0tu6iJW5nxrRDezOOxQGgtcAhT1GnToNGZCWMSKLXE7dqVlZJ04ddpiAt3UK6TZaBVz1kAAVGB5qCnm6nFeOHaQ87GaFuOF4mtVNzGDkgOLRaUqGPjIMBEHYKHQ8UGBOrMAQG0AhXKIcQpQA4Ua1VOTBmrWQYVOqjFGtSaoJEx1IlRvhVptUac4tdmhdrvUIk1JhjpkKXOyZzkyTYCVhmrYE74LvQTdymWchE5Gx6Ej0BGoftQbtgq1ADWW8VkqKtDjFblok0cNVZJMx70d58GM3gVm1//86Gua8seejfhzazivrnoKNdBY4000qaexuHcTqaq6+x1cqPN0qKLCeECVt77EW1GKQncWs8CWSUbiJAnnpXQbnJCImmk4AIUhBo0gw3Bm1ljsyI2p3rWAhCK16220aLXxtLuthM3MEuZxvL24hQSG1Fzt2FmsLb8ghFEyVE1UVDhFQ00ilcK26tlzZxHKoDdhIleTVXU9k2iuEknULmvU4V4Wd6ryujpK75hDp7k6U3W3BMRsblB4jdxZEFpSAZUhSwHSlDJxozznUwzbdqKkUY9robQRuhFxSgaRTXIipqHotawHCbK8TxLS202NWGk0iVtUUc84beY26ZPO1evABVVYkYwgQQMvQVmqRED1GwNxYB89kDFzgmASKLXq7LkpXqaAd4pAvRMtrrS51C0R9mk+ssUXty8RvCaXySyLOxEhaoKBVyuAUWLqSQnAEqZAAky8GOWWtiA9btmlhBk1p61oW6IhGFFYDDPSmQ7mXC6485QWaAVFhw7dkDcLDMC4NrUaFhRbHjovLU176SnaRCRbjxkbRu5s3gUlrXol1EJoK+oWGAJpjLWWqJrlngSjJQogbOJJdgoIhDQgBQGp0PqNxMqNsrPrqyfVpNxXLoDdCBMxzwiFDA3EFzY4ffsjQFguLw1A7IJrGAerQCyAPADHz1FZJ8zfy1TQrggipwx9QMR+MBcDEaRAO45AOyEXdLPFaUFFdpSbVdSKcaETveJ1T3GB9KYFUReKmBDTRS45/r9W96eKUOyC70aknr9hwBC60+hT+9K7ad9y25mbbrjj8Bbk6F0LVlyt/LoNe9YuHt7T2w4sythSQrFHcV6dy1TDalS6n0+TOkGdoPxPYQqD0IYDaCNQjm/CFP/B+wvYmnnor6KvEz0Yy1PBLkLjDejxh4WredCWLPfGQzlaupoH28qDNjy/TevEt+S+HPf1haM1Mfle+d7BtXvlPnlreS0nfHPpMMf6vbFaOYdIxpvqU+nJdcYqdnXWY7Hmq3kIHESEjWEslLcrk23Jqf8/UaTZGsYs3D8RnYzmTkMVF7OEYhUej9ybe99vhPdtTyxmsLQgJUkexUvhghTTboy6DkMkEiKdbihi796jgTWe3GkYXnFvTezDE+Xx/uxGCb7ORB7YynNfb55OJ/Ijp6BVpOFXOEZjFV/ZQlfz0G8NR6K9oSzs1+/qKJFYOltGUBqQEMJ1u8n5P6UP4UV4s/wnBhAj0S8ikcDHCo59VOSFXD2LIq9ZeiEIbOLqJqMTZ5mhKvfRal3fRCDsB5aZpPKdu67ga0TWR9rgCyEOPnATqlAWOyFo3lgbkyQp0qRxdkuHLAl85LNQWCtTdWwnm7V5ovVSCEmdZN46y50dy9BY/5HqY/OIZqm5QjW9zupxZktbJCubMbNkoQuB8+LH1XbKy/crnfjHtRP2Qx+PQ3ErYkduYf6m85M295OA4hnvZ8yuOuIgRT5nrhbA/KHb94+tbCTIiqOtx6cfqIULLVqEB5tyF+2ZiKpy314nuen2SWW5FfZOeskP4laVewWYzy/lCjbgsvHlwGAIfj+fbH3R/mDHMpFaQHeoy8T3qQU/ags0qItrfqa9GuBLjeNksig8crQm4MxV8dV1Zk/rZG+jx9edh89fsTcfqjSVu0BnTu+ufWnYTXGSFSfSSCFxmwt/tUNaGnWZ05ydshLw+NI92NKT9GrXb9qHo5KOg9v7Sv0+rDh/G4WY4KpwhfHrpslzjdPZed732ZRkact1eG5pMFmTOhtgwSaEJBhM9w2mQqmz/wOurUO8hu3AOEnT7BbgRuCRlMoj4lpIhfuLWBB0CnfCxak6YxnnxNEBfNI6kTojYnEucfyQUiWXSJ7mxzzvGzAhsikbDmy4Ds24/X4qc5CfbfrINybfZfYYuAfjecfUk1pICEmsRDgJZEJaDuiXUyfaq4Gj1ESSLlaKEsPBSXBTIZT5jfknMC9r/y4aeaX1B87AqqDvSYcGg7aaK9StgJU8FAkhNSYIi3BdB33xN51k9bcqTPzYEJFSUyIrCWz2qo6ZkPhVHkzfK8KTTBEvOgSRU24wkkXhFiPCO+EuBUOf6bIXBJQ3X9Z3WUuwUk5ZXSFhw8Xdt6psJhRfsSS1kv/uvAlROquB2fL1Bd+aB8PlNGY922xnB7SCkhTYDM29UbVINpOwpK+j/AIMYfyL61lnjav63CLg2lA5lVkS+tcrAjSlOCteIl8uS0v3HI0Ji3itSDAdyozKFupqrC/TRlZ2lnmESCPyhUxk+kJxBIWfMYffxpO5IAJBPuY1If3CHQdFjcaKQjrPZGJm6hMbRMWTrOrWirANMw11xa8L65b8KPYkWSQLrevl4tDyhhpYybxHHYGsgGkljtFsSIoozUauIzzdWNf92/XhvtWrZOh1oEGHXSmWBQ2sJVC2kzas3ylqsRt33vfMxHfbuQEPP1Qhuny5ml5LcGrVzdamRf115dw7DkNZxeoep5Nm92aF/9oH4zp8qGzgrB31AASlOz6/KL8QMGduLoHUFoWCCo4Zkqsx4TaK9UEINEkbpXtXMHWzcnO2rOgreRCscTpjDn+NJ1NuX1dy7MxtFyLFDxoHhRq3HhoDaFdTQ8Xp+CDIPqopvK1fTLErBbcQGTq1xzChY2O2yXR2Ege1HuuvkrIbMLWuX0gnIdhRSnWbCQTp759EuMptYXPwldg5cg9oc0Z/kpRk9SnCfqYdjJ/3MWEiDR9LAgmzG7AdmeiCfh1oA54rklWQWcZjvur7YDYBO1NOLDf2MhYKTabXb4w9ym49oM57F5P77hfNbtkiX5nvJdjM2jB1flP19PsK8P7K378bl1m/vB/0c3GJvYedfzD+clSg5+DCOliqLhJyK4sbhsPt44mcdAGtQAXxy3Sl0hweIRAXq+sxRehGFnLxGUOy/jr8sZbkFJuteYpFoKbpv4czM4hFUoNUKJUaikBBVtnCTgTmBGGJssR8boyBwYjRw/6R4oi5xbg8VgxCiRwTnhrK3nonpTG9ZuHIGo7oZZJzayg71ZM2MDWEPXVS88jJwYn+g/0Tg6ffZM5kCIA6EDfUkqJNpxOUHsc91+YmCsQSpYkQN9bAYMTqITLhHHCgB8PMEhMkKm05s0xVIdnMjoO4IRk6vZBANTRMsdl4tgaqhCBGR0DnPhQqq+RCuf+HVRjDHGcOPx9paSvueI/lLOTmTP8pSSFSP+ak+Y54BDezozIRt/rqxySmNOOYLI+dCub1ZWYNNdkLseIQXVhZLI846LHnL6f3EnrWJebun05PziM3UYtuVk9z57/773BYSj5Bhe8+6AsvOobRlEpupUluwd8chd8d0TZMZ8vgYSuOABmCyHFJV6sTMc3/04xNyxgieMaMSk3f9YDB4uYlkVlcxgNSH3QAn4w/APUtLsJ2Tt21Y/tUR6eiuTiW622aY7P1dVM6izvqJuj5Wr7VO0YwQs4xOOeByEBJkyQIAeuiBe1C2AnT2mm+lzEMQo2qhjBwdSXTHBjthlEl1hX7sEYOMqkUBkMiPvUJZHTXYvo3pBqYuman7N5EtM9W7MxvQrDdc/fs2MHtddvn7t2+PWsXSChJgDixVXQN3deA2CWJBII0UQpOcnGkCRyDM7BcZyqjbOU3iKYbMJ1NwhPpnyB8Qx+JVSWZ9hNMBORJVQU8pojK9rm3GlSqFWXHcjfLwghF1ryEI2dVmQyJismiF0JM73uboXKdsHKUWQ512WH7G9AfpJGFJ0moU428F/qHKsGhZNQRP++xvJq4vY6nLJOlNvR0JyR09zSkypRluZfrnPxqE9p8zSkwGtDGx2YSdNk5WSCTQACZWTnZOtV0fCD+nNbEymIVQ8ULsxY60AP4jXRZubFCBDGKOBJmpI91O8q0XAsEkVOCJcsSKcJoc9nwiJXUGj1B4DkHCy3yVoTi0pjB1RghHxsmwsbWKWPgGF0+R4b7JFZWyinlmoqCIqlKIh7/a5gR9/cWNgfO/X4aY28jxoaEhsahP+dkuJIicP+ydx/d9H/a5ITw+JHJ27fVIe58gocrCFVRklIWG+fwXNJDYM/WHnDawUXXaywpC/uqOqiFa9Z2fcJ8MawW9lIJ+Kx61Wbjfei+UbW5PgtPoAp7Vxu+YD51rS1cQyVQgp+dLz1i/AR9MpYeOf8smPL6BVYSIx1ephalk9kCYrp/5oM8C95I7EvxTb5Pp3DTlfVjNXmS8jIBgyj6iVG/AgrNMi3iphR41ghS2Xs1CCwAVEnvDjPofn3rjkFbQ3II1KrZ13O+YFCdv6pWUwlQ0OXXrSfrP0HzpczLnQHiQdWhWTwg+Pl1o9i7wVWy+8P7jDCcAnEX1uAwm3AFwLW3PH8sGZRSPzz3U+rq3HxR9yEA+mfUR6gecXeAPvdzBcWXLu4lrCXsdUE0ZT462pSuko6fOJHfoSrdFI32gDxOZ4+GTB+IhgSvBAORkadBhEhtijc6I7fG1V+LAehzXxevjuwQqBj3xxMWpNJLNIWy9dAq+CuDWZydcQBSg2nEnbjtQtUA7ezN0cAhllqzutUXewgnTy4qUiqEYqW86PrFXHJ7Oi69jTz7Zm30npxWpFKIRG/9Z45Aw1TqyRNvzrwIAdD9l3wLMVWQBIurnxvRP0g2qZeSuZnIxmaEJrC2TrHZOJtVUkqrfBXGycyTKqsl8+1Xv8NWpcajRx1/ggDot/YBjQcjKqpbJ3d0QA0jQSRDECbiTdHm52RuFQQ2eD7nXMEfYwqVsqIbwMlPZ4nmX3gWTJb/uTyb3J4ek95GHq13zAZL394tr7BWVVVYy8NCSTCND+HzaTz4Ll6ndzSDZDsMzRJmsfC3Vp2aZK84T5kTM4fy+VxJ0KzVmTckGN3TsO3r7T0YzKnE8HcwmDsk+V7XQBuNSrN1DbznH5ILwkfvPespDGbPbdtXGITCnr/rDbGJqCJbb8i752HQ63CsLEXV7OhH8BxpBZ8bRJXz5fWgubCIxwykFDPFXGn20HtPh1IVlsYqqUQku4dBD71tTs6OE1/TRGn1jvwvni0cMpX8A535X7xaeL6p+B/ZHwkwrXfRQO/QIdkg/N+nG7lPMaiZP+f9gkEo5Nvg9aG9Inh+F68mkTfE4j3HdGiSE7YHTbX4LIpowImUAW1RyQq941WxeRvtsHgWSZ9i8IpjbWvIqsEkm3rr6P/GPBuZwtJ0wGk8a4ZYkmyi01LMYslSjpdaBpeloq5SzDR6imm2QM/tNFAevy5WnEpPjRXNqwaBU0mKXBRFxeugAinttq3Zj9zq2CvO58nuxXiem/Ihtg9rHXscPm6o0CDWMzXwx+BQvSMRZl9Wcz4ptw50HqJixrNe7ToC/ol7rszrxceJzx8KHKfoeFhXd4IX61NyuaS7xlCxHXUTqnkI2+Qdy20pVtk7r5x2zQh5jOCPVcsXVz+m5UdVK7Hjp23ArFvWUWVbgVk2dW2nffrO3bu5RhdobOq2aWzeNG42W4cCtrrO8II90WWkXlVqdcbyQCcM7rKj7/4nJH/P0OgbMI1NxJNgceDRiNurh3TIwxVkBWPrUlNsNnLqhJqA5jJWBklWcodB/bn9vlJyZGRhUPMYLaz2Sw0z7fN+rgPtk0m2Yzrx5oTaz7yeBc/+V6SU2QTpyDdeb4JuFcYJY9fz6rxLme1Z7QfcUBOY0Y3J6m4G8w642za3LYRa0Gs82NyANT2gpmi28noRW8KMjO5kGkHdUHCgoEEoW4lDyUgaY5nekT+Hcp5sh1lSLD9NdTyg8VDKiwpSg8WeElXwrX9igoZq063REne3XGetquLB5WH2f1p8UvjgzySYrjyNLt8sbXoHzLFw4NR7Z3OadRU6S/kQtoUNH+zXgEPBQzQ2fC91J/C2OmdT/xLuuUr0mSXupyVZ6TtqLfWWWS6n89Ycispdn+iLl4gnGhC1hij3Pr/cda/Em/89z6yPam0dM3F4iVFMav7bdWYuW23DW8cegg8ZteoKUHHzdIb1NYcE+Q/2DwqJB41V0aGSk42RKmJVrITAI8+h1+ylYIaadDgQCPFKzv4ICPhxVnKEAIHvcXzQcSE4o4sLCU7yVunBOU5B6vfygyO8g2bNniki8LjXzEtHeQEcwBNkMBlITkEC935k4gZAxBJBPElIICnPqxF+60d4UpOCNKQlGen5pAKJj9+5tCde5959BZDbevI58QdJJXd0H6DiSeLiCkAQXaKA2+6iD0Tz6QfOKhx/8H9CAu7zELUn93X+OTFXFxYV/XQpayKadPESiATF789Fa14BAEADsCWslzoddXt+jxoAgMOF9B3lDRwReEvfAviTY/HTsAIFNfAauHI3BR5nGYAJAHIVe4wAqJo5AQOhnwnyOx+0jE83jyYSlGcUstHsFPLhgQoV4FDsKhkRwplz0UDyLQeg5Z1McCCBTwoU+wk2EVblfhPAK9T9AgeA/6yOdjtGAQ8h99mz1L3Ot6xb/TZaoZIt6p0c3wBd8b2mswVAQh1AvmQkWUdOzl7gll6cZm7XR7yEfXm4msKBtwDyj6/ICNkTRyAD1Tzeyg/2HIDQal3saa9XTkR9rpaLyMO8dMUCsZewoMel9j0UiP+swsIceto1wQ0BXSs44Dsvn9FeoMjjAtQk1EH2MhD7/oQ45L7rEBBNq5DnI8lLSz0kvNSEisvvDLZsf1xDybJNdhNbD2w8oE1WXrbz/8x7yrty5LF6ed5xLFPLgEI5zCldV40odAfKKT80oHqSyoxWB0N6nJUnxHDcaJWTUHc7yC6UppYMWLK8dcWw8EvY9rEZWWnV2t9SlpKo4PMnlKSJHAVzpa+kcsLRjJlIBsnelDupkhT4P9+xK33qcjvX+De7ilEfkxE+vFZ1VH0P5oKUqKVTaVhdgK2c6/KUwN0JydpEF/n0SmQtSC11NQnOgY6lz0IHIQ0SqRCJr+dOfEAZJfAhddP7f47Zxw46iCsmh8OCWnoDCIv2g8WKZB1awoRuUG3rd2cvm/x+czihuXONNnu1DUc7Sv4Sezi2P0/ay9deGdEDvGuuc9sDD4OxqX8oGmNv/Mhw1JUnUoSAxByGFXKaMyzK+56nvUYzO8lIH3RWrKKEiMfctb9xJGecnBAbMTlmBMdGhCxIRAwpIJ3G6JaUED4IRiud3uQmE+/at2X8mGZ6XI9xyEMG4vxURmqNYjeOFCjUVSwn3ukkZEXHkw65Bjuorh1UPJje9JslkGjF7tJaY5NpDcVX5npUgSOXrdEwxniH3cPF+lip2aS5O6PQYGBPZ4d0WVPSeKGpvIkSrUm6wn7JPy9IFUSiWxAhwu38xCHg7jYUEbq4BF3Fsrbr328rxiUeprHVUNadUdfudqY6+l9/mvY9JTN1lBcAuQm/Wka5YMKBT7l8Fri2PbZltk9tkQ/ujBYo/dVUL5gNh06FKqqkFf4fbEa4iXmJoSsoeTCvTPsfbEYBUhlj4V1sKa3v2OtABk5C5Sd/gxNtXF7Pt/rVfvdnWo01ncKbNOGqK7eBAMoZ/Z2GM2NjnsRqNimsCqTXp9asX/NTK+b1qr5v0YMmCVMY5ukI444rMmXVBMCKdP3nS4oAqObLpSw7LjSxX1n4lmWKKmEPAzsBrCaJbZ4IXAYL4XMeTZ5qW8v2HHO8jmNlHz7JiR6709Huo7S3uIdorb02ONoZZHOJo6N5wLh2PO+DMcd8Elmht6XMPFgLLtysqgwEzCSMBbBmVjEvdxq5KgR0NBYbubYso4ydrE0aRg2/e1UmfbCXyQkbI7Qj020opVS8UZCh1w1PzIw1k+pWNHQP1FDz/hUBA0PXYgsaEbEnfsSjoMbTC8UkoJ1Q8QffRMvCcNrqNAhCUo9fBUsgNJBw8mAnVxAvxHVvS4qUGEjHzZs04hHmAFJ6of51VsITIpfvuHdZcD0tleMkUwqyS2yuQj3ekhbBilUKC9EiNFARVyKt6/nnnJf1t51O72GjNoSgurumRSw2GwRQpMgqeDqWRnzY5GgyWbJ5vPz2QEHEXAJ4f3wsPJk7XsTPttycIFSoOZrOHSJEGGIQYSZL1jvN/vVaE2gqjyzW9X0oV0y06kl5C7tvyht5rDte44eL3cTTQp3pBcaCUv9stbPvwF6O31zrpEh0buIqeRslYrNpaJ4koAHX63M9Td1E+eHMqQQd1py7P1DL1EJTegA00qb7vrP1wbURfrMLmqrzi+wmNlo7Lll3HpUwUJrSUFhbBRepw4E1Jzdr7KEI9Zp31SKhshdkBvSSCgf4tijCJKnz9ZlFSx+WZ8+qyG/suxnCegyPXMhziCPuDce8dwc3vDQJUJZbeD+5pyyzYBFZPJKDU8b92qiNWw6DN0c1N/zvxxUQZoQLnRLTVrerXx+NF3ia8dp5MHHzzzTA97exjwWLRuv7kHSUH1PCt1yaOXw+0cdZNPnViWhqG8XEBX56aFhPznHRiPNFXoM712Ky93iJuYNFYp6P/W6+gFgVHUgZQTZMYmXT6WqePcL56LV4jH2eL+z3KaaA39iHS/sWjV9F1UEsZi4Yz4sCiqsnTCrj30qm1UxPOV0NWT95Mtjfk4IZ3wEk3OuP5xvzrrgiPK87aQAbrw/TPrvWpBy34QR+NewhmlBRedikodhzkCw/pJW64dONOFK5UKKoTMqLiiwi8swQ3sU5ulxn/XySk1w/vTicETbnUD1tue3MC0atj9idBhPYwMBZM8UD8DUxjlEsrv+A0FIGfPgfOrLn1RqF3Kxqaxy2FIlFfOzzvIXme8iv8QbwuYQQ4WlFqqJlXIASecfS00uWu2O7qNGiFq06avVt28cvPU577bBFwdkdqbDoqM56MCmPqOtjyAB5zPYtp++GYr4TEHIJUPnM6Q2b7q1v82cU+ovJwYAG2ZqcGq1Fx1gza8YEJRXkYX1UkA5mYYoIG2NEJUaoh5IcA6QFlBRcFgW8HRFNNBIhTEfuaaFUSCvjMmJrmIiotMw9ne2tkQA+fQuh9xC79Y0HevIO5osGyI8grFhdNYz5G7+epWValib0HiojIpqIaMRxKo86OmmXARJSlCzhq02ehidC0tQ5HtBYNMY+z+/Z71uUdzxnlLxmCzCLa1axZ79r3Jd4GigkjETWzo7+ZIt6huOGM+azXqftXEP83Clu2pEdR9edNw4M9NCN44yES9mJapZipbXWzzmccsiFVL4exw4ZaDSKosiTl3GFIWjhn1QbT526oIXmUU9/IPLJMqvS0pp/w0qnZ0E6I1WR9QDlqoh2naZaIU/G9UyJUcigOZ0aTM6Fn7oG8S/AP0NIxO3DyIZq96aoXyZKxwc20afmJf/QxdosYhGLmGWLaIHDgbocuRoVc507GrCrYrSkIZtJe/H2BwDKqifc3HP7jW7ZAcZaduD+896lbd/8kXjzr4AfARAAc+ezfLt/0ve/NuwnAHz9e28A8O3/sZ5T6zbnqQAwKAAgwI//X+CnIugngPg8vTvHLWQA8Ntyr9MrDh/9kC6xHPEvmX8NvKyBH4nRAS3dxya9x4QeomFNqGBtWGVmdDA6YGAHAQN1A4xrMY7LVcc7KLUpQDrZwawE4E9ZIhCFz2lp5GCZAIVlAFrakztsSPSmyb4DafQJSGZCzC8hIqxTL9QOV4B5GAJVhtKmHyDRXec5TtCNMSldFgyQeZifZ8VY4R6O9IgB3qJfQBr77foDKdChMdSGVfrmHAYGs1CHbwcymBgBVuQldLkLgEHsGAdZgi1GKdvIVlkJSjkTd7EXYJdqj0U7XwcY+LnlsoeouCrA6ksaEOAbr2l+dnGJCJGffhWw6uehfjQZWRpMd1GJHNlVVJHA1eGQwo5KMSJsXCKSUf8GdED211f+tAmhDYkO2NSgv6oipibVTAsqgSuieKEIfMB8z693PIHENMkGDQIUIWITCATyNnCU1gOufbtvQ/xebcNYPN6Ga6Q2FNfbaBSbbqPl1VjbohE8SqfQvma13pRVSfFcTRMNSG1rVcCepE21xvUZMajbqAmqdbdFLNuVctWIuE1sJdPWJSvOaM8uWYOA+p+Mlg+WvK03FgiPv+kG1bJkJVbYkheXl8fvsWffHcmMhO3XU9S5xqpjATUZP22ArItKJac8daSuC6yrN8PXuiaAAfwfu+zztk1ACAxcSJ8BI0aFRUybNeccH78LLrviKkUYwQmOOf4v6WCE4wuCSKKIJoZY4khCPAkkJRnJSUFKUpGaNKQl3RsAIAQjKIYTJEUzLMcLoiQrqqYbjCazxWqzO5wut8fr8wMgBCMohhMkRTMsxwsisUQqkyuUKrVGq9MbjCazxWqzOzLNVByny+3x1qL/F1fgTces17kd03IyJ9kd9IJiV8N0OF1uy+P15W9pq6qqqqqqqipJkiRJkqSIiIiIiIiISAeNXugNUqrX43Lnu1XF8JsOZ4OyDigBAAAs2QYAADuMhel/z0UL/NFQTzUv5/p/1wr/FXkVDON8I72+m/Rf8ndcg1hab9UWj0vzwKY3qnXYJr0JC76B9zbkwJwBjdwgv/kerJaNa3dFRWZaNtP63e2C0skU8R6SslDGZuo/ps8p4UQq7684N6HwoLQZXd81rSH9Uq1TceSVNLjE0xgWNCOdIa1qebkmXr1HnVmLxmU0I4NPWO7IjLsmMzK6QFbKzjCZkcnDMhaFXJy82GzLdcrTxZvsJNJmHvjDk2q8iX1F6F18nb4O3+OiTfjwdQaXlAhvYMNrxh4CKyLcDmTPY/9EWZE+hrznjykA) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAB+QABEAAAAAUnwAAB8vAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkwbkwIcNAZgAII8CD4JgnMREArzTOlOC4FWAAE2AiQDgxoEIAWDGgeHVQyDSht5SyXs2IsCGwdgPOsdjYq6vSgJiv8/IzkZQ4YeVJdl1SFmw6EJHcPTmQNtHCt0snCqj2B0uOGEWkfDBSlHlKAdd8hqAzdTQZZlfKLISzZUYqiuyDrwNZjY+BPL8UMvSPRKOz4if1Wwguu/33o8o5ggdos2iNy4zKfCYmnSMOG4033Gj4+fOQPbRr4mp14CaH98s7vvi3fXITfRyU5wV3S8eInJSOIbnrb574helYkgraQiIEKftIGkNeCc4jgE1GW4ynaR7bYfFY4hEzY5VAzNq5TKpmhOeHgQbrwRSGPofT4ltCxkJZMwrULytX7kZtVms3hl7fAET/M2CTZtAz4c6Gxs3ayc/nsnyWTX+gWRkgShzEjW6wUGEJvKNKU22NqxtRoq1HtRaeIhilgspybAHk0tZ7VdK+1qpX4rWbLldl3n+1b8n9I6QP+A5WDSD7A/wP6gnQ5YAlgATPiHudHT4URhQcRLIVwqvwBwC+B/mN6OM87lQYiAZFH58md7NbbJhHxN6qvvfufidS7hKwxOIfGmRMaFC3glClIEvk6t2I2/YDoXN0i3/5+qny3uGwy56QccSkuHxIPdXLnouDnWTk0BzIyGAgZDKHF/wHJDpsL5osKGTEGy+UVZTjEpOOVcO5epqNw5ly6K1ra5xAKdtokmRkHUK4/vzO3r3dF33VbCNg3BBhGRxV7n37WOWSnEc44+8lCcBb25rVzD+nN8Cl7dQih1QwJY/qsLgHIARBRZ6CBMTBAJCUihIhANA4iZGcTODuLmBgkKgoSEQCBAqSptcH2PHVVAc/9NxYD0+dMwHLA/3m1xkAYHkOfAEtWYasgBu5Y8psQ54TAAAyR/pzGAVPQT/xXQYLIjcEDB6LwCgw0GhLJibNQRmd/RFsmAcAr3Fb/NXxRIOaf9nxUWCGG0FR7+NdzAbDgRwLK5uaN2w/35IWF3zzcNrDbtRjlYOHxFfdwOZcu1gi19jDe69/PRaeaM2gWBIGuEsMN+rzGLWbvKA2yZpAU3gVTv5EIqhoK3ScL5ES4VJR1rAVNSN/pERkQ0S0qzDMtIu6BMAFDLaJ+TlqUXfTK32ORFQmJNypSps+hoLp2SRNWI6dxMvp9JUCPsgpiU16Glz4h2RUep1SzhSI50rcJM96iDIKs6oOgJhRtKlw0j3ydQpKKaRgo1ApS0qKpEzU5NtDlbuCm9JhXtE3GqddbYhjfkT//efYAhRU13VYLHUJ9QJ1AuZSo0kneSBeoFRLt39akjK2cw7Y29QS/tP4tBQm3hshalEckzWZUiT3SWK01Z7Uy2eUjJsPUQVhrJYEVKUKtJ3NTnJmuQ/H1SmtcmSHvVvYd6azuoL6eegWtkPefRw/LDBSa5X9Epogsl9rJSU8263bgA0cgw2OvOygTgS72E7blOuuWhwnNe0XndRxY+85lTX/rKFcjIs5LzkWM5I0LaD37GC60BI76CoWCPIqIoBYA90P0ZMCfsApO+T2BqvznSeYgCHG4Xp5wHdsPpCYQQKGE+oLJDvIokBJ4F3iP2EoWJwN4sZPLsT2kLNj5UwCflbT8Ctn8gJF3uLch/G/nfpkRbw/3FYvY0uM1Ux+jOaWAn9dyC7TvdVIC7jbLDvjO1+tvv3ixrLCeM6FayX6rObZyx2er7IC4zU2N8adM+RBYjzVQEE1DWfKDx4ewaYwa0rXE72JQ/nBqqe20ku4npWms2K9mQ/b59wsCUpnu2zCxkbe/LXqIGNq2QfSRwGZDkYFBQMjIJqm441TgR2FtsQ2R4eFKdDSa0WDCcD5TrM9UXkBIqsCpQ+3sCXjHAqxnFB0oQAUx1U0U58CAMD0vh4Sk9IpOHEfRwqicIIFIz7XUbAJ99B3whotkv3HLUZiKba4qbnVAH0r8MbysXC1uefMKSbGbhUsnHL1Ced42TU5CiLAa9BKugwXwiOk0BhrqGkVUiTinwskqWHexi1gyBgSSU7QuLYP4oWAi8UsWgLXnmuSAibMLA2wd5/xKcZp8yQkQQ34yhgYqRwAbBu4JrlRR6CPBli8dh/VJSlsXSeBqAfpxFebdxUvsN4IG4L/yAIdFPTJjO2RRALCtMBTHBJCAGQASAQftOOqQD6v/otLyxvIRCneUGnQOIxfEGoD6MDGmiLiwIHi40bzZGb6evRAV6tua63JZ78kAeydN5iRyISnxS4/6m+6twP/RULs6NuTv35+E8nhfIjEjEIAlph5eb/FuZTv7TySCyM/9PKqdjYAIrV6VJ3DizAYwlZZTDhMGCzYbLJU+ZfOWEKohUEvMqEKRQTalWsTpqQ2nYlWLh0cumk8WAzowpRAuWy4rDScCBz03CQ8ankJ9cQJEaKvVKDOJUxa1EmWqwGDsprrk0EKhqQHnePbQwCCGsQojFaPEGWnwFtGtA64uDPPLyUIMOXW3ax52ZFk4hw9b9owQgRPmTHH0pAZ4AFMefEkal41k51wJknb10t66k9+XuZLYIpa7XedhHLXJ4Rz/luu8q+xrViRs9gLYEEDJGgkjADfrSsG94T/9LoAb0fuL5VGfqZ6nq64QqM2X/azp3/trFAJqy7Yam+ftUNg4+zNKJoBpcpMH1fQV8ZN9hlxTsZ+mqqvUoH1vAX9HJIuDr0QDa2XiWA51NZwyeUVyVgQryzyiqjCQB0mChOVWZIYgBBIuEojd8nnsAFgO4D5gEFDUEStoD4QAQugP1nxsGABEG1NOxwSoVotAuCEzeCNCP25VKU4HQT4mOOOR8olOd5+UNjOVG9ej9y7LJOlWrPNWxIEGQ5v51pW7No2j5Fbp2EGWhT24MUZwpn+j2+jFp512kUynbIK4qPb510sFg596szIjWhMT9r4viIROyGQv4nB2HmuLMUSMQatPFub5YvRNIy8BQZq2AFBnUiVcw5nEsaARtOkgpNSPQR7Jx8TW9y+G4G1Ab/kxDKzeAbXD2m+12wWKopi2+WiD4FtQvHwWp2T8H1+1mP4YyjdiNTIdVGTDmcIcOWXgppfcrQ2UB9QJHITe5OM7GJh2vm2HE9thlnx0TRHdENuDwBqX6azLUNPHdi9V3KjTWFosICF7K67Cls5khHMUv9L0eSZC1m3ksd27iOYhzfNmryWGI7WFGX30l4hiizBWrnWDyzYBZnacPYPChRjTy+zZjKR9SzBGwPzyDaeWoQ3spHnfj5mZ17/idZctP7rDO+w0XesJEYrplW9DgegVlW1mLVArTuxqhILzelSeWoUhBjq5XECjC6zBGzPwwvckzWkibJLYQx8aSK3r3qUHdPpe/HajpMyUw9emgCaGDOZ4zMao8NafWRocxpQ4nPKH1MVKbQtpEMWR9ILbpxDJjdDhCw7M0rLXzenj250aQ9AysE3em7BQC66Jnmswmv8GhyZOlg/aOnmkC05oONiEsanLhttX79+/iNR5vX5CPLlhIjMUMl/MCSdrvhvIuOjIXgimv6XiaKIOgUJpXa5E7f8jDpyyvhobmmRL/8fVgXHohGD/WL2cKu0mMSZhlLv2xAp1RuwjPgKAPTeNjUxAmhloyYoxycc+8uPxjVz56MIiau7fCXe+NgMjdrY14oA04YoxMiQOn7RUC+j3Ohxh6uY6cyya2c9M5LodnBZr/brsMlGexbNzOYvsixVztRVO+egeNzBqv3a0UPovaebnjO7caeldl4Fbl8HbKsn7osLuwu99zc7LkOW54S86QwJPbDcY9vRXt4vJD2NLRFd7SUceeFeOUi/dc4a5qevfL8JHvI+yo40z10EH/fRv0sSyd92yF6+lrfD4H5VqwGv/3njrtjxRBwnj6OFuRNrYXloc0E6z1PDjFOKy9z3z9JMUrBtJ603YMMpfm7X0yNn78r//+odNW0myO7lS36rbggRn/vkyirPC6S10JJ1qXJ5YVCVdodKo1tQpHw/BaP74oMBiW6fPY9pok3Jf5SecQqsLHKoHpiEbDAQfO95NC6eUo4YxaOa+hjxp2GMR6XqT7Pqqw3Mr4FNsni/iLry6xLHN+ikrxZFORutzfFLKhJaPDA2b/njOwFm0YQpX7WSVwDqLRcMABLydHr1cYUBhNZr+5ryuGnx/jXGL0VXwW8kVnljbgz/SdyUIbJZkJPD3hp2jO4NVnWr8/Nb/8LSqowCOye+3ezvOI65IIEd1xIT5FTT2mvkZcMxQztMYeoZriQleQ3+H38ztcwbjQJNcyIlxD+mdD7OK4WF7MZ4Z0Lk+fBZNfDuO//X7cPnmXHLtTPu7nrTRopMrKM9szSvm9bXyLs315Jc2Z4BXQpONlbGPagRJjsImnEtnT6jP0nJ78Yodz7JLKXs7ktnT5H3I2nBlVm2pj0ifELxOQuS/zM4HYkMd21ZWymMgZ/SLO/iA28Az/329WmDmGfiJCmKC/9k7fn1/m95jLWiua6zhimVzcodEpg/jucyX2cIKQ/OX2RqbCzVHA6YGaZnF8zA5nm/dschikOoFEp7kfU1iK/Cy1bwMKnKiImeqSZIW6BFGreFu/fr3r9Kvq06naU+Rz/byd7+1ZXbRXsWrwQnGaA2/I4JjcBluY+4XIaJT4MgrNLSJXNa/D6x0CEziHMZvj+c7g2gHGJ8011CFWvD6Dw/k6iC8fFzXK9qsU47d/ycQFbeJmVaCQ2QtrmFfxCH1UoT4+bC9mYUAlbrYFccwvtyvGqwIaRjfXuKyiC+2quP5jcLsZmvc/Ul0RmRbWpWCOWFFKp9E3chPlDdz9WdTMnwtEepbWqHqLyJ1NiEMnlSvxHfskzhG+pU7i8G7yGFxJ/Ag5Qsq/QbUtX+BrjMwid5XbdwI9mPdCJrubcRsloZOdRHT/dM4fbzbw3PUB169vq9gHmTzmeXby4OTD0Ps9lxfR1J3+mHnHwxlvyvdqkCK2XjnsZfwaYsd5mlLPLkI0y+lvMmA8kvnxPJC1YOaFWPKTuCQpict/nNgFJvxHGrVyTPFxB/xXpUBptsoKqeLHhgTSrFkso+Tf08hd7EkO3ZSkonzEuAavxWG/iX/UsHwmR8R0GotCmUnPqfg8ygKseRJ1zbDOia977bRIfMO/A0ZN7CufhBNOifVO/lazu/W3ndzuv03Ar7ZQhVPHjJ10L/nQZS21i2DK6MpkZ7LOcypJuxyKphBkeEehgryw4H+hWPi/4MxXv1dHn/jY+pdwGfzOHfiiY3HZ4ldoc1rc8+6ZrF59t0B2L2MVStqb86f5B/BU+htTje76ctXMcxu/998qBbz/G8z3eeSbc8QOl/i6t78BxmBVOXlq5IDzU/QzVHTn4BuzZ1VNF0pCH9V4FladZhQGVHr060guTvbkpXm8//PI6meDR4J2W3uubY7lzkq+VCr0ZQSHM255pRmvDGhzuuX2FblttjZBF7p3xf5pgZ8fVXsXejpz6PZ/2RrD+hvT/zd7VlV3oav/D3e9d7zWw/cP0QP+zyMdTqLza/nkYWXg8wNo15MudNzb8PpeJWw2UwCln7oj/AnIYiW+4YIviMFeQ+e2aLKR4rfyO3FFzNEAb0tzvlptU9d2/76J5xMqBfzmeL/pkbpbncRY5feSbQTptorvGzuJN9DaTtXIM9hxZ9qOEw6BCW1HsSOPth36OPK65vNI+6Pwl6+C3Me6y0Z24ffz5TW2qmN7DjawlpLn2eZ9GD/w7ovwhYgr6zx1glnI4OunPadVyWEOc83UTJvK6Cq1lOabKKMHJzvrH2kXfnUplT9x9NiJJm1W7URntkg8cyTpqVg15Kn6TRr9J/oxvCV+EVZoXqIfQA8aC9HmN08uIOb8NHrq56Mlyc4ke/TYl00MViGijRyg3YTxbYOy4xeb/onu95xKsmWLPItEyecBJkuOaGsOfPu6EI+4ekU6SxBzzvvomM9F0OsukyQvnfPsQtLoQlwvOONga0KsFju+kZqd9Db9E93haGMuexYy2JsUc8XJDeEfFndyZwe6hrHejcTDlAQlrO6IlCSwsbv8+Os5xGTvCUc3+DnT7dUxoal6TBnDWSfrY1OVVFSjoeZQ+StfoXXpGEF5pi5cbqbOj7p5pp0DsNsHjP+AvKyavh6L2Ygd/9q9FWr6J9qqThA/GXLt7yDxmIB3PZ3umZYiDh878ugGU9Feaz3rf0n8U/ZNjlmAwLEw8budv+pmrjtXez3EODuo76CzjMHe27FNLK/hN8GjfoF6G7wfeoFDDYttxX5mTmDxFhpty2ITOO+42AaLjeQtyVx3bjFtKolxLz52jyH33o49Runr76yeG5/gl7ctwbABAUyRF6BAw2WFoBfcpfFPwJJyJApYQ5Iq6UaSQRVg4YRD/AM9kzLxYOEXojrCkCQHeuMWcTkNCAGx3kw+WGOWHIlm6rA+zPeiJIDyxZwaAaIsRcF/krwhVPF/c0ZN0vCuNYQNS2jKeFWfVSXpOl3jsroRTVmhHiLJEDRpM7eE5V6hvh8p6cxKer6s+b7WATSvKkjxyYh+tXV59CdwAbU4QMogKUJy0obbPXFc0lhJc8soIosS7XXR8u7+2Cpwu26BHUIKhMfGyXm4PPzBfAaA5g8E4pbeAettgAHSoujkdVEP/OgyJEVIESMcMVxH0QgLtaO1pEa7koogLBKQLYhrYWuO6kngHd551Mr06KRI+pA0UltjZ9EX8hc4JOSa2Thw1X+A204C/S5PAu3mfoCa7dcBPdoASIQTQJcQHw0Y91kE8sAqbudDqrxKpaxUEy9zlsCFG/FsddjBKXWqqKoRi4P6Yl1rHlCXsu0vCe+ZwgVdVnbY/8PoGRK8iy8hfpeJhZvcCKK/Bjv4PsDCMq2hk1/tE7gQ+TZQq9WQBcmfqGVtk3mAPZ2OkXbRv8ML/6OBZn/Tl4DCKRyz+xlWy6xkNxK6VbRcsQyAQKPUxMpMRVk5Y0m5aoJlS+tb8mhlf2miP85ptpXaDt86Fz67EUvAUtAjWOV2gsRuIdnUSM0qihTcaENlw3TzphAELBKKlGpJtEw5Ir1JUgmTM4psFXtpc9hzngtetPW7yIZsXrZ82iQr99aC0ONGXC4AReT/AnAfAfHoaHV+rESuTvSYqbOVq4AaIk+IhgCruJ2LPfvHxnFtW0j3SvgUeUWvll+9nV99wgNzyGygnhdG6PjstetubE/1Sur1+kN1EgYIoROq2kUYqvAX/pFlE30J5vEPhdEfkncrDB9aJHQJU13IqE0WobiUpJimszEtIcQCPpaQ2I/AkA1Tp6ShUPy1N71l1qFQlzQLAd0q31LRc93PqWlZXrLUuM3ErWydlhaWYCLSpVNsFI4RrQAg0Q9QcACA2XkumC0Blx3hp/GuGszm335oP6/2Kq/KP/HNX/SYW7J/zakj3LdLN6QZRkYZpK35pFaiUMioJAaLs/yTxvlzLeLMRYCRUjqBdebRNA4ND+YI1zRSdH1pTDbiKv6iIwys1WQSk3I+QmAXARnkORAvokd4T6Q+zgwOGfFtZPQQqMK3tpjSkvRQFmeky5qj0i0v0EEJlJjtvpEk1xsZDaJ41Eg2Q7lf5cg11xfnfoq7YzXtVO/Q1fJVlo6qj2juzieuZgsC5w+UqzREjyD72kBbXoRVmMig4s78kShnVNYOVYS627SYsxkGc4Ad92odOKT2nFtVBQMg2RZfbbgNw3IvP8KVo9E0XAACk9i5iJI3X4u8KeJ9MRlXqrWCYzQjJvciivSwFHwsK5K9ZRJetoFLw9lGYPa9hjI52R6WJm+nprSeoueZhBQ/0xMsvYGFYa2qxvmHhIiNlYhTq4hBCSndSWQqVloQuab6ZW3iSZh+JgCURTCdRTJA8EKKgVNJLM9jcMPNLqLoyHU7NSXVCV1/PK+zuEuDO6TXc9xfCVx3VpOYsUqVuV9YeWTVeo78xMpTK2szv2StEDAFiwyO1en4t1iyBVbmSNwXbXBy3JzV+c7bYAOjq2E1dVovuvWrVFz6shzrBAk/VsyVSNGRhQ3BA9C+B7PwerNyUZrlrPbAuUXUAtP9ROhrlR1oSGiU+Y6qtbl8fO/sx6RxPO1LQTy5qwikEtDMQi2tWFHIQtmmLGfwjxbiPS3ewBciQYHE7XZdI1deq1uIovKPU2oaJSOWDhDO0QWAnIVJrgdy5OEUOgyi2I34TyWRE0J0M4aY36ho3GPMnooVaeiljpOi87Y71JrIBgYJmYUGXPdLqeQplYzUqoutSGbXRm+Epdn/bfEIkJ76KbsmiPCL2Do2NLWidS0goKQyWFhJcLABH7221g0GGq4Cffmh4LouHIrr88IIOm3mdVdyhKhlVX7DqmHFKlSx8imBuxQUVHOK1LwA2JOjfO8zB85H99qZWxBwyO+eaLaSWSvzewCzpIeHvrsXF5D3xLo4NWPH8S9rmcQK9GiFNDZ+x6XH3hkPYjk9RbGiFm0eAslB1iAt/IanTRroaFiTkpxngR9pEJQ2a8opIou8bif/KQHRbroQqqMszxi6V4JBATPMBKGabE1E77ukmaWem51+lIuvhMBVUEVVO2klAAvZJLmsrKBVnbwgsZOI9Kcm8rVQoQErMLACQ8MaVFKrJZUdQQL2d4kpsHPuszUGFEZ81Js891i4hnNqqXcCwpDD9AuL1GcHi99wdWSUpyCRJB5HZenVhjMWWEPtiwqcZpG9q4NKhi/QTLJpGBjZb8MUDIya21WyM2NRRSnZlrodF6oZxtFWUkCzMtbp5AHocIg3BRDGKwAaV7EAH2Mvs7FGenhtO5BjcrWuSU3PHvanQbVT1CvR3Uff2ORhdDMf55Ru1AFAsw6mDwxZj3uCp9GfvRiHwjPycMgeB5+Z6I67j+ebu+X2kyna695TU1/sNa3lp2ZnZarF99WM44shAj58Cbruzxnw4SsSgUmj53V27ILSmG9q0oM249cNWXt0Ln5bPAFi12DMTbJ5EWknVsPG+dXi2QZMOUoygx7dtN3ljwMU9YqGj/wi9RlJJMzFYAVWYGBgGQo6IpZUCoxSi6l/EwlhWsgrGDGJo3XHs5MCfaEv9Og1vzhmzfSZPf3xpo/WHW/u6LQ0otCgQSPtRINGTl011nFM+ljro3XHi+unmIQKLPUDBpaaA9dx4wXWfUlRk5YIKm9LQk6CJzKAE1LbgoIqKKiCgmKq8wy+vzCXY+Os5ivcDzaoNJvRu+jUyh3G85lIUXNNjay3RTKEPPEAEzqSsIu7Ha07bq65xSb8TuqvHcrK+5koVZRWp1R0FTdeaAFEuvYUpjel+eXM0xOCHnB87udC55cGWCTS4pwusPRNoD1uHb0JF36JNWQTff+YGP90jpkDpUmD+GP90b176VFn9rwkdwHgKygqpq/WSDOtTyNksPU379l5M/wttdVsyGSuSen7bdAeeLPqYw0OkIWsYyFxF/n3ZS63EUU/hi9UDzOsQwpQsYG0WMUeaF8tzRneBSbOPQw4B4Rj9e9fsUGeRFk2YBZFeodVrF4lsNVV0q1oVYFIS6vyy/ED0CBAMvXbEoqvb/U/QU7vAPDgfKdhAzx6e/PAf+//RAFuKaAEBkAAsvD/e6CgF8fxHgsIToef014AHUg+rb/MsQlu5BGEiSsKCAKDFo8aGBW8bSNF3ICiiKLG9QQ9JLisb4MZ/ZJ2AU5gpIWXKwSk8Rdw9XfADx9G3AJvhPWJJRR9Gm+y0Aul4XZTCF6oKJwMrMSFGG5khvUCWgxvTdY/2iP7l9kB12jdxjVmB71iE/1NRTZAJoSJKanMMPQyk5m1+sQs3oyFeent91mEkEUIs5EOu537bR1nYPwTZYt5C2SvOYwph/URhdt90oAiDMdlZ9cWwy4R39BvtdnWmxSxWV95CLBYFaJh8CAApUCEATIQoNgwWFBWApjsFXEwhOvwwRg9bT0YSy7ejWMejDeQ/2CCXAVRz10LWKjtXElQEbW3ikiJkpU2rYTf2qgYoRYpjUTKwBysDJzKxTQYxS0krlU+pwaIqHYorwYplbfUIo5ORkga2uK9pcdLUkRl1Ig9MSEpBS1M6cuj0mcbtUgYnZVpzDaQw0qJSSi0luRGqeXbFKLTi4mhk0llpAKDBjMihRVOwZdRfonT6f+bxYAQIiwTC7tKNXJx5ZFSN6xnXCA5R1VNN0zLdlzPhwgT6np+EEYx40IqbWySZnlRVnXTdv0wTvOybvtxXvfzfj89AyMTM1gpCysbOwcnlzLlKlRyq4qQ+VFFXj5+FAoMtX9FxWJY/nKpOIXMpBooSbz6C7hzc32LmJsW2Rw5NojBzc0tizm6uiXYKri5a8skPWqLdIPPxlavVW3CXVsGctYi1xrGpA3YhFu2VArllk1sKbUWuYGS0MXgwckCrEBnzcXtW9a0yOLdbliHC40tkVa1A+7cMoCTFtleFE7c+eCbAye+OXHhnTt3PppOCf9hBbHwW/kNKvofMImfbfKUPZDXht9LIKmhPk2RmzaGUu1oLNTeRnf1unFcv3snJ4FWOkF6wrRqjxxjzFWc/1Rk+HIM0hNQ3Oqv3kpIcWToQ78H50EsigkxDbjui8cwkONjJpZREcEzzAG8JZxqNio8Q4bb4sGU8mUwb0ugJsWSjhZRGf2yydQPlnRLi4PfEpmNmghDf7RTxAXBYpuFt0Q1W5KfFnuYoOGif/TOUvCWegiwUuJJHx6zJ4WpxPszk8RWf4DvkV/vT2sAaK3hCb6R66i3s47rtg81yFmDFsVSQC8BqwVv4RuyckPYVgzWGwAAAA==) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAACk4ABEAAAAAa1QAACjXAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoEmG6Y6HDQGYACBRAg+CYJzERAKgY50gYE3C4IWAAE2AiQDhBoEIAWDGgeJKgyDShtRYgfYNo2eB90BkLTxSiOianXuIxG2WZIaT/D/f0ZyQ4ZIC9RWe/UfIs5EIiFUbBwOVbPC0TiRqLPotRpWlS99bN/P8UDRL60ByYQP04bJ3zAVi9cwDSkidKj4rDCJBiT5ktqYVLj0hp8xxYQyk4jQgsOKyl2dGpUQURBten0bwkrYQW+QYwf7RqahVJjRB6sNC8X+0+h488Iik+ce3HRR3d7JGdg28ic5eXn4fu7z3JcsAdtta4FQEntyX3dqWVj2KNyqskQFmJ9/N/1zbkIwrxgpLdRpGupUsIrho6qMVHQrvA061d8n/i0mn2Y6QNtsP0WYxyoMpBSDHoqghKRICX2HSB5TwOO9Nbro37uI9r9lrSzqI1fpIlMoHbJj7xcKK0uUROX57w/aefc+2Vlf3oSzIAk42mmaZiIMIYutfzitHBXLlizJkkuTvS673nJt9/Zrx3nA7gE7AFMq+4Nh9yi0dBgUeo/TAUsA+2Fu1DItP/9W6XW8EYGJCYKCAeCHOt87Wf5t30lJeUPwB+oGPJNshVVAiFd7LtCGOALvQDxff48ewA0HPAvRTIQjT+AlagFpClS94zvVdvw3gABge/i+zpJoSFOve/5ceIsv6BbAP/+8v7v2YP5QShBSOYdr29cNsmWTJCES0odCJmZor4qY3e/gP7n97XbLowTT8AQjj+G9Uy8CEMaGrIDnhZT8P1PNdv8fLADSiaPwKDvD6xiKhhfD6+3cNIO/wx0uZhcjEaTeAWsoZBLk8UAq8s7vERhQIgHKIcfK3cVAXYihc0ztdS79rqiuclE0IRV1ZYJqOGnlF1QXTjIomIOuGCRdpXgmLsJGRrgYUbpQsTXSBrxgStuDRQ1f6v7Y+/7Afra95129lCrFXIwxRqSph33213wfdpzak6vDhYwZSAD1Q83tr7LRdBOTlmAwUND/UwqgFoAkW4ECqFAhVMQKlSqFKlVDNWogOztUpw5q0gS1aYOcXJBHJ9StG+rVD/kEobAwtM8+aNgwNGUaWrQIxcSguDi0YRNKSkKHpCAEqkVsoVe+9keg7RHfEID/HD4fB+u3f2sFctCA4tBQvr6kLzpQPvmxUbc4U4AAUX8TQYCs/sZlHAVScRQNKu8bs85/VsAotIQYEkFgQsksaj3aj4mb21EpZUDABxGem+jBvGdfb1HW/U7p/ZlBinmfJq7PIJU989OWG1Fku7XGIWCsBUtSoJ2Sq6epOZAlsqOXBuq4h1cOFasW3zaqQAE9xQj9tbZkJyZmmjyPxqiLLLfh0y+oJgT9hsgdTHF0mb8Btt352yEp9i+1O1gwIR0XEUZyCbg7brBPQzkmdpp68AUtKLFiSK285ktxT0BTjMqQ2wXFa3IQP/ZpyEbBDpv9jQS64m/bFejw5/TrvxQV8g3VZcafxOhVpWzSmu6VHwCMd91oGkBjSoAMhvz+RDZEmueNAs9Dbd4k5Orp9+UXkaHEuX4LMZgtcitDZsjfhcUY9AnGsDgMKv/ZA7voZRKzmd+CdbbM3bTf+BvXiIEhZws2N7ojGT2s3omWKdYY+q5O9H9zUFWWKjiDVWDJxItvAqJ2aa/f6x/tWvdn6cE3dwTeP4YhXVZ9fO2lvNz8IPX88uNvIsbhPwtJ6ZweodDN4EYv4aRU1QsLiZhkDSWlIhs9UjYb9hi6Lja0IDqi0lTSJhKp565YM0oWqjZyi+5N9HAlesuPqIf0lUTmCxBDi0K6Tr1CsVu/mloMCkaHsXO7iHfNAUm7vEl71AAqMi4ERg4RVNuqYDBTLwy6ECllFD9+joaLz3lE0L+Ph+kTJS+mlNRmV/w3XP93Ndr9DXcyOoL1evHXHFjQcCqcEXmz+aOU1eqFZ29xDR+W1iiV7FWZqom+GkiIQopQvQx+lFYGNUd9wxO9AlXAgmoaNWpo1Wqj49Ihv7bgZv3lIn7gxYLcInLdrQYNKTFiTJkJ0yrNWsTZT1BnVV6+0Y5drTf8MJc9ezxQgTkmahYWGjlysSxGEwdywFrWElU8mgVqykBWzYwBzRvXA72MgFeCuNWclZxCBhlQ0UAVpyMaTUeNSj8uoleEp8mBz1qhMldLJ5+qtpySnPz1TWaJydFnJcKQIwjG4YS4BjLQJERvGUk1kRKHcQW4pg2UtHQyAZoBaCHL20FcZ7Wh1fomzAFEGtJXpaQpWZIUQnUDLQBvZliaAaAR4JLaiMSj8or9Fxw8esqeCiKiV6Ebf6/lYELRb9Uad8UxKJjNtkOA39sPr6kT7isnkzBSC2qCDFYeitBz4x9/0tpwaBaokTIQfBj2xNsUf4xQtdsPBGHJdq56wrZQLkIaLSiJglKjm+ILjbR/IE8AYD8eopZTuwvPxy+6tsMLN0XAqQKvFuN0VeXFikarKpW60+b94eiQ8w+mNhHXfwYj3CeMivpEqfTH1EWyklmlJPq+RgrV29h4vum2qnDKmd3DKoM52Zw1xvXYZhSi+QtVJP0frhS1iy+ZUjm8aeXny3RKzNHYINVATYRsQEXIFTvarhaNzXjTym3iOFjeU35PbqSsbVeRGqvewpEo60Kgn+dRewlwt1zf2Xv3fPvaryxQv1V+tYp2BU+SVubosL4BtbasFV2Ns4rH4/FgHUpoADN35dbBhQ2HZ9fOyScgJGzGkphlK7YkJKWkVVejjkBGLafB+JIMxAEaQIMktQYZDP2ashouUOH62mYqoKtxi9UKmnGNYjbmiExHHZWeUgKyHLQhKNilVQCETcJBbY7Qs3EZjsvxXMHOldo5zclFfJwR4GIhLhHmUjNcbYnrxbjGMtda4SpbHCW4TpITqfuWgqJoYHwV2Zce7I+dVE+d5VtZa635t9+7I62ZGWNKo5sv5+j8PMNmakKrdC1XjrPX3+5353m5/ehnuB2yMsl5US4eXt18/AKC0saT1yROEDhZs/5Hu946YElsaknw21/MTIprSuZubDRbOiaKKYQyJ+5TKkZBGdmVOYsfBajWJ8/mQHVMgfmbrcp1+J4Dw1Ym9Ipbof7oaXy/NI1V40GKcNmPJGepUY0OnZFxgdhzpbhoidQSbUx/X2qZMF6VDiJgErSxT2PIJC4m6K1gq9iujYTSIZnDmEuz2Asl7+DAqk2ZAwjhLisngkWAHQEYLuPphqNYmiin7jLzkaPkE0fSylEIl4EMRJJF6A+cKdzDAQVcc765NHDXBO/hZAjZvSfSJJZG7aFUpqNk4wYfJnTIMM4tIKAwlEkSk9RRtneH7m2IH/yLxxL9VEjiR8ExLVNifmqrcGP+heND61t3MTQcvy0NYoU4AMGpBJq8pMoo4DJzz3bmMHzMDdzD7Cxdd/0SpyvnkjLU9P/xjeAk33grEghAvIZxvYok2QhQ8yA9HggQQI7ITNqMozw5qklrmu1hyEshIXlZKjIRZ6/DqGQv78lN5E6ynopfAofPfF11iVqOHYl3FMUmFDaD84UCnRTlWVfbCbqmwCFwumzbz+oEZVCtUPIfaKyA5bg5AME/yJCLTfvmVxiQSgGBDe4/gThsYBpBqinPylKGZCAFUAmAdS8D7DjB0K2KIncqF6PlDm8BUmV6CgwiQAIyoBUFgVa0O4B2GhQGqMOuOl9Y/07u5d36lJ8D/WcFdONyG9hLm/hWacXrfzJ4fy9bZ/Mbd8OGNXrTuvWSak2krdm6nPUBB+3ZsW3XNf+anFgxYUbtps5bsGruj4q/Z/utm5SwJNOAiLBWfqM6CfrwSp3TZs6yUaC2EFDEOkycx6RKivSUIn2keAxm39ppxkk3gFsRzYXa8d10wEvoACkpeJjtgAmJpAorE/iK2Q4kaQdcTGa2A5WQ1AlqUltAKkRqYVt64BZWTar3wwl6cvMTZxBqGWaTEhAGw9ddIyA54YSy7k0LQVAZsx1oOEaLktBhUgSIRfJb+Hn6JFGi08VSSxNoBhNpb1bCqYSyyGSSKvHEBhBFUiZD0LJhEOd9dXx4CHYQr2IWB5EEbMBqA85tEwy3nPGuo5ITaduS21IEtZ+oHZ44Hy2C+7jUDsBTqUnVjh+Yhgx8IIWsRuxFPz8oiwwpme0gTXRWUKWk4pAwKYH75pGU0RAVXR6AEiBagRKoqgc1D0BsB7ETTPwgACSIdBi+LUFBFTCIvgwXXYHLSNHlu+r67KJrrUZBBykJ5hiKLl3cGG6r1tnFpP5XPQ1Aswz1Ieex+9jSembYNaHW4yqTdaKPdBzQqUJMk9JMtmkeiiTQplLR02mvrRA91TFLj8yssDIYO1spM0WaSFhowZxCl32kZ4K4vZscDeKZ1pclSogz4wYUIpjTi0zEch50M5EII4dKa60nfrq/Qt/2bJMYtthNxxtAwTlHEc5/KB4LMwelTCihbSUyoyC6y37B/wUX/oc8joNu9EIBpJtI+e5PXWjEU9KNsU8k2L/RhEYxWbiEcM5DoQucG6zUiK4qikYQ3QWA5dQUVqyKp4ID1XDOJ7ApCMmEC5vJ1/cBoznwwtKCL/dWIuVayFfdpR/dwbu8zOmPSQuyaWf0K66z+/gDNBuSihdXRwa3X1rXTTWkYPEdqU9cSDUzDkHa+1CTYFNfH3cxKZB0ff+KDD6dTjdeyjdz/gL4kj9spdhazCVJ3Wt8kp2ThlNoY7ElQ93rd9woxKJsJBrCEoMtQQvtV134QfJAMn/nK+WfI/BpuFojg36R16XZypLpr9fCl6v+dB37fAaIrfk4qGiyldX+Pbp8XOqtHxN/J6vc86lv3nPduvEvMqoRg6tURQM1NBtISrXz85WCDJ6JeRO7QQ2s0fEvy//ptJU2iGyJ4gphoSLW8cxClNMiVE3SCDPm9bt0enJvL59Ok+T7bGAf/9cGkb5La1N3gdlezufqZxTkS+Pq6AM0XU9Q8PLiHa6HVUJgQ9gegbqQeOZvGWX+qZWtYHLtTVEekH9xFyG4p22StFzKCMVssUzg0doJRY6R9GzF5qsL2EfJPmvRTYYg5MQLNpU9XA0hDZt/outq4Tzq5ZqDeEsaE932JzH54V+qwzalvikrXbYaCqzA0CtBRk9RGZTAhMe34+EDq1N6LprZ6ifvgql/LQagUW6p1aatLffMwqI+bWJREmGB4BCms1B3yco7f7EOw6i7WVeqlad8E9IXoZSFsjgo27S/kCQLCI/1blhNU2wcUGrKxD72kWRbgDDVhvzwKeo0cDAk3sL4bVp8WUz2Mvx1Kf/2Cjh5fRfRMg7v5tzMslA0Exk22/OWtg4no4ee4Ko0tuJpcAj9cubJV7P8GZ48EhW9VxgmqSmsygrRJV7sOzKA7Ad/eC1Lsr0D/QojniZ5RTnxC/a9Iw+3A+HLuh+qfao08TjIIhY/5XRBWOU+rWhY14pNpXuf7VAR2jAzF502ZRi1rncvs95SrJwpfnwjcO6vOKByYJW2uIsQduPuhqE5lhZERsxEcbc63hqPbzYQAnakYr9fQUP6kZY10fshbQOGmnbFqwMZ8ucrZvRqkbXZKKAOvfJfA/5SaNlPKk/g4Tzz/w6VlvUY1DNfZ+ooVHvYUM43lvL8w/uisWA+lkHDrkgKlo6kqXgvLSEQZD7E7lbCVtHNTlBVGnf7YFnI6DfRzMvOjiwZ+tuqrFGLrDaPmjau/HeUGjwRGYXD0m32YHkj+FMGS/khTfHJouu5bU+VoB9MmGnyyCCmSVUwn3lPf5D5NPjU7S94X59/mSsSK5XMl5OYp89HH/L5R89M82XKB4BW/2X4l7J/6cdVmGvVXKHZYa00NhoQD4PDK2Utk1SUraoV6EPRWhBTCg1R82QMms6NqvtRbyQHAQJnXrmaCEskKFSwCxMYg6owVLgpwhSJtKLajzPhzE2z0NfVKRQZT3GxmiSwIDa3udCRL1Rn1/ILQ31Far2cIysMfjmGCDT/ZN9M6ZuDfZEuEmuWTIMpTzP6ZjylUK4+HteroBvBIXoDFjGKRCq5FDLzT4WdriMD4IN5YjUZlkhQeMHa8f27lUAChVIFqnZFwZ3zUxiwiAPTSz+0OBidO3kynm+wWM/riclBbmQIFRqRS6QvKxyq4BRsK/gxnfwC0AZ5BpX0sJrG5twiZ3Sf9rq6h0ujoSUL1APpapBOk0tLKyhFzE2EnNqlr+14o1ZK+69GNzg6YFfa1m4TtnakjNkxcmvXDuyEMXtTxu0NzcaGL8a+he8kc6QQSHDuzUHquIRGDKkRTJfsxYj2jnjcMdd+kovNGJh3dJS9o8QZ8FvyHf0SsrQK8q5ORlFm1WtZTr6t0XeYQaBT6ATGYU9b0cUCUsHFoja0Bvh2VXsCzJ+uq2lgKWuaqikGD6+vtkxsrkH8EX8NYpYaKyguPkU33q5wJA/AxsNsmP2fEXZ2Z4s4aBKliWjuVl8pcHu7e90ct6+7z6072PGJRaiCjdmcmnpfT0PdoNlUFtMpXHjLI40OxPAblw8CIbthBjUkZyQDae38JiUb0CCgjLGMrqIZIIjCC9ZO6T89BVwgz7qVoePEOLvvcUueVVAo+ymi3RWOJMMfRn0+/IX17xkU30H/VMQp+kTfUUcDwCbpToNGDzKFCkU5r7DrXzvUL+S1sSjaG1CWoHoEf6pRtdFQWCaSsVkMV0tnfX+f18YlV1cIanOioN2BOo7DfWFxZPr3A1NaB46/Dl+wTV+b0n19yvhL1lCxOVIFuaxWyFXlnh5vciQ5/vdGy5aUwcHFTvh/rHZ5Sr/pv+SuzCvOW5l7+TGJ/a6hafYbQWm1VIyIF1YvbMX0UJaKzM56vxYRxwMDW16TB9WuMeIQHJsACJy54mpSkzOSs1wODyupxGzpFf2p99Q6Ul9TOYan5JWz9JRSWY5HLCYHxCpnXgkklKlVMpWNCEVP+U7/4xMyYAcqNJWiQD0ec+soj1xZP5pKSLEQCIQsQg5hxcKWzuxLmRmZl7JnTZ9vwFqhO22IEAdK/yPNhJeMawNvB2fPmh2cdcvxnTxMmFbip4FlgvGtd6mpLi0nUgaVUHunyOeYTyInzXo+Kb2pJVAZJ6J1pVLvts6ffhkkoXwpUCwxX0GumOVJo+ALRXLtKWAM8qTqiuHqfI6gkoQnrS9oNIUKfs0BCM+L2bI8qaLsMsw31MP6iqF8IWbGL1zDaOdiAzb6pUdTqji2vUcQd+9RU2vAIifd9vm2PZQSqEyG3A/mpvJOX1CNF0IS8mOVfYX7CjI/HVQeyAZkaaBoVRMOadtcqUmP9jNsfKI00/JsBuy0ha+7P+82ARedkkqcemk7QGLqlChiwCInrp1AcMiVa1eQ4QbsT29weifaEG3Hr61QB9RKrpNYx09lB2gO6+S5cy2TnbQgO/UN8iaVHaQ5LdkLrJMdtMBiuxBjX5PsBdFcxKVXaD26AyLuAZ1Hezstt8hMfCE79WQ9PC33Ym1f38G4FdRSq83q3I0kGOd5vP+z/0UmeyYbsKXv2rq74JbUnG/B3af464gs+3Ua9PzXeflvOtcV2HyQ8dNdGy1BLaQeoDUnGt5j8NfpQ3oKrd6nv7w8DU1M3obgkNlho/OMPpflNPczwBUObGH9kSaSaqS8FWlW9nJYZi2H8sTqHF2//UVqV1651VPxn51+ZzlHLtZIe/yxGQDgeBMuFrmC4JATUaB+zIgA35FbriLCFdJ3gWC7lbgEYlklWLkrCj7uj7kFoOCYDk59o9bK8mdfepP/GYcc/Jo/uvALWVLZb30zLUHNJCdoTfaO/bDh1yP+8HB/91FZzAjQP7OKWJ/pe2947R3fwkMcqBAf1ApIykFuYKzx9J+O+g/hpV1Lw2/fj+V4HW5EH3BIxdtUb2FQ4tnTRYAx6uxO088SuJQmEw67EKOhtNjpFEIZrRSW5IvszFZjYEKXZ48EVlMPNqA3YlyUG5MnnYaDVPWbTMDSVL5Lr35noQtVVbwSgHNK3ghHJAt56cyjEr6RNklfMQUVmEaPCzk0et3fmJOhpTPz2VSDotRPQO0dsTnp81JUk4BVw5L3BmrHjwWUFm++UE/JK4GlwTb832rMyMHE2CExrCI/i0+9HeeirT2DBt6FflCPKZ7/jyRRx+3RIfz8wSGKTLl8F51us3f0Pt7KTAeqnRaMrfs4cOzEfvxJqawpDX3QV+4fR7z6PkcHxvlUVYyhNxRGpJKCiMHIRlVU13CXEReRrJRIJ8SUfLiYr3bNz6PLMx6Nz5XkzulUZBS1F+1KnXO8It+Onjd/EtwrLTG+eMu/aZiVGoA1tal50lH0hLGqUsdWp8ct6GyPx95ReuLo7pJk10xnJ++fvyP8IRzdb/8BzsT/7w8Ph2G5AL+kJEDvyeKwetJ/v+d9ixL+SICSHjn191470CTaPDdzhCLfPGB/3DP/vxDAeWrr7AqtkOvm52nHGn3zVm3funXVnnmBCVaK1iXgVUtU9tqoFwCccWDqsvXpK+e8285vHrB89fJmZQNTBxXMcLlQeMF2U8BmdyQQC9yL5o+HbHJBUFw1/ULHEowzFRxmC0RiXmYSzZg46kS8k6xcN/bKdjq+iFOEpzcZsM9mB2/faUNk2UC5q5QECj8A6V/a5pfPAJk7ZnJlIm065k/Tnz1EYp2cc6HQxL4ckC5+henIfmbzPu5F2+KX2ZlWO2nrqYXUNhqa+OYF5pxueGqXK6evIDm2oYvZ8rexqbopiW2wPOZuSRu6xfy4LswPxuLIiBebX0tng9s8OwiKYuafmw6lD+hBDq2sCbxSC0QipVz6g72DtDT8YYgDlQWA+Vz/lc73jTXmad18rlaocLoavvJ0B2Cg91ceV51TVS2hugQU7Xirc1tv+hl/wLeen+/jOI7m9/CXkLiV3fcm7Jb6AhqK3++LvOREdmJzCjjogY1zILvu7fmwd4VjxdPWST+WprSWTnjeSsf2oQ2FpzL2SiZPLQ07Hqnc5IGy4gnGSo2GoUyPy9/1V+r4DsxKNUCfGG+eOCEeGuHlNt+19wcbfMXE/ehB0NDTZzPhTz9l3+B+g/dRPs9v9Z6uhq9SkFzbPUzGj4+uIhDhIhh0vUjN0ZaDVDK0cBMev2mhF2xluXZUp8BPxVGOloeOUj7Pb/WOVvIfKYhjbtSlb190flOIOvqLem5QYdDAAXPqcVag3PEeLTVMxkRMyRRMxdRaC8E6u08vMiPTsQyWyTQsW+dEs8LBo698jOk99g07Eln7UVQah98jJWpcYnItDoX8WoUjhatlEp0XAC4h3Se/MO3aU1XdfOxE1NmPy6LuOByJgjSxhmUN6hmmHzxx31x3A0BqugZy+fkiF95/e8DkmSNJrSo8YNkHOPuF0k2npTCsaz69aYpCML8nYQDxP4kMkK4kKQrSYeu2Lb3UG4pLNi9TG86cy/nDuJtgCLJgimQKT6jj2xR3moWPjI8z9Vpw30KjxFX+C6nBk6/vBZ5d9046eTLvH3Za00Vd/tOn4kG86SHT5kYnTH8TXlDQJtt6A09hccs1gjg2cifOMUCvmnZpb9NdoAL8dD7QAt76Bbx4ANuzAPb+ggawFFIPaJ0/t97Bmxw6gimjsOKVSj5Av9dnEVIwzS977EC0tFeF1QhiSrUs1l9AT/vG5FcTvEN4g9/k1pT/V6EdIEx+qvjHuiQxBTMNzHeLHQRyAJ0+QI4ChHWiIMDKsTIlX1l/ZWgyXqaBTJg3amTTxp7ytZHKads/Rv8Z51u5Mj4gI0LYskc0OSKalCyUtEtjScai7qBFybRoU7agc8EX2eMKJfBMgNAX0PQaLbIeJnHsJ558OLgHMJrvd7p8ielItIjgqPUSg3EiKeR4yFxmR4yyV7IYYzwVVtbieERNhnLEkkLk9rP9tb4jx1mE+aHJIYe2vFoNlN8mY9/2ueYLsnwuH6+15lu+bUiLELvYdnol1UOytO1SDMYlALxZHDnP/MirZYliEAWGBk4HjrnqJoVFlPWrARmCYTAynsbQ6/U4pAuhvOcwDyUpXOi0C9gbGF549nUWAS4F7STe4MAhDEMo/baFHWccZjxjfQ3xDV3tbAK01rX9nMf1umxWcb5xDqA1axMVdXZOAUE1oqNBsNTbcpJCdGgQIKCk5mUUZFu1vMsPDiN1qf3IGEIYTCCJiEY8hCIOGiuXUOQtvBuAhREB12ueQc4hQAwthJ0cvUP2HP0TggeUYpJMRt08RBDmZkti0jdBlmJMQRLHHL0tYcXI+3JURk2ouNfWKhNtrFwPgiEyMTRkHIgO+dbgpvZIeGicq+OO95qUyRlIN5it/bB0OZcWuDl7/sVh6Q8GyA3kdgto492hdYekD6vWmIq06haIETc4hAbFGg6VDXnO4twZhx56jQqUbx7h8V/M+bzYSqWC1XGUvjt98nXYjUo1Frfs4LKTBZhIWZzJzvSj7ksA/4ChTZjYHZSUw/jA9zYAsuymkzVfp29bmOkw+oSRSjGZFgEgmMAU0z3mABAxCP3LkEVUZ4lnPG9h/8Jer8mRtQ/TDoX8vGqRNtYWUvTySSgPBA+pkn/jJ7ZfTx+GbuUcE2EpERjrvVyoX5n3iK14YiV5qzmT5e9iF9jg9s+iIT9wTb0pm3sLtXlp0SgPFrDwsV9qkVxZ/IIUCBUBXLJQ8UWexJiFD5ttEwdAaIFaLFd8F2Ia3ywX2ylSTQBmQImEypqkIMAzFtl1Z8mduOlWM520rTwhU2E9t57AG3NvMDyZe8JwmVrWbpSgXm8ndAN34bkk79spcqnBuLGTrsDEoCkArn7UxHLtdr+GJZtgp4/EbGfBEDvdMQtlWUpAQH/jrnAQ4hm+smTa6GDAbDflgnGF0ceMl7Mbn0Ys1+i4yk6e1+8U78Rj2FbJIfK+HCOMJKgB0/Lk7WrIQOgAdUSmwhbbxoxBHQXUMoBWagscc4BlHciEp2EO8jhx5FjVIwvJMdSudixMKxq0XyzXbhdmf6QxZa2Hub22JdfKhjOOA0pNNZTG9NVZ4DH7pnammGQeF4KISxZ4hktq9GkGuC4tdE/FEddr56+I+NBgg1Ueen8Awd+y+x74Fwyy/wnuhiuCsxaEKiPOnMDhUxwkJQQ6dGSSxNHGPGREQcCaPtcKa1yvb855VuYmOLYNZ964AFQmtXicXVKIEBG/htFY0nQsLV3iuvkpyy1VV6cqJ9MqPJBWUHax/WvKJRVhwvcCB/EW6W6WDiMlA8o/3dOJZd+97LiBf8esFFSAZTH0PpOkprAlJepGuVKlXkuZ8+xLo26jrZfQEtdwhUKhLw9QMIpg/7m6DeQZTqMNxpd9U++NxXuqaEqo/Ogb18tIEGU8QcYyhkG6uQnrAgiB2LdWRvB3Wp4QqQSSvgkIN8155hbzI4IditfaHhQ8YR5AyyvBti4EAPApEUARGl4AAD5CKkJyBACQ9SMEta3kJq86Ul0zYjcY2wli3nIeQwCwlI4BAaMuRYEyyjiALkZAmRn96h3NFzRwpSyms804pqA83qCgVg99RQoeDJKD+XXeJAZqgWEDBGUfCSSwMFm8VXOgADGCrFVCemgd0yYNHEg1Y/ayTQWpugKgvAp6yIz3g6+TX2RR6QpwvJ3b7jQK2dYlCHCtXBjgLbgVTOC67xp3qZ25ZSJvT7pV2nc7JL2HfWo/emnv68HNW0tSl1p7kCwECxk41pjh17BmK9jrE/ZOtJ3Tw+ZiTU3dLmhPQQfl3sSgB+cszaZ9xQ7WHf4OLvFrvbWVduACZJrRh6QPtT6cXC+AXrAmboeXUyuqpm7D71WnLrps9wCJIL6HEXY1roxem7nr3hzMhtr0K3fC5/wYP1YAZEupuBtgr2TDakhNP45IcuzYUDuCmBkM6W7E3N7LSsAQd8YWaGcZTZTd+iUt1iKh/XNd0JgF1EGhK6thW7+UtXeHQs9eJigWKFTUvHPwVWXypNIpx1Y2ppiNHTw2mriBDuL9fpVN+5kTWHYuQy649nQxce8Hsw09HSx/z7qFv+VYp09EGEfxgqzyACpyCLZSA08FhQ3fLBDSJ6oOyhlaehBa62NmAR4Qmoxm2th7N7DQ28S0xz+MDiYSzetJOfRVS6dEt/eltLfLWb8V2aSK1Ra/7v37XmgIj5+oIeAc35dINZWNRjLdLA3CFh/Bgiv2D7lq7D9i9h44dDc2copdplO0Ba3pUIi3lvCjNZ2HNVszDr7Jnj/Mpo7p7fTtZn5gqwEt0dCCXNdu7CNRLDmITVxdiEmvZVBsNUzolgGjY81A08bPaRae7JpV2bEplGMSE+nRCLU5ZR+kgadLF2Z/82qvU4NbqibFvqE2ab09V1Vgy80gHKPx9hXAv46HGmqoZXOTUdD9AEsZmr/b8uUIGW3j+B5hMEsFzKmwVe87fFwR4NCSlCwdMK5oAwg0Z5UYaZEcLohHvWsbd9UqNrS/5hC3HbFlPjuvK4uQE7YEa1YJq7c1+8g0ye4K/G1lDgXjMoBYElUwYHyECqa/VZyOYIuPFG4FzRqPoZosa9cZRhpmTz8UfEtOPYKK3o90ELnMFa7ax2hNMYXYvMxg/Hh9f1vSINq4RyLUGlpmKPIH/oUyH7DHdP5YQ08UxcpCClZeCiQQSaRiP5mdhigpNiKiHb0sAVOqSPCUFkzEiTa5kEiq0ttomaUllkWg+HKAXVTxX9jSulqmIG94aAuIMOltOmLfyPpVxaRImqSJS2LQ6eb4YCtt40T9owlIyZvMaW2u/PD+9NcALgGQ0+F3lT7DS9j4T3H30CGddGDCiPFxx70QeCbHTJM0SRMgaQLEyhM+wm1n5TEQBID4+Mv9/Hqj2z+S+jIA8Pv7ugIAf/4dnk26+P8/N9CngCoEIEAe/w/KViw54BNAuDm763EeC/Cp+1OdxpTO/+ipVDFS3pEWn1OrIgG++R4bHUMIRbopI1dFk9CQoGheEp0bNUYvtzbRvKAhm6KJKo1LVlKMqxWNlzqq+GJRmgbVqeeb+/mySpr6LFuhJEROonwGGsd7yNNzP2FyuggX4R2aj8zGrIwNY7iwskcFvjV8XV2VuRH8GebgiFRuWUkqldGA47mrovNX5V896UzrB8ozyEzL78K1taepsnm/pAcPx5scEMXJM7RdUEm1lG+gexr7zqpVsJHvZPSYp+7IKea+IZVLyqiTJeObNTLltLNtIwo+35Wg5p+o98uib0mTdFFzGv+iEQe7a05pwJ9dOpvXE86NiZFLEj0sVx51lWTbcmXVIueYIWf84idpp927HoGSCLEFIghQDRICcghUWkDBvArY723fi1Gpu15MqNz6Ykq9lbl06ItFMgy9mFGsNlRdR8AxW5Bb06y6ftOsDTEebjFus/lACmxWbVhUza9Tvx5uAwIE8w4Km7ZiU5UB8+bEbFsWNW8D5pxWrWDZ2fBO7Gg/fZYDEkLhIpkQTNuACGINez0oO9Vj1ZpdWnqRrmgvz+PUaAzAtIfir7/GhuUiELCRBA0bwsO83kkS21Tgh1R8GnDzv20JiEgoXp269RsQEhY1akwxC6tSFSpV4fDs6jVwDBW5h6Gl0nTDtGzH9WycpFlelFXtmnbW9cM4X0zL1XpzcHh0fLLdne6vXb9x89btO3fv3X/w8NFjMnIKSipqlTSqaOnoGRhVMzGzsLKxc3ACQVxquNXy8PLxCwiChQxTpz7mzlGERUQ1QGrUj9kK2O6pLZVnKfD7P6xGwjDEkpAVVdMN07KddFsBsSRkRdV0w7RsJ90QDiIiIiIiIiJiZmZmZmZmZo6cLrpZZ1wStqUb6UxmvOwqqhY2aU7AlQAAAA3SAAAAOyYCs5/MjL6UsecvHMTX/BNgg2qC92TTj+2t+dbDeoiFR+q50WT/kwcIZjwEqZCZCfpqpPr4f+zKFcqkAipn/mi04pXIo/U/PA51c7ApYhx+mXCrV85bFI8GFUy0eos2qlezMtm6FunUpEqeXTNa8CxyOYn5ufq2iJ6QrNrMekuqV4tqZgZuyqwY0VmPAt6SO2PdkHZWXRRKsTf7IeMtpWE9mpTJ1VOVxr1e9RAtMfHML8jhGidPTDO85K25kbOmqVzm7E7JrFysrg5jQ6rqAdGOVTdsArLjwVHXAA==) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inconsolata;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inconsolata;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--dark1:#1c222aff;--dark2:#222931ff;--dark3:#283038ff;--dark4:#2d363fff;--dark5:#333d46ff;--dark6:#39444dff;--dark7:#3f4b54ff;--dark8:#44515bff;--dark9:#4a5862ff;--dark10:#505f69ff;--light1:#eaeaeaff;--light2:#d9d7d7ff;--light3:#c8c4c5ff;--light4:#b8b2b2ff;--light5:#a79fa0ff;--light6:#968c8dff;--red:#de3040;--green:#05c46b;--orange:#f9b653;--pink:#f36eb7;--light-blue:#71cafd;--main-bg:var(--dark1);--border-color:var(--dark6);--hover-bg:var(--dark3);--main-fg:var(--light2);--header-fg:var(--light1);--textfield-bg:var(--dark3);--light-gray:var(--light3);--dark-gray:var(--light6);--mono-normal:400 14px "Inconsolata", monospace;--mono-bold:600 14px "Inconsolata", monospace;--sans-normal:300 14px "IBM Plex Sans", sans-serif;--sans-h1:500 16px "IBM Plex Sans", sans-serif;--sans-h2:500 14px "IBM Plex Sans", sans-serif}*{box-sizing:border-box}html{height:100%}body{background:var(--main-bg);color:var(--main-fg);font:var(--sans-normal);line-height:1.5em;margin:0;display:flex;height:100%}button{cursor:pointer}input[type=number],textarea{background:var(--textfield-bg);color:var(--header-fg);border:1px solid var(--border-color);padding:8px;font:var(--sans-normal);border-radius:3px;font-size:15px;min-height:24px}input[type=number]{-moz-appearance:textfield;margin-left:8px}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{margin-top:4px;line-height:1.4em}a{color:inherit}p:first-child{margin-top:0}p:last-child{margin-bottom:0}.btn{background:var(--main-bg);border:1px solid var(--border-color);border-radius:3px;color:var(--header-fg);font:var(--sans-normal);display:inline-block;margin-right:6px;padding:5px 12px;text-decoration:none} diff --git a/docs/bundle.js b/docs/bundle.js index 312b9d0..b6e2acb 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -4,7 +4,8 @@ * * DO NOT EDIT THIS FILE. This file is automatically generated * using `npm run build`. Edit files in './src' then rebuild. - **/ "use strict"; + **/ +"use strict"; function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; @@ -104,11 +105,7 @@ var __generator = ops: [], }; return ( - (g = { - next: verb(0), - throw: verb(1), - return: verb(2), - }), + (g = { next: verb(0), throw: verb(1), return: verb(2) }), typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; @@ -133,10 +130,7 @@ var __generator = break; case 4: _.label++; - return { - value: op[1], - done: false, - }; + return { value: op[1], done: false }; case 5: _.label++; y = op[1]; @@ -177,3687 +171,2589 @@ var __generator = f = t = 0; } if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true, - }; + return { value: op[0] ? op[1] : void 0, done: true }; } }; (() => { - var __defProp = Object.defineProperty; - var __defProps = Object.defineProperties; - var __getOwnPropDescs = Object.getOwnPropertyDescriptors; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getOwnPropSymbols = Object.getOwnPropertySymbols; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __propIsEnum = Object.prototype.propertyIsEnumerable; - var __defNormalProp = (obj, key, value) => - key in obj - ? __defProp(obj, key, { - enumerable: true, - configurable: true, - writable: true, - value, - }) - : (obj[key] = value); - var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - if (__getOwnPropSymbols) - try { - for (var _iterator = __getOwnPropSymbols(b)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var prop = _step.value; - if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + var Xh = Object.defineProperty, + Z1 = Object.defineProperties; + var eb = Object.getOwnPropertyDescriptors; + var Gh = Object.getOwnPropertySymbols; + var tb = Object.prototype.hasOwnProperty, + ib = Object.prototype.propertyIsEnumerable; + var Kh = (r, e, t) => (e in r ? Xh(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : (r[e] = t)), + Qh = (r, e) => { + for (var t in e || (e = {})) tb.call(e, t) && Kh(r, t, e[t]); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (Gh) try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = Gh(e)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + ib.call(e, t) && Kh(r, t, e[t]); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + return r; + }, + Jh = (r, e) => Z1(r, eb(e)), + h = (r, e) => Xh(r, "name", { value: e, configurable: !0 }); + var k = (r, e) => () => (e || r((e = { exports: {} }).exports, e), e.exports); + var Et = k((w3, Zh) => { + var as = h(function (r) { + return r && r.Math == Math && r; + }, "check"); + Zh.exports = + as(typeof globalThis == "object" && globalThis) || + as(typeof window == "object" && window) || + as(typeof self == "object" && self) || + as(typeof global == "object" && global) || + (function () { + return this; + })() || + Function("return this")(); + }); + var Je = k((S3, ec) => { + ec.exports = function (r) { + try { + return !!r(); + } catch (e) { + return !0; } - return a; - }; - var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); - var __name = (target, value) => - __defProp(target, "name", { - value, - configurable: true, - }); - var __commonJS = (cb, mod) => - function __require() { - return ( - mod || - (0, cb[__getOwnPropNames(cb)[0]])( - (mod = { - exports: {}, - }).exports, - mod - ), - mod.exports - ); }; - // node_modules/core-js/internals/global.js - var require_global = __commonJS({ - "node_modules/core-js/internals/global.js"(exports, module) { - var check = /* @__PURE__ */ __name(function (it) { - return it && it.Math == Math && it; - }, "check"); - module.exports = - check(typeof globalThis == "object" && globalThis) || - check(typeof window == "object" && window) || - check(typeof self == "object" && self) || - check(typeof global == "object" && global) || - (function () { - return this; - })() || - Function("return this")(); - }, - }); - // node_modules/core-js/internals/fails.js - var require_fails = __commonJS({ - "node_modules/core-js/internals/fails.js"(exports, module) { - module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - }, }); - // node_modules/core-js/internals/descriptors.js - var require_descriptors = __commonJS({ - "node_modules/core-js/internals/descriptors.js"(exports, module) { - var fails = require_fails(); - module.exports = !fails(function () { - return ( - Object.defineProperty({}, 1, { - get: function get() { - return 7; - }, - })[1] != 7 - ); - }); - }, + var gt = k((B3, tc) => { + var rb = Je(); + tc.exports = !rb(function () { + return ( + Object.defineProperty({}, 1, { + get: function get() { + return 7; + }, + })[1] != 7 + ); + }); }); - // node_modules/core-js/internals/function-bind-native.js - var require_function_bind_native = __commonJS({ - "node_modules/core-js/internals/function-bind-native.js"(exports, module) { - var fails = require_fails(); - module.exports = !fails(function () { - var test = function () {}.bind(); - return typeof test != "function" || test.hasOwnProperty("prototype"); - }); - }, + var hs = k((_3, ic) => { + var nb = Je(); + ic.exports = !nb(function () { + var r = function () {}.bind(); + return typeof r != "function" || r.hasOwnProperty("prototype"); + }); }); - // node_modules/core-js/internals/function-call.js - var require_function_call = __commonJS({ - "node_modules/core-js/internals/function-call.js"(exports, module) { - var NATIVE_BIND = require_function_bind_native(); - var call = Function.prototype.call; - module.exports = NATIVE_BIND - ? call.bind(call) - : function () { - return call.apply(call, arguments); - }; - }, + var Zt = k((O3, rc) => { + var sb = hs(), + cs = Function.prototype.call; + rc.exports = sb + ? cs.bind(cs) + : function () { + return cs.apply(cs, arguments); + }; }); - // node_modules/core-js/internals/object-property-is-enumerable.js - var require_object_property_is_enumerable = __commonJS({ - "node_modules/core-js/internals/object-property-is-enumerable.js"(exports) { - "use strict"; - var $propertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var NASHORN_BUG = - getOwnPropertyDescriptor && - !$propertyIsEnumerable.call( - { - 1: 2, - }, - 1 - ); - exports.f = NASHORN_BUG - ? /* @__PURE__ */ __name(function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - }, "propertyIsEnumerable") - : $propertyIsEnumerable; - }, + var uc = k((oc) => { + "use strict"; + var nc = {}.propertyIsEnumerable, + sc = Object.getOwnPropertyDescriptor, + ob = sc && !nc.call({ 1: 2 }, 1); + oc.f = ob + ? h(function (e) { + var t = sc(this, e); + return !!t && t.enumerable; + }, "propertyIsEnumerable") + : nc; }); - // node_modules/core-js/internals/create-property-descriptor.js - var require_create_property_descriptor = __commonJS({ - "node_modules/core-js/internals/create-property-descriptor.js"(exports, module) { - module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value, - }; - }; - }, + var dr = k(($3, lc) => { + lc.exports = function (r, e) { + return { enumerable: !(r & 1), configurable: !(r & 2), writable: !(r & 4), value: e }; + }; }); - // node_modules/core-js/internals/function-uncurry-this.js - var require_function_uncurry_this = __commonJS({ - "node_modules/core-js/internals/function-uncurry-this.js"(exports, module) { - var NATIVE_BIND = require_function_bind_native(); - var FunctionPrototype = Function.prototype; - var call = FunctionPrototype.call; - var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); - module.exports = NATIVE_BIND - ? uncurryThisWithBind - : function (fn) { - return function () { - return call.apply(fn, arguments); - }; + var Ge = k((M3, cc) => { + var ac = hs(), + hc = Function.prototype, + il = hc.call, + ub = ac && hc.bind.bind(il, il); + cc.exports = ac + ? ub + : function (r) { + return function () { + return il.apply(r, arguments); }; - }, + }; }); - // node_modules/core-js/internals/classof-raw.js - var require_classof_raw = __commonJS({ - "node_modules/core-js/internals/classof-raw.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var toString = uncurryThis({}.toString); - var stringSlice = uncurryThis("".slice); - module.exports = function (it) { - return stringSlice(toString(it), 8, -1); - }; - }, + var nn = k((P3, dc) => { + var fc = Ge(), + lb = fc({}.toString), + ab = fc("".slice); + dc.exports = function (r) { + return ab(lb(r), 8, -1); + }; }); - // node_modules/core-js/internals/indexed-object.js - var require_indexed_object = __commonJS({ - "node_modules/core-js/internals/indexed-object.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var fails = require_fails(); - var classof = require_classof_raw(); - var $Object = Object; - var split = uncurryThis("".split); - module.exports = fails(function () { - return !$Object("z").propertyIsEnumerable(0); - }) - ? function (it) { - return classof(it) == "String" ? split(it, "") : $Object(it); - } - : $Object; - }, + var mc = k((L3, pc) => { + var hb = Ge(), + cb = Je(), + fb = nn(), + rl = Object, + db = hb("".split); + pc.exports = cb(function () { + return !rl("z").propertyIsEnumerable(0); + }) + ? function (r) { + return fb(r) == "String" ? db(r, "") : rl(r); + } + : rl; }); - // node_modules/core-js/internals/is-null-or-undefined.js - var require_is_null_or_undefined = __commonJS({ - "node_modules/core-js/internals/is-null-or-undefined.js"(exports, module) { - module.exports = function (it) { - return it === null || it === void 0; - }; - }, + var fs = k((q3, gc) => { + gc.exports = function (r) { + return r == null; + }; }); - // node_modules/core-js/internals/require-object-coercible.js - var require_require_object_coercible = __commonJS({ - "node_modules/core-js/internals/require-object-coercible.js"(exports, module) { - var isNullOrUndefined = require_is_null_or_undefined(); - var $TypeError = TypeError; - module.exports = function (it) { - if (isNullOrUndefined(it)) throw $TypeError("Can't call method on " + it); - return it; - }; - }, + var ds = k((I3, Dc) => { + var pb = fs(), + mb = TypeError; + Dc.exports = function (r) { + if (pb(r)) throw mb("Can't call method on " + r); + return r; + }; }); - // node_modules/core-js/internals/to-indexed-object.js - var require_to_indexed_object = __commonJS({ - "node_modules/core-js/internals/to-indexed-object.js"(exports, module) { - var IndexedObject = require_indexed_object(); - var requireObjectCoercible = require_require_object_coercible(); - module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); - }; - }, + var pr = k((N3, bc) => { + var gb = mc(), + Db = ds(); + bc.exports = function (r) { + return gb(Db(r)); + }; }); - // node_modules/core-js/internals/document-all.js - var require_document_all = __commonJS({ - "node_modules/core-js/internals/document-all.js"(exports, module) { - var documentAll = typeof document == "object" && document.all; - var IS_HTMLDDA = typeof documentAll == "undefined" && documentAll !== void 0; - module.exports = { - all: documentAll, - IS_HTMLDDA, - }; - }, + var sl = k((V3, Fc) => { + var nl = typeof document == "object" && document.all, + bb = typeof nl > "u" && nl !== void 0; + Fc.exports = { all: nl, IS_HTMLDDA: bb }; }); - // node_modules/core-js/internals/is-callable.js - var require_is_callable = __commonJS({ - "node_modules/core-js/internals/is-callable.js"(exports, module) { - var $documentAll = require_document_all(); - var documentAll = $documentAll.all; - module.exports = $documentAll.IS_HTMLDDA - ? function (argument) { - return typeof argument == "function" || argument === documentAll; - } - : function (argument) { - return typeof argument == "function"; - }; - }, + var Ne = k((z3, Cc) => { + var yc = sl(), + Fb = yc.all; + Cc.exports = yc.IS_HTMLDDA + ? function (r) { + return typeof r == "function" || r === Fb; + } + : function (r) { + return typeof r == "function"; + }; }); - // node_modules/core-js/internals/is-object.js - var require_is_object = __commonJS({ - "node_modules/core-js/internals/is-object.js"(exports, module) { - var isCallable = require_is_callable(); - var $documentAll = require_document_all(); - var documentAll = $documentAll.all; - module.exports = $documentAll.IS_HTMLDDA - ? function (it) { - return typeof it == "object" ? it !== null : isCallable(it) || it === documentAll; - } - : function (it) { - return typeof it == "object" ? it !== null : isCallable(it); - }; - }, + var ei = k((W3, vc) => { + var Ac = Ne(), + Ec = sl(), + yb = Ec.all; + vc.exports = Ec.IS_HTMLDDA + ? function (r) { + return typeof r == "object" ? r !== null : Ac(r) || r === yb; + } + : function (r) { + return typeof r == "object" ? r !== null : Ac(r); + }; }); - // node_modules/core-js/internals/get-built-in.js - var require_get_built_in = __commonJS({ - "node_modules/core-js/internals/get-built-in.js"(exports, module) { - var global2 = require_global(); - var isCallable = require_is_callable(); - var aFunction = /* @__PURE__ */ __name(function (argument) { - return isCallable(argument) ? argument : void 0; + var sn = k((j3, kc) => { + var ol = Et(), + Cb = Ne(), + Ab = h(function (r) { + return Cb(r) ? r : void 0; }, "aFunction"); - module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(global2[namespace]) : global2[namespace] && global2[namespace][method]; - }; - }, + kc.exports = function (r, e) { + return arguments.length < 2 ? Ab(ol[r]) : ol[r] && ol[r][e]; + }; }); - // node_modules/core-js/internals/object-is-prototype-of.js - var require_object_is_prototype_of = __commonJS({ - "node_modules/core-js/internals/object-is-prototype-of.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - module.exports = uncurryThis({}.isPrototypeOf); - }, + var ps = k((U3, wc) => { + var Eb = Ge(); + wc.exports = Eb({}.isPrototypeOf); }); - // node_modules/core-js/internals/engine-user-agent.js - var require_engine_user_agent = __commonJS({ - "node_modules/core-js/internals/engine-user-agent.js"(exports, module) { - var getBuiltIn = require_get_built_in(); - module.exports = getBuiltIn("navigator", "userAgent") || ""; - }, + var Sc = k((Y3, xc) => { + xc.exports = (typeof navigator < "u" && String(navigator.userAgent)) || ""; }); - // node_modules/core-js/internals/engine-v8-version.js - var require_engine_v8_version = __commonJS({ - "node_modules/core-js/internals/engine-v8-version.js"(exports, module) { - var global2 = require_global(); - var userAgent = require_engine_user_agent(); - var process2 = global2.process; - var Deno = global2.Deno; - var versions = (process2 && process2.versions) || (Deno && Deno.version); - var v8 = versions && versions.v8; - var match; - var version; - if (v8) { - match = v8.split("."); - version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); - } - if (!version && userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = +match[1]; - } - } - module.exports = version; - }, + var Mc = k((G3, $c) => { + var Rc = Et(), + ul = Sc(), + Bc = Rc.process, + _c = Rc.Deno, + Oc = (Bc && Bc.versions) || (_c && _c.version), + Tc = Oc && Oc.v8, + vt, + ms; + Tc && ((vt = Tc.split(".")), (ms = vt[0] > 0 && vt[0] < 4 ? 1 : +(vt[0] + vt[1]))); + !ms && ul && ((vt = ul.match(/Edge\/(\d+)/)), (!vt || vt[1] >= 74) && ((vt = ul.match(/Chrome\/(\d+)/)), vt && (ms = +vt[1]))); + $c.exports = ms; }); - // node_modules/core-js/internals/symbol-constructor-detection.js - var require_symbol_constructor_detection = __commonJS({ - "node_modules/core-js/internals/symbol-constructor-detection.js"(exports, module) { - var V8_VERSION = require_engine_v8_version(); - var fails = require_fails(); - module.exports = - !!Object.getOwnPropertySymbols && - !fails(function () { - var symbol = Symbol(); - return !String(symbol) || !(Object(symbol) instanceof Symbol) || (!Symbol.sham && V8_VERSION && V8_VERSION < 41); - }); - }, + var ll = k((K3, Lc) => { + var Pc = Mc(), + vb = Je(); + Lc.exports = + !!Object.getOwnPropertySymbols && + !vb(function () { + var r = Symbol(); + return !String(r) || !(Object(r) instanceof Symbol) || (!Symbol.sham && Pc && Pc < 41); + }); }); - // node_modules/core-js/internals/use-symbol-as-uid.js - var require_use_symbol_as_uid = __commonJS({ - "node_modules/core-js/internals/use-symbol-as-uid.js"(exports, module) { - var NATIVE_SYMBOL = require_symbol_constructor_detection(); - module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == "symbol"; - }, + var al = k((X3, qc) => { + var kb = ll(); + qc.exports = kb && !Symbol.sham && typeof Symbol.iterator == "symbol"; }); - // node_modules/core-js/internals/is-symbol.js - var require_is_symbol = __commonJS({ - "node_modules/core-js/internals/is-symbol.js"(exports, module) { - var getBuiltIn = require_get_built_in(); - var isCallable = require_is_callable(); - var isPrototypeOf = require_object_is_prototype_of(); - var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); - var $Object = Object; - module.exports = USE_SYMBOL_AS_UID - ? function (it) { - return typeof it == "symbol"; - } - : function (it) { - var $Symbol = getBuiltIn("Symbol"); - return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); - }; - }, + var hl = k((Q3, Ic) => { + var wb = sn(), + xb = Ne(), + Sb = ps(), + Bb = al(), + _b = Object; + Ic.exports = Bb + ? function (r) { + return typeof r == "symbol"; + } + : function (r) { + var e = wb("Symbol"); + return xb(e) && Sb(e.prototype, _b(r)); + }; }); - // node_modules/core-js/internals/try-to-string.js - var require_try_to_string = __commonJS({ - "node_modules/core-js/internals/try-to-string.js"(exports, module) { - var $String = String; - module.exports = function (argument) { - try { - return $String(argument); - } catch (error) { - return "Object"; - } - }; - }, + var gs = k((J3, Nc) => { + var Ob = String; + Nc.exports = function (r) { + try { + return Ob(r); + } catch (e) { + return "Object"; + } + }; }); - // node_modules/core-js/internals/a-callable.js - var require_a_callable = __commonJS({ - "node_modules/core-js/internals/a-callable.js"(exports, module) { - var isCallable = require_is_callable(); - var tryToString = require_try_to_string(); - var $TypeError = TypeError; - module.exports = function (argument) { - if (isCallable(argument)) return argument; - throw $TypeError(tryToString(argument) + " is not a function"); - }; - }, + var mr = k((Z3, Vc) => { + var Tb = Ne(), + Rb = gs(), + $b = TypeError; + Vc.exports = function (r) { + if (Tb(r)) return r; + throw $b(Rb(r) + " is not a function"); + }; }); - // node_modules/core-js/internals/get-method.js - var require_get_method = __commonJS({ - "node_modules/core-js/internals/get-method.js"(exports, module) { - var aCallable2 = require_a_callable(); - var isNullOrUndefined = require_is_null_or_undefined(); - module.exports = function (V, P) { - var func = V[P]; - return isNullOrUndefined(func) ? void 0 : aCallable2(func); - }; - }, + var Ds = k((e7, zc) => { + var Mb = mr(), + Pb = fs(); + zc.exports = function (r, e) { + var t = r[e]; + return Pb(t) ? void 0 : Mb(t); + }; }); - // node_modules/core-js/internals/ordinary-to-primitive.js - var require_ordinary_to_primitive = __commonJS({ - "node_modules/core-js/internals/ordinary-to-primitive.js"(exports, module) { - var call = require_function_call(); - var isCallable = require_is_callable(); - var isObject = require_is_object(); - var $TypeError = TypeError; - module.exports = function (input, pref) { - var fn, val; - if (pref === "string" && isCallable((fn = input.toString)) && !isObject((val = call(fn, input)))) return val; - if (isCallable((fn = input.valueOf)) && !isObject((val = call(fn, input)))) return val; - if (pref !== "string" && isCallable((fn = input.toString)) && !isObject((val = call(fn, input)))) return val; - throw $TypeError("Can't convert object to primitive value"); - }; - }, + var jc = k((t7, Wc) => { + var cl = Zt(), + fl = Ne(), + dl = ei(), + Lb = TypeError; + Wc.exports = function (r, e) { + var t, i; + if ((e === "string" && fl((t = r.toString)) && !dl((i = cl(t, r)))) || (fl((t = r.valueOf)) && !dl((i = cl(t, r)))) || (e !== "string" && fl((t = r.toString)) && !dl((i = cl(t, r))))) return i; + throw Lb("Can't convert object to primitive value"); + }; }); - // node_modules/core-js/internals/is-pure.js - var require_is_pure = __commonJS({ - "node_modules/core-js/internals/is-pure.js"(exports, module) { - module.exports = false; - }, + var gr = k((i7, Hc) => { + Hc.exports = !1; }); - // node_modules/core-js/internals/define-global-property.js - var require_define_global_property = __commonJS({ - "node_modules/core-js/internals/define-global-property.js"(exports, module) { - var global2 = require_global(); - var defineProperty = Object.defineProperty; - module.exports = function (key, value) { - try { - defineProperty(global2, key, { - value, - configurable: true, - writable: true, - }); - } catch (error) { - global2[key] = value; - } - return value; - }; - }, + var bs = k((r7, Yc) => { + var Uc = Et(), + qb = Object.defineProperty; + Yc.exports = function (r, e) { + try { + qb(Uc, r, { value: e, configurable: !0, writable: !0 }); + } catch (e1) { + Uc[r] = e; + } + return e; + }; }); - // node_modules/core-js/internals/shared-store.js - var require_shared_store = __commonJS({ - "node_modules/core-js/internals/shared-store.js"(exports, module) { - var global2 = require_global(); - var defineGlobalProperty = require_define_global_property(); - var SHARED = "__core-js_shared__"; - var store = global2[SHARED] || defineGlobalProperty(SHARED, {}); - module.exports = store; - }, + var Fs = k((n7, Kc) => { + var Ib = Et(), + Nb = bs(), + Gc = "__core-js_shared__", + Vb = Ib[Gc] || Nb(Gc, {}); + Kc.exports = Vb; }); - // node_modules/core-js/internals/shared.js - var require_shared = __commonJS({ - "node_modules/core-js/internals/shared.js"(exports, module) { - var IS_PURE = require_is_pure(); - var store = require_shared_store(); - (module.exports = function (key, value) { - return store[key] || (store[key] = value !== void 0 ? value : {}); - })("versions", []).push({ - version: "3.26.1", - mode: IS_PURE ? "pure" : "global", - copyright: "\xa9 2014-2022 Denis Pushkarev (zloirock.ru)", - license: "https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE", - source: "https://github.com/zloirock/core-js", - }); - }, + var pl = k((s7, Qc) => { + var zb = gr(), + Xc = Fs(); + (Qc.exports = function (r, e) { + return Xc[r] || (Xc[r] = e !== void 0 ? e : {}); + })("versions", []).push({ version: "3.29.0", mode: zb ? "pure" : "global", copyright: "\xa9 2014-2023 Denis Pushkarev (zloirock.ru)", license: "https://github.com/zloirock/core-js/blob/v3.29.0/LICENSE", source: "https://github.com/zloirock/core-js" }); }); - // node_modules/core-js/internals/to-object.js - var require_to_object = __commonJS({ - "node_modules/core-js/internals/to-object.js"(exports, module) { - var requireObjectCoercible = require_require_object_coercible(); - var $Object = Object; - module.exports = function (argument) { - return $Object(requireObjectCoercible(argument)); - }; - }, + var ys = k((o7, Jc) => { + var Wb = ds(), + jb = Object; + Jc.exports = function (r) { + return jb(Wb(r)); + }; }); - // node_modules/core-js/internals/has-own-property.js - var require_has_own_property = __commonJS({ - "node_modules/core-js/internals/has-own-property.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var toObject2 = require_to_object(); - var hasOwnProperty = uncurryThis({}.hasOwnProperty); - module.exports = - Object.hasOwn || - /* @__PURE__ */ __name(function hasOwn(it, key) { - return hasOwnProperty(toObject2(it), key); - }, "hasOwn"); - }, + var kt = k((u7, Zc) => { + var Hb = Ge(), + Ub = ys(), + Yb = Hb({}.hasOwnProperty); + Zc.exports = + Object.hasOwn || + h(function (e, t) { + return Yb(Ub(e), t); + }, "hasOwn"); }); - // node_modules/core-js/internals/uid.js - var require_uid = __commonJS({ - "node_modules/core-js/internals/uid.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var id = 0; - var postfix = Math.random(); - var toString = uncurryThis((1).toString); - module.exports = function (key) { - return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString(++id + postfix, 36); - }; - }, + var ml = k((a7, ef) => { + var Gb = Ge(), + Kb = 0, + Xb = Math.random(), + Qb = Gb((1).toString); + ef.exports = function (r) { + return "Symbol(" + (r === void 0 ? "" : r) + ")_" + Qb(++Kb + Xb, 36); + }; }); - // node_modules/core-js/internals/well-known-symbol.js - var require_well_known_symbol = __commonJS({ - "node_modules/core-js/internals/well-known-symbol.js"(exports, module) { - var global2 = require_global(); - var shared = require_shared(); - var hasOwn = require_has_own_property(); - var uid = require_uid(); - var NATIVE_SYMBOL = require_symbol_constructor_detection(); - var USE_SYMBOL_AS_UID = require_use_symbol_as_uid(); - var WellKnownSymbolsStore = shared("wks"); - var Symbol2 = global2.Symbol; - var symbolFor = Symbol2 && Symbol2["for"]; - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol2 : (Symbol2 && Symbol2.withoutSetter) || uid; - module.exports = function (name2) { - if (!hasOwn(WellKnownSymbolsStore, name2) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name2] == "string")) { - var description = "Symbol." + name2; - if (NATIVE_SYMBOL && hasOwn(Symbol2, name2)) { - WellKnownSymbolsStore[name2] = Symbol2[name2]; - } else if (USE_SYMBOL_AS_UID && symbolFor) { - WellKnownSymbolsStore[name2] = symbolFor(description); - } else { - WellKnownSymbolsStore[name2] = createWellKnownSymbol(description); - } - } - return WellKnownSymbolsStore[name2]; - }; - }, + var rt = k((h7, rf) => { + var Jb = Et(), + Zb = pl(), + tf = kt(), + eF = ml(), + tF = ll(), + iF = al(), + Dr = Jb.Symbol, + gl = Zb("wks"), + rF = iF ? Dr.for || Dr : (Dr && Dr.withoutSetter) || eF; + rf.exports = function (r) { + return tf(gl, r) || (gl[r] = tF && tf(Dr, r) ? Dr[r] : rF("Symbol." + r)), gl[r]; + }; }); - // node_modules/core-js/internals/to-primitive.js - var require_to_primitive = __commonJS({ - "node_modules/core-js/internals/to-primitive.js"(exports, module) { - var call = require_function_call(); - var isObject = require_is_object(); - var isSymbol = require_is_symbol(); - var getMethod = require_get_method(); - var ordinaryToPrimitive = require_ordinary_to_primitive(); - var wellKnownSymbol = require_well_known_symbol(); - var $TypeError = TypeError; - var TO_PRIMITIVE = wellKnownSymbol("toPrimitive"); - module.exports = function (input, pref) { - if (!isObject(input) || isSymbol(input)) return input; - var exoticToPrim = getMethod(input, TO_PRIMITIVE); - var result; - if (exoticToPrim) { - if (pref === void 0) pref = "default"; - result = call(exoticToPrim, input, pref); - if (!isObject(result) || isSymbol(result)) return result; - throw $TypeError("Can't convert object to primitive value"); - } - if (pref === void 0) pref = "number"; - return ordinaryToPrimitive(input, pref); - }; - }, + var uf = k((c7, of) => { + var nF = Zt(), + nf = ei(), + sf = hl(), + sF = Ds(), + oF = jc(), + uF = rt(), + lF = TypeError, + aF = uF("toPrimitive"); + of.exports = function (r, e) { + if (!nf(r) || sf(r)) return r; + var t = sF(r, aF), + i; + if (t) { + if ((e === void 0 && (e = "default"), (i = nF(t, r, e)), !nf(i) || sf(i))) return i; + throw lF("Can't convert object to primitive value"); + } + return e === void 0 && (e = "number"), oF(r, e); + }; }); - // node_modules/core-js/internals/to-property-key.js - var require_to_property_key = __commonJS({ - "node_modules/core-js/internals/to-property-key.js"(exports, module) { - var toPrimitive = require_to_primitive(); - var isSymbol = require_is_symbol(); - module.exports = function (argument) { - var key = toPrimitive(argument, "string"); - return isSymbol(key) ? key : key + ""; - }; - }, + var Cs = k((f7, lf) => { + var hF = uf(), + cF = hl(); + lf.exports = function (r) { + var e = hF(r, "string"); + return cF(e) ? e : e + ""; + }; }); - // node_modules/core-js/internals/document-create-element.js - var require_document_create_element = __commonJS({ - "node_modules/core-js/internals/document-create-element.js"(exports, module) { - var global2 = require_global(); - var isObject = require_is_object(); - var document2 = global2.document; - var EXISTS = isObject(document2) && isObject(document2.createElement); - module.exports = function (it) { - return EXISTS ? document2.createElement(it) : {}; - }; - }, + var bl = k((d7, hf) => { + var fF = Et(), + af = ei(), + Dl = fF.document, + dF = af(Dl) && af(Dl.createElement); + hf.exports = function (r) { + return dF ? Dl.createElement(r) : {}; + }; }); - // node_modules/core-js/internals/ie8-dom-define.js - var require_ie8_dom_define = __commonJS({ - "node_modules/core-js/internals/ie8-dom-define.js"(exports, module) { - var DESCRIPTORS = require_descriptors(); - var fails = require_fails(); - var createElement = require_document_create_element(); - module.exports = - !DESCRIPTORS && - !fails(function () { - return ( - Object.defineProperty(createElement("div"), "a", { - get: function get() { - return 7; - }, - }).a != 7 - ); - }); - }, + var Fl = k((p7, cf) => { + var pF = gt(), + mF = Je(), + gF = bl(); + cf.exports = + !pF && + !mF(function () { + return ( + Object.defineProperty(gF("div"), "a", { + get: function get() { + return 7; + }, + }).a != 7 + ); + }); }); - // node_modules/core-js/internals/object-get-own-property-descriptor.js - var require_object_get_own_property_descriptor = __commonJS({ - "node_modules/core-js/internals/object-get-own-property-descriptor.js"(exports) { - var DESCRIPTORS = require_descriptors(); - var call = require_function_call(); - var propertyIsEnumerableModule = require_object_property_is_enumerable(); - var createPropertyDescriptor = require_create_property_descriptor(); - var toIndexedObject = require_to_indexed_object(); - var toPropertyKey = require_to_property_key(); - var hasOwn = require_has_own_property(); - var IE8_DOM_DEFINE = require_ie8_dom_define(); - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - exports.f = DESCRIPTORS - ? $getOwnPropertyDescriptor - : /* @__PURE__ */ __name(function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPropertyKey(P); - if (IE8_DOM_DEFINE) - try { - return $getOwnPropertyDescriptor(O, P); - } catch (error) {} - if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); - }, "getOwnPropertyDescriptor"); - }, + var yl = k((df) => { + var DF = gt(), + bF = Zt(), + FF = uc(), + yF = dr(), + CF = pr(), + AF = Cs(), + EF = kt(), + vF = Fl(), + ff = Object.getOwnPropertyDescriptor; + df.f = DF + ? ff + : h(function (e, t) { + if (((e = CF(e)), (t = AF(t)), vF)) + try { + return ff(e, t); + } catch (e) {} + if (EF(e, t)) return yF(!bF(FF.f, e, t), e[t]); + }, "getOwnPropertyDescriptor"); }); - // node_modules/core-js/internals/v8-prototype-define-bug.js - var require_v8_prototype_define_bug = __commonJS({ - "node_modules/core-js/internals/v8-prototype-define-bug.js"(exports, module) { - var DESCRIPTORS = require_descriptors(); - var fails = require_fails(); - module.exports = - DESCRIPTORS && - fails(function () { - return ( - Object.defineProperty(function () {}, "prototype", { - value: 42, - writable: false, - }).prototype != 42 - ); - }); - }, + var Cl = k((D7, pf) => { + var kF = gt(), + wF = Je(); + pf.exports = + kF && + wF(function () { + return Object.defineProperty(function () {}, "prototype", { value: 42, writable: !1 }).prototype != 42; + }); }); - // node_modules/core-js/internals/an-object.js - var require_an_object = __commonJS({ - "node_modules/core-js/internals/an-object.js"(exports, module) { - var isObject = require_is_object(); - var $String = String; - var $TypeError = TypeError; - module.exports = function (argument) { - if (isObject(argument)) return argument; - throw $TypeError($String(argument) + " is not an object"); - }; - }, + var Pt = k((b7, mf) => { + var xF = ei(), + SF = String, + BF = TypeError; + mf.exports = function (r) { + if (xF(r)) return r; + throw BF(SF(r) + " is not an object"); + }; }); - // node_modules/core-js/internals/object-define-property.js - var require_object_define_property = __commonJS({ - "node_modules/core-js/internals/object-define-property.js"(exports) { - var DESCRIPTORS = require_descriptors(); - var IE8_DOM_DEFINE = require_ie8_dom_define(); - var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug(); - var anObject = require_an_object(); - var toPropertyKey = require_to_property_key(); - var $TypeError = TypeError; - var $defineProperty = Object.defineProperty; - var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ENUMERABLE = "enumerable"; - var CONFIGURABLE = "configurable"; - var WRITABLE = "writable"; - exports.f = DESCRIPTORS - ? V8_PROTOTYPE_DEFINE_BUG - ? /* @__PURE__ */ __name(function defineProperty(O, P, Attributes) { - anObject(O); - P = toPropertyKey(P); - anObject(Attributes); - if (typeof O === "function" && P === "prototype" && "value" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { - var current = $getOwnPropertyDescriptor(O, P); - if (current && current[WRITABLE]) { - O[P] = Attributes.value; - Attributes = { - configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], - enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], - writable: false, - }; - } - } - return $defineProperty(O, P, Attributes); - }, "defineProperty") - : $defineProperty - : /* @__PURE__ */ __name(function defineProperty(O, P, Attributes) { - anObject(O); - P = toPropertyKey(P); - anObject(Attributes); - if (IE8_DOM_DEFINE) - try { - return $defineProperty(O, P, Attributes); - } catch (error) {} - if ("get" in Attributes || "set" in Attributes) throw $TypeError("Accessors not supported"); - if ("value" in Attributes) O[P] = Attributes.value; - return O; - }, "defineProperty"); - }, + var Lt = k((Df) => { + var _F = gt(), + OF = Fl(), + TF = Cl(), + As = Pt(), + gf = Cs(), + RF = TypeError, + Al = Object.defineProperty, + $F = Object.getOwnPropertyDescriptor, + El = "enumerable", + vl = "configurable", + kl = "writable"; + Df.f = _F + ? TF + ? h(function (e, t, i) { + if ((As(e), (t = gf(t)), As(i), typeof e == "function" && t === "prototype" && "value" in i && kl in i && !i[kl])) { + var n = $F(e, t); + n && n[kl] && ((e[t] = i.value), (i = { configurable: vl in i ? i[vl] : n[vl], enumerable: El in i ? i[El] : n[El], writable: !1 })); + } + return Al(e, t, i); + }, "defineProperty") + : Al + : h(function (e, t, i) { + if ((As(e), (t = gf(t)), As(i), OF)) + try { + return Al(e, t, i); + } catch (e) {} + if ("get" in i || "set" in i) throw RF("Accessors not supported"); + return "value" in i && (e[t] = i.value), e; + }, "defineProperty"); }); - // node_modules/core-js/internals/create-non-enumerable-property.js - var require_create_non_enumerable_property = __commonJS({ - "node_modules/core-js/internals/create-non-enumerable-property.js"(exports, module) { - var DESCRIPTORS = require_descriptors(); - var definePropertyModule = require_object_define_property(); - var createPropertyDescriptor = require_create_property_descriptor(); - module.exports = DESCRIPTORS - ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); - } - : function (object, key, value) { - object[key] = value; - return object; - }; - }, + var Es = k((C7, bf) => { + var MF = gt(), + PF = Lt(), + LF = dr(); + bf.exports = MF + ? function (r, e, t) { + return PF.f(r, e, LF(1, t)); + } + : function (r, e, t) { + return (r[e] = t), r; + }; }); - // node_modules/core-js/internals/function-name.js - var require_function_name = __commonJS({ - "node_modules/core-js/internals/function-name.js"(exports, module) { - var DESCRIPTORS = require_descriptors(); - var hasOwn = require_has_own_property(); - var FunctionPrototype = Function.prototype; - var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; - var EXISTS = hasOwn(FunctionPrototype, "name"); - var PROPER = EXISTS && /* @__PURE__ */ __name(function something() {}, "something").name === "something"; - var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, "name").configurable)); - module.exports = { - EXISTS, - PROPER, - CONFIGURABLE, - }; - }, + var vs = k((A7, yf) => { + var wl = gt(), + qF = kt(), + Ff = Function.prototype, + IF = wl && Object.getOwnPropertyDescriptor, + xl = qF(Ff, "name"), + NF = xl && h(function () {}, "something").name === "something", + VF = xl && (!wl || (wl && IF(Ff, "name").configurable)); + yf.exports = { EXISTS: xl, PROPER: NF, CONFIGURABLE: VF }; }); - // node_modules/core-js/internals/inspect-source.js - var require_inspect_source = __commonJS({ - "node_modules/core-js/internals/inspect-source.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var isCallable = require_is_callable(); - var store = require_shared_store(); - var functionToString = uncurryThis(Function.toString); - if (!isCallable(store.inspectSource)) { - store.inspectSource = function (it) { - return functionToString(it); - }; - } - module.exports = store.inspectSource; - }, + var Bl = k((v7, Cf) => { + var zF = Ge(), + WF = Ne(), + Sl = Fs(), + jF = zF(Function.toString); + WF(Sl.inspectSource) || + (Sl.inspectSource = function (r) { + return jF(r); + }); + Cf.exports = Sl.inspectSource; }); - // node_modules/core-js/internals/weak-map-basic-detection.js - var require_weak_map_basic_detection = __commonJS({ - "node_modules/core-js/internals/weak-map-basic-detection.js"(exports, module) { - var global2 = require_global(); - var isCallable = require_is_callable(); - var WeakMap2 = global2.WeakMap; - module.exports = isCallable(WeakMap2) && /native code/.test(String(WeakMap2)); - }, + var vf = k((k7, Ef) => { + var HF = Et(), + UF = Ne(), + Af = HF.WeakMap; + Ef.exports = UF(Af) && /native code/.test(String(Af)); }); - // node_modules/core-js/internals/shared-key.js - var require_shared_key = __commonJS({ - "node_modules/core-js/internals/shared-key.js"(exports, module) { - var shared = require_shared(); - var uid = require_uid(); - var keys = shared("keys"); - module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - }, + var ks = k((w7, wf) => { + var YF = pl(), + GF = ml(), + kf = YF("keys"); + wf.exports = function (r) { + return kf[r] || (kf[r] = GF(r)); + }; }); - // node_modules/core-js/internals/hidden-keys.js - var require_hidden_keys = __commonJS({ - "node_modules/core-js/internals/hidden-keys.js"(exports, module) { - module.exports = {}; - }, + var ws = k((x7, xf) => { + xf.exports = {}; }); - // node_modules/core-js/internals/internal-state.js - var require_internal_state = __commonJS({ - "node_modules/core-js/internals/internal-state.js"(exports, module) { - var NATIVE_WEAK_MAP = require_weak_map_basic_detection(); - var global2 = require_global(); - var isObject = require_is_object(); - var createNonEnumerableProperty = require_create_non_enumerable_property(); - var hasOwn = require_has_own_property(); - var shared = require_shared_store(); - var sharedKey = require_shared_key(); - var hiddenKeys = require_hidden_keys(); - var OBJECT_ALREADY_INITIALIZED = "Object already initialized"; - var TypeError2 = global2.TypeError; - var WeakMap2 = global2.WeakMap; - var set; - var get; - var has; - var enforce = /* @__PURE__ */ __name(function (it) { - return has(it) ? get(it) : set(it, {}); - }, "enforce"); - var getterFor = /* @__PURE__ */ __name(function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError2("Incompatible receiver, " + TYPE + " required"); - } - return state; + var Bs = k((S7, _f) => { + var KF = vf(), + Bf = Et(), + XF = ei(), + QF = Es(), + _l = kt(), + Ol = Fs(), + JF = ks(), + ZF = ws(), + Sf = "Object already initialized", + Tl = Bf.TypeError, + e2 = Bf.WeakMap, + xs, + on, + Ss, + t2 = h(function (r) { + return Ss(r) ? on(r) : xs(r, {}); + }, "enforce"), + i2 = h(function (r) { + return function (e) { + var t; + if (!XF(e) || (t = on(e)).type !== r) throw Tl("Incompatible receiver, " + r + " required"); + return t; }; }, "getterFor"); - if (NATIVE_WEAK_MAP || shared.state) { - store = shared.state || (shared.state = new WeakMap2()); - store.get = store.get; - store.has = store.has; - store.set = store.set; - set = /* @__PURE__ */ __name(function (it, metadata) { - if (store.has(it)) throw TypeError2(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - store.set(it, metadata); - return metadata; - }, "set"); - get = /* @__PURE__ */ __name(function (it) { - return store.get(it) || {}; - }, "get"); - has = /* @__PURE__ */ __name(function (it) { - return store.has(it); - }, "has"); - } else { - STATE = sharedKey("state"); - hiddenKeys[STATE] = true; - set = /* @__PURE__ */ __name(function (it, metadata) { - if (hasOwn(it, STATE)) throw TypeError2(OBJECT_ALREADY_INITIALIZED); - metadata.facade = it; - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }, "set"); - get = /* @__PURE__ */ __name(function (it) { - return hasOwn(it, STATE) ? it[STATE] : {}; - }, "get"); - has = /* @__PURE__ */ __name(function (it) { - return hasOwn(it, STATE); - }, "has"); - } - var store; - var STATE; - module.exports = { - set, - get, - has, - enforce, - getterFor, - }; - }, + KF || Ol.state + ? ((wt = Ol.state || (Ol.state = new e2())), + (wt.get = wt.get), + (wt.has = wt.has), + (wt.set = wt.set), + (xs = h(function (r, e) { + if (wt.has(r)) throw Tl(Sf); + return (e.facade = r), wt.set(r, e), e; + }, "set")), + (on = h(function (r) { + return wt.get(r) || {}; + }, "get")), + (Ss = h(function (r) { + return wt.has(r); + }, "has"))) + : ((Ii = JF("state")), + (ZF[Ii] = !0), + (xs = h(function (r, e) { + if (_l(r, Ii)) throw Tl(Sf); + return (e.facade = r), QF(r, Ii, e), e; + }, "set")), + (on = h(function (r) { + return _l(r, Ii) ? r[Ii] : {}; + }, "get")), + (Ss = h(function (r) { + return _l(r, Ii); + }, "has"))); + var wt, Ii; + _f.exports = { set: xs, get: on, has: Ss, enforce: t2, getterFor: i2 }; }); - // node_modules/core-js/internals/make-built-in.js - var require_make_built_in = __commonJS({ - "node_modules/core-js/internals/make-built-in.js"(exports, module) { - var fails = require_fails(); - var isCallable = require_is_callable(); - var hasOwn = require_has_own_property(); - var DESCRIPTORS = require_descriptors(); - var CONFIGURABLE_FUNCTION_NAME = require_function_name().CONFIGURABLE; - var inspectSource = require_inspect_source(); - var InternalStateModule = require_internal_state(); - var enforceInternalState = InternalStateModule.enforce; - var getInternalState = InternalStateModule.get; - var defineProperty = Object.defineProperty; - var CONFIGURABLE_LENGTH = - DESCRIPTORS && - !fails(function () { - return ( - defineProperty(function () {}, "length", { - value: 8, - }).length !== 8 - ); - }); - var TEMPLATE = String(String).split("String"); - var makeBuiltIn = (module.exports = function makeBuiltIn(value, name2, options) { - if (String(name2).slice(0, 7) === "Symbol(") { - name2 = "[" + String(name2).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"; - } - if (options && options.getter) name2 = "get " + name2; - if (options && options.setter) name2 = "set " + name2; - if (!hasOwn(value, "name") || (CONFIGURABLE_FUNCTION_NAME && value.name !== name2)) { - if (DESCRIPTORS) - defineProperty(value, "name", { - value: name2, - configurable: true, - }); - else value.name = name2; - } - if (CONFIGURABLE_LENGTH && options && hasOwn(options, "arity") && value.length !== options.arity) { - defineProperty(value, "length", { - value: options.arity, - }); - } + var Ml = k((_7, Rf) => { + var $l = Ge(), + r2 = Je(), + n2 = Ne(), + _s = kt(), + Rl = gt(), + s2 = vs().CONFIGURABLE, + o2 = Bl(), + Tf = Bs(), + u2 = Tf.enforce, + l2 = Tf.get, + Of = String, + Os = Object.defineProperty, + a2 = $l("".slice), + h2 = $l("".replace), + c2 = $l([].join), + f2 = + Rl && + !r2(function () { + return Os(function () {}, "length", { value: 8 }).length !== 8; + }), + d2 = String(String).split("String"), + p2 = (Rf.exports = function p2(r, e, t) { + a2(Of(e), 0, 7) === "Symbol(" && (e = "[" + h2(Of(e), /^Symbol\(([^)]*)\)/, "$1") + "]"), t && t.getter && (e = "get " + e), t && t.setter && (e = "set " + e), (!_s(r, "name") || (s2 && r.name !== e)) && (Rl ? Os(r, "name", { value: e, configurable: !0 }) : (r.name = e)), f2 && t && _s(t, "arity") && r.length !== t.arity && Os(r, "length", { value: t.arity }); try { - if (options && hasOwn(options, "constructor") && options.constructor) { - if (DESCRIPTORS) - defineProperty(value, "prototype", { - writable: false, - }); - } else if (value.prototype) value.prototype = void 0; - } catch (error) {} - var state = enforceInternalState(value); - if (!hasOwn(state, "source")) { - state.source = TEMPLATE.join(typeof name2 == "string" ? name2 : ""); - } - return value; + t && _s(t, "constructor") && t.constructor ? Rl && Os(r, "prototype", { writable: !1 }) : r.prototype && (r.prototype = void 0); + } catch (e) {} + var i = u2(r); + return _s(i, "source") || (i.source = c2(d2, typeof e == "string" ? e : "")), r; }); - Function.prototype.toString = makeBuiltIn( - /* @__PURE__ */ __name(function toString() { - return (isCallable(this) && getInternalState(this).source) || inspectSource(this); - }, "toString"), - "toString" - ); - }, + Function.prototype.toString = p2( + h(function () { + return (n2(this) && l2(this).source) || o2(this); + }, "toString"), + "toString" + ); }); - // node_modules/core-js/internals/define-built-in.js - var require_define_built_in = __commonJS({ - "node_modules/core-js/internals/define-built-in.js"(exports, module) { - var isCallable = require_is_callable(); - var definePropertyModule = require_object_define_property(); - var makeBuiltIn = require_make_built_in(); - var defineGlobalProperty = require_define_global_property(); - module.exports = function (O, key, value, options) { - if (!options) options = {}; - var simple = options.enumerable; - var name2 = options.name !== void 0 ? options.name : key; - if (isCallable(value)) makeBuiltIn(value, name2, options); - if (options.global) { - if (simple) O[key] = value; - else defineGlobalProperty(key, value); - } else { - try { - if (!options.unsafe) delete O[key]; - else if (O[key]) simple = true; - } catch (error) {} - if (simple) O[key] = value; - else - definePropertyModule.f(O, key, { - value, - enumerable: false, - configurable: !options.nonConfigurable, - writable: !options.nonWritable, - }); - } - return O; - }; - }, + var br = k((T7, $f) => { + var m2 = Ne(), + g2 = Lt(), + D2 = Ml(), + b2 = bs(); + $f.exports = function (r, e, t, i) { + i || (i = {}); + var n = i.enumerable, + s = i.name !== void 0 ? i.name : e; + if ((m2(t) && D2(t, s, i), i.global)) n ? (r[e] = t) : b2(e, t); + else { + try { + i.unsafe ? r[e] && (n = !0) : delete r[e]; + } catch (e) {} + n ? (r[e] = t) : g2.f(r, e, { value: t, enumerable: !1, configurable: !i.nonConfigurable, writable: !i.nonWritable }); + } + return r; + }; }); - // node_modules/core-js/internals/math-trunc.js - var require_math_trunc = __commonJS({ - "node_modules/core-js/internals/math-trunc.js"(exports, module) { - var ceil = Math.ceil; - var floor = Math.floor; - module.exports = - Math.trunc || - /* @__PURE__ */ __name(function trunc(x) { - var n = +x; - return (n > 0 ? floor : ceil)(n); - }, "trunc"); - }, + var Pf = k((R7, Mf) => { + var F2 = Math.ceil, + y2 = Math.floor; + Mf.exports = + Math.trunc || + h(function (e) { + var t = +e; + return (t > 0 ? y2 : F2)(t); + }, "trunc"); }); - // node_modules/core-js/internals/to-integer-or-infinity.js - var require_to_integer_or_infinity = __commonJS({ - "node_modules/core-js/internals/to-integer-or-infinity.js"(exports, module) { - var trunc = require_math_trunc(); - module.exports = function (argument) { - var number2 = +argument; - return number2 !== number2 || number2 === 0 ? 0 : trunc(number2); - }; - }, + var Pl = k((M7, Lf) => { + var C2 = Pf(); + Lf.exports = function (r) { + var e = +r; + return e !== e || e === 0 ? 0 : C2(e); + }; }); - // node_modules/core-js/internals/to-absolute-index.js - var require_to_absolute_index = __commonJS({ - "node_modules/core-js/internals/to-absolute-index.js"(exports, module) { - var toIntegerOrInfinity = require_to_integer_or_infinity(); - var max = Math.max; - var min = Math.min; - module.exports = function (index, length) { - var integer = toIntegerOrInfinity(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); - }; - }, + var Ll = k((P7, qf) => { + var A2 = Pl(), + E2 = Math.max, + v2 = Math.min; + qf.exports = function (r, e) { + var t = A2(r); + return t < 0 ? E2(t + e, 0) : v2(t, e); + }; }); - // node_modules/core-js/internals/to-length.js - var require_to_length = __commonJS({ - "node_modules/core-js/internals/to-length.js"(exports, module) { - var toIntegerOrInfinity = require_to_integer_or_infinity(); - var min = Math.min; - module.exports = function (argument) { - return argument > 0 ? min(toIntegerOrInfinity(argument), 9007199254740991) : 0; - }; - }, + var Nf = k((L7, If) => { + var k2 = Pl(), + w2 = Math.min; + If.exports = function (r) { + return r > 0 ? w2(k2(r), 9007199254740991) : 0; + }; }); - // node_modules/core-js/internals/length-of-array-like.js - var require_length_of_array_like = __commonJS({ - "node_modules/core-js/internals/length-of-array-like.js"(exports, module) { - var toLength = require_to_length(); - module.exports = function (obj) { - return toLength(obj.length); - }; - }, + var Fr = k((q7, Vf) => { + var x2 = Nf(); + Vf.exports = function (r) { + return x2(r.length); + }; }); - // node_modules/core-js/internals/array-includes.js - var require_array_includes = __commonJS({ - "node_modules/core-js/internals/array-includes.js"(exports, module) { - var toIndexedObject = require_to_indexed_object(); - var toAbsoluteIndex = require_to_absolute_index(); - var lengthOfArrayLike2 = require_length_of_array_like(); - var createMethod = /* @__PURE__ */ __name(function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = lengthOfArrayLike2(O); - var index = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) - while (length > index) { - value = O[index++]; - if (value != value) return true; - } - else - for (; length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } - return !IS_INCLUDES && -1; + var jf = k((I7, Wf) => { + var S2 = pr(), + B2 = Ll(), + _2 = Fr(), + zf = h(function (r) { + return function (e, t, i) { + var n = S2(e), + s = _2(n), + o = B2(i, s), + u; + if (r && t != t) { + for (; s > o; ) if (((u = n[o++]), u != u)) return !0; + } else for (; s > o; o++) if ((r || o in n) && n[o] === t) return r || o || 0; + return !r && -1; }; }, "createMethod"); - module.exports = { - includes: createMethod(true), - indexOf: createMethod(false), - }; - }, + Wf.exports = { includes: zf(!0), indexOf: zf(!1) }; }); - // node_modules/core-js/internals/object-keys-internal.js - var require_object_keys_internal = __commonJS({ - "node_modules/core-js/internals/object-keys-internal.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var hasOwn = require_has_own_property(); - var toIndexedObject = require_to_indexed_object(); - var indexOf = require_array_includes().indexOf; - var hiddenKeys = require_hidden_keys(); - var push = uncurryThis([].push); - module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); - while (names.length > i) - if (hasOwn(O, (key = names[i++]))) { - ~indexOf(result, key) || push(result, key); - } - return result; - }; - }, - }); - // node_modules/core-js/internals/enum-bug-keys.js - var require_enum_bug_keys = __commonJS({ - "node_modules/core-js/internals/enum-bug-keys.js"(exports, module) { - module.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; - }, + var Il = k((V7, Uf) => { + var O2 = Ge(), + ql = kt(), + T2 = pr(), + R2 = jf().indexOf, + $2 = ws(), + Hf = O2([].push); + Uf.exports = function (r, e) { + var t = T2(r), + i = 0, + n = [], + s; + for (s in t) !ql($2, s) && ql(t, s) && Hf(n, s); + for (; e.length > i; ) ql(t, (s = e[i++])) && (~R2(n, s) || Hf(n, s)); + return n; + }; }); - // node_modules/core-js/internals/object-get-own-property-names.js - var require_object_get_own_property_names = __commonJS({ - "node_modules/core-js/internals/object-get-own-property-names.js"(exports) { - var internalObjectKeys = require_object_keys_internal(); - var enumBugKeys = require_enum_bug_keys(); - var hiddenKeys = enumBugKeys.concat("length", "prototype"); - exports.f = - Object.getOwnPropertyNames || - /* @__PURE__ */ __name(function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }, "getOwnPropertyNames"); - }, + var Ts = k((z7, Yf) => { + Yf.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; }); - // node_modules/core-js/internals/object-get-own-property-symbols.js - var require_object_get_own_property_symbols = __commonJS({ - "node_modules/core-js/internals/object-get-own-property-symbols.js"(exports) { - exports.f = Object.getOwnPropertySymbols; - }, + var Kf = k((Gf) => { + var M2 = Il(), + P2 = Ts(), + L2 = P2.concat("length", "prototype"); + Gf.f = + Object.getOwnPropertyNames || + h(function (e) { + return M2(e, L2); + }, "getOwnPropertyNames"); }); - // node_modules/core-js/internals/own-keys.js - var require_own_keys = __commonJS({ - "node_modules/core-js/internals/own-keys.js"(exports, module) { - var getBuiltIn = require_get_built_in(); - var uncurryThis = require_function_uncurry_this(); - var getOwnPropertyNamesModule = require_object_get_own_property_names(); - var getOwnPropertySymbolsModule = require_object_get_own_property_symbols(); - var anObject = require_an_object(); - var concat = uncurryThis([].concat); - module.exports = - getBuiltIn("Reflect", "ownKeys") || - /* @__PURE__ */ __name(function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; - }, "ownKeys"); - }, + var Qf = k((Xf) => { + Xf.f = Object.getOwnPropertySymbols; }); - // node_modules/core-js/internals/copy-constructor-properties.js - var require_copy_constructor_properties = __commonJS({ - "node_modules/core-js/internals/copy-constructor-properties.js"(exports, module) { - var hasOwn = require_has_own_property(); - var ownKeys = require_own_keys(); - var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor(); - var definePropertyModule = require_object_define_property(); - module.exports = function (target, source, exceptions) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - } - }; - }, + var Zf = k((U7, Jf) => { + var q2 = sn(), + I2 = Ge(), + N2 = Kf(), + V2 = Qf(), + z2 = Pt(), + W2 = I2([].concat); + Jf.exports = + q2("Reflect", "ownKeys") || + h(function (e) { + var t = N2.f(z2(e)), + i = V2.f; + return i ? W2(t, i(e)) : t; + }, "ownKeys"); }); - // node_modules/core-js/internals/is-forced.js - var require_is_forced = __commonJS({ - "node_modules/core-js/internals/is-forced.js"(exports, module) { - var fails = require_fails(); - var isCallable = require_is_callable(); - var replacement = /#|\.prototype\./; - var isForced = /* @__PURE__ */ __name(function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection; - }, "isForced"); - var normalize = (isForced.normalize = function normalize(string2) { - return String(string2).replace(replacement, ".").toLowerCase(); - }); - var data = (isForced.data = {}); - var NATIVE = (isForced.NATIVE = "N"); - var POLYFILL = (isForced.POLYFILL = "P"); - module.exports = isForced; - }, + var id = k((G7, td) => { + var ed = kt(), + j2 = Zf(), + H2 = yl(), + U2 = Lt(); + td.exports = function (r, e, t) { + for (var i = j2(e), n = U2.f, s = H2.f, o = 0; o < i.length; o++) { + var u = i[o]; + !ed(r, u) && !(t && ed(t, u)) && n(r, u, s(e, u)); + } + }; }); - // node_modules/core-js/internals/export.js - var require_export = __commonJS({ - "node_modules/core-js/internals/export.js"(exports, module) { - var global2 = require_global(); - var getOwnPropertyDescriptor = require_object_get_own_property_descriptor().f; - var createNonEnumerableProperty = require_create_non_enumerable_property(); - var defineBuiltIn = require_define_built_in(); - var defineGlobalProperty = require_define_global_property(); - var copyConstructorProperties = require_copy_constructor_properties(); - var isForced = require_is_forced(); - module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global2; - } else if (STATIC) { - target = global2[TARGET] || defineGlobalProperty(TARGET, {}); - } else { - target = (global2[TARGET] || {}).prototype; - } - if (target) - for (key in source) { - sourceProperty = source[key]; - if (options.dontCallGetSet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced); - if (!FORCED && targetProperty !== void 0) { - if (typeof sourceProperty == typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, "sham", true); - } - defineBuiltIn(target, key, sourceProperty, options); - } - }; - }, + var nd = k((K7, rd) => { + var Y2 = Je(), + G2 = Ne(), + K2 = /#|\.prototype\./, + un = h(function (r, e) { + var t = Q2[X2(r)]; + return t == Z2 ? !0 : t == J2 ? !1 : G2(e) ? Y2(e) : !!e; + }, "isForced"), + X2 = (un.normalize = function X2(r) { + return String(r).replace(K2, ".").toLowerCase(); + }), + Q2 = (un.data = {}), + J2 = (un.NATIVE = "N"), + Z2 = (un.POLYFILL = "P"); + rd.exports = un; }); - // node_modules/core-js/internals/is-array.js - var require_is_array = __commonJS({ - "node_modules/core-js/internals/is-array.js"(exports, module) { - var classof = require_classof_raw(); - module.exports = - Array.isArray || - /* @__PURE__ */ __name(function isArray(argument) { - return classof(argument) == "Array"; - }, "isArray"); - }, + var Ni = k((Q7, sd) => { + var Nl = Et(), + ey = yl().f, + ty = Es(), + iy = br(), + ry = bs(), + ny = id(), + sy = nd(); + sd.exports = function (r, e) { + var t = r.target, + i = r.global, + n = r.stat, + s, + o, + u, + l, + a, + c; + if ((i ? (o = Nl) : n ? (o = Nl[t] || ry(t, {})) : (o = (Nl[t] || {}).prototype), o)) + for (u in e) { + if (((a = e[u]), r.dontCallGetSet ? ((c = ey(o, u)), (l = c && c.value)) : (l = o[u]), (s = sy(i ? u : t + (n ? "." : "#") + u, r.forced)), !s && l !== void 0)) { + if (typeof a == typeof l) continue; + ny(a, l); + } + (r.sham || (l && l.sham)) && ty(a, "sham", !0), iy(o, u, a, r); + } + }; }); - // node_modules/core-js/internals/does-not-exceed-safe-integer.js - var require_does_not_exceed_safe_integer = __commonJS({ - "node_modules/core-js/internals/does-not-exceed-safe-integer.js"(exports, module) { - var $TypeError = TypeError; - var MAX_SAFE_INTEGER = 9007199254740991; - module.exports = function (it) { - if (it > MAX_SAFE_INTEGER) throw $TypeError("Maximum allowed index exceeded"); - return it; - }; - }, + var Vl = k((J7, od) => { + var oy = nn(); + od.exports = + Array.isArray || + h(function (e) { + return oy(e) == "Array"; + }, "isArray"); }); - // node_modules/core-js/internals/function-uncurry-this-clause.js - var require_function_uncurry_this_clause = __commonJS({ - "node_modules/core-js/internals/function-uncurry-this-clause.js"(exports, module) { - var classofRaw = require_classof_raw(); - var uncurryThis = require_function_uncurry_this(); - module.exports = function (fn) { - if (classofRaw(fn) === "Function") return uncurryThis(fn); - }; - }, + var ld = k((ex, ud) => { + var uy = TypeError, + ly = 9007199254740991; + ud.exports = function (r) { + if (r > ly) throw uy("Maximum allowed index exceeded"); + return r; + }; }); - // node_modules/core-js/internals/function-bind-context.js - var require_function_bind_context = __commonJS({ - "node_modules/core-js/internals/function-bind-context.js"(exports, module) { - var uncurryThis = require_function_uncurry_this_clause(); - var aCallable2 = require_a_callable(); - var NATIVE_BIND = require_function_bind_native(); - var bind2 = uncurryThis(uncurryThis.bind); - module.exports = function (fn, that) { - aCallable2(fn); - return that === void 0 - ? fn - : NATIVE_BIND - ? bind2(fn, that) - : function () { - return fn.apply(that, arguments); - }; - }; - }, + var hd = k((tx, ad) => { + var ay = nn(), + hy = Ge(); + ad.exports = function (r) { + if (ay(r) === "Function") return hy(r); + }; }); - // node_modules/core-js/internals/flatten-into-array.js - var require_flatten_into_array = __commonJS({ - "node_modules/core-js/internals/flatten-into-array.js"(exports, module) { - "use strict"; - var isArray = require_is_array(); - var lengthOfArrayLike2 = require_length_of_array_like(); - var doesNotExceedSafeInteger = require_does_not_exceed_safe_integer(); - var bind2 = require_function_bind_context(); - var flattenIntoArray2 = /* @__PURE__ */ __name(function (target, original, source, sourceLen, start, depth, mapper, thisArg) { - var targetIndex = start; - var sourceIndex = 0; - var mapFn = mapper ? bind2(mapper, thisArg) : false; - var element2, elementLen; - while (sourceIndex < sourceLen) { - if (sourceIndex in source) { - element2 = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; - if (depth > 0 && isArray(element2)) { - elementLen = lengthOfArrayLike2(element2); - targetIndex = flattenIntoArray2(target, original, element2, elementLen, targetIndex, depth - 1) - 1; - } else { - doesNotExceedSafeInteger(targetIndex + 1); - target[targetIndex] = element2; + var Rs = k((ix, fd) => { + var cd = hd(), + cy = mr(), + fy = hs(), + dy = cd(cd.bind); + fd.exports = function (r, e) { + return ( + cy(r), + e === void 0 + ? r + : fy + ? dy(r, e) + : function () { + return r.apply(e, arguments); } - targetIndex++; - } - sourceIndex++; - } - return targetIndex; + ); + }; + }); + var md = k((rx, pd) => { + "use strict"; + var py = Vl(), + my = Fr(), + gy = ld(), + Dy = Rs(), + dd = h(function (r, e, t, i, n, s, o, u) { + for (var l = n, a = 0, c = o ? Dy(o, u) : !1, f, d; a < i; ) a in t && ((f = c ? c(t[a], a, e) : t[a]), s > 0 && py(f) ? ((d = my(f)), (l = dd(r, e, f, d, l, s - 1) - 1)) : (gy(l + 1), (r[l] = f)), l++), a++; + return l; }, "flattenIntoArray"); - module.exports = flattenIntoArray2; - }, + pd.exports = dd; }); - // node_modules/core-js/internals/to-string-tag-support.js - var require_to_string_tag_support = __commonJS({ - "node_modules/core-js/internals/to-string-tag-support.js"(exports, module) { - var wellKnownSymbol = require_well_known_symbol(); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var test = {}; - test[TO_STRING_TAG] = "z"; - module.exports = String(test) === "[object z]"; - }, + var bd = k((sx, Dd) => { + var by = rt(), + Fy = by("toStringTag"), + gd = {}; + gd[Fy] = "z"; + Dd.exports = String(gd) === "[object z]"; }); - // node_modules/core-js/internals/classof.js - var require_classof = __commonJS({ - "node_modules/core-js/internals/classof.js"(exports, module) { - var TO_STRING_TAG_SUPPORT = require_to_string_tag_support(); - var isCallable = require_is_callable(); - var classofRaw = require_classof_raw(); - var wellKnownSymbol = require_well_known_symbol(); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var $Object = Object; - var CORRECT_ARGUMENTS = - classofRaw( + var ln = k((ox, Fd) => { + var yy = bd(), + Cy = Ne(), + $s = nn(), + Ay = rt(), + Ey = Ay("toStringTag"), + vy = Object, + ky = + $s( (function () { return arguments; })() - ) == "Arguments"; - var tryGet = /* @__PURE__ */ __name(function (it, key) { + ) == "Arguments", + wy = h(function (r, e) { try { - return it[key]; - } catch (error) {} + return r[e]; + } catch (e) {} }, "tryGet"); - module.exports = TO_STRING_TAG_SUPPORT - ? classofRaw - : function (it) { - var O, tag, result; - return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet((O = $Object(it)), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && isCallable(O.callee) ? "Arguments" : result; - }; - }, + Fd.exports = yy + ? $s + : function (r) { + var e, t, i; + return r === void 0 ? "Undefined" : r === null ? "Null" : typeof (t = wy((e = vy(r)), Ey)) == "string" ? t : ky ? $s(e) : (i = $s(e)) == "Object" && Cy(e.callee) ? "Arguments" : i; + }; }); - // node_modules/core-js/internals/is-constructor.js - var require_is_constructor = __commonJS({ - "node_modules/core-js/internals/is-constructor.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var fails = require_fails(); - var isCallable = require_is_callable(); - var classof = require_classof(); - var getBuiltIn = require_get_built_in(); - var inspectSource = require_inspect_source(); - var noop2 = /* @__PURE__ */ __name(function () {}, "noop"); - var empty2 = []; - var construct = getBuiltIn("Reflect", "construct"); - var constructorRegExp = /^\s*(?:class|function)\b/; - var exec = uncurryThis(constructorRegExp.exec); - var INCORRECT_TO_STRING = !constructorRegExp.exec(noop2); - var isConstructorModern = /* @__PURE__ */ __name(function isConstructor(argument) { - if (!isCallable(argument)) return false; + var kd = k((lx, vd) => { + var xy = Ge(), + Sy = Je(), + yd = Ne(), + By = ln(), + _y = sn(), + Oy = Bl(), + Cd = h(function () {}, "noop"), + Ty = [], + Ad = _y("Reflect", "construct"), + zl = /^\s*(?:class|function)\b/, + Ry = xy(zl.exec), + $y = !zl.exec(Cd), + an = h(function (e) { + if (!yd(e)) return !1; try { - construct(noop2, empty2, argument); - return true; - } catch (error) { - return false; + return Ad(Cd, Ty, e), !0; + } catch (e) { + return !1; } - }, "isConstructor"); - var isConstructorLegacy = /* @__PURE__ */ __name(function isConstructor(argument) { - if (!isCallable(argument)) return false; - switch (classof(argument)) { + }, "isConstructor"), + Ed = h(function (e) { + if (!yd(e)) return !1; + switch (By(e)) { case "AsyncFunction": case "GeneratorFunction": case "AsyncGeneratorFunction": - return false; + return !1; } try { - return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); - } catch (error) { - return true; + return $y || !!Ry(zl, Oy(e)); + } catch (e) { + return !0; } }, "isConstructor"); - isConstructorLegacy.sham = true; - module.exports = - !construct || - fails(function () { - var called; - return ( - isConstructorModern(isConstructorModern.call) || - !isConstructorModern(Object) || - !isConstructorModern(function () { - called = true; - }) || - called - ); - }) - ? isConstructorLegacy - : isConstructorModern; - }, + Ed.sham = !0; + vd.exports = + !Ad || + Sy(function () { + var r; + return ( + an(an.call) || + !an(Object) || + !an(function () { + r = !0; + }) || + r + ); + }) + ? Ed + : an; }); - // node_modules/core-js/internals/array-species-constructor.js - var require_array_species_constructor = __commonJS({ - "node_modules/core-js/internals/array-species-constructor.js"(exports, module) { - var isArray = require_is_array(); - var isConstructor = require_is_constructor(); - var isObject = require_is_object(); - var wellKnownSymbol = require_well_known_symbol(); - var SPECIES = wellKnownSymbol("species"); - var $Array = Array; - module.exports = function (originalArray) { - var C2; - if (isArray(originalArray)) { - C2 = originalArray.constructor; - if (isConstructor(C2) && (C2 === $Array || isArray(C2.prototype))) C2 = void 0; - else if (isObject(C2)) { - C2 = C2[SPECIES]; - if (C2 === null) C2 = void 0; - } - } - return C2 === void 0 ? $Array : C2; - }; - }, + var Bd = k((hx, Sd) => { + var wd = Vl(), + My = kd(), + Py = ei(), + Ly = rt(), + qy = Ly("species"), + xd = Array; + Sd.exports = function (r) { + var e; + return wd(r) && ((e = r.constructor), My(e) && (e === xd || wd(e.prototype)) ? (e = void 0) : Py(e) && ((e = e[qy]), e === null && (e = void 0))), e === void 0 ? xd : e; + }; }); - // node_modules/core-js/internals/array-species-create.js - var require_array_species_create = __commonJS({ - "node_modules/core-js/internals/array-species-create.js"(exports, module) { - var arraySpeciesConstructor = require_array_species_constructor(); - module.exports = function (originalArray, length) { - return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); - }; - }, + var Od = k((cx, _d) => { + var Iy = Bd(); + _d.exports = function (r, e) { + return new (Iy(r))(e === 0 ? 0 : e); + }; }); - // node_modules/core-js/internals/iterators.js - var require_iterators = __commonJS({ - "node_modules/core-js/internals/iterators.js"(exports, module) { - module.exports = {}; - }, + var yr = k((dx, Td) => { + Td.exports = {}; }); - // node_modules/core-js/internals/is-array-iterator-method.js - var require_is_array_iterator_method = __commonJS({ - "node_modules/core-js/internals/is-array-iterator-method.js"(exports, module) { - var wellKnownSymbol = require_well_known_symbol(); - var Iterators = require_iterators(); - var ITERATOR = wellKnownSymbol("iterator"); - var ArrayPrototype = Array.prototype; - module.exports = function (it) { - return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - }, + var $d = k((px, Rd) => { + var Uy = rt(), + Yy = yr(), + Gy = Uy("iterator"), + Ky = Array.prototype; + Rd.exports = function (r) { + return r !== void 0 && (Yy.Array === r || Ky[Gy] === r); + }; }); - // node_modules/core-js/internals/get-iterator-method.js - var require_get_iterator_method = __commonJS({ - "node_modules/core-js/internals/get-iterator-method.js"(exports, module) { - var classof = require_classof(); - var getMethod = require_get_method(); - var isNullOrUndefined = require_is_null_or_undefined(); - var Iterators = require_iterators(); - var wellKnownSymbol = require_well_known_symbol(); - var ITERATOR = wellKnownSymbol("iterator"); - module.exports = function (it) { - if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) || getMethod(it, "@@iterator") || Iterators[classof(it)]; - }; - }, + var Ms = k((mx, Pd) => { + var Xy = ln(), + Md = Ds(), + Qy = fs(), + Jy = yr(), + Zy = rt(), + eC = Zy("iterator"); + Pd.exports = function (r) { + if (!Qy(r)) return Md(r, eC) || Md(r, "@@iterator") || Jy[Xy(r)]; + }; }); - // node_modules/core-js/internals/get-iterator.js - var require_get_iterator = __commonJS({ - "node_modules/core-js/internals/get-iterator.js"(exports, module) { - var call = require_function_call(); - var aCallable2 = require_a_callable(); - var anObject = require_an_object(); - var tryToString = require_try_to_string(); - var getIteratorMethod = require_get_iterator_method(); - var $TypeError = TypeError; - module.exports = function (argument, usingIterator) { - var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; - if (aCallable2(iteratorMethod)) return anObject(call(iteratorMethod, argument)); - throw $TypeError(tryToString(argument) + " is not iterable"); - }; - }, + var Wl = k((gx, Ld) => { + var tC = Zt(), + iC = mr(), + rC = Pt(), + nC = gs(), + sC = Ms(), + oC = TypeError; + Ld.exports = function (r, e) { + var t = arguments.length < 2 ? sC(r) : e; + if (iC(t)) return rC(tC(t, r)); + throw oC(nC(r) + " is not iterable"); + }; }); - // node_modules/core-js/internals/iterator-close.js - var require_iterator_close = __commonJS({ - "node_modules/core-js/internals/iterator-close.js"(exports, module) { - var call = require_function_call(); - var anObject = require_an_object(); - var getMethod = require_get_method(); - module.exports = function (iterator, kind, value) { - var innerResult, innerError; - anObject(iterator); - try { - innerResult = getMethod(iterator, "return"); - if (!innerResult) { - if (kind === "throw") throw value; - return value; - } - innerResult = call(innerResult, iterator); - } catch (error) { - innerError = true; - innerResult = error; - } - if (kind === "throw") throw value; - if (innerError) throw innerResult; - anObject(innerResult); - return value; - }; - }, + var Nd = k((Dx, Id) => { + var uC = Zt(), + qd = Pt(), + lC = Ds(); + Id.exports = function (r, e, t) { + var i, n; + qd(r); + try { + if (((i = lC(r, "return")), !i)) { + if (e === "throw") throw t; + return t; + } + i = uC(i, r); + } catch (s) { + (n = !0), (i = s); + } + if (e === "throw") throw t; + if (n) throw i; + return qd(i), t; + }; }); - // node_modules/core-js/internals/iterate.js - var require_iterate = __commonJS({ - "node_modules/core-js/internals/iterate.js"(exports, module) { - var bind2 = require_function_bind_context(); - var call = require_function_call(); - var anObject = require_an_object(); - var tryToString = require_try_to_string(); - var isArrayIteratorMethod = require_is_array_iterator_method(); - var lengthOfArrayLike2 = require_length_of_array_like(); - var isPrototypeOf = require_object_is_prototype_of(); - var getIterator = require_get_iterator(); - var getIteratorMethod = require_get_iterator_method(); - var iteratorClose = require_iterator_close(); - var $TypeError = TypeError; - var Result = /* @__PURE__ */ __name(function (stopped, result) { - this.stopped = stopped; - this.result = result; - }, "Result"); - var ResultPrototype = Result.prototype; - module.exports = function (iterable, unboundFunction, options) { - var that = options && options.that; - var AS_ENTRIES = !!(options && options.AS_ENTRIES); - var IS_RECORD = !!(options && options.IS_RECORD); - var IS_ITERATOR = !!(options && options.IS_ITERATOR); - var INTERRUPTED = !!(options && options.INTERRUPTED); - var fn = bind2(unboundFunction, that); - var iterator, iterFn, index, length, result, next, step; - var stop = /* @__PURE__ */ __name(function (condition) { - if (iterator) iteratorClose(iterator, "normal", condition); - return new Result(true, condition); - }, "stop"); - var callFn = /* @__PURE__ */ __name(function (value) { - if (AS_ENTRIES) { - anObject(value); - return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); - } - return INTERRUPTED ? fn(value, stop) : fn(value); + var Hd = k((bx, jd) => { + var aC = Rs(), + hC = Zt(), + cC = Pt(), + fC = gs(), + dC = $d(), + pC = Fr(), + Vd = ps(), + mC = Wl(), + gC = Ms(), + zd = Nd(), + DC = TypeError, + Ps = h(function (r, e) { + (this.stopped = r), (this.result = e); + }, "Result"), + Wd = Ps.prototype; + jd.exports = function (r, e, t) { + var i = t && t.that, + n = !!(t && t.AS_ENTRIES), + s = !!(t && t.IS_RECORD), + o = !!(t && t.IS_ITERATOR), + u = !!(t && t.INTERRUPTED), + l = aC(e, i), + a, + c, + f, + d, + p, + m, + D, + g = h(function (F) { + return a && zd(a, "normal", F), new Ps(!0, F); + }, "stop"), + b = h(function (F) { + return n ? (cC(F), u ? l(F[0], F[1], g) : l(F[0], F[1])) : u ? l(F, g) : l(F); }, "callFn"); - if (IS_RECORD) { - iterator = iterable.iterator; - } else if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (!iterFn) throw $TypeError(tryToString(iterable) + " is not iterable"); - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = lengthOfArrayLike2(iterable); length > index; index++) { - result = callFn(iterable[index]); - if (result && isPrototypeOf(ResultPrototype, result)) return result; - } - return new Result(false); - } - iterator = getIterator(iterable, iterFn); + if (s) a = r.iterator; + else if (o) a = r; + else { + if (((c = gC(r)), !c)) throw DC(fC(r) + " is not iterable"); + if (dC(c)) { + for (f = 0, d = pC(r); d > f; f++) if (((p = b(r[f])), p && Vd(Wd, p))) return p; + return new Ps(!1); } - next = IS_RECORD ? iterable.next : iterator.next; - while (!(step = call(next, iterator)).done) { - try { - result = callFn(step.value); - } catch (error) { - iteratorClose(iterator, "throw", error); - } - if (typeof result == "object" && result && isPrototypeOf(ResultPrototype, result)) return result; + a = mC(r, c); + } + for (m = s ? r.next : a.next; !(D = hC(m, a)).done; ) { + try { + p = b(D.value); + } catch (F) { + zd(a, "throw", F); } - return new Result(false); - }; - }, + if (typeof p == "object" && p && Vd(Wd, p)) return p; + } + return new Ps(!1); + }; }); - // node_modules/core-js/internals/create-property.js - var require_create_property = __commonJS({ - "node_modules/core-js/internals/create-property.js"(exports, module) { - "use strict"; - var toPropertyKey = require_to_property_key(); - var definePropertyModule = require_object_define_property(); - var createPropertyDescriptor = require_create_property_descriptor(); - module.exports = function (object, key, value) { - var propertyKey = toPropertyKey(key); - if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else object[propertyKey] = value; - }; - }, + var jl = k((yx, Ud) => { + "use strict"; + var bC = Cs(), + FC = Lt(), + yC = dr(); + Ud.exports = function (r, e, t) { + var i = bC(e); + i in r ? FC.f(r, i, yC(0, t)) : (r[i] = t); + }; }); - // node_modules/core-js/internals/to-string.js - var require_to_string = __commonJS({ - "node_modules/core-js/internals/to-string.js"(exports, module) { - var classof = require_classof(); - var $String = String; - module.exports = function (argument) { - if (classof(argument) === "Symbol") throw TypeError("Cannot convert a Symbol value to a string"); - return $String(argument); - }; - }, + var Hl = k((Ax, Yd) => { + var vC = ln(), + kC = String; + Yd.exports = function (r) { + if (vC(r) === "Symbol") throw TypeError("Cannot convert a Symbol value to a string"); + return kC(r); + }; }); - // node_modules/core-js/internals/whitespaces.js - var require_whitespaces = __commonJS({ - "node_modules/core-js/internals/whitespaces.js"(exports, module) { - module.exports = " \n\v\f\r \xa0               \u2028\u2029\uFEFF"; - }, + var Ul = k((Ex, Gd) => { + Gd.exports = " \n\v\f\r \xa0               \u2028\u2029\uFEFF"; }); - // node_modules/core-js/internals/string-trim.js - var require_string_trim = __commonJS({ - "node_modules/core-js/internals/string-trim.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var requireObjectCoercible = require_require_object_coercible(); - var toString = require_to_string(); - var whitespaces = require_whitespaces(); - var replace = uncurryThis("".replace); - var whitespace = "[" + whitespaces + "]"; - var ltrim = RegExp("^" + whitespace + whitespace + "*"); - var rtrim = RegExp(whitespace + whitespace + "*$"); - var createMethod = /* @__PURE__ */ __name(function (TYPE) { - return function ($this) { - var string2 = toString(requireObjectCoercible($this)); - if (TYPE & 1) string2 = replace(string2, ltrim, ""); - if (TYPE & 2) string2 = replace(string2, rtrim, ""); - return string2; + var Qd = k((vx, Xd) => { + var wC = Ge(), + xC = ds(), + SC = Hl(), + Gl = Ul(), + Kd = wC("".replace), + BC = RegExp("^[" + Gl + "]+"), + _C = RegExp("(^|[^" + Gl + "])[" + Gl + "]+$"), + Yl = h(function (r) { + return function (e) { + var t = SC(xC(e)); + return r & 1 && (t = Kd(t, BC, "")), r & 2 && (t = Kd(t, _C, "$1")), t; }; }, "createMethod"); - module.exports = { - start: createMethod(1), - end: createMethod(2), - trim: createMethod(3), - }; - }, + Xd.exports = { start: Yl(1), end: Yl(2), trim: Yl(3) }; }); - // node_modules/core-js/internals/string-trim-forced.js - var require_string_trim_forced = __commonJS({ - "node_modules/core-js/internals/string-trim-forced.js"(exports, module) { - var PROPER_FUNCTION_NAME = require_function_name().PROPER; - var fails = require_fails(); - var whitespaces = require_whitespaces(); - var non = "​\x85᠎"; - module.exports = function (METHOD_NAME) { - return fails(function () { - return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() !== non || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME); - }); - }; - }, + var tp = k((wx, ep) => { + var OC = vs().PROPER, + TC = Je(), + Jd = Ul(), + Zd = "​\x85᠎"; + ep.exports = function (r) { + return TC(function () { + return !!Jd[r]() || Zd[r]() !== Zd || (OC && Jd[r].name !== r); + }); + }; }); - // node_modules/core-js/internals/string-trim-end.js - var require_string_trim_end = __commonJS({ - "node_modules/core-js/internals/string-trim-end.js"(exports, module) { - "use strict"; - var $trimEnd = require_string_trim().end; - var forcedStringTrimMethod = require_string_trim_forced(); - module.exports = forcedStringTrimMethod("trimEnd") - ? /* @__PURE__ */ __name(function trimEnd2() { - return $trimEnd(this); - }, "trimEnd") - : "".trimEnd; - }, + var Kl = k((xx, ip) => { + "use strict"; + var RC = Qd().end, + $C = tp(); + ip.exports = $C("trimEnd") + ? h(function () { + return RC(this); + }, "trimEnd") + : "".trimEnd; }); - // node_modules/core-js/modules/es.string.trim-right.js - var require_es_string_trim_right = __commonJS({ - "node_modules/core-js/modules/es.string.trim-right.js"() { - var $4 = require_export(); - var trimEnd2 = require_string_trim_end(); - $4( - { - target: "String", - proto: true, - name: "trimEnd", - forced: "".trimRight !== trimEnd2, - }, - { - trimRight: trimEnd2, - } - ); - }, + var np = k(() => { + var MC = Ni(), + rp = Kl(); + MC({ target: "String", proto: !0, name: "trimEnd", forced: "".trimRight !== rp }, { trimRight: rp }); }); - // node_modules/core-js/internals/object-keys.js - var require_object_keys = __commonJS({ - "node_modules/core-js/internals/object-keys.js"(exports, module) { - var internalObjectKeys = require_object_keys_internal(); - var enumBugKeys = require_enum_bug_keys(); - module.exports = - Object.keys || - /* @__PURE__ */ __name(function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }, "keys"); - }, + var up = k((Ox, op) => { + var LC = Il(), + qC = Ts(); + op.exports = + Object.keys || + h(function (e) { + return LC(e, qC); + }, "keys"); }); - // node_modules/core-js/internals/object-define-properties.js - var require_object_define_properties = __commonJS({ - "node_modules/core-js/internals/object-define-properties.js"(exports) { - var DESCRIPTORS = require_descriptors(); - var V8_PROTOTYPE_DEFINE_BUG = require_v8_prototype_define_bug(); - var definePropertyModule = require_object_define_property(); - var anObject = require_an_object(); - var toIndexedObject = require_to_indexed_object(); - var objectKeys = require_object_keys(); - exports.f = - DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG - ? Object.defineProperties - : /* @__PURE__ */ __name(function defineProperties(O, Properties) { - anObject(O); - var props = toIndexedObject(Properties); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, (key = keys[index++]), props[key]); - return O; - }, "defineProperties"); - }, + var ap = k((lp) => { + var IC = gt(), + NC = Cl(), + VC = Lt(), + zC = Pt(), + WC = pr(), + jC = up(); + lp.f = + IC && !NC + ? Object.defineProperties + : h(function (e, t) { + zC(e); + for (var i = WC(t), n = jC(t), s = n.length, o = 0, u; s > o; ) VC.f(e, (u = n[o++]), i[u]); + return e; + }, "defineProperties"); }); - // node_modules/core-js/internals/html.js - var require_html = __commonJS({ - "node_modules/core-js/internals/html.js"(exports, module) { - var getBuiltIn = require_get_built_in(); - module.exports = getBuiltIn("document", "documentElement"); - }, + var cp = k((Mx, hp) => { + var HC = sn(); + hp.exports = HC("document", "documentElement"); }); - // node_modules/core-js/internals/object-create.js - var require_object_create = __commonJS({ - "node_modules/core-js/internals/object-create.js"(exports, module) { - var anObject = require_an_object(); - var definePropertiesModule = require_object_define_properties(); - var enumBugKeys = require_enum_bug_keys(); - var hiddenKeys = require_hidden_keys(); - var html = require_html(); - var documentCreateElement = require_document_create_element(); - var sharedKey = require_shared_key(); - var GT = ">"; - var LT = "<"; - var PROTOTYPE = "prototype"; - var SCRIPT = "script"; - var IE_PROTO = sharedKey("IE_PROTO"); - var EmptyConstructor = /* @__PURE__ */ __name(function () {}, "EmptyConstructor"); - var scriptTag = /* @__PURE__ */ __name(function (content2) { - return LT + SCRIPT + GT + content2 + LT + "/" + SCRIPT + GT; - }, "scriptTag"); - var NullProtoObjectViaActiveX = /* @__PURE__ */ __name(function (activeXDocument2) { - activeXDocument2.write(scriptTag("")); - activeXDocument2.close(); - var temp = activeXDocument2.parentWindow.Object; - activeXDocument2 = null; - return temp; - }, "NullProtoObjectViaActiveX"); - var NullProtoObjectViaIFrame = /* @__PURE__ */ __name(function () { - var iframe = documentCreateElement("iframe"); - var JS = "java" + SCRIPT + ":"; - var iframeDocument; - iframe.style.display = "none"; - html.appendChild(iframe); - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag("document.F=Object")); - iframeDocument.close(); - return iframeDocument.F; - }, "NullProtoObjectViaIFrame"); - var activeXDocument; - var NullProtoObject = /* @__PURE__ */ __name(function () { + var hn = k((Px, bp) => { + var UC = Pt(), + YC = ap(), + fp = Ts(), + GC = ws(), + KC = cp(), + XC = bl(), + QC = ks(), + dp = ">", + pp = "<", + Ql = "prototype", + Jl = "script", + gp = QC("IE_PROTO"), + Xl = h(function () {}, "EmptyConstructor"), + Dp = h(function (r) { + return pp + Jl + dp + r + pp + "/" + Jl + dp; + }, "scriptTag"), + mp = h(function (r) { + r.write(Dp("")), r.close(); + var e = r.parentWindow.Object; + return (r = null), e; + }, "NullProtoObjectViaActiveX"), + JC = h(function () { + var r = XC("iframe"), + e = "java" + Jl + ":", + t; + return (r.style.display = "none"), KC.appendChild(r), (r.src = String(e)), (t = r.contentWindow.document), t.open(), t.write(Dp("document.F=Object")), t.close(), t.F; + }, "NullProtoObjectViaIFrame"), + Ls, + qs = h(function () { try { - activeXDocument = new ActiveXObject("htmlfile"); - } catch (error) {} - NullProtoObject = typeof document != "undefined" ? (document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame()) : NullProtoObjectViaActiveX(activeXDocument); - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); + Ls = new ActiveXObject("htmlfile"); + } catch (e) {} + qs = typeof document < "u" ? (document.domain && Ls ? mp(Ls) : JC()) : mp(Ls); + for (var r = fp.length; r--; ) delete qs[Ql][fp[r]]; + return qs(); }, "NullProtoObject"); - hiddenKeys[IE_PROTO] = true; - module.exports = - Object.create || - /* @__PURE__ */ __name(function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === void 0 ? result : definePropertiesModule.f(result, Properties); - }, "create"); - }, + GC[gp] = !0; + bp.exports = + Object.create || + h(function (e, t) { + var i; + return e !== null ? ((Xl[Ql] = UC(e)), (i = new Xl()), (Xl[Ql] = null), (i[gp] = e)) : (i = qs()), t === void 0 ? i : YC.f(i, t); + }, "create"); }); - // node_modules/core-js/internals/add-to-unscopables.js - var require_add_to_unscopables = __commonJS({ - "node_modules/core-js/internals/add-to-unscopables.js"(exports, module) { - var wellKnownSymbol = require_well_known_symbol(); - var create = require_object_create(); - var defineProperty = require_object_define_property().f; - var UNSCOPABLES = wellKnownSymbol("unscopables"); - var ArrayPrototype = Array.prototype; - if (ArrayPrototype[UNSCOPABLES] == void 0) { - defineProperty(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null), - }); - } - module.exports = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - }, + var yp = k((qx, Fp) => { + var ZC = rt(), + eA = hn(), + tA = Lt().f, + Zl = ZC("unscopables"), + ea = Array.prototype; + ea[Zl] == null && tA(ea, Zl, { configurable: !0, value: eA(null) }); + Fp.exports = function (r) { + ea[Zl][r] = !0; + }; }); - // node_modules/core-js/internals/correct-prototype-getter.js - var require_correct_prototype_getter = __commonJS({ - "node_modules/core-js/internals/correct-prototype-getter.js"(exports, module) { - var fails = require_fails(); - module.exports = !fails(function () { - function F() {} - __name(F, "F"); - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - }, + var Ap = k((Ix, Cp) => { + var iA = Je(); + Cp.exports = !iA(function () { + function r() {} + return h(r, "F"), (r.prototype.constructor = null), Object.getPrototypeOf(new r()) !== r.prototype; + }); }); - // node_modules/core-js/internals/object-get-prototype-of.js - var require_object_get_prototype_of = __commonJS({ - "node_modules/core-js/internals/object-get-prototype-of.js"(exports, module) { - var hasOwn = require_has_own_property(); - var isCallable = require_is_callable(); - var toObject2 = require_to_object(); - var sharedKey = require_shared_key(); - var CORRECT_PROTOTYPE_GETTER = require_correct_prototype_getter(); - var IE_PROTO = sharedKey("IE_PROTO"); - var $Object = Object; - var ObjectPrototype = $Object.prototype; - module.exports = CORRECT_PROTOTYPE_GETTER - ? $Object.getPrototypeOf - : function (O) { - var object = toObject2(O); - if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; - var constructor = object.constructor; - if (isCallable(constructor) && object instanceof constructor) { - return constructor.prototype; - } - return object instanceof $Object ? ObjectPrototype : null; - }; - }, + var ia = k((Vx, vp) => { + var rA = kt(), + nA = Ne(), + sA = ys(), + oA = ks(), + uA = Ap(), + Ep = oA("IE_PROTO"), + ta = Object, + lA = ta.prototype; + vp.exports = uA + ? ta.getPrototypeOf + : function (r) { + var e = sA(r); + if (rA(e, Ep)) return e[Ep]; + var t = e.constructor; + return nA(t) && e instanceof t ? t.prototype : e instanceof ta ? lA : null; + }; }); - // node_modules/core-js/internals/iterators-core.js - var require_iterators_core = __commonJS({ - "node_modules/core-js/internals/iterators-core.js"(exports, module) { - "use strict"; - var fails = require_fails(); - var isCallable = require_is_callable(); - var isObject = require_is_object(); - var create = require_object_create(); - var getPrototypeOf = require_object_get_prototype_of(); - var defineBuiltIn = require_define_built_in(); - var wellKnownSymbol = require_well_known_symbol(); - var IS_PURE = require_is_pure(); - var ITERATOR = wellKnownSymbol("iterator"); - var BUGGY_SAFARI_ITERATORS = false; - var IteratorPrototype; - var PrototypeOfArrayIteratorPrototype; - var arrayIterator; - if ([].keys) { - arrayIterator = [].keys(); - if (!("next" in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } - } - var NEW_ITERATOR_PROTOTYPE = - !isObject(IteratorPrototype) || - fails(function () { - var test = {}; - return IteratorPrototype[ITERATOR].call(test) !== test; - }); - if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; - else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); - if (!isCallable(IteratorPrototype[ITERATOR])) { - defineBuiltIn(IteratorPrototype, ITERATOR, function () { - return this; - }); - } - module.exports = { - IteratorPrototype, - BUGGY_SAFARI_ITERATORS, - }; - }, + var oa = k((zx, xp) => { + "use strict"; + var aA = Je(), + hA = Ne(), + cA = ei(), + fA = hn(), + kp = ia(), + dA = br(), + pA = rt(), + mA = gr(), + sa = pA("iterator"), + wp = !1, + ti, + ra, + na; + [].keys && ((na = [].keys()), "next" in na ? ((ra = kp(kp(na))), ra !== Object.prototype && (ti = ra)) : (wp = !0)); + var gA = + !cA(ti) || + aA(function () { + var r = {}; + return ti[sa].call(r) !== r; + }); + gA ? (ti = {}) : mA && (ti = fA(ti)); + hA(ti[sa]) || + dA(ti, sa, function () { + return this; + }); + xp.exports = { IteratorPrototype: ti, BUGGY_SAFARI_ITERATORS: wp }; }); - // node_modules/core-js/internals/set-to-string-tag.js - var require_set_to_string_tag = __commonJS({ - "node_modules/core-js/internals/set-to-string-tag.js"(exports, module) { - var defineProperty = require_object_define_property().f; - var hasOwn = require_has_own_property(); - var wellKnownSymbol = require_well_known_symbol(); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - module.exports = function (target, TAG, STATIC) { - if (target && !STATIC) target = target.prototype; - if (target && !hasOwn(target, TO_STRING_TAG)) { - defineProperty(target, TO_STRING_TAG, { - configurable: true, - value: TAG, - }); - } - }; - }, + var Is = k((Wx, Bp) => { + var DA = Lt().f, + bA = kt(), + FA = rt(), + Sp = FA("toStringTag"); + Bp.exports = function (r, e, t) { + r && !t && (r = r.prototype), r && !bA(r, Sp) && DA(r, Sp, { configurable: !0, value: e }); + }; }); - // node_modules/core-js/internals/iterator-create-constructor.js - var require_iterator_create_constructor = __commonJS({ - "node_modules/core-js/internals/iterator-create-constructor.js"(exports, module) { - "use strict"; - var IteratorPrototype = require_iterators_core().IteratorPrototype; - var create = require_object_create(); - var createPropertyDescriptor = require_create_property_descriptor(); - var setToStringTag = require_set_to_string_tag(); - var Iterators = require_iterators(); - var returnThis = /* @__PURE__ */ __name(function () { + var ua = k((jx, _p) => { + "use strict"; + var yA = oa().IteratorPrototype, + CA = hn(), + AA = dr(), + EA = Is(), + vA = yr(), + kA = h(function () { return this; }, "returnThis"); - module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { - var TO_STRING_TAG = NAME + " Iterator"; - IteratorConstructor.prototype = create(IteratorPrototype, { - next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next), - }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - }, + _p.exports = function (r, e, t, i) { + var n = e + " Iterator"; + return (r.prototype = CA(yA, { next: AA(+!i, t) })), EA(r, n, !1, !0), (vA[n] = kA), r; + }; }); - // node_modules/core-js/internals/a-possible-prototype.js - var require_a_possible_prototype = __commonJS({ - "node_modules/core-js/internals/a-possible-prototype.js"(exports, module) { - var isCallable = require_is_callable(); - var $String = String; - var $TypeError = TypeError; - module.exports = function (argument) { - if (typeof argument == "object" || isCallable(argument)) return argument; - throw $TypeError("Can't set " + $String(argument) + " as a prototype"); - }; - }, + var Tp = k((Ux, Op) => { + var wA = Ge(), + xA = mr(); + Op.exports = function (r, e, t) { + try { + return wA(xA(Object.getOwnPropertyDescriptor(r, e)[t])); + } catch (e) {} + }; }); - // node_modules/core-js/internals/object-set-prototype-of.js - var require_object_set_prototype_of = __commonJS({ - "node_modules/core-js/internals/object-set-prototype-of.js"(exports, module) { - var uncurryThis = require_function_uncurry_this(); - var anObject = require_an_object(); - var aPossiblePrototype = require_a_possible_prototype(); - module.exports = - Object.setPrototypeOf || - ("__proto__" in {} - ? (function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set); - setter(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) {} - return /* @__PURE__ */ __name(function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) setter(O, proto); - else O.__proto__ = proto; - return O; - }, "setPrototypeOf"); - })() - : void 0); - }, + var $p = k((Yx, Rp) => { + var SA = Ne(), + BA = String, + _A = TypeError; + Rp.exports = function (r) { + if (typeof r == "object" || SA(r)) return r; + throw _A("Can't set " + BA(r) + " as a prototype"); + }; + }); + var Pp = k((Gx, Mp) => { + var OA = Tp(), + TA = Pt(), + RA = $p(); + Mp.exports = + Object.setPrototypeOf || + ("__proto__" in {} + ? (function () { + var r = !1, + e = {}, + t; + try { + (t = OA(Object.prototype, "__proto__", "set")), t(e, []), (r = e instanceof Array); + } catch (e) {} + return h(function (n, s) { + return TA(n), RA(s), r ? t(n, s) : (n.__proto__ = s), n; + }, "setPrototypeOf"); + })() + : void 0); }); - // node_modules/core-js/internals/iterator-define.js - var require_iterator_define = __commonJS({ - "node_modules/core-js/internals/iterator-define.js"(exports, module) { - "use strict"; - var $4 = require_export(); - var call = require_function_call(); - var IS_PURE = require_is_pure(); - var FunctionName = require_function_name(); - var isCallable = require_is_callable(); - var createIteratorConstructor = require_iterator_create_constructor(); - var getPrototypeOf = require_object_get_prototype_of(); - var setPrototypeOf = require_object_set_prototype_of(); - var setToStringTag = require_set_to_string_tag(); - var createNonEnumerableProperty = require_create_non_enumerable_property(); - var defineBuiltIn = require_define_built_in(); - var wellKnownSymbol = require_well_known_symbol(); - var Iterators = require_iterators(); - var IteratorsCore = require_iterators_core(); - var PROPER_FUNCTION_NAME = FunctionName.PROPER; - var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol("iterator"); - var KEYS = "keys"; - var VALUES = "values"; - var ENTRIES = "entries"; - var returnThis = /* @__PURE__ */ __name(function () { + var Yp = k((Xx, Up) => { + "use strict"; + var $A = Ni(), + MA = Zt(), + Ns = gr(), + jp = vs(), + PA = Ne(), + LA = ua(), + Lp = ia(), + qp = Pp(), + qA = Is(), + IA = Es(), + la = br(), + NA = rt(), + Ip = yr(), + Hp = oa(), + VA = jp.PROPER, + zA = jp.CONFIGURABLE, + Np = Hp.IteratorPrototype, + Vs = Hp.BUGGY_SAFARI_ITERATORS, + cn = NA("iterator"), + Vp = "keys", + fn = "values", + zp = "entries", + Wp = h(function () { return this; }, "returnThis"); - module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - var getIterationMethod = /* @__PURE__ */ __name(function (KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: - return /* @__PURE__ */ __name(function keys() { - return new IteratorConstructor(this, KIND); + Up.exports = function (r, e, t, i, n, s, o) { + LA(t, e, i); + var u = h(function (b) { + if (b === n && d) return d; + if (!Vs && b in c) return c[b]; + switch (b) { + case Vp: + return h(function () { + return new t(this, b); }, "keys"); - case VALUES: - return /* @__PURE__ */ __name(function values() { - return new IteratorConstructor(this, KIND); + case fn: + return h(function () { + return new t(this, b); }, "values"); - case ENTRIES: - return /* @__PURE__ */ __name(function entries() { - return new IteratorConstructor(this, KIND); + case zp: + return h(function () { + return new t(this, b); }, "entries"); } return function () { - return new IteratorConstructor(this); + return new t(this); }; - }, "getIterationMethod"); - var TO_STRING_TAG = NAME + " Iterator"; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || (DEFAULT && IterablePrototype[DEFAULT]); - var defaultIterator = (!BUGGY_SAFARI_ITERATORS && nativeIterator) || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { - defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; - } - } - if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { - createNonEnumerableProperty(IterablePrototype, "name", VALUES); - } else { - INCORRECT_VALUES_NAME = true; - defaultIterator = /* @__PURE__ */ __name(function values() { - return call(nativeIterator, this); - }, "values"); - } - } - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES), - }; - if (FORCED) - for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - defineBuiltIn(IterablePrototype, KEY, methods[KEY]); - } - } - else - $4( - { - target: NAME, - proto: true, - forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME, - }, - methods - ); - } - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { - name: DEFAULT, - }); - } - Iterators[NAME] = defaultIterator; - return methods; - }; - }, + }, "getIterationMethod"), + l = e + " Iterator", + a = !1, + c = r.prototype, + f = c[cn] || c["@@iterator"] || (n && c[n]), + d = (!Vs && f) || u(n), + p = (e == "Array" && c.entries) || f, + m, + D, + g; + if ( + (p && ((m = Lp(p.call(new r()))), m !== Object.prototype && m.next && (!Ns && Lp(m) !== Np && (qp ? qp(m, Np) : PA(m[cn]) || la(m, cn, Wp)), qA(m, l, !0, !0), Ns && (Ip[l] = Wp))), + VA && + n == fn && + f && + f.name !== fn && + (!Ns && zA + ? IA(c, "name", fn) + : ((a = !0), + (d = h(function () { + return MA(f, this); + }, "values")))), + n) + ) + if (((D = { values: u(fn), keys: s ? d : u(Vp), entries: u(zp) }), o)) for (g in D) (Vs || a || !(g in c)) && la(c, g, D[g]); + else $A({ target: e, proto: !0, forced: Vs || a }, D); + return (!Ns || o) && c[cn] !== d && la(c, cn, d, { name: n }), (Ip[e] = d), D; + }; }); - // node_modules/core-js/internals/create-iter-result-object.js - var require_create_iter_result_object = __commonJS({ - "node_modules/core-js/internals/create-iter-result-object.js"(exports, module) { - module.exports = function (value, done) { - return { - value, - done, - }; - }; - }, + var Kp = k((Jx, Gp) => { + Gp.exports = function (r, e) { + return { value: r, done: e }; + }; }); - // node_modules/core-js/modules/es.array.iterator.js - var require_es_array_iterator = __commonJS({ - "node_modules/core-js/modules/es.array.iterator.js"(exports, module) { - "use strict"; - var toIndexedObject = require_to_indexed_object(); - var addToUnscopables = require_add_to_unscopables(); - var Iterators = require_iterators(); - var InternalStateModule = require_internal_state(); - var defineProperty = require_object_define_property().f; - var defineIterator = require_iterator_define(); - var createIterResultObject = require_create_iter_result_object(); - var IS_PURE = require_is_pure(); - var DESCRIPTORS = require_descriptors(); - var ARRAY_ITERATOR = "Array Iterator"; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); - module.exports = defineIterator( - Array, - "Array", - function (iterated, kind) { - setInternalState(this, { - type: ARRAY_ITERATOR, - target: toIndexedObject(iterated), - index: 0, - kind, - }); - }, - function () { - var state = getInternalState(this); - var target = state.target; - var kind = state.kind; - var index = state.index++; - if (!target || index >= target.length) { - state.target = void 0; - return createIterResultObject(void 0, true); - } - if (kind == "keys") return createIterResultObject(index, false); - if (kind == "values") return createIterResultObject(target[index], false); - return createIterResultObject([index, target[index]], false); - }, - "values" - ); - var values = (Iterators.Arguments = Iterators.Array); - addToUnscopables("keys"); - addToUnscopables("values"); - addToUnscopables("entries"); - if (!IS_PURE && DESCRIPTORS && values.name !== "values") - try { - defineProperty(values, "name", { - value: "values", - }); - } catch (error) {} - }, + var tm = k((Zx, em) => { + "use strict"; + var WA = pr(), + aa = yp(), + Xp = yr(), + Jp = Bs(), + jA = Lt().f, + HA = Yp(), + zs = Kp(), + UA = gr(), + YA = gt(), + Zp = "Array Iterator", + GA = Jp.set, + KA = Jp.getterFor(Zp); + em.exports = HA( + Array, + "Array", + function (r, e) { + GA(this, { type: Zp, target: WA(r), index: 0, kind: e }); + }, + function () { + var r = KA(this), + e = r.target, + t = r.kind, + i = r.index++; + return !e || i >= e.length ? ((r.target = void 0), zs(void 0, !0)) : t == "keys" ? zs(i, !1) : t == "values" ? zs(e[i], !1) : zs([i, e[i]], !1); + }, + "values" + ); + var Qp = (Xp.Arguments = Xp.Array); + aa("keys"); + aa("values"); + aa("entries"); + if (!UA && YA && Qp.name !== "values") + try { + jA(Qp, "name", { value: "values" }); + } catch (e) {} }); - // node_modules/core-js/internals/url-constructor-detection.js - var require_url_constructor_detection = __commonJS({ - "node_modules/core-js/internals/url-constructor-detection.js"(exports, module) { - var fails = require_fails(); - var wellKnownSymbol = require_well_known_symbol(); - var IS_PURE = require_is_pure(); - var ITERATOR = wellKnownSymbol("iterator"); - module.exports = !fails(function () { - var url = new URL("b?a=1&b=2&c=3", "http://a"); - var searchParams = url.searchParams; - var result = ""; - url.pathname = "c%20d"; - searchParams.forEach(function (value, key) { - searchParams["delete"]("b"); - result += key + value; - }); - return ( - (IS_PURE && !url.toJSON) || - !searchParams.sort || - url.href !== "http://a/c%20d?a=1&c=3" || - searchParams.get("c") !== "3" || + var nm = k((eS, rm) => { + var XA = Je(), + QA = rt(), + JA = gt(), + im = gr(), + ZA = QA("iterator"); + rm.exports = !XA(function () { + var r = new URL("b?a=1&b=2&c=3", "http://a"), + e = r.searchParams, + t = ""; + return ( + (r.pathname = "c%20d"), + e.forEach(function (i, n) { + e.delete("b"), (t += n + i); + }), + (im && !r.toJSON) || + (!e.size && (im || !JA)) || + !e.sort || + r.href !== "http://a/c%20d?a=1&c=3" || + e.get("c") !== "3" || String(new URLSearchParams("?a=1")) !== "a=1" || - !searchParams[ITERATOR] || + !e[ZA] || new URL("https://a@b").username !== "a" || new URLSearchParams(new URLSearchParams("a=b")).get("a") !== "b" || new URL("http://тест").host !== "xn--e1aybc" || new URL("http://a#б").hash !== "#%D0%B1" || - result !== "a1c3" || + t !== "a1c3" || new URL("http://x", void 0).host !== "x" - ); - }); - }, + ); + }); }); - // node_modules/core-js/internals/define-built-ins.js - var require_define_built_ins = __commonJS({ - "node_modules/core-js/internals/define-built-ins.js"(exports, module) { - var defineBuiltIn = require_define_built_in(); - module.exports = function (target, src, options) { - for (var key in src) defineBuiltIn(target, key, src[key], options); - return target; - }; - }, + var um = k((tS, om) => { + var sm = Ml(), + eE = Lt(); + om.exports = function (r, e, t) { + return t.get && sm(t.get, e, { getter: !0 }), t.set && sm(t.set, e, { setter: !0 }), eE.f(r, e, t); + }; }); - // node_modules/core-js/internals/an-instance.js - var require_an_instance = __commonJS({ - "node_modules/core-js/internals/an-instance.js"(exports, module) { - var isPrototypeOf = require_object_is_prototype_of(); - var $TypeError = TypeError; - module.exports = function (it, Prototype) { - if (isPrototypeOf(Prototype, it)) return it; - throw $TypeError("Incorrect invocation"); - }; - }, + var am = k((iS, lm) => { + var tE = br(); + lm.exports = function (r, e, t) { + for (var i in e) tE(r, i, e[i], t); + return r; + }; }); - // node_modules/core-js/internals/validate-arguments-length.js - var require_validate_arguments_length = __commonJS({ - "node_modules/core-js/internals/validate-arguments-length.js"(exports, module) { - var $TypeError = TypeError; - module.exports = function (passed, required) { - if (passed < required) throw $TypeError("Not enough arguments"); - return passed; - }; - }, + var cm = k((rS, hm) => { + var iE = ps(), + rE = TypeError; + hm.exports = function (r, e) { + if (iE(e, r)) return r; + throw rE("Incorrect invocation"); + }; }); - // node_modules/core-js/internals/array-slice-simple.js - var require_array_slice_simple = __commonJS({ - "node_modules/core-js/internals/array-slice-simple.js"(exports, module) { - var toAbsoluteIndex = require_to_absolute_index(); - var lengthOfArrayLike2 = require_length_of_array_like(); - var createProperty2 = require_create_property(); - var $Array = Array; - var max = Math.max; - module.exports = function (O, start, end) { - var length = lengthOfArrayLike2(O); - var k = toAbsoluteIndex(start, length); - var fin = toAbsoluteIndex(end === void 0 ? length : end, length); - var result = $Array(max(fin - k, 0)); - for (var n = 0; k < fin; k++, n++) createProperty2(result, n, O[k]); - result.length = n; - return result; - }; - }, + var dm = k((nS, fm) => { + var nE = TypeError; + fm.exports = function (r, e) { + if (r < e) throw nE("Not enough arguments"); + return r; + }; }); - // node_modules/core-js/internals/array-sort.js - var require_array_sort = __commonJS({ - "node_modules/core-js/internals/array-sort.js"(exports, module) { - var arraySlice = require_array_slice_simple(); - var floor = Math.floor; - var mergeSort = /* @__PURE__ */ __name(function (array, comparefn) { - var length = array.length; - var middle = floor(length / 2); - return length < 8 ? insertionSort(array, comparefn) : merge(array, mergeSort(arraySlice(array, 0, middle), comparefn), mergeSort(arraySlice(array, middle), comparefn), comparefn); - }, "mergeSort"); - var insertionSort = /* @__PURE__ */ __name(function (array, comparefn) { - var length = array.length; - var i = 1; - var element2, j; - while (i < length) { - j = i; - element2 = array[i]; - while (j && comparefn(array[j - 1], element2) > 0) { - array[j] = array[--j]; - } - if (j !== i++) array[j] = element2; - } - return array; - }, "insertionSort"); - var merge = /* @__PURE__ */ __name(function (array, left, right, comparefn) { - var llength = left.length; - var rlength = right.length; - var lindex = 0; - var rindex = 0; - while (lindex < llength || rindex < rlength) { - array[lindex + rindex] = lindex < llength && rindex < rlength ? (comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]) : lindex < llength ? left[lindex++] : right[rindex++]; - } - return array; + var gm = k((sS, mm) => { + var pm = Ll(), + sE = Fr(), + oE = jl(), + uE = Array, + lE = Math.max; + mm.exports = function (r, e, t) { + for (var i = sE(r), n = pm(e, i), s = pm(t === void 0 ? i : t, i), o = uE(lE(s - n, 0)), u = 0; n < s; n++, u++) oE(o, u, r[n]); + return (o.length = u), o; + }; + }); + var Fm = k((oS, bm) => { + var Dm = gm(), + aE = Math.floor, + ha = h(function (r, e) { + var t = r.length, + i = aE(t / 2); + return t < 8 ? hE(r, e) : cE(r, ha(Dm(r, 0, i), e), ha(Dm(r, i), e), e); + }, "mergeSort"), + hE = h(function (r, e) { + for (var t = r.length, i = 1, n, s; i < t; ) { + for (s = i, n = r[i]; s && e(r[s - 1], n) > 0; ) r[s] = r[--s]; + s !== i++ && (r[s] = n); + } + return r; + }, "insertionSort"), + cE = h(function (r, e, t, i) { + for (var n = e.length, s = t.length, o = 0, u = 0; o < n || u < s; ) r[o + u] = o < n && u < s ? (i(e[o], t[u]) <= 0 ? e[o++] : t[u++]) : o < n ? e[o++] : t[u++]; + return r; }, "merge"); - module.exports = mergeSort; - }, + bm.exports = ha; }); - // node_modules/core-js/modules/web.url-search-params.constructor.js - var require_web_url_search_params_constructor = __commonJS({ - "node_modules/core-js/modules/web.url-search-params.constructor.js"(exports, module) { - "use strict"; - require_es_array_iterator(); - var $4 = require_export(); - var global2 = require_global(); - var call = require_function_call(); - var uncurryThis = require_function_uncurry_this(); - var DESCRIPTORS = require_descriptors(); - var USE_NATIVE_URL = require_url_constructor_detection(); - var defineBuiltIn = require_define_built_in(); - var defineBuiltIns = require_define_built_ins(); - var setToStringTag = require_set_to_string_tag(); - var createIteratorConstructor = require_iterator_create_constructor(); - var InternalStateModule = require_internal_state(); - var anInstance = require_an_instance(); - var isCallable = require_is_callable(); - var hasOwn = require_has_own_property(); - var bind2 = require_function_bind_context(); - var classof = require_classof(); - var anObject = require_an_object(); - var isObject = require_is_object(); - var $toString = require_to_string(); - var create = require_object_create(); - var createPropertyDescriptor = require_create_property_descriptor(); - var getIterator = require_get_iterator(); - var getIteratorMethod = require_get_iterator_method(); - var validateArgumentsLength = require_validate_arguments_length(); - var wellKnownSymbol = require_well_known_symbol(); - var arraySort = require_array_sort(); - var ITERATOR = wellKnownSymbol("iterator"); - var URL_SEARCH_PARAMS = "URLSearchParams"; - var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + "Iterator"; - var setInternalState = InternalStateModule.set; - var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); - var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var safeGetBuiltIn = /* @__PURE__ */ __name(function (name2) { - if (!DESCRIPTORS) return global2[name2]; - var descriptor = getOwnPropertyDescriptor(global2, name2); - return descriptor && descriptor.value; - }, "safeGetBuiltIn"); - var nativeFetch = safeGetBuiltIn("fetch"); - var NativeRequest = safeGetBuiltIn("Request"); - var Headers = safeGetBuiltIn("Headers"); - var RequestPrototype = NativeRequest && NativeRequest.prototype; - var HeadersPrototype = Headers && Headers.prototype; - var RegExp2 = global2.RegExp; - var TypeError2 = global2.TypeError; - var decodeURIComponent = global2.decodeURIComponent; - var encodeURIComponent2 = global2.encodeURIComponent; - var charAt = uncurryThis("".charAt); - var join = uncurryThis([].join); - var push = uncurryThis([].push); - var replace = uncurryThis("".replace); - var shift2 = uncurryThis([].shift); - var splice = uncurryThis([].splice); - var split = uncurryThis("".split); - var stringSlice = uncurryThis("".slice); - var plus = /\+/g; - var sequences = Array(4); - var percentSequence = /* @__PURE__ */ __name(function (bytes) { - return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp2("((?:%[\\da-f]{2}){" + bytes + "})", "gi")); - }, "percentSequence"); - var percentDecode = /* @__PURE__ */ __name(function (sequence) { + var Nm = k((lS, Im) => { + "use strict"; + tm(); + var ma = Ni(), + Er = Et(), + Ws = Zt(), + qt = Ge(), + Ar = gt(), + Om = nm(), + Tm = br(), + fE = um(), + dE = am(), + pE = Is(), + mE = ua(), + ba = Bs(), + Rm = cm(), + ca = Ne(), + gE = kt(), + DE = Rs(), + bE = ln(), + FE = Pt(), + $m = ei(), + nt = Hl(), + yE = hn(), + ym = dr(), + ga = Wl(), + CE = Ms(), + Cr = dm(), + AE = rt(), + EE = Fm(), + vE = AE("iterator"), + pn = "URLSearchParams", + Mm = pn + "Iterator", + Pm = ba.set, + Dt = ba.getterFor(pn), + kE = ba.getterFor(Mm), + wE = Object.getOwnPropertyDescriptor, + Fa = h(function (r) { + if (!Ar) return Er[r]; + var e = wE(Er, r); + return e && e.value; + }, "safeGetBuiltIn"), + Cm = Fa("fetch"), + Hs = Fa("Request"), + dn = Fa("Headers"), + fa = Hs && Hs.prototype, + Am = dn && dn.prototype, + xE = Er.RegExp, + SE = Er.TypeError, + Lm = Er.decodeURIComponent, + BE = Er.encodeURIComponent, + _E = qt("".charAt), + Em = qt([].join), + Vi = qt([].push), + Da = qt("".replace), + OE = qt([].shift), + vm = qt([].splice), + km = qt("".split), + TE = qt("".slice), + RE = /\+/g, + wm = Array(4), + $E = h(function (r) { + return wm[r - 1] || (wm[r - 1] = xE("((?:%[\\da-f]{2}){" + r + "})", "gi")); + }, "percentSequence"), + ME = h(function (r) { try { - return decodeURIComponent(sequence); - } catch (error) { - return sequence; - } - }, "percentDecode"); - var deserialize = /* @__PURE__ */ __name(function (it) { - var result = replace(it, plus, " "); - var bytes = 4; + return Lm(r); + } catch (e) { + return r; + } + }, "percentDecode"), + xm = h(function (r) { + var e = Da(r, RE, " "), + t = 4; try { - return decodeURIComponent(result); - } catch (error) { - while (bytes) { - result = replace(result, percentSequence(bytes--), percentDecode); - } - return result; - } - }, "deserialize"); - var find2 = /[!'()~]|%20/g; - var replacements = { - "!": "%21", - "'": "%27", - "(": "%28", - ")": "%29", - "~": "%7E", - "%20": "+", - }; - var replacer = /* @__PURE__ */ __name(function (match) { - return replacements[match]; - }, "replacer"); - var serialize = /* @__PURE__ */ __name(function (it) { - return replace(encodeURIComponent2(it), find2, replacer); - }, "serialize"); - var URLSearchParamsIterator = createIteratorConstructor( - /* @__PURE__ */ __name(function Iterator(params, kind) { - setInternalState(this, { - type: URL_SEARCH_PARAMS_ITERATOR, - iterator: getIterator(getInternalParamsState(params).entries), - kind, - }); + return Lm(e); + } catch (e1) { + for (; t; ) e = Da(e, $E(t--), ME); + return e; + } + }, "deserialize"), + PE = /[!'()~]|%20/g, + LE = { "!": "%21", "'": "%27", "(": "%28", ")": "%29", "~": "%7E", "%20": "+" }, + qE = h(function (r) { + return LE[r]; + }, "replacer"), + Sm = h(function (r) { + return Da(BE(r), PE, qE); + }, "serialize"), + da = mE( + h(function (e, t) { + Pm(this, { type: Mm, iterator: ga(Dt(e).entries), kind: t }); }, "Iterator"), "Iterator", - /* @__PURE__ */ __name(function next() { - var state = getInternalIteratorState(this); - var kind = state.kind; - var step = state.iterator.next(); - var entry = step.value; - if (!step.done) { - step.value = kind === "keys" ? entry.key : kind === "values" ? entry.value : [entry.key, entry.value]; - } - return step; + h(function () { + var e = kE(this), + t = e.kind, + i = e.iterator.next(), + n = i.value; + return i.done || (i.value = t === "keys" ? n.key : t === "values" ? n.value : [n.key, n.value]), i; }, "next"), - true - ); - var URLSearchParamsState = /* @__PURE__ */ __name(function (init2) { - this.entries = []; - this.url = null; - if (init2 !== void 0) { - if (isObject(init2)) this.parseObject(init2); - else this.parseQuery(typeof init2 == "string" ? (charAt(init2, 0) === "?" ? stringSlice(init2, 1) : init2) : $toString(init2)); - } + !0 + ), + qm = h(function (r) { + (this.entries = []), (this.url = null), r !== void 0 && ($m(r) ? this.parseObject(r) : this.parseQuery(typeof r == "string" ? (_E(r, 0) === "?" ? TE(r, 1) : r) : nt(r))); }, "URLSearchParamsState"); - URLSearchParamsState.prototype = { - type: URL_SEARCH_PARAMS, - bindURL: function bindURL(url) { - this.url = url; - this.update(); - }, - parseObject: function parseObject(object) { - var iteratorMethod = getIteratorMethod(object); - var iterator, next, step, entryIterator, entryNext, first, second; - if (iteratorMethod) { - iterator = getIterator(object, iteratorMethod); - next = iterator.next; - while (!(step = call(next, iterator)).done) { - entryIterator = getIterator(anObject(step.value)); - entryNext = entryIterator.next; - if ((first = call(entryNext, entryIterator)).done || (second = call(entryNext, entryIterator)).done || !call(entryNext, entryIterator).done) throw TypeError2("Expected sequence with length 2"); - push(this.entries, { - key: $toString(first.value), - value: $toString(second.value), - }); - } - } else - for (var key in object) - if (hasOwn(object, key)) { - push(this.entries, { - key, - value: $toString(object[key]), - }); - } + qm.prototype = { + type: pn, + bindURL: function bindURL(r) { + (this.url = r), this.update(); + }, + parseObject: function parseObject(r) { + var e = CE(r), + t, + i, + n, + s, + o, + u, + l; + if (e) + for (t = ga(r, e), i = t.next; !(n = Ws(i, t)).done; ) { + if (((s = ga(FE(n.value))), (o = s.next), (u = Ws(o, s)).done || (l = Ws(o, s)).done || !Ws(o, s).done)) throw SE("Expected sequence with length 2"); + Vi(this.entries, { key: nt(u.value), value: nt(l.value) }); + } + else for (var a in r) gE(r, a) && Vi(this.entries, { key: a, value: nt(r[a]) }); + }, + parseQuery: function parseQuery(r) { + if (r) for (var e = km(r, "&"), t = 0, i, n; t < e.length; ) (i = e[t++]), i.length && ((n = km(i, "=")), Vi(this.entries, { key: xm(OE(n)), value: xm(Em(n, "=")) })); + }, + serialize: function serialize() { + for (var r = this.entries, e = [], t = 0, i; t < r.length; ) (i = r[t++]), Vi(e, Sm(i.key) + "=" + Sm(i.value)); + return Em(e, "&"); + }, + update: function update() { + (this.entries.length = 0), this.parseQuery(this.url.query); + }, + updateURL: function updateURL() { + this.url && this.url.update(); + }, + }; + var Us = h(function () { + Rm(this, vr); + var e = arguments.length > 0 ? arguments[0] : void 0, + t = Pm(this, new qm(e)); + Ar || (this.length = t.entries.length); + }, "URLSearchParams"), + vr = Us.prototype; + dE( + vr, + { + append: h(function (e, t) { + Cr(arguments.length, 2); + var i = Dt(this); + Vi(i.entries, { key: nt(e), value: nt(t) }), Ar || this.length++, i.updateURL(); + }, "append"), + delete: function _delete(r) { + Cr(arguments.length, 1); + for (var e = Dt(this), t = e.entries, i = nt(r), n = 0; n < t.length; ) t[n].key === i ? vm(t, n, 1) : n++; + Ar || (this.length = t.length), e.updateURL(); }, - parseQuery: function parseQuery(query) { - if (query) { - var attributes = split(query, "&"); - var index = 0; - var attribute, entry; - while (index < attributes.length) { - attribute = attributes[index++]; - if (attribute.length) { - entry = split(attribute, "="); - push(this.entries, { - key: deserialize(shift2(entry)), - value: deserialize(join(entry, "=")), - }); - } - } + get: h(function (e) { + Cr(arguments.length, 1); + for (var t = Dt(this).entries, i = nt(e), n = 0; n < t.length; n++) if (t[n].key === i) return t[n].value; + return null; + }, "get"), + getAll: h(function (e) { + Cr(arguments.length, 1); + for (var t = Dt(this).entries, i = nt(e), n = [], s = 0; s < t.length; s++) t[s].key === i && Vi(n, t[s].value); + return n; + }, "getAll"), + has: h(function (e) { + Cr(arguments.length, 1); + for (var t = Dt(this).entries, i = nt(e), n = 0; n < t.length; ) if (t[n++].key === i) return !0; + return !1; + }, "has"), + set: h(function (e, t) { + Cr(arguments.length, 1); + for (var i = Dt(this), n = i.entries, s = !1, o = nt(e), u = nt(t), l = 0, a; l < n.length; l++) (a = n[l]), a.key === o && (s ? vm(n, l--, 1) : ((s = !0), (a.value = u))); + s || Vi(n, { key: o, value: u }), Ar || (this.length = n.length), i.updateURL(); + }, "set"), + sort: h(function () { + var e = Dt(this); + EE(e.entries, function (t, i) { + return t.key > i.key ? 1 : -1; + }), + e.updateURL(); + }, "sort"), + forEach: h(function (e) { + for (var t = Dt(this).entries, i = DE(e, arguments.length > 1 ? arguments[1] : void 0), n = 0, s; n < t.length; ) (s = t[n++]), i(s.value, s.key, this); + }, "forEach"), + keys: h(function () { + return new da(this, "keys"); + }, "keys"), + values: h(function () { + return new da(this, "values"); + }, "values"), + entries: h(function () { + return new da(this, "entries"); + }, "entries"), + }, + { enumerable: !0 } + ); + Tm(vr, vE, vr.entries, { name: "entries" }); + Tm( + vr, + "toString", + h(function () { + return Dt(this).serialize(); + }, "toString"), + { enumerable: !0 } + ); + Ar && + fE(vr, "size", { + get: h(function () { + return Dt(this).entries.length; + }, "size"), + configurable: !0, + enumerable: !0, + }); + pE(Us, pn); + ma({ global: !0, constructor: !0, forced: !Om }, { URLSearchParams: Us }); + !Om && + ca(dn) && + ((Bm = qt(Am.has)), + (_m = qt(Am.set)), + (pa = h(function (r) { + if ($m(r)) { + var e = r.body, + t; + if (bE(e) === pn) return (t = r.headers ? new dn(r.headers) : new dn()), Bm(t, "content-type") || _m(t, "content-type", "application/x-www-form-urlencoded;charset=UTF-8"), yE(r, { body: ym(0, nt(e)), headers: ym(0, t) }); + } + return r; + }, "wrapRequestOptions")), + ca(Cm) && + ma( + { global: !0, enumerable: !0, dontCallGetSet: !0, forced: !0 }, + { + fetch: h(function (e) { + return Cm(e, arguments.length > 1 ? pa(arguments[1]) : {}); + }, "fetch"), } - }, - serialize: function serialize1() { - var entries = this.entries; - var result = []; - var index = 0; - var entry; - while (index < entries.length) { - entry = entries[index++]; - push(result, serialize(entry.key) + "=" + serialize(entry.value)); - } - return join(result, "&"); - }, - update: function update() { - this.entries.length = 0; - this.parseQuery(this.url.query); - }, - updateURL: function updateURL() { - if (this.url) this.url.update(); - }, - }; - var URLSearchParamsConstructor = /* @__PURE__ */ __name(function URLSearchParams2() { - anInstance(this, URLSearchParamsPrototype); - var init2 = arguments.length > 0 ? arguments[0] : void 0; - setInternalState(this, new URLSearchParamsState(init2)); - }, "URLSearchParams"); - var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; - defineBuiltIns( - URLSearchParamsPrototype, - { - append: /* @__PURE__ */ __name(function append2(name2, value) { - validateArgumentsLength(arguments.length, 2); - var state = getInternalParamsState(this); - push(state.entries, { - key: $toString(name2), - value: $toString(value), - }); - state.updateURL(); - }, "append"), - delete: function (name2) { - validateArgumentsLength(arguments.length, 1); - var state = getInternalParamsState(this); - var entries = state.entries; - var key = $toString(name2); - var index = 0; - while (index < entries.length) { - if (entries[index].key === key) splice(entries, index, 1); - else index++; - } - state.updateURL(); - }, - get: /* @__PURE__ */ __name(function get(name2) { - validateArgumentsLength(arguments.length, 1); - var entries = getInternalParamsState(this).entries; - var key = $toString(name2); - var index = 0; - for (; index < entries.length; index++) { - if (entries[index].key === key) return entries[index].value; - } - return null; - }, "get"), - getAll: /* @__PURE__ */ __name(function getAll(name2) { - validateArgumentsLength(arguments.length, 1); - var entries = getInternalParamsState(this).entries; - var key = $toString(name2); - var result = []; - var index = 0; - for (; index < entries.length; index++) { - if (entries[index].key === key) push(result, entries[index].value); - } - return result; - }, "getAll"), - has: /* @__PURE__ */ __name(function has(name2) { - validateArgumentsLength(arguments.length, 1); - var entries = getInternalParamsState(this).entries; - var key = $toString(name2); - var index = 0; - while (index < entries.length) { - if (entries[index++].key === key) return true; - } - return false; - }, "has"), - set: /* @__PURE__ */ __name(function set(name2, value) { - validateArgumentsLength(arguments.length, 1); - var state = getInternalParamsState(this); - var entries = state.entries; - var found = false; - var key = $toString(name2); - var val = $toString(value); - var index = 0; - var entry; - for (; index < entries.length; index++) { - entry = entries[index]; - if (entry.key === key) { - if (found) splice(entries, index--, 1); - else { - found = true; - entry.value = val; - } - } - } - if (!found) - push(entries, { - key, - value: val, - }); - state.updateURL(); - }, "set"), - sort: /* @__PURE__ */ __name(function sort() { - var state = getInternalParamsState(this); - arraySort(state.entries, function (a, b) { - return a.key > b.key ? 1 : -1; - }); - state.updateURL(); - }, "sort"), - forEach: /* @__PURE__ */ __name(function forEach(callback) { - var entries = getInternalParamsState(this).entries; - var boundFunction = bind2(callback, arguments.length > 1 ? arguments[1] : void 0); - var index = 0; - var entry; - while (index < entries.length) { - entry = entries[index++]; - boundFunction(entry.value, entry.key, this); - } - }, "forEach"), - keys: /* @__PURE__ */ __name(function keys() { - return new URLSearchParamsIterator(this, "keys"); - }, "keys"), - values: /* @__PURE__ */ __name(function values() { - return new URLSearchParamsIterator(this, "values"); - }, "values"), - entries: /* @__PURE__ */ __name(function entries() { - return new URLSearchParamsIterator(this, "entries"); - }, "entries"), - }, - { - enumerable: true, - } - ); - defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { - name: "entries", - }); - defineBuiltIn( - URLSearchParamsPrototype, - "toString", - /* @__PURE__ */ __name(function toString() { - return getInternalParamsState(this).serialize(); - }, "toString"), - { - enumerable: true, - } - ); - setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); - $4( - { - global: true, - constructor: true, - forced: !USE_NATIVE_URL, - }, - { - URLSearchParams: URLSearchParamsConstructor, - } - ); - if (!USE_NATIVE_URL && isCallable(Headers)) { - headersHas = uncurryThis(HeadersPrototype.has); - headersSet = uncurryThis(HeadersPrototype.set); - wrapRequestOptions = /* @__PURE__ */ __name(function (init2) { - if (isObject(init2)) { - var body = init2.body; - var headers; - if (classof(body) === URL_SEARCH_PARAMS) { - headers = init2.headers ? new Headers(init2.headers) : new Headers(); - if (!headersHas(headers, "content-type")) { - headersSet(headers, "content-type", "application/x-www-form-urlencoded;charset=UTF-8"); - } - return create(init2, { - body: createPropertyDescriptor(0, $toString(body)), - headers: createPropertyDescriptor(0, headers), - }); - } - } - return init2; - }, "wrapRequestOptions"); - if (isCallable(nativeFetch)) { - $4( - { - global: true, - enumerable: true, - dontCallGetSet: true, - forced: true, - }, - { - fetch: /* @__PURE__ */ __name(function fetch(input) { - return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); - }, "fetch"), - } - ); - } - if (isCallable(NativeRequest)) { - RequestConstructor = /* @__PURE__ */ __name(function Request(input) { - anInstance(this, RequestPrototype); - return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); - }, "Request"); - RequestPrototype.constructor = RequestConstructor; - RequestConstructor.prototype = RequestPrototype; - $4( - { - global: true, - constructor: true, - dontCallGetSet: true, - forced: true, - }, - { - Request: RequestConstructor, - } - ); - } - } - var headersHas; - var headersSet; - var wrapRequestOptions; - var RequestConstructor; - module.exports = { - URLSearchParams: URLSearchParamsConstructor, - getState: getInternalParamsState, - }; - }, + ), + ca(Hs) && + ((js = h(function (e) { + return Rm(this, fa), new Hs(e, arguments.length > 1 ? pa(arguments[1]) : {}); + }, "Request")), + (fa.constructor = js), + (js.prototype = fa), + ma({ global: !0, constructor: !0, dontCallGetSet: !0, forced: !0 }, { Request: js }))); + var Bm, _m, pa, js; + Im.exports = { URLSearchParams: Us, getState: Dt }; }); - // node_modules/core-js/modules/es.array.flat-map.js - var $ = require_export(); - var flattenIntoArray = require_flatten_into_array(); - var aCallable = require_a_callable(); - var toObject = require_to_object(); - var lengthOfArrayLike = require_length_of_array_like(); - var arraySpeciesCreate = require_array_species_create(); - $( - { - target: "Array", - proto: true, - }, + var Ny = Ni(), + Vy = md(), + zy = mr(), + Wy = ys(), + jy = Fr(), + Hy = Od(); + Ny( + { target: "Array", proto: !0 }, { - flatMap: /* @__PURE__ */ __name(function flatMap(callbackfn) { - var O = toObject(this); - var sourceLen = lengthOfArrayLike(O); - var A; - aCallable(callbackfn); - A = arraySpeciesCreate(O, 0); - A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : void 0); - return A; + flatMap: h(function (e) { + var t = Wy(this), + i = jy(t), + n; + return zy(e), (n = Hy(t, 0)), (n.length = Vy(n, t, t, i, 0, 1, e, arguments.length > 1 ? arguments[1] : void 0)), n; }, "flatMap"), } ); - // node_modules/core-js/modules/es.object.from-entries.js - var $2 = require_export(); - var iterate = require_iterate(); - var createProperty = require_create_property(); - $2( - { - target: "Object", - stat: true, - }, + var CC = Ni(), + AC = Hd(), + EC = jl(); + CC( + { target: "Object", stat: !0 }, { - fromEntries: /* @__PURE__ */ __name(function fromEntries(iterable) { - var obj = {}; - iterate( - iterable, - function (k, v) { - createProperty(obj, k, v); - }, - { - AS_ENTRIES: true, - } + fromEntries: h(function (e) { + var t = {}; + return ( + AC( + e, + function (i, n) { + EC(t, i, n); + }, + { AS_ENTRIES: !0 } + ), + t ); - return obj; }, "fromEntries"), } ); - // node_modules/core-js/modules/es.string.trim-end.js - require_es_string_trim_right(); - var $3 = require_export(); - var trimEnd = require_string_trim_end(); - $3( - { - target: "String", - proto: true, - name: "trimEnd", - forced: "".trimEnd !== trimEnd, - }, - { - trimEnd, - } - ); - // node_modules/core-js/modules/web.url-search-params.js - require_web_url_search_params_constructor(); - // node_modules/svelte/internal/index.mjs - function noop() {} - __name(noop, "noop"); - function assign(tar, src) { - for (var k in src) tar[k] = src[k]; - return tar; - } - __name(assign, "assign"); - function run(fn) { - return fn(); - } - __name(run, "run"); - function blank_object() { - return /* @__PURE__ */ Object.create(null); - } - __name(blank_object, "blank_object"); - function run_all(fns) { - fns.forEach(run); - } - __name(run_all, "run_all"); - function is_function(thing) { - return typeof thing === "function"; - } - __name(is_function, "is_function"); - function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || (a && typeof a === "object") || typeof a === "function"; - } - __name(safe_not_equal, "safe_not_equal"); - function is_empty(obj) { - return Object.keys(obj).length === 0; - } - __name(is_empty, "is_empty"); - function create_slot(definition, ctx, $$scope, fn) { - if (definition) { - var slot_ctx = get_slot_context(definition, ctx, $$scope, fn); - return definition[0](slot_ctx); - } - } - __name(create_slot, "create_slot"); - function get_slot_context(definition, ctx, $$scope, fn) { - return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx; - } - __name(get_slot_context, "get_slot_context"); - function get_slot_changes(definition, $$scope, dirty, fn) { - if (definition[2] && fn) { - var lets = definition[2](fn(dirty)); - if ($$scope.dirty === void 0) { - return lets; - } - if (typeof lets === "object") { - var merged = []; - var len = Math.max($$scope.dirty.length, lets.length); - for (var i = 0; i < len; i += 1) { - merged[i] = $$scope.dirty[i] | lets[i]; - } - return merged; - } - return $$scope.dirty | lets; - } - return $$scope.dirty; - } - __name(get_slot_changes, "get_slot_changes"); - function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) { - if (slot_changes) { - var slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); - slot.p(slot_context, slot_changes); - } - } - __name(update_slot_base, "update_slot_base"); - function get_all_dirty_from_scope($$scope) { - if ($$scope.ctx.length > 32) { - var dirty = []; - var length = $$scope.ctx.length / 32; - for (var i = 0; i < length; i++) { - dirty[i] = -1; - } - return dirty; + np(); + var PC = Ni(), + sp = Kl(); + PC({ target: "String", proto: !0, name: "trimEnd", forced: "".trimEnd !== sp }, { trimEnd: sp }); + Nm(); + function xe() {} + h(xe, "noop"); + function IE(r, e) { + for (var t in e) r[t] = e[t]; + return r; + } + h(IE, "assign"); + function va(r) { + return r(); + } + h(va, "run"); + function Vm() { + return Object.create(null); + } + h(Vm, "blank_object"); + function It(r) { + r.forEach(va); + } + h(It, "run_all"); + function Xs(r) { + return typeof r == "function"; + } + h(Xs, "is_function"); + function ne(r, e) { + return r != r ? e == e : r !== e || (r && typeof r == "object") || typeof r == "function"; + } + h(ne, "safe_not_equal"); + function zm(r) { + return Object.keys(r).length === 0; + } + h(zm, "is_empty"); + function gi(r, e, t, i) { + if (r) { + var n = Wm(r, e, t, i); + return r[0](n); + } + } + h(gi, "create_slot"); + function Wm(r, e, t, i) { + return r[1] && i ? IE(t.ctx.slice(), r[1](i(e))) : t.ctx; + } + h(Wm, "get_slot_context"); + function Di(r, e, t, i) { + if (r[2] && i) { + var n = r[2](i(t)); + if (e.dirty === void 0) return n; + if (typeof n == "object") { + var s = [], + o = Math.max(e.dirty.length, n.length); + for (var u = 0; u < o; u += 1) s[u] = e.dirty[u] | n[u]; + return s; + } + return e.dirty | n; + } + return e.dirty; + } + h(Di, "get_slot_changes"); + function bi(r, e, t, i, n, s) { + if (n) { + var o = Wm(e, t, i, s); + r.p(o, n); + } + } + h(bi, "update_slot_base"); + function Fi(r) { + if (r.ctx.length > 32) { + var e = [], + t = r.ctx.length / 32; + for (var i = 0; i < t; i++) e[i] = -1; + return e; } return -1; } - __name(get_all_dirty_from_scope, "get_all_dirty_from_scope"); - function compute_slots(slots) { - var result = {}; - for (var key in slots) { - result[key] = true; - } - return result; + h(Fi, "get_all_dirty_from_scope"); + function jm(r) { + var e = {}; + for (var t in r) e[t] = !0; + return e; } - __name(compute_slots, "compute_slots"); - var is_hydrating = false; - function start_hydrating() { - is_hydrating = true; + h(jm, "compute_slots"); + var Hm = !1; + function NE() { + Hm = !0; } - __name(start_hydrating, "start_hydrating"); - function end_hydrating() { - is_hydrating = false; + h(NE, "start_hydrating"); + function VE() { + Hm = !1; } - __name(end_hydrating, "end_hydrating"); - function append(target, node) { - target.appendChild(node); + h(VE, "end_hydrating"); + function V(r, e) { + r.appendChild(e); } - __name(append, "append"); - function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); + h(V, "append"); + function C(r, e, t) { + r.insertBefore(e, t || null); } - __name(insert, "insert"); - function detach(node) { - if (node.parentNode) { - node.parentNode.removeChild(node); - } + h(C, "insert"); + function y(r) { + r.parentNode && r.parentNode.removeChild(r); } - __name(detach, "detach"); - function destroy_each(iterations, detaching) { - for (var i = 0; i < iterations.length; i += 1) { - if (iterations[i]) iterations[i].d(detaching); - } + h(y, "detach"); + function bn(r, e) { + for (var t = 0; t < r.length; t += 1) r[t] && r[t].d(e); } - __name(destroy_each, "destroy_each"); - function element(name2) { - return document.createElement(name2); + h(bn, "destroy_each"); + function T(r) { + return document.createElement(r); } - __name(element, "element"); - function svg_element(name2) { - return document.createElementNS("http://www.w3.org/2000/svg", name2); + h(T, "element"); + function Nt(r) { + return document.createElementNS("http://www.w3.org/2000/svg", r); } - __name(svg_element, "svg_element"); - function text(data) { - return document.createTextNode(data); + h(Nt, "svg_element"); + function K(r) { + return document.createTextNode(r); } - __name(text, "text"); - function space() { - return text(" "); + h(K, "text"); + function q() { + return K(" "); } - __name(space, "space"); - function empty() { - return text(""); + h(q, "space"); + function ii() { + return K(""); } - __name(empty, "empty"); - function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); + h(ii, "empty"); + function ye(r, e, t, i) { + return r.addEventListener(e, t, i), () => r.removeEventListener(e, t, i); } - __name(listen, "listen"); - function attr(node, attribute, value) { - if (value == null) node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value); + h(ye, "listen"); + function v(r, e, t) { + t == null ? r.removeAttribute(e) : r.getAttribute(e) !== t && r.setAttribute(e, t); } - __name(attr, "attr"); - function to_number(value) { - return value === "" ? null : +value; + h(v, "attr"); + function xt(r) { + return r === "" ? null : +r; } - __name(to_number, "to_number"); - function children(element2) { - return Array.from(element2.childNodes); + h(xt, "to_number"); + function zE(r) { + return Array.from(r.childNodes); } - __name(children, "children"); - function set_data(text2, data) { - data = "" + data; - if (text2.wholeText !== data) text2.data = data; + h(zE, "children"); + function Ke(r, e) { + (e = "" + e), r.wholeText !== e && (r.data = e); } - __name(set_data, "set_data"); - function set_input_value(input, value) { - input.value = value == null ? "" : value; + h(Ke, "set_data"); + function Ce(r, e) { + r.value = e !== null && e !== void 0 ? e : ""; } - __name(set_input_value, "set_input_value"); - function toggle_class(element2, name2, toggle) { - element2.classList[toggle ? "add" : "remove"](name2); + h(Ce, "set_input_value"); + function kr(r, e, t) { + r.classList[t ? "add" : "remove"](e); } - __name(toggle_class, "toggle_class"); - function custom_event(type, detail) { + h(kr, "toggle_class"); + function WE(r, e) { var _ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, - _ref_bubbles = _ref.bubbles, - bubbles = _ref_bubbles === void 0 ? false : _ref_bubbles, - _ref_cancelable = _ref.cancelable, - cancelable = _ref_cancelable === void 0 ? false : _ref_cancelable; - var e = document.createEvent("CustomEvent"); - e.initCustomEvent(type, bubbles, cancelable, detail); - return e; - } - __name(custom_event, "custom_event"); - var current_component; - function set_current_component(component) { - current_component = component; - } - __name(set_current_component, "set_current_component"); - function get_current_component() { - if (!current_component) throw new Error("Function called outside component initialization"); - return current_component; - } - __name(get_current_component, "get_current_component"); - function onMount(fn) { - get_current_component().$$.on_mount.push(fn); - } - __name(onMount, "onMount"); - function createEventDispatcher() { - var component = get_current_component(); - return function (type, detail) { + tmp = _ref.bubbles, + t = tmp === void 0 ? !1 : tmp, + tmp1 = _ref.cancelable, + i = tmp1 === void 0 ? !1 : tmp1; + var n = document.createEvent("CustomEvent"); + return n.initCustomEvent(r, t, i, e), n; + } + h(WE, "custom_event"); + var Dn; + function gn(r) { + Dn = r; + } + h(gn, "set_current_component"); + function Um() { + if (!Dn) throw new Error("Function called outside component initialization"); + return Dn; + } + h(Um, "get_current_component"); + function ka(r) { + Um().$$.on_mount.push(r); + } + h(ka, "onMount"); + function Wi() { + var r = Um(); + return function (e, t) { var _ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, - _ref_cancelable = _ref.cancelable, - cancelable = _ref_cancelable === void 0 ? false : _ref_cancelable; - var callbacks = component.$$.callbacks[type]; - if (callbacks) { - var event = custom_event(type, detail, { - cancelable, - }); - callbacks.slice().forEach((fn) => { - fn.call(component, event); - }); - return !event.defaultPrevented; + tmp = _ref.cancelable, + i = tmp === void 0 ? !1 : tmp; + var n = r.$$.callbacks[e]; + if (n) { + var s = WE(e, t, { cancelable: i }); + return ( + n.slice().forEach((o) => { + o.call(r, s); + }), + !s.defaultPrevented + ); } - return true; + return !0; }; } - __name(createEventDispatcher, "createEventDispatcher"); - var dirty_components = []; - var binding_callbacks = []; - var render_callbacks = []; - var flush_callbacks = []; - var resolved_promise = Promise.resolve(); - var update_scheduled = false; - function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } - } - __name(schedule_update, "schedule_update"); - function add_render_callback(fn) { - render_callbacks.push(fn); - } - __name(add_render_callback, "add_render_callback"); - function add_flush_callback(fn) { - flush_callbacks.push(fn); - } - __name(add_flush_callback, "add_flush_callback"); - var seen_callbacks = /* @__PURE__ */ new Set(); - var flushidx = 0; - function flush() { - var saved_component = current_component; + h(Wi, "createEventDispatcher"); + var mn = []; + var X = [], + Gs = [], + Ca = [], + jE = Promise.resolve(), + Aa = !1; + function HE() { + Aa || ((Aa = !0), jE.then(Ym)); + } + h(HE, "schedule_update"); + function Ea(r) { + Gs.push(r); + } + h(Ea, "add_render_callback"); + function J(r) { + Ca.push(r); + } + h(J, "add_flush_callback"); + var ya = new Set(), + Ys = 0; + function Ym() { + var r = Dn; do { - while (flushidx < dirty_components.length) { - var component = dirty_components[flushidx]; - flushidx++; - set_current_component(component); - update(component.$$); - } - set_current_component(null); - dirty_components.length = 0; - flushidx = 0; - while (binding_callbacks.length) binding_callbacks.pop()(); - for (var i = 0; i < render_callbacks.length; i += 1) { - var callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - seen_callbacks.clear(); - set_current_component(saved_component); - } - __name(flush, "flush"); - function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - var dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } - } - __name(update, "update"); - var outroing = /* @__PURE__ */ new Set(); - var outros; - function group_outros() { - outros = { - r: 0, - c: [], - p: outros, - }; - } - __name(group_outros, "group_outros"); - function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; - } - __name(check_outros, "check_outros"); - function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } - } - __name(transition_in, "transition_in"); - function transition_out(block, local, detach2, callback) { - if (block && block.o) { - if (outroing.has(block)) return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach2) block.d(1); - callback(); - } - }); - block.o(local); - } else if (callback) { - callback(); - } - } - __name(transition_out, "transition_out"); - var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; - function bind(component, name2, callback) { - var index = component.$$.props[name2]; - if (index !== void 0) { - component.$$.bound[index] = callback; - callback(component.$$.ctx[index]); - } - } - __name(bind, "bind"); - function create_component(block) { - block && block.c(); - } - __name(create_component, "create_component"); - function mount_component(component, target, anchor, customElement) { - var _component_$$ = component.$$, - fragment = _component_$$.fragment, - after_update = _component_$$.after_update; - fragment && fragment.m(target, anchor); - if (!customElement) { - add_render_callback(() => { - var new_on_destroy = component.$$.on_mount.map(run).filter(is_function); - if (component.$$.on_destroy) { - component.$$.on_destroy.push(...new_on_destroy); - } else { - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback); - } - __name(mount_component, "mount_component"); - function destroy_component(component, detaching) { - var $$ = component.$$; - if ($$.fragment !== null) { - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } - } - __name(destroy_component, "destroy_component"); - function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= 1 << i % 31; - } - __name(make_dirty, "make_dirty"); - function init(component, options, instance21, create_fragment21, not_equal, props, append_styles) { - var dirty = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : [-1]; - var parent_component = current_component; - set_current_component(component); - var $$ = (component.$$ = { - fragment: null, - ctx: [], - props, - update: noop, - not_equal, - bound: blank_object(), - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), - callbacks: blank_object(), - dirty, - skip_bound: false, - root: options.target || parent_component.$$.root, - }); - append_styles && append_styles($$.root); - var ready = false; - $$.ctx = instance21 - ? instance21(component, options.props || {}, function (i, ret) { - for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { - rest[_key - 2] = arguments[_key]; - } - var value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) { - if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value); - if (ready) make_dirty(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all($$.before_update); - $$.fragment = create_fragment21 ? create_fragment21($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - start_hydrating(); - var nodes = children(options.target); - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } else { - $$.fragment && $$.fragment.c(); - } - if (options.intro) transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); - end_hydrating(); - flush(); - } - set_current_component(parent_component); - } - __name(init, "init"); - var SvelteElement; - if (typeof HTMLElement === "function") { - SvelteElement = /* @__PURE__ */ __name( + for (; Ys < mn.length; ) { + var e = mn[Ys]; + Ys++, gn(e), UE(e.$$); + } + for (gn(null), mn.length = 0, Ys = 0; X.length; ) X.pop()(); + for (var e1 = 0; e1 < Gs.length; e1 += 1) { + var t = Gs[e1]; + ya.has(t) || (ya.add(t), t()); + } + Gs.length = 0; + } while (mn.length); + for (; Ca.length; ) Ca.pop()(); + (Aa = !1), ya.clear(), gn(r); + } + h(Ym, "flush"); + function UE(r) { + if (r.fragment !== null) { + r.update(), It(r.before_update); + var e = r.dirty; + (r.dirty = [-1]), r.fragment && r.fragment.p(r.ctx, e), r.after_update.forEach(Ea); + } + } + h(UE, "update"); + var Ks = new Set(), + zi; + function ri() { + zi = { r: 0, c: [], p: zi }; + } + h(ri, "group_outros"); + function ni() { + zi.r || It(zi.c), (zi = zi.p); + } + h(ni, "check_outros"); + function x(r, e) { + r && r.i && (Ks.delete(r), r.i(e)); + } + h(x, "transition_in"); + function S(r, e, t, i) { + if (r && r.o) { + if (Ks.has(r)) return; + Ks.add(r), + zi.c.push(() => { + Ks.delete(r), i && (t && r.d(1), i()); + }), + r.o(e); + } else i && i(); + } + h(S, "transition_out"); + var hS = typeof window < "u" ? window : typeof globalThis < "u" ? globalThis : global; + function Z(r, e, t) { + var i = r.$$.props[e]; + i !== void 0 && ((r.$$.bound[i] = t), t(r.$$.ctx[i])); + } + h(Z, "bind"); + function P(r) { + r && r.c(); + } + h(P, "create_component"); + function M(r, e, t, i) { + var _r_$$ = r.$$, + n = _r_$$.fragment, + s = _r_$$.after_update; + n && n.m(e, t), + i || + Ea(() => { + var o = r.$$.on_mount.map(va).filter(Xs); + r.$$.on_destroy ? r.$$.on_destroy.push(...o) : It(o), (r.$$.on_mount = []); + }), + s.forEach(Ea); + } + h(M, "mount_component"); + function $(r, e) { + var t = r.$$; + t.fragment !== null && (It(t.on_destroy), t.fragment && t.fragment.d(e), (t.on_destroy = t.fragment = null), (t.ctx = [])); + } + h($, "destroy_component"); + function YE(r, e) { + r.$$.dirty[0] === -1 && (mn.push(r), HE(), r.$$.dirty.fill(0)), (r.$$.dirty[(e / 31) | 0] |= 1 << e % 31); + } + h(YE, "make_dirty"); + function se(r, e, t, i, n, s, o) { + var u = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : [-1]; + var l = Dn; + gn(r); + var a = (r.$$ = { fragment: null, ctx: [], props: s, update: xe, not_equal: n, bound: Vm(), on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(e.context || (l ? l.$$.context : [])), callbacks: Vm(), dirty: u, skip_bound: !1, root: e.target || l.$$.root }); + o && o(a.root); + var c = !1; + if ( + ((a.ctx = t + ? t(r, e.props || {}, function (f, d) { + for (var _len = arguments.length, p = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + p[_key - 2] = arguments[_key]; + } + var m = p.length ? p[0] : d; + return a.ctx && n(a.ctx[f], (a.ctx[f] = m)) && (!a.skip_bound && a.bound[f] && a.bound[f](m), c && YE(r, f)), d; + }) + : []), + a.update(), + (c = !0), + It(a.before_update), + (a.fragment = i ? i(a.ctx) : !1), + e.target) + ) { + if (e.hydrate) { + NE(); + var f = zE(e.target); + a.fragment && a.fragment.l(f), f.forEach(y); + } else a.fragment && a.fragment.c(); + e.intro && x(r.$$.fragment), M(r, e.target, e.anchor, e.customElement), VE(), Ym(); + } + gn(l); + } + h(se, "init"); + var GE; + typeof HTMLElement == "function" && + (GE = h( class extends HTMLElement { connectedCallback() { - var on_mount = this.$$.on_mount; - this.$$.on_disconnect = on_mount.map(run).filter(is_function); - for (var key in this.$$.slotted) { - this.appendChild(this.$$.slotted[key]); - } + var _this_$$ = this.$$, + r = _this_$$.on_mount; + this.$$.on_disconnect = r.map(va).filter(Xs); + for (var e in this.$$.slotted) this.appendChild(this.$$.slotted[e]); } - attributeChangedCallback(attr2, _oldValue, newValue) { - this[attr2] = newValue; + attributeChangedCallback(r, e, t) { + this[r] = t; } disconnectedCallback() { - run_all(this.$$.on_disconnect); + It(this.$$.on_disconnect); } $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type, callback) { - if (!is_function(callback)) { - return noop; - } - var callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); - callbacks.push(callback); - return () => { - var index = callbacks.indexOf(callback); - if (index !== -1) callbacks.splice(index, 1); - }; + $(this, 1), (this.$destroy = xe); } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } + $on(r, e) { + if (!Xs(e)) return xe; + var t = this.$$.callbacks[r] || (this.$$.callbacks[r] = []); + return ( + t.push(e), + () => { + var i = t.indexOf(e); + i !== -1 && t.splice(i, 1); + } + ); + } + $set(r) { + this.$$set && !zm(r) && ((this.$$.skip_bound = !0), this.$$set(r), (this.$$.skip_bound = !1)); } constructor() { - super(); - this.attachShadow({ - mode: "open", - }); + super(), this.attachShadow({ mode: "open" }); } }, "SvelteElement" - ); - } - var SvelteComponent = class SvelteComponent { + )); + var re = class re { $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type, callback) { - if (!is_function(callback)) { - return noop; - } - var callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); - callbacks.push(callback); - return () => { - var index = callbacks.indexOf(callback); - if (index !== -1) callbacks.splice(index, 1); - }; + $(this, 1), (this.$destroy = xe); } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } + $on(e, t) { + if (!Xs(t)) return xe; + var i = this.$$.callbacks[e] || (this.$$.callbacks[e] = []); + return ( + i.push(t), + () => { + var n = i.indexOf(t); + n !== -1 && i.splice(n, 1); + } + ); + } + $set(e) { + this.$$set && !zm(e) && ((this.$$.skip_bound = !0), this.$$set(e), (this.$$.skip_bound = !1)); } }; - __name(SvelteComponent, "SvelteComponent"); - // src/bibtex-parser.ts - var RootNode = class RootNode { + h(re, "SvelteComponent"); + var Js = class Js { constructor(ref) { - var children2 = ref === void 0 ? [] : ref; - this.children = children2; + var e = ref === void 0 ? [] : ref; + this.children = e; this.type = "root"; } }; - __name(RootNode, "RootNode"); - var TextNode = class TextNode { - constructor(parent, text2) { - this.parent = parent; - this.text = text2; + h(Js, "RootNode"); + var ji = class ji { + constructor(e, t) { + this.parent = e; + this.text = t; this.type = "text"; - parent.children.push(this); + e.children.push(this); } }; - __name(TextNode, "TextNode"); - var BlockNode = class BlockNode { - constructor(parent) { - this.parent = parent; + h(ji, "TextNode"); + var Fn = class Fn { + constructor(e) { + this.parent = e; this.type = "block"; this.command = ""; - parent.children.push(this); + e.children.push(this); } }; - __name(BlockNode, "BlockNode"); - var CommentNode = class CommentNode { - constructor(parent, raw, braces, parens) { - this.parent = parent; - this.raw = raw; - this.braces = braces; - this.parens = parens; + h(Fn, "BlockNode"); + var Zs = class Zs { + constructor(e, t, i, n) { + this.parent = e; + this.raw = t; + this.braces = i; + this.parens = n; this.type = "comment"; - parent.block = this; + e.block = this; } }; - __name(CommentNode, "CommentNode"); - var PreambleNode = class PreambleNode { - constructor(parent, raw, braces, parens) { - this.parent = parent; - this.raw = raw; - this.braces = braces; - this.parens = parens; + h(Zs, "CommentNode"); + var eo = class eo { + constructor(e, t, i, n) { + this.parent = e; + this.raw = t; + this.braces = i; + this.parens = n; this.type = "preamble"; - parent.block = this; + e.block = this; } }; - __name(PreambleNode, "PreambleNode"); - var StringNode = class StringNode { - constructor(parent, raw, braces, parens) { - this.parent = parent; - this.raw = raw; - this.braces = braces; - this.parens = parens; + h(eo, "PreambleNode"); + var to = class to { + constructor(e, t, i, n) { + this.parent = e; + this.raw = t; + this.braces = i; + this.parens = n; this.type = "string"; - parent.block = this; + e.block = this; } }; - __name(StringNode, "StringNode"); - var EntryNode = class EntryNode { - constructor(parent, wrapType) { - this.parent = parent; - this.wrapType = wrapType; + h(to, "StringNode"); + var io = class io { + constructor(e, t) { + this.parent = e; + this.wrapType = t; this.type = "entry"; - parent.block = this; - this.fields = []; + (e.block = this), (this.fields = []); } }; - __name(EntryNode, "EntryNode"); - var FieldNode = class FieldNode { - constructor(parent, ref) { - var name2 = ref === void 0 ? "" : ref; - this.parent = parent; - this.name = name2; + h(io, "EntryNode"); + var yi = class yi { + constructor(e, ref) { + var t = ref === void 0 ? "" : ref; + this.parent = e; + this.name = t; this.type = "field"; - this.value = new ConcatNode(this); + this.value = new ro(this); } }; - __name(FieldNode, "FieldNode"); - var ConcatNode = class ConcatNode { - constructor(parent) { - this.parent = parent; + h(yi, "FieldNode"); + var ro = class ro { + constructor(e) { + this.parent = e; this.type = "concat"; - this.canConsumeValue = true; + this.canConsumeValue = !0; this.concat = []; } }; - __name(ConcatNode, "ConcatNode"); - var LiteralNode = class LiteralNode { - constructor(parent, value) { - this.parent = parent; - this.value = value; + h(ro, "ConcatNode"); + var no = class no { + constructor(e, t) { + this.parent = e; + this.value = t; this.type = "literal"; - parent.concat.push(this); + e.concat.push(this); } }; - __name(LiteralNode, "LiteralNode"); - var BracedNode = class BracedNode { - constructor(parent) { - this.parent = parent; + h(no, "LiteralNode"); + var so = class so { + constructor(e) { + this.parent = e; this.type = "braced"; this.value = ""; this.depth = 0; - parent.concat.push(this); + e.concat.push(this); } }; - __name(BracedNode, "BracedNode"); - var QuotedNode = class QuotedNode { - constructor(parent) { - this.parent = parent; + h(so, "BracedNode"); + var oo = class oo { + constructor(e) { + this.parent = e; this.type = "quoted"; this.value = ""; this.depth = 0; - parent.concat.push(this); + e.concat.push(this); } }; - __name(QuotedNode, "QuotedNode"); - function generateAST(input) { - var _a2; - var rootNode = new RootNode(); - var node = rootNode; - var line = 1; - var column = 0; - for (var i = 0; i < input.length; i++) { - var char = input[i]; - var prev = input[i - 1]; - if (char === "\n") { - line++; - column = 0; - } - column++; - switch (node.type) { + h(oo, "QuotedNode"); + function Km(r) { + var s; + var e = new Js(), + t = e, + i = 1, + n = 0; + for (var o = 0; o < r.length; o++) { + var u = r[o], + l = r[o - 1]; + switch ((u === "\n" && (i++, (n = 0)), n++, t.type)) { case "root": { - node = char === "@" ? new BlockNode(node) : new TextNode(node, char); + t = u === "@" ? new Fn(t) : new ji(t, u); break; } case "text": { - if (char === "@" && /[\s\r\n}]/.test(prev)) { - node = new BlockNode(node.parent); - } else { - node.text += char; - } + u === "@" && /[\s\r\n}]/.test(l) ? (t = new Fn(t.parent)) : (t.text += u); break; } case "block": { - if (char === "@") { - var prevNode = node.parent.children[node.parent.children.length - 2]; - if ((prevNode == null ? void 0 : prevNode.type) === "text") { - prevNode.text += "@" + node.command; - } else { - node.parent.children.pop(); - new TextNode(node.parent, "@" + node.command); - node.parent.children.push(node); - } - node.command = ""; - } else if (char === "{" || char === "(") { - var commandTrimmed = node.command.trim(); - if (commandTrimmed === "" || /\s/.test(commandTrimmed)) { - node.parent.children.pop(); - node = new TextNode(node.parent, "@" + node.command + char); - } else { - node.command = commandTrimmed; - var command = node.command.toLowerCase(); - var _ref = _slicedToArray(char === "{" ? [1, 0] : [0, 1], 2), - braces = _ref[0], - parens = _ref[1]; - var raw = "@" + command + char; - switch (command) { + if (u === "@") { + var a = t.parent.children[t.parent.children.length - 2]; + (a == null ? void 0 : a.type) === "text" ? (a.text += "@" + t.command) : (t.parent.children.pop(), new ji(t.parent, "@" + t.command), t.parent.children.push(t)), (t.command = ""); + } else if (u === "{" || u === "(") { + var a1 = t.command.trim(); + if (a1 === "" || /\s/.test(a1)) t.parent.children.pop(), (t = new ji(t.parent, "@" + t.command + u)); + else { + t.command = a1; + var c = t.command.toLowerCase(), + _ref = _slicedToArray(u === "{" ? [1, 0] : [0, 1], 2), + f = _ref[0], + d = _ref[1], + p = "@" + c + u; + switch (c) { case "string": - node = new StringNode(node, raw, braces, parens); + t = new to(t, p, f, d); break; case "preamble": - node = new PreambleNode(node, raw, braces, parens); + t = new eo(t, p, f, d); break; case "comment": - node = new CommentNode(node, raw, braces, parens); + t = new Zs(t, p, f, d); break; default: - node = new EntryNode(node, char); + t = new io(t, u); break; } } - } else if (char.match(/[=#,})[\]]/)) { - node.parent.children.pop(); - node = new TextNode(node.parent, "@" + node.command + char); - } else { - node.command += char; - } + } else u.match(/[=#,})[\]]/) ? (t.parent.children.pop(), (t = new ji(t.parent, "@" + t.command + u))) : (t.command += u); break; } case "comment": case "string": case "preamble": - if (char === "{") { - node.braces++; - } else if (char === "}") { - node.braces--; - } else if (char === "(") { - node.parens++; - } else if (char === ")") { - node.parens--; - } - node.raw += char; - if (node.braces === 0 && node.parens === 0) { - node = node.parent.parent; - } + u === "{" ? t.braces++ : u === "}" ? t.braces-- : u === "(" ? t.parens++ : u === ")" && t.parens--, (t.raw += u), t.braces === 0 && t.parens === 0 && (t = t.parent.parent); break; case "entry": { - if (isWhitespace(char)) { - if (!node.key) { - } else { - node.keyEnded = true; - } - } else if (char === ",") { - node = new FieldNode(node); - } else if ((node.wrapType === "{" && char === "}") || (node.wrapType === "(" && char === ")")) { - node = node.parent.parent; - } else if (char === "=" && node.key && isValidFieldName(node.key)) { - var field = new FieldNode(node, node.key); - node.fields.push(field); - node.key = void 0; - node = field.value; - } else if (node.keyEnded) { - throw new BibTeXSyntaxError(input, node, i, line, column, "The entry key cannot contain whitespace"); - } else if (!isValidKeyCharacter(char)) { - throw new BibTeXSyntaxError(input, node, i, line, column, "The entry key cannot contain the character (".concat(char, ")")); + if (Qs(u)) t.key && (t.keyEnded = !0); + else if (u === ",") t = new yi(t); + else if ((t.wrapType === "{" && u === "}") || (t.wrapType === "(" && u === ")")) t = t.parent.parent; + else if (u === "=" && t.key && Gm(t.key)) { + var a2 = new yi(t, t.key); + t.fields.push(a2), (t.key = void 0), (t = a2.value); } else { - node.key = ((_a2 = node.key) != null ? _a2 : "") + char; + if (t.keyEnded) throw new st(r, t, o, i, n, "The entry key cannot contain whitespace"); + if (KE(u)) t.key = ((s = t.key) != null ? s : "") + u; + else throw new st(r, t, o, i, n, "The entry key cannot contain the character (".concat(u, ")")); } break; } case "field": { - if (char === "}" || char === ")") { - node.name = node.name.trim(); - node = node.parent.parent.parent; - } else if (char === "=") { - node.name = node.name.trim(); - node = node.value; - } else if (char === ",") { - node.name = node.name.trim(); - node = new FieldNode(node.parent); - } else if (!isValidFieldName(char)) { - throw new BibTeXSyntaxError(input, node, i, line, column); - } else if (!node.name) { - if (!isWhitespace(char)) { - node.parent.fields.push(node); - node.name = char; - } else { - } - } else { - node.name += char; - } + if (u === "}" || u === ")") (t.name = t.name.trim()), (t = t.parent.parent.parent); + else if (u === "=") (t.name = t.name.trim()), (t = t.value); + else if (u === ",") (t.name = t.name.trim()), (t = new yi(t.parent)); + else if (Gm(u)) t.name ? (t.name += u) : Qs(u) || (t.parent.fields.push(t), (t.name = u)); + else throw new st(r, t, o, i, n); break; } case "concat": { - if (isWhitespace(char)) { - break; - } else if (node.canConsumeValue) { - if (/[#=,}()[\]]/.test(char)) { - throw new BibTeXSyntaxError(input, node, i, line, column); - } else { - node.canConsumeValue = false; - if (char === "{") { - node = new BracedNode(node); - } else if (char === '"') { - node = new QuotedNode(node); - } else { - node = new LiteralNode(node, char); - } - } - } else { - if (char === ",") { - node = new FieldNode(node.parent.parent); - } else if (char === "}" || char === ")") { - node = node.parent.parent.parent.parent; - } else if (char === "#") { - node.canConsumeValue = true; - } else { - throw new BibTeXSyntaxError(input, node, i, line, column); - } - } + if (Qs(u)) break; + if (t.canConsumeValue) { + if (/[#=,}()[\]]/.test(u)) throw new st(r, t, o, i, n); + (t.canConsumeValue = !1), u === "{" ? (t = new so(t)) : u === '"' ? (t = new oo(t)) : (t = new no(t, u)); + } else if (u === ",") t = new yi(t.parent.parent); + else if (u === "}" || u === ")") t = t.parent.parent.parent.parent; + else if (u === "#") t.canConsumeValue = !0; + else throw new st(r, t, o, i, n); break; } case "literal": - if (isWhitespace(char)) { - node = node.parent; - } else if (char === ",") { - node = new FieldNode(node.parent.parent.parent); - } else if (char === "}") { - node = node.parent.parent.parent.parent.parent; - } else if (char === "#") { - node = node.parent; - node.canConsumeValue = true; - } else { - node.value += char; - } + Qs(u) ? (t = t.parent) : u === "," ? (t = new yi(t.parent.parent.parent)) : u === "}" ? (t = t.parent.parent.parent.parent.parent) : u === "#" ? ((t = t.parent), (t.canConsumeValue = !0)) : (t.value += u); break; case "braced": - if (char === "}" && node.depth === 0) { - node = node.parent; + if (u === "}" && t.depth === 0) { + t = t.parent; break; - } else if (char === "{") { - node.depth++; - } else if (char === "}") { - node.depth--; - } - node.value += char; + } else u === "{" ? t.depth++ : u === "}" && t.depth--; + t.value += u; break; case "quoted": - if (char === '"' && node.depth === 0) { - node = node.parent; + if (u === '"' && t.depth === 0) { + t = t.parent; break; - } else if (char === "{") { - node.depth++; - } else if (char === "}") { - node.depth--; - if (node.depth < 0) { - throw new BibTeXSyntaxError(input, node, i, line, column); - } - } - node.value += char; + } else if (u === "{") t.depth++; + else if (u === "}" && (t.depth--, t.depth < 0)) throw new st(r, t, o, i, n); + t.value += u; break; } } - return rootNode; + return e; } - __name(generateAST, "generateAST"); - function isWhitespace(string2) { - return /^[ \t\n\r]*$/.test(string2); + h(Km, "generateAST"); + function Qs(r) { + return /^[ \t\n\r]*$/.test(r); } - __name(isWhitespace, "isWhitespace"); - function isValidKeyCharacter(char) { - return !/[#%{}~$,]/.test(char); + h(Qs, "isWhitespace"); + function KE(r) { + return !/[#%{}~$,]/.test(r); } - __name(isValidKeyCharacter, "isValidKeyCharacter"); - function isValidFieldName(char) { - return !/[=,{}()[\]]/.test(char); + h(KE, "isValidKeyCharacter"); + function Gm(r) { + return !/[=,{}()[\]]/.test(r); } - __name(isValidFieldName, "isValidFieldName"); - var BibTeXSyntaxError = class BibTeXSyntaxError extends Error { - constructor(input, node, pos, line, column, hint) { - super("Line ".concat(line, ":").concat(column, ": Syntax Error in ").concat(node.type, " (").concat(hint, ")\n") + input.slice(Math.max(0, pos - 20), pos) + ">>" + input[pos] + "<<" + input.slice(pos + 1, pos + 20)); - this.node = node; - this.line = line; - this.column = column; - this.hint = hint; - this.name = "Syntax Error"; - this.char = input[pos]; + h(Gm, "isValidFieldName"); + var st = class st extends Error { + constructor(t, i, n, s, o, u) { + super("Line ".concat(s, ":").concat(o, ": Syntax Error in ").concat(i.type, " (").concat(u, ")\n") + t.slice(Math.max(0, n - 20), n) + ">>" + t[n] + "<<" + t.slice(n + 1, n + 20)); + this.node = i; + this.line = s; + this.column = o; + this.hint = u; + (this.name = "Syntax Error"), (this.char = t[n]); } }; - __name(BibTeXSyntaxError, "BibTeXSyntaxError"); - // src/latexParser.ts - var BlockNode2 = class BlockNode21 { - constructor(kind, parent, ref) { - var children2 = ref === void 0 ? [] : ref; - this.kind = kind; - this.parent = parent; - this.children = children2; + h(st, "BibTeXSyntaxError"); + var si = class si1 { + constructor(e, t, ref) { + var i = ref === void 0 ? [] : ref; + this.kind = e; + this.parent = t; + this.children = i; this.type = "block"; - if (parent instanceof BlockNode2) { - parent.children.push(this); - } else if (parent instanceof CommandNode) { - parent.args.push(this); - } + t instanceof si ? t.children.push(this) : t instanceof yn && t.args.push(this); } }; - __name(BlockNode2, "BlockNode"); - var TextNode2 = class TextNode2 { - constructor(parent, ref) { - var text2 = ref === void 0 ? "" : ref; - this.parent = parent; - this.text = text2; + h(si, "BlockNode"); + var uo = class uo { + constructor(e, ref) { + var t = ref === void 0 ? "" : ref; + this.parent = e; + this.text = t; this.type = "text"; - parent.children.push(this); + e.children.push(this); } }; - __name(TextNode2, "TextNode"); - var CommandNode = class CommandNode { - constructor(parent, ref, ref1) { - var command = ref === void 0 ? "" : ref, - args = ref1 === void 0 ? [] : ref1; - this.parent = parent; - this.command = command; - this.args = args; + h(uo, "TextNode"); + var yn = class yn { + constructor(e, ref, ref1) { + var t = ref === void 0 ? "" : ref, + i = ref1 === void 0 ? [] : ref1; + this.parent = e; + this.command = t; + this.args = i; this.type = "command"; - parent.children.push(this); + e.children.push(this); } }; - __name(CommandNode, "CommandNode"); - function parseLaTeX(input) { - var rootNode = new BlockNode2("root"); - var node = rootNode; - for (var i = 0; i < input.length; i++) { - var char = input[i]; - switch (node.type) { + h(yn, "CommandNode"); + function lo(r) { + var e = new si("root"), + t = e; + for (var i = 0; i < r.length; i++) { + var n = r[i]; + switch (t.type) { case "block": { - if (char === "\\") { - node = new CommandNode(node); - } else if (char === "{") { - node = new BlockNode2("curly", node); - } else if (((char === "}" && node.kind === "curly") || (char === "]" && node.kind === "square")) && node.parent) { - node = node.parent; - } else { - node = new TextNode2(node, char); - } + n === "\\" ? (t = new yn(t)) : n === "{" ? (t = new si("curly", t)) : ((n === "}" && t.kind === "curly") || (n === "]" && t.kind === "square")) && t.parent ? (t = t.parent) : (t = new uo(t, n)); break; } case "text": { - if (char === "\\" || char === "{") { - node = node.parent; - i--; - } else if ((char === "}" && node.parent.kind === "curly") || (char === "]" && node.parent.kind === "square")) { - node = node.parent; - i--; - } else { - if (char === "}") { - console.log(node.parent); - } - node.text += char; - } + n === "\\" || n === "{" || (n === "}" && t.parent.kind === "curly") || (n === "]" && t.parent.kind === "square") ? ((t = t.parent), i--) : (n === "}" && console.log(t.parent), (t.text += n)); break; } - case "command": { - if (char === "{") { - node = new BlockNode2("curly", node); - } else if (char === "[") { - node = new BlockNode2("square", node); - } else if (node.args.length === 0) { - node.command += char; - } else { - node = node.parent; - i--; - } - } + case "command": + n === "{" ? (t = new si("curly", t)) : n === "[" ? (t = new si("square", t)) : t.args.length === 0 ? (t.command += n) : ((t = t.parent), i--); } } - return rootNode; + return e; } - __name(parseLaTeX, "parseLaTeX"); - function stringifyLaTeX(ast) { - return stringifyBlock(ast); + h(lo, "parseLaTeX"); + function ao(r) { + return wa(r); } - __name(stringifyLaTeX, "stringifyLaTeX"); - function stringifyBlock(block) { - var content2 = block.children - .map((node) => { - switch (node.type) { + h(ao, "stringifyLaTeX"); + function wa(r) { + var e = r.children + .map((t) => { + switch (t.type) { case "block": - return stringifyBlock(node); + return wa(t); case "command": - return stringifyCommand(node); + return XE(t); case "text": - return node.text; + return t.text; } }) .join(""); - switch (block.kind) { + switch (r.kind) { case "root": - return content2; + return e; case "curly": - return "{" + content2 + "}"; + return "{" + e + "}"; case "square": - return "[" + content2 + "]"; + return "[" + e + "]"; } } - __name(stringifyBlock, "stringifyBlock"); - function stringifyCommand(node) { - return "\\" + node.command + node.args.map(stringifyBlock).join(""); + h(wa, "stringifyBlock"); + function XE(r) { + return "\\" + r.command + r.args.map(wa).join(""); } - __name(stringifyCommand, "stringifyCommand"); - function flattenLaTeX(block) { - var newBlock = __spreadProps(__spreadValues({}, block), { - children: [], - }); + h(XE, "stringifyCommand"); + function Cn(r) { + var e = Jh(Qh({}, r), { children: [] }); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = block.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (child.type === "block" && child.kind === "curly") { - var newChild = flattenLaTeX(child); - newBlock.children.push(...newChild.children); - } else { - newBlock.children.push(child); - } + for (var _iterator = r.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + if (t.type === "block" && t.kind === "curly") { + var i = Cn(t); + e.children.push(...i.children); + } else e.children.push(t); } } catch (err) { _didIteratorError = true; @@ -3873,11 +2769,10 @@ var __generator = } } } - return newBlock; + return e; } - __name(flattenLaTeX, "flattenLaTeX"); - // src/unicode.ts - var specialCharacters = /* @__PURE__ */ new Map([ + h(Cn, "flattenLaTeX"); + var Xm = new Map([ ["0023", "\\#"], ["0024", "\\$"], ["0025", "\\%"], @@ -6205,73 +5100,62 @@ var __generator = ["d7fe", "\\mathtt{8}"], ["d7ff", "\\mathtt{9}"], ]); - // src/utils.ts - function escapeSpecialCharacters(str) { - var _a2; - var mathExpressions = []; - str = str.replace(/\$[^$]+\$/, (match) => { - mathExpressions.push(match); - return "MATH.EXP.".concat(mathExpressions.length - 1); - }); - var newstr = ""; - var escapeMode = false; - for (var i = 0; i < str.length; i++) { - if (escapeMode) { - escapeMode = false; - newstr += str[i]; + function Qm(r) { + var n; + var e = []; + r = r.replace(/\$[^$]+\$/, (s) => (e.push(s), "MATH.EXP.".concat(e.length - 1))); + var t = "", + i = !1; + for (var s = 0; s < r.length; s++) { + if (i) { + (i = !1), (t += r[s]); continue; } - if (str[i] === "\\") { - escapeMode = true; - newstr += str[i]; + if (r[s] === "\\") { + (i = !0), (t += r[s]); continue; } - var c = str.charCodeAt(i).toString(16).padStart(4, "0"); - newstr += (_a2 = specialCharacters.get(c)) != null ? _a2 : str[i]; + var o = r.charCodeAt(s).toString(16).padStart(4, "0"); + t += (n = Xm.get(o)) != null ? n : r[s]; } - return newstr.replace(/MATH\.EXP\.(\d+)/, (_, i) => { - var _a3; - return (_a3 = mathExpressions[Number(i)]) != null ? _a3 : ""; + return t.replace(/MATH\.EXP\.(\d+)/, (s, o) => { + var u; + return (u = e[Number(o)]) != null ? u : ""; }); } - __name(escapeSpecialCharacters, "escapeSpecialCharacters"); - function titleCase(str) { - return str.replace(/(\w)(\S*)/g, (_, first, rest) => { - var word = first + rest; - if (isRomanNumeral(word)) return word; - return first.toLocaleUpperCase() + rest.toLocaleLowerCase(); + h(Qm, "escapeSpecialCharacters"); + function Jm(r) { + return r.replace(/(\w)(\S*)/g, (e, t, i) => { + var n = t + i; + return QE(n) ? n : t.toLocaleUpperCase() + i.toLocaleLowerCase(); }); } - __name(titleCase, "titleCase"); - function isRomanNumeral(str) { - return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/.test(str); + h(Jm, "titleCase"); + function QE(r) { + return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/.test(r); } - __name(isRomanNumeral, "isRomanNumeral"); - function alphaNum(str) { - return str.replace(/[^0-9A-Za-z]/g, "").toLocaleLowerCase(); + h(QE, "isRomanNumeral"); + function wr(r) { + return r.replace(/[^0-9A-Za-z]/g, "").toLocaleLowerCase(); } - __name(alphaNum, "alphaNum"); - function convertCRLF(str) { - return str.replace(/\r\n?/g, "\n"); + h(wr, "alphaNum"); + function Zm(r) { + return r.replace(/\r\n?/g, "\n"); } - __name(convertCRLF, "convertCRLF"); - function wrapText(line, lineWidth) { - var words2 = line.split(" "); - var lines = []; - var currLine = ""; + h(Zm, "convertCRLF"); + function e0(r, e) { + var t = r.split(" "), + i = [], + n = ""; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = words2.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = t.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step_value = _slicedToArray(_step.value, 2), - i = _step_value[0], - word = _step_value[1]; - if (currLine.length + word.length + 1 > lineWidth && i > 0) { - lines.push(currLine.trim()); - currLine = ""; - } - currLine += word + " "; + s = _step_value[0], + o = _step_value[1]; + n.length + o.length + 1 > e && s > 0 && (i.push(n.trim()), (n = "")), (n += o + " "); } } catch (err) { _didIteratorError = true; @@ -6287,63 +5171,54 @@ var __generator = } } } - return [...lines, currLine.trim()]; + return [...i, n.trim()]; } - __name(wrapText, "wrapText"); - function unwrapText(str) { - return str + h(e0, "wrapText"); + function t0(r) { + return r .replace(/\s*\n\s*\n\s*/g, "<>") .replace(/\s*\n\s*/g, " ") .replace(/<>/g, "\n\n"); } - __name(unwrapText, "unwrapText"); - function addEnclosingBraces(str, removeInsideBraces) { - if (removeInsideBraces) { - str = stringifyLaTeX(flattenLaTeX(parseLaTeX(str))); - } - return "{".concat(str, "}"); - } - __name(addEnclosingBraces, "addEnclosingBraces"); - function removeEnclosingBraces(str) { - return str.replace(/^\{([^{}]*)\}$/g, "$1"); - } - __name(removeEnclosingBraces, "removeEnclosingBraces"); - function escapeURL(str) { - return str.replace(/\\?_/g, "\\%5F"); - } - __name(escapeURL, "escapeURL"); - function limitAuthors(str, maxAuthors) { - var authors = str.split(" and "); - if (authors.length > maxAuthors) { - return [...authors.slice(0, maxAuthors), "others"].join(" and "); - } - return str; - } - __name(limitAuthors, "limitAuthors"); - function formatPageRange(str) { - for (var i = 0; i < 4; i++) { - str = str.replace(/(\d)\s*-\s*(\d)/g, "$1--$2"); - } - return str; - } - __name(formatPageRange, "formatPageRange"); - function isEntryNode(node) { - var _a2; - return node.type !== "text" && ((_a2 = node.block) == null ? void 0 : _a2.type) === "entry"; - } - __name(isEntryNode, "isEntryNode"); - // src/duplicates.ts - function checkForDuplicates(ast, valueLookup, duplicateRules, merge) { - var _a2, _b; - var rules = /* @__PURE__ */ new Map(); - if (duplicateRules) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + h(t0, "unwrapText"); + function xa(r, e) { + return e && (r = ao(Cn(lo(r)))), "{".concat(r, "}"); + } + h(xa, "addEnclosingBraces"); + function i0(r) { + return r.replace(/^\{([^{}]*)\}$/g, "$1"); + } + h(i0, "removeEnclosingBraces"); + function r0(r) { + return r.replace(/\\?_/g, "\\%5F"); + } + h(r0, "escapeURL"); + function n0(r, e) { + var t = r.split(" and "); + return t.length > e ? [...t.slice(0, e), "others"].join(" and ") : r; + } + h(n0, "limitAuthors"); + function s0(r) { + for (var e = 0; e < 4; e++) r = r.replace(/(\d)\s*-\s*(\d)/g, "$1--$2"); + return r; + } + h(s0, "formatPageRange"); + function An(r) { + var e; + return r.type !== "text" && ((e = r.block) == null ? void 0 : e.type) === "entry"; + } + h(An, "isEntryNode"); + function o0(r, e, t, i) { + var f, d; + var n = new Map(); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (t) try { - for (var _iterator = duplicateRules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var rule = _step.value; - rules.set(rule, !!merge); + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var p = _step.value; + n.set(p, !!i); } } catch (err) { _didIteratorError = true; @@ -6359,94 +5234,60 @@ var __generator = } } } - } - if (!rules.has("key")) { - rules.set("key", false); - } - var duplicateEntries = /* @__PURE__ */ new Set(); - var warnings = []; - var keys = /* @__PURE__ */ new Map(); - var dois = /* @__PURE__ */ new Map(); - var citations = /* @__PURE__ */ new Map(); - var abstracts = /* @__PURE__ */ new Map(); + n.has("key") || n.set("key", !1); + var s = new Set(), + o = [], + u = new Map(), + l = new Map(), + a = new Map(), + c = new Map(); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = getEntries(ast)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var entry = _step1.value; - var entryValues = valueLookup.get(entry); + for (var _iterator1 = Hi(r)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var p1 = _step1.value; + var m = e.get(p1); var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined; try { - for (var _iterator2 = rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + for (var _iterator2 = n[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var _step_value = _slicedToArray(_step2.value, 2), - rule1 = _step_value[0], - doMerge = _step_value[1]; - var duplicateOf = void 0; - var warning = void 0; - switch (rule1) { + D = _step_value[0], + g = _step_value[1]; + var b = void 0, + F = void 0; + switch (D) { case "key": { - if (!entry.key) continue; - var keyLC = entry.key.toLocaleLowerCase(); - duplicateOf = keys.get(keyLC); - if (!duplicateOf) { - keys.set(keyLC, entry); - } else { - warning = "The citation key ".concat(entry.key, " has already been used."); - } + if (!p1.key) continue; + var A = p1.key.toLocaleLowerCase(); + (b = u.get(A)), b ? (F = "The citation key ".concat(p1.key, " has already been used.")) : u.set(A, p1); break; } case "doi": { - var doi = alphaNum((_a2 = entryValues.get("doi")) != null ? _a2 : ""); - if (!doi) continue; - duplicateOf = dois.get(doi); - if (!duplicateOf) { - dois.set(doi, entry); - } else { - warning = "Entry ".concat(entry.key, " has an identical DOI to entry ").concat(duplicateOf.key, "."); - } + var A1 = wr((f = m.get("doi")) != null ? f : ""); + if (!A1) continue; + (b = l.get(A1)), b ? (F = "Entry ".concat(p1.key, " has an identical DOI to entry ").concat(b.key, ".")) : l.set(A1, p1); break; } case "citation": { - var ttl = entryValues.get("title"); - var aut = entryValues.get("author"); - var num = entryValues.get("number"); - if (!ttl || !aut) continue; - var cit = [alphaNum(aut.split(/,| and/)[0]), alphaNum(ttl), alphaNum(num != null ? num : "0")].join(":"); - duplicateOf = citations.get(cit); - if (!duplicateOf) { - citations.set(cit, entry); - } else { - warning = "Entry ".concat(entry.key, " has similar content to entry ").concat(duplicateOf.key, "."); - } + var A2 = m.get("title"), + E = m.get("author"), + O = m.get("number"); + if (!A2 || !E) continue; + var _ = [wr(E.split(/,| and/)[0]), wr(A2), wr(O != null ? O : "0")].join(":"); + (b = a.get(_)), b ? (F = "Entry ".concat(p1.key, " has similar content to entry ").concat(b.key, ".")) : a.set(_, p1); break; } case "abstract": { - var abstract = alphaNum((_b = entryValues.get("abstract")) != null ? _b : ""); - var abs = abstract.slice(0, 100); - if (!abs) continue; - duplicateOf = abstracts.get(abs); - if (!duplicateOf) { - abstracts.set(abs, entry); - } else { - warning = "Entry ".concat(entry.key, " has a similar abstract to entry ").concat(duplicateOf.key, "."); - } + var E1 = wr((d = m.get("abstract")) != null ? d : "").slice(0, 100); + if (!E1) continue; + (b = c.get(E1)), b ? (F = "Entry ".concat(p1.key, " has a similar abstract to entry ").concat(b.key, ".")) : c.set(E1, p1); break; } } - if (duplicateOf && doMerge) { - duplicateEntries.add(entry); - mergeEntries(merge, duplicateOf, entry); - } - if (warning) { - warnings.push({ - code: "DUPLICATE_ENTRY", - rule: rule1, - message: "Duplicate ".concat(doMerge ? "removed" : "detected", ". ").concat(warning), - }); - } + b && g && (s.add(p1), JE(i, b, p1)), F && o.push({ code: "DUPLICATE_ENTRY", rule: D, message: "Duplicate ".concat(g ? "removed" : "detected", ". ").concat(F) }); } } catch (err) { _didIteratorError2 = true; @@ -6477,92 +5318,79 @@ var __generator = } } } - return { - entries: duplicateEntries, - warnings, - }; + return { entries: s, warnings: o }; } - __name(checkForDuplicates, "checkForDuplicates"); - function mergeEntries(merge, duplicateOf, entry) { - if (!merge) return; - switch (merge) { - case "last": - duplicateOf.key = entry.key; - duplicateOf.fields = entry.fields; - break; - case "combine": - case "overwrite": - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - var _loop = function () { - var field = _step.value; - var existing = duplicateOf.fields.find((f) => f.name.toLocaleLowerCase() === field.name.toLocaleLowerCase()); - if (!existing) { - duplicateOf.fields.push(field); - } else if (merge === "overwrite") { - existing.value = field.value; - } - }; - for (var _iterator = entry.fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop(); - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(o0, "checkForDuplicates"); + function JE(r, e, t) { + if (r) + switch (r) { + case "last": + (e.key = t.key), (e.fields = t.fields); + break; + case "combine": + case "overwrite": + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } + var _loop = function () { + var i = _step.value; + var n = e.fields.find((s) => s.name.toLocaleLowerCase() === i.name.toLocaleLowerCase()); + n ? r === "overwrite" && (n.value = i.value) : e.fields.push(i); + }; + for (var _iterator = t.fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop(); + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - break; - case "first": - return; - } + break; + case "first": + return; + } } - __name(mergeEntries, "mergeEntries"); - // src/sort.ts - var MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; - function sortEntries(ast, fieldMaps, sort) { - var _a2, _b, _c, _d, _e; - var sortIndexes = /* @__PURE__ */ new Map(); - var precedingMeta = []; + h(JE, "mergeEntries"); + var Sa = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; + function u0(r, e, t) { + var s, o, u, l, a; + var i = new Map(), + n = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = ast.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var item = _step.value; - if (item.type === "text" || ((_a2 = item.block) == null ? void 0 : _a2.type) !== "entry") { - precedingMeta.push(item); + for (var _iterator = r.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var c = _step.value; + if (c.type === "text" || ((s = c.block) == null ? void 0 : s.type) !== "entry") { + n.push(c); continue; } - var sortIndex = /* @__PURE__ */ new Map(); + var f = new Map(); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = sort[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var key = _step1.value; - if (key.startsWith("-")) key = key.slice(1); - var val = void 0; - if (key === "key") { - val = (_b = item.block.key) != null ? _b : ""; - } else if (key === "type") { - val = item.command; - } else if (key === "month") { - var v = (_c = fieldMaps.get(item.block)) == null ? void 0 : _c.get(key); - var i = v ? MONTHS.indexOf(v) : -1; - val = i > -1 ? i : ""; - } else { - val = (_e = (_d = fieldMaps.get(item.block)) == null ? void 0 : _d.get(key)) != null ? _e : ""; - } - sortIndex.set(key, typeof val === "string" ? val.toLowerCase() : val); + for (var _iterator1 = t[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var d = _step1.value; + d.startsWith("-") && (d = d.slice(1)); + var p = void 0; + if (d === "key") p = (o = c.block.key) != null ? o : ""; + else if (d === "type") p = c.command; + else if (d === "month") { + var m = (u = e.get(c.block)) == null ? void 0 : u.get(d), + D = m ? Sa.indexOf(m) : -1; + p = D > -1 ? D : ""; + } else p = (a = (l = e.get(c.block)) == null ? void 0 : l.get(d)) != null ? a : ""; + f.set(d, typeof p == "string" ? p.toLowerCase() : p); } } catch (err) { _didIteratorError1 = true; @@ -6578,10 +5406,7 @@ var __generator = } } } - sortIndexes.set(item, sortIndex); - while (precedingMeta.length > 0) { - sortIndexes.set(precedingMeta.pop(), sortIndex); - } + for (i.set(c, f); n.length > 0; ) i.set(n.pop(), f); } } catch (err) { _didIteratorError = true; @@ -6602,19 +5427,17 @@ var __generator = _iteratorError2 = undefined; try { var _loop = function () { - var prefixedKey = _step2.value; - var desc = prefixedKey.startsWith("-"); - var key = desc ? prefixedKey.slice(1) : prefixedKey; - ast.children.sort((a, b) => { - var _a3, _b2, _c2, _d2; - var ia = (_b2 = (_a3 = sortIndexes.get(a)) == null ? void 0 : _a3.get(key)) != null ? _b2 : "￰"; - var ib = (_d2 = (_c2 = sortIndexes.get(b)) == null ? void 0 : _c2.get(key)) != null ? _d2 : "￰"; - if (typeof ia === "number") ia = String(ia).padStart(50, "0"); - if (typeof ib === "number") ib = String(ib).padStart(50, "0"); - return (desc ? ib : ia).localeCompare(desc ? ia : ib); + var c = _step2.value; + var f = c.startsWith("-"), + d = f ? c.slice(1) : c; + r.children.sort((p, m) => { + var b, F, A, E; + var D = (F = (b = i.get(p)) == null ? void 0 : b.get(d)) != null ? F : "￰", + g = (E = (A = i.get(m)) == null ? void 0 : A.get(d)) != null ? E : "￰"; + return typeof D == "number" && (D = String(D).padStart(50, "0")), typeof g == "number" && (g = String(g).padStart(50, "0")), (f ? g : D).localeCompare(f ? D : g); }); }; - for (var _iterator2 = [...sort].reverse()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop(); + for (var _iterator2 = [...t].reverse()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop(); } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; @@ -6630,23 +5453,18 @@ var __generator = } } } - __name(sortEntries, "sortEntries"); - function sortEntryFields(ast, fieldOrder) { + h(u0, "sortEntries"); + function l0(r, e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = getEntries(ast)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var entry = _step.value; - entry.fields.sort((a, b) => { - var orderA = fieldOrder.indexOf(a.name.toLocaleLowerCase()); - var orderB = fieldOrder.indexOf(b.name.toLocaleLowerCase()); - if (orderA === -1 && orderB === -1) return 0; - if (orderA === -1) return 1; - if (orderB === -1) return -1; - if (orderB < orderA) return 1; - if (orderB > orderA) return -1; - return 0; + for (var _iterator = Hi(r)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + t.fields.sort((i, n) => { + var s = e.indexOf(i.name.toLocaleLowerCase()), + o = e.indexOf(n.name.toLocaleLowerCase()); + return s === -1 && o === -1 ? 0 : s === -1 ? 1 : o === -1 ? -1 : o < s ? 1 : o > s ? -1 : 0; }); } } catch (err) { @@ -6664,77 +5482,71 @@ var __generator = } } } - __name(sortEntryFields, "sortEntryFields"); - // src/format.ts - var MONTH_SET = new Set(MONTHS); - function formatBibtex(ast, options, replacementKeys) { - var omit = options.omit, - tab = options.tab, - space2 = options.space; - var indent = tab ? " " : " ".repeat(space2); - var omitFields = new Set(omit); - var bibtex = ast.children - .map((child) => formatNode(child, options, indent, omitFields, replacementKeys)) - .join("") - .trimEnd(); - if (!bibtex.endsWith("\n")) bibtex += "\n"; - return bibtex; + h(l0, "sortEntryFields"); + var ZE = new Set(Sa); + function h0(r, e, t) { + var i = e.omit, + n = e.tab, + s = e.space, + o = n ? " " : " ".repeat(s), + u = new Set(i), + l = r.children + .map((a) => ev(a, e, o, u, t)) + .join("") + .trimEnd(); + return l.endsWith("\n") || (l += "\n"), l; } - __name(formatBibtex, "formatBibtex"); - function formatNode(child, options, indent, omitFields, replacementKeys) { - if (child.type === "text") { - return formatComment(child.text, options); - } - if (!child.block) throw new Error("FATAL!"); - switch (child.block.type) { + h(h0, "formatBibtex"); + function ev(r, e, t, i, n) { + if (r.type === "text") return a0(r.text, e); + if (!r.block) throw new Error("FATAL!"); + switch (r.block.type) { case "preamble": case "string": - return "".concat(child.block.raw, "\n") + (options.blankLines ? "\n" : ""); + return "".concat(r.block.raw, "\n") + (e.blankLines ? "\n" : ""); case "comment": - return formatComment(child.block.raw, options); + return a0(r.block.raw, e); case "entry": - return formatEntry(child.command, child.block, options, indent, omitFields, replacementKeys == null ? void 0 : replacementKeys.get(child.block)) + (options.blankLines ? "\n" : ""); - } - } - __name(formatNode, "formatNode"); - function formatEntry(entryType, entry, options, indent, omitFields, replacementKey) { - var align = options.align, - trailingCommas = options.trailingCommas, - removeDuplicateFields = options.removeDuplicateFields, - removeEmptyFields = options.removeEmptyFields, - lowercase = options.lowercase; - var bibtex = ""; - var itemType = lowercase ? entryType.toLocaleLowerCase() : entryType; - bibtex += "@".concat(itemType, "{"); - var key = replacementKey != null ? replacementKey : entry.key; - if (key) bibtex += "".concat(key, ","); - var fieldSeen = /* @__PURE__ */ new Set(); + return tv(r.command, r.block, e, t, i, n == null ? void 0 : n.get(r.block)) + (e.blankLines ? "\n" : ""); + } + } + h(ev, "formatNode"); + function tv(r, e, t, i, n, s) { + var o = t.align, + u = t.trailingCommas, + l = t.removeDuplicateFields, + a = t.removeEmptyFields, + c = t.lowercase, + f = "", + d = c ? r.toLocaleLowerCase() : r; + f += "@".concat(d, "{"); + var p = s != null ? s : e.key; + p && (f += "".concat(p, ",")); + var m = new Set(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = entry.fields.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = e.fields.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step_value = _slicedToArray(_step.value, 2), - i = _step_value[0], - field = _step_value[1]; - var nameLowerCase = field.name.toLocaleLowerCase(); - var name2 = lowercase ? nameLowerCase : field.name; - if (field.name === "") continue; - if (omitFields.has(nameLowerCase)) continue; - if (removeDuplicateFields && fieldSeen.has(nameLowerCase)) continue; - fieldSeen.add(nameLowerCase); - if (field.value.concat.length === 0) { - if (removeEmptyFields) continue; - bibtex += "\n".concat(indent).concat(name2); - } else { - var value = formatValue(field, options); - if (removeEmptyFields && (value === "{}" || value === '""')) continue; - bibtex += "\n" - .concat(indent) - .concat(name2.trim().padEnd(align - 1), " = ") - .concat(value); + D = _step_value[0], + g = _step_value[1]; + var b = g.name.toLocaleLowerCase(), + F = c ? b : g.name; + if (g.name !== "" && !n.has(b) && !(l && m.has(b))) { + if ((m.add(b), g.value.concat.length === 0)) { + if (a) continue; + f += "\n".concat(i).concat(F); + } else { + var A = Ba(g, t); + if (a && (A === "{}" || A === '""')) continue; + f += "\n" + .concat(i) + .concat(F.trim().padEnd(o - 1), " = ") + .concat(A); + } + (D < e.fields.length - 1 || u) && (f += ","); } - if (i < entry.fields.length - 1 || trailingCommas) bibtex += ","; } } catch (err) { _didIteratorError = true; @@ -6750,272 +5562,189 @@ var __generator = } } } - bibtex += "\n}\n"; - return bibtex; - } - __name(formatEntry, "formatEntry"); - function formatComment(comment2, param) { - var stripComments = param.stripComments, - tidyComments = param.tidyComments; - if (stripComments) return ""; - if (tidyComments) { - var trimmed = comment2.trim(); - if (trimmed === "") return ""; - return trimmed + "\n"; - } else { - return comment2.replace(/^[ \t]*\n|[ \t]*$/g, ""); - } - } - __name(formatComment, "formatComment"); - function formatValue(field, options) { - var curly = options.curly, - numeric = options.numeric, - align = options.align, - stripEnclosingBraces = options.stripEnclosingBraces, - dropAllCaps = options.dropAllCaps, - escape = options.escape, - encodeUrls = options.encodeUrls, - wrap = options.wrap, - maxAuthors = options.maxAuthors, - tab = options.tab, - space2 = options.space, - enclosingBraces = options.enclosingBraces, - removeBraces = options.removeBraces; - var nameLowerCase = field.name.toLocaleLowerCase(); - var indent = tab ? " " : " ".repeat(space2); - var enclosingBracesFields = new Set((enclosingBraces != null ? enclosingBraces : []).map((field2) => field2.toLocaleLowerCase())); - var removeBracesFields = new Set((removeBraces != null ? removeBraces : []).map((field2) => field2.toLocaleLowerCase())); - return field.value.concat + return (f += "\n}\n"), f; + } + h(tv, "formatEntry"); + function a0(r, param) { + var e = param.stripComments, + t = param.tidyComments; + if (e) return ""; + if (t) { + var i = r.trim(); + return i === "" ? "" : i + "\n"; + } else return r.replace(/^[ \t]*\n|[ \t]*$/g, ""); + } + h(a0, "formatComment"); + function Ba(r, e) { + var t = e.curly, + i = e.numeric, + n = e.align, + s = e.stripEnclosingBraces, + o = e.dropAllCaps, + u = e.escape, + l = e.encodeUrls, + a = e.wrap, + c = e.maxAuthors, + f = e.tab, + d = e.space, + p = e.enclosingBraces, + m = e.removeBraces, + D = r.name.toLocaleLowerCase(), + g = f ? " " : " ".repeat(d), + b = new Set((p != null ? p : []).map((A) => A.toLocaleLowerCase())), + F = new Set((m != null ? m : []).map((A) => A.toLocaleLowerCase())); + return r.value.concat .map((param) => { - var type = param.type, - value = param.value; - var isNumeric = value.match(/^[1-9][0-9]*$/); - if (isNumeric && curly) { - type = "braced"; - } - if (type === "literal" || (numeric && isNumeric)) { - return value; - } - var dig3 = value.slice(0, 3).toLowerCase(); - if (!curly && numeric && nameLowerCase === "month" && MONTH_SET.has(dig3)) { - return dig3; - } - value = unwrapText(value); - if (stripEnclosingBraces) { - value = removeEnclosingBraces(value); - } - if (dropAllCaps && !value.match(/[a-z]/)) { - value = titleCase(value); - } - if (nameLowerCase === "url" && encodeUrls) { - value = escapeURL(value); - } - if (escape) { - value = escapeSpecialCharacters(value); - } - if (nameLowerCase === "pages") { - value = formatPageRange(value); - } - if (nameLowerCase === "author" && maxAuthors) { - value = limitAuthors(value, maxAuthors); - } - if (removeBracesFields.has(nameLowerCase)) { - value = stringifyLaTeX(flattenLaTeX(parseLaTeX(value))); - } - if (enclosingBracesFields.has(nameLowerCase) && (type === "braced" || curly)) { - value = addEnclosingBraces(value, true); - } - if (type === "braced" && field.value.concat.length === 1) { - value = value.trim(); - } - if (type === "braced" || curly) { - var lineLength = "".concat(indent).concat(align, "{").concat(value, "}").length; - var multiLine = value.includes("\n\n"); - if ((wrap && lineLength > wrap) || multiLine) { - var paragraphs = value.split("\n\n"); - var valIndent = indent.repeat(2); - if (wrap) { - var wrapCol = wrap; - paragraphs = paragraphs.map((paragraph) => wrapText(paragraph, wrapCol - valIndent.length).join("\n" + valIndent)); + var A = param.type, + E = param.value; + var O = E.match(/^[1-9][0-9]*$/); + if ((O && t && (A = "braced"), A === "literal" || (i && O))) return E; + var _ = E.slice(0, 3).toLowerCase(); + if (!t && i && D === "month" && ZE.has(_)) return _; + if (((E = t0(E)), s && (E = i0(E)), o && !E.match(/[a-z]/) && (E = Jm(E)), D === "url" && l && (E = r0(E)), u && (E = Qm(E)), D === "pages" && (E = s0(E)), D === "author" && c && (E = n0(E, c)), F.has(D) && (E = ao(Cn(lo(E)))), b.has(D) && (A === "braced" || t) && (E = xa(E, !0)), A === "braced" && r.value.concat.length === 1 && (E = E.trim()), A === "braced" || t)) { + var W = "".concat(g).concat(n, "{").concat(E, "}").length, + Q = E.includes("\n\n"); + if ((a && W > a) || Q) { + var j = E.split("\n\n"), + Y = g.repeat(2); + if (a) { + var I = a; + j = j.map((oe) => e0(oe, I - Y.length).join("\n" + Y)); } - value = "\n" + valIndent + paragraphs.join("\n\n".concat(valIndent)) + "\n" + indent; + E = "\n" + Y + j.join("\n\n".concat(Y)) + "\n" + g; } - return addEnclosingBraces(value); - } else { - return '"'.concat(value, '"'); - } + return xa(E); + } else return '"'.concat(E, '"'); }) .join(" # "); } - __name(formatValue, "formatValue"); - // src/parseAuthors.ts - function parseAuthors(authors, sanitize) { - return authors + h(Ba, "formatValue"); + function En(r, e) { + return r .replace(/\s+/g, " ") .split(/ and /i) - .map((nameRaw) => { - var name2 = nameRaw.trim(); - if (sanitize) { - name2 = name2.replace(/["{}]/g, ""); - } - var commaPos = name2.indexOf(","); - if (commaPos > -1) { - return { - firstNames: name2.slice(commaPos + 1).trim(), - lastName: name2.slice(0, commaPos).trim(), - }; - } else { - var lastSpacePos = name2.lastIndexOf(" "); - return { - firstNames: name2.slice(0, lastSpacePos).trim(), - lastName: name2.slice(lastSpacePos).trim(), - }; + .map((t) => { + var i = t.trim(); + e && (i = i.replace(/["{}]/g, "")); + var n = i.indexOf(","); + if (n > -1) return { firstNames: i.slice(n + 1).trim(), lastName: i.slice(0, n).trim() }; + { + var s = i.lastIndexOf(" "); + return { firstNames: i.slice(0, s).trim(), lastName: i.slice(s).trim() }; } }); } - __name(parseAuthors, "parseAuthors"); - // src/generateKeys.ts - var SPECIAL_MARKERS = { - auth: { - description: "Last name of first authors", - callback: (v) => { - var _a2, _b; - var authors = parseAuthors((_a2 = v.get("author")) != null ? _a2 : "", true); - var author = - (_b = authors[0]) == null - ? void 0 - : _b.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, - "_" - ); - return author ? [author] : []; + h(En, "parseAuthors"); + var iv = { + auth: { + description: "Last name of first authors", + callback: (r) => { + var i, n; + var t = + (n = En((i = r.get("author")) != null ? i : "", !0)[0]) == null + ? void 0 + : n.lastName.replace( + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, + "_" + ); + return t ? [t] : []; + }, }, - }, - authEtAl: { - description: "If 1 or 2 authors, both authors, otherwise first author and EtAl", - callback: (v) => { - var _a2; - var authors = parseAuthors((_a2 = v.get("author")) != null ? _a2 : "", true); - return [ - ...authors - .slice(0, 2) - .map((author) => - author.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, - "_" - ) - ), - ...(authors.length > 2 ? ["Et", "Al"] : []), - ]; + authEtAl: { + description: "If 1 or 2 authors, both authors, otherwise first author and EtAl", + callback: (r) => { + var t; + var e = En((t = r.get("author")) != null ? t : "", !0); + return [ + ...e + .slice(0, 2) + .map((i) => + i.lastName.replace( + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, + "_" + ) + ), + ...(e.length > 2 ? ["Et", "Al"] : []), + ]; + }, }, - }, - authors: { - description: "Last name all authors", - callback: (v) => { - var _a2; - var authors = parseAuthors((_a2 = v.get("author")) != null ? _a2 : "", true); - return authors.map((author) => - author.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, - "_" - ) - ); + authors: { + description: "Last name all authors", + callback: (r) => { + var t; + return En((t = r.get("author")) != null ? t : "", !0).map((i) => + i.lastName.replace( + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, + "_" + ) + ); + }, }, - }, - authorsN: { - description: "Last name N authors, with EtAl if more", - callback: (v, n) => { - var _a2; - var authors = parseAuthors((_a2 = v.get("author")) != null ? _a2 : "", true); - return [ - ...authors - .slice(0, n) - .map((author) => - author.lastName.replace( - /(?:(?![A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/g, - "_" - ) - ), - ...(authors.length > n ? ["Et", "Al"] : []), - ]; + authorsN: { + description: "Last name N authors, with EtAl if more", + callback: (r, e) => { + var i; + var t = En((i = r.get("author")) != null ? i : "", !0); + return [ + ...t + .slice(0, e) + .map((n) => + n.lastName.replace( + /(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/g, + "_" + ) + ), + ...(t.length > e ? ["Et", "Al"] : []), + ]; + }, }, - }, - veryshorttitle: { - description: "First non-function word of the title", - callback: (v) => nonFunctionWords(title(v)).slice(0, 1), - }, - shorttitle: { - description: "First three non-function words of the title", - callback: (v) => nonFunctionWords(title(v)).slice(0, 3), - }, - title: { - description: "Full title, capitalized", - callback: (v) => capitalize(words(title(v))), - }, - fulltitle: { - description: "Full title, verbatim", - callback: (v) => words(title(v)), - }, - year: { - description: "Year", - callback: (v) => { - var _a2; - var year = (_a2 = v.get("year")) == null ? void 0 : _a2.replace(/[^0-9]/g, ""); - return year ? [year] : []; + veryshorttitle: { description: "First non-function word of the title", callback: (r) => c0(ho(r)).slice(0, 1) }, + shorttitle: { description: "First three non-function words of the title", callback: (r) => c0(ho(r)).slice(0, 3) }, + title: { description: "Full title, capitalized", callback: (r) => d0(co(ho(r))) }, + fulltitle: { description: "Full title, verbatim", callback: (r) => co(ho(r)) }, + year: { + description: "Year", + callback: (r) => { + var t; + var e = (t = r.get("year")) == null ? void 0 : t.replace(/[^0-9]/g, ""); + return e ? [e] : []; + }, }, + duplicateLetter: { description: "If the multiple entries end up with the same key, then insert a letter a-z. By default this will be inserted at the end.", callback: () => ["[duplicateLetter]"] }, + duplicateNumber: { description: "If the multiple entries end up with the same key, then insert a number.", callback: () => ["[duplicateNumber]"] }, }, - duplicateLetter: { - description: "If the multiple entries end up with the same key, then insert a letter a-z. By default this will be inserted at the end.", - callback: () => ["[duplicateLetter]"], - }, - duplicateNumber: { - description: "If the multiple entries end up with the same key, then insert a number.", - callback: () => ["[duplicateNumber]"], - }, - }; - var MODIFIERS = { - required: { - description: "If data is missing, revert to existing key", - callback: (words2) => { - if (words2.length === 0) throw new MissingRequiredData(); - return words2; + rv = { + required: { + description: "If data is missing, revert to existing key", + callback: (r) => { + if (r.length === 0) throw new vn(); + return r; + }, }, - }, - lower: { - description: "Convert to lowercase", - callback: (words2) => words2.map((word) => word.toLocaleLowerCase()), - }, - upper: { - description: "Convert to uppercase", - callback: (words2) => words2.map((word) => word.toLocaleUpperCase()), - }, - capitalize: { - description: "Capitalize first letter of each word", - callback: capitalize, - }, - }; - var MissingRequiredData = class MissingRequiredData extends Error {}; - __name(MissingRequiredData, "MissingRequiredData"); - function generateKeys(ast, valueLookup, template) { - var _a2; - var template2 = template; - if (!template.includes("[duplicateLetter]") && !template.includes("[duplicateNumber]")) { - template2 = template + "[duplicateLetter]"; - } - var entriesByKey = /* @__PURE__ */ new Map(); + lower: { description: "Convert to lowercase", callback: (r) => r.map((e) => e.toLocaleLowerCase()) }, + upper: { description: "Convert to uppercase", callback: (r) => r.map((e) => e.toLocaleUpperCase()) }, + capitalize: { description: "Capitalize first letter of each word", callback: d0 }, + }, + vn = class vn extends Error {}; + h(vn, "MissingRequiredData"); + function f0(r, e, t) { + var o; + var i = t; + !t.includes("[duplicateLetter]") && !t.includes("[duplicateNumber]") && (i = t + "[duplicateLetter]"); + var n = new Map(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = ast.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var node = _step.value; - if (isEntryNode(node)) { - var entryValues = valueLookup.get(node.block); - if (!entryValues) continue; - var newKey = generateKey(entryValues, template2); - if (!newKey) continue; - var keyEntries = (_a2 = entriesByKey.get(newKey)) != null ? _a2 : []; - entriesByKey.set(newKey, [...keyEntries, node.block]); + for (var _iterator = r.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var u = _step.value; + if (An(u)) { + var l = e.get(u.block); + if (!l) continue; + var a = nv(l, i); + if (!a) continue; + var c = (o = n.get(a)) != null ? o : []; + n.set(a, [...c, u.block]); } } } catch (err) { @@ -7032,95 +5761,84 @@ var __generator = } } } - var keys = /* @__PURE__ */ new Map(); + var s = new Map(); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, - _iteratorError1 = undefined; + _iteratorError1 = undefined, + _iteratorNormalCompletion2 = true, + _didIteratorError2 = false, + _iteratorError2 = undefined; try { - for (var _iterator1 = entriesByKey[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + for (var _iterator1 = n[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true) { var _step_value = _slicedToArray(_step1.value, 2), - key = _step_value[0], - entries = _step_value[1]; - var _iteratorNormalCompletion2 = true, - _didIteratorError2 = false, - _iteratorError2 = undefined; + u1 = _step_value[0], + l1 = _step_value[1]; try { - for (var _iterator2 = entries.entries()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + for (var _iterator2 = l1.entries()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion1 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion1 = true) { var _step_value1 = _slicedToArray(_step2.value, 2), - i = _step_value1[0], - entry = _step_value1[1]; - var duplicateLetter = entries.length > 1 ? String.fromCharCode(97 + i) : ""; - var duplicateNumber = entries.length > 1 ? String(i + 1) : ""; - entry.key = key.replace(/\[duplicateLetter\]/g, duplicateLetter).replace(/\[duplicateNumber\]/g, duplicateNumber); + a1 = _step_value1[0], + c1 = _step_value1[1]; + var f = l1.length > 1 ? String.fromCharCode(97 + a1) : "", + d = l1.length > 1 ? String(a1 + 1) : ""; + c1.key = u1.replace(/\[duplicateLetter\]/g, f).replace(/\[duplicateNumber\]/g, d); } } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; + _didIteratorError1 = true; + _iteratorError1 = err; } finally { try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { + if (!_iteratorNormalCompletion1 && _iterator2.return != null) { _iterator2.return(); } } finally { - if (_didIteratorError2) { - throw _iteratorError2; + if (_didIteratorError1) { + throw _iteratorError1; } } } } } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; + _didIteratorError2 = true; + _iteratorError2 = err; } finally { try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + if (!_iteratorNormalCompletion2 && _iterator1.return != null) { _iterator1.return(); } } finally { - if (_didIteratorError1) { - throw _iteratorError1; + if (_didIteratorError2) { + throw _iteratorError2; } } } - return keys; + return s; } - __name(generateKeys, "generateKeys"); - function generateKey(valueLookup, template) { + h(f0, "generateKeys"); + function nv(r, e) { try { - var newKey = template.replace(/\[[^:\]]+(?::[^:\]]+)*\]/g, (m) => { - var _m_slice_split = _toArray(m.slice(1, -1).split(":")), - tokenKeyN = _m_slice_split[0], - modifierKeys = _m_slice_split.slice(1); - if (!tokenKeyN) { - throw new Error("Token parse error"); - } - var n; - var tokenKey = tokenKeyN.replace(/[0-9]+/g, (m2) => { - n = Number(m2); - return "N"; - }); - var token = SPECIAL_MARKERS[tokenKey]; - var key; - if (token) { - key = token.callback(valueLookup, n); - } else if (tokenKey === tokenKey.toLocaleUpperCase()) { - var value = valueLookup.get(tokenKey.toLocaleLowerCase()); - key = value ? words(value) : []; - } else { - throw new Error("Invalid citation key token ".concat(tokenKey)); - } + var _$t = e.replace(/\[[^:\]]+(?::[^:\]]+)*\]/g, (i) => { + var _i_slice_split = _toArray(i.slice(1, -1).split(":")), + n = _i_slice_split[0], + s = _i_slice_split.slice(1); + if (!n) throw new Error("Token parse error"); + var o, + u = n.replace(/[0-9]+/g, (c) => ((o = Number(c)), "N")), + l = iv[u], + a; + if (l) a = l.callback(r, o); + else if (u === u.toLocaleUpperCase()) { + var c = r.get(u.toLocaleLowerCase()); + a = c ? co(c) : []; + } else throw new Error("Invalid citation key token ".concat(u)); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = modifierKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var modifierKey = _step.value; - var modifier = MODIFIERS[modifierKey]; - if (modifier) { - key = modifier.callback(key); - } else { - throw new Error("Invalid modifier ".concat(modifierKey)); - } + for (var _iterator = s[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var c1 = _step.value; + var f = rv[c1]; + if (f) a = f.callback(a); + else throw new Error("Invalid modifier ".concat(c1)); } } catch (err) { _didIteratorError = true; @@ -7136,19 +5854,16 @@ var __generator = } } } - return key.join(""); + return a.join(""); }); - if (newKey === "") return; - return newKey; - } catch (e) { - if (e instanceof MissingRequiredData) { - return; - } - throw e; + return _$t === "" ? void 0 : _$t; + } catch (t) { + if (t instanceof vn) return; + throw t; } } - __name(generateKey, "generateKey"); - var functionWords = /* @__PURE__ */ new Set([ + h(nv, "generateKey"); + var sv = new Set([ "a", "about", "above", @@ -7201,721 +5916,371 @@ var __generator = "without", "yet", ]); - function nonFunctionWords(value) { - return words(value).filter((word) => !functionWords.has(word.toLocaleLowerCase())); + function c0(r) { + return co(r).filter((e) => !sv.has(e.toLocaleLowerCase())); } - __name(nonFunctionWords, "nonFunctionWords"); - function words(value) { - return value + h(c0, "nonFunctionWords"); + function co(r) { + return r .split( - /(?:(?![0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])[\s\S])+/ + /(?:[\0-\/:-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CB-\uA7CF\uA7D2\uA7D4\uA7DA-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80E-\uD810\uD812-\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87B-\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+/ ) - .filter((word) => word.length > 0); - } - __name(words, "words"); - function capitalize(words2) { - return words2.map((word) => word.slice(0, 1).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase()); - } - __name(capitalize, "capitalize"); - function title(entryValues) { - var _a2, _b; - return (_b = (_a2 = entryValues.get("title")) != null ? _a2 : entryValues.get("booktitle")) != null ? _b : ""; - } - __name(title, "title"); - // src/optionDefinitions.ts - var DEFAULT_MERGE_CHECK = ["doi", "citation", "abstract"]; - var DEFAULT_ALIGN = 14; - var DEFAULT_SPACE = 2; - var DEFAULT_WRAP = 80; - var DEFAULT_FIELD_SORT = ["title", "shorttitle", "author", "year", "month", "day", "journal", "booktitle", "location", "on", "publisher", "address", "series", "volume", "number", "pages", "doi", "isbn", "issn", "url", "urldate", "copyright", "category", "note", "metadata"]; - var DEFAULT_SORT = ["key"]; - var DEFAULT_KEY_TEMPLATE = "[auth:required:lower][year:required][veryshorttitle:lower][duplicateNumber]"; - var optionDefinitions = [ - { - key: "help", - cli: { - "--help": true, - "-h": true, - }, - title: "Help", - description: ["Show help"], - type: "boolean", - }, - { - key: "omit", - cli: { - "--omit": (args) => { - if (args.length === 0) { - console.error("Expected a omit list"); - process.exit(1); - } - return args; + .filter((e) => e.length > 0); + } + h(co, "words"); + function d0(r) { + return r.map((e) => e.slice(0, 1).toLocaleUpperCase() + e.slice(1).toLocaleLowerCase()); + } + h(d0, "capitalize"); + function ho(r) { + var e, t; + return (t = (e = r.get("title")) != null ? e : r.get("booktitle")) != null ? t : ""; + } + h(ho, "title"); + var p0 = ["doi", "citation", "abstract"]; + var fo = ["title", "shorttitle", "author", "year", "month", "day", "journal", "booktitle", "location", "on", "publisher", "address", "series", "volume", "number", "pages", "doi", "isbn", "issn", "url", "urldate", "copyright", "category", "note", "metadata"], + _a = ["key"], + m0 = "[auth:required:lower][year:required][veryshorttitle:lower][duplicateNumber]", + xr = [ + { key: "help", cli: { "--help": !0, "-h": !0 }, title: "Help", description: ["Show help"], type: "boolean" }, + { key: "omit", cli: { "--omit": (r) => (r.length === 0 && (console.error("Expected a omit list"), process.exit(1)), r) }, toCLI: (r) => (Array.isArray(r) && r.length > 0 ? "--omit=".concat(r.join(",")) : void 0), title: "Remove fields", description: ["Remove specified fields from bibliography entries."], examples: ["--omit=id,name"], type: "string[]", defaultValue: [] }, + { key: "curly", cli: { "--curly": !0, "--no-curly": !1 }, toCLI: (r) => (r ? "--curly" : void 0), title: "Enclose values in braces", description: ['Enclose all property values in braces. Quoted values will be converted to braces. For example, "Journal of Tea" will become {Journal of Tea}.'], type: "boolean", defaultValue: !1 }, + { key: "numeric", cli: { "--numeric": !0, "--no-numeric": !1 }, toCLI: (r) => (r ? "--numeric" : void 0), title: "Use numeric values where possible", description: ["Strip quotes and braces from numeric/month values. For example, {1998} will become 1998."], type: "boolean", defaultValue: !1 }, + { + key: "space", + cli: { "--space": (r) => (r.length > 0 ? Number(r[0]) : !0) }, + toCLI: (r, e) => { + if (!e.tab) { + if (typeof r == "number" && r !== 2) return "--space=".concat(r); + if (r && r !== 2) return "--space"; + } }, + title: "Indent with spaces", + description: ["Indent all fields with the specified number of spaces. Ignored if tab is set."], + examples: ["--space=2 (default)", "--space=4"], + type: "boolean | number", + convertBoolean: { true: 2, false: void 0 }, + defaultValue: 2, + }, + { key: "tab", cli: { "--tab": !0, "--no-tab": !1 }, toCLI: (r) => (r ? "--tab" : void 0), title: "Indent with tabs", description: ["Indent all fields with a tab."], type: "boolean", defaultValue: !1 }, + { + key: "align", + cli: { "--align": (r) => Number(r[0]), "--no-align": !1 }, + toCLI: (r) => { + if (r === !1 || r === 1 || r === 0) return "--no-align"; + if (typeof r == "number" && r !== 14) return "--align=".concat(r); + }, + title: "Align values", + description: ["Insert whitespace between fields and values so that values are visually aligned."], + examples: ["--align=14 (default)"], + type: "boolean | number", + convertBoolean: { true: 14, false: 1 }, + defaultValue: 14, + }, + { key: "blankLines", cli: { "--blank-lines": !0, "--no-blank-lines": !1 }, toCLI: (r) => (r ? "--blank-lines" : void 0), title: "Insert blank lines", description: ["Insert an empty line between each entry."], type: "boolean" }, + { + key: "sort", + cli: { "--sort": (r) => (r.length > 0 ? r : !0), "--no-sort": !1 }, + toCLI: (r) => { + if (Array.isArray(r) && r.length > 0) return "--sort=".concat(r.join(",")); + if (r === !0) return "--sort"; + }, + title: "Sort bibliography entries", + description: ["Sort entries by specified fields. For descending order, prefix the field with a dash (-)."], + examples: ["--sort (sort by id)", "--sort=-year,name (sort year descending then name ascending)", "--sort=name,year"], + type: "boolean | string[]", + convertBoolean: { true: _a, false: void 0 }, }, - toCLI: (val) => (Array.isArray(val) && val.length > 0 ? "--omit=".concat(val.join(",")) : void 0), - title: "Remove fields", - description: ["Remove specified fields from bibliography entries."], - examples: ["--omit=id,name"], - type: "string[]", - defaultValue: [], - }, - { - key: "curly", - cli: { - "--curly": true, - "--no-curly": false, - }, - toCLI: (val) => (val ? "--curly" : void 0), - title: "Enclose values in braces", - description: ['Enclose all property values in braces. Quoted values will be converted to braces. For example, "Journal of Tea" will become {Journal of Tea}.'], - type: "boolean", - defaultValue: false, - }, - { - key: "numeric", - cli: { - "--numeric": true, - "--no-numeric": false, - }, - toCLI: (val) => (val ? "--numeric" : void 0), - title: "Use numeric values where possible", - description: ["Strip quotes and braces from numeric/month values. For example, {1998} will become 1998."], - type: "boolean", - defaultValue: false, - }, - { - key: "space", - cli: { - "--space": (args) => (args.length > 0 ? Number(args[0]) : true), - }, - toCLI: (val, opt) => { - if (opt.tab) return void 0; - if (typeof val === "number" && val !== DEFAULT_SPACE) return "--space=".concat(val); - if (val && val !== DEFAULT_SPACE) return "--space"; - return void 0; - }, - title: "Indent with spaces", - description: ["Indent all fields with the specified number of spaces. Ignored if tab is set."], - examples: ["--space=2 (default)", "--space=4"], - type: "boolean | number", - convertBoolean: { - true: DEFAULT_SPACE, - false: void 0, - }, - defaultValue: DEFAULT_SPACE, - }, - { - key: "tab", - cli: { - "--tab": true, - "--no-tab": false, - }, - toCLI: (val) => (val ? "--tab" : void 0), - title: "Indent with tabs", - description: ["Indent all fields with a tab."], - type: "boolean", - defaultValue: false, - }, - { - key: "align", - cli: { - "--align": (args) => Number(args[0]), - "--no-align": false, - }, - toCLI: (val) => { - if (val === false || val === 1 || val === 0) return "--no-align"; - if (typeof val === "number" && val !== DEFAULT_ALIGN) return "--align=".concat(val); - return void 0; - }, - title: "Align values", - description: ["Insert whitespace between fields and values so that values are visually aligned."], - examples: ["--align=14 (default)"], - type: "boolean | number", - convertBoolean: { - true: DEFAULT_ALIGN, - false: 1, - }, - defaultValue: DEFAULT_ALIGN, - }, - { - key: "blankLines", - cli: { - "--blank-lines": true, - "--no-blank-lines": false, - }, - toCLI: (val) => (val ? "--blank-lines" : void 0), - title: "Insert blank lines", - description: ["Insert an empty line between each entry."], - type: "boolean", - }, - { - key: "sort", - cli: { - "--sort": (args) => (args.length > 0 ? args : true), - "--no-sort": false, - }, - toCLI: (val) => { - if (Array.isArray(val) && val.length > 0) return "--sort=".concat(val.join(",")); - if (val === true) return "--sort"; - return void 0; - }, - title: "Sort bibliography entries", - description: ["Sort entries by specified fields. For descending order, prefix the field with a dash (-)."], - examples: ["--sort (sort by id)", "--sort=-year,name (sort year descending then name ascending)", "--sort=name,year"], - type: "boolean | string[]", - convertBoolean: { - true: DEFAULT_SORT, - false: void 0, - }, - }, - { - key: "duplicates", - cli: { - "--duplicates": (args) => { - if (args.length === 0) return true; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = args[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var i = _step.value; - if (i !== "doi" && i !== "key" && i !== "abstract" && i !== "citation") { - console.error('Invalid key for merge option: "'.concat(i, '"')); - process.exit(1); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + { + key: "duplicates", + cli: { + "--duplicates": (r) => { + if (r.length === 0) return !0; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var e = _step.value; + e !== "doi" && e !== "key" && e !== "abstract" && e !== "citation" && (console.error('Invalid key for merge option: "'.concat(e, '"')), process.exit(1)); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - return args; + return r; + }, }, - }, - toCLI: (val) => { - if (Array.isArray(val) && val.length > 0) return "--duplicates=".concat(val.join(",")); - if (val === true) return "--duplicates"; - return void 0; - }, - title: "Check for duplicates", - description: ["Warn if duplicates are found, which are entries where DOI, abstract, or author and title are the same."], - examples: ["--duplicates doi (same DOIs)", "--duplicates key (same IDs)", "--duplicates abstract (similar abstracts)", "--duplicates citation (similar author and titles)", "--duplicates doi, key (identical DOI or keys)", "--duplicates (same DOI, key, abstract, or citation)"], - type: "boolean | ('doi' | 'key' | 'abstract' | 'citation')[]", - convertBoolean: { - true: DEFAULT_MERGE_CHECK, - false: void 0, - }, - defaultValue: (options) => (options.merge ? DEFAULT_MERGE_CHECK : void 0), - }, - { - key: "merge", - cli: { - "--merge": (args) => { - if (args.length === 0) return true; - if (args[0] !== "first" && args[0] !== "last" && args[0] !== "combine" && args[0] !== "overwrite") { - console.error('Invalid merge strategy: "'.concat(args[0], '"')); - process.exit(1); - } - return args[0]; + toCLI: (r) => { + if (Array.isArray(r) && r.length > 0) return "--duplicates=".concat(r.join(",")); + if (r === !0) return "--duplicates"; }, - "--no-merge": false, - }, - toCLI: (val) => { - if (typeof val === "string") return "--merge=".concat(val); - if (val) return "--merge"; - return void 0; - }, - title: "Merge duplicate entries", - description: [ - "Merge duplicates entries. Use the duplicates option to determine how duplicates are identified. There are different ways to merge:", - "- first: only keep the original entry", - "- last: only keep the last found duplicate", - "- combine: keep original entry and merge in fields of duplicates if they do not already exist", - "- overwrite: keep original entry and merge in fields of duplicates, overwriting existing fields if they exist", - ], - type: "boolean | 'first' | 'last' | 'combine' | 'overwrite'", - convertBoolean: { - true: "combine", - false: void 0, - }, - }, - { - key: "stripEnclosingBraces", - cli: { - "--strip-enclosing-braces": true, - }, - toCLI: (val) => (val ? "--strip-enclosing-braces" : void 0), - title: "Strip double-braced values", - description: ["Where an entire value is enclosed in double braces, remove the extra braces. For example, {{Journal of Tea}} will become {Journal of Tea}."], - type: "boolean", - defaultValue: false, - }, - { - key: "dropAllCaps", - cli: { - "--drop-all-caps": true, - }, - toCLI: (val) => (val ? "--drop-all-caps" : void 0), - title: "Drop all caps", - description: ["Where values are all caps, make them title case. For example, {JOURNAL OF TEA} will become {Journal of Tea}. Roman numerals will be left unchanged."], - type: "boolean", - defaultValue: false, - }, - { - key: "escape", - cli: { - "--escape": true, - "--no-escape": false, - }, - toCLI: (val) => (val === false ? "--no-escape" : void 0), - title: "Escape special characters", - description: ["Escape special characters, such as umlaut. This ensures correct typesetting with latex. Enabled by default."], - type: "boolean", - defaultValue: true, - }, - { - key: "sortFields", - cli: { - "--sort-fields": (args) => (args.length > 0 ? args : true), - }, - toCLI: (val) => { - if (Array.isArray(val) && val.length > 0) { - if (JSON.stringify(val) === JSON.stringify(DEFAULT_FIELD_SORT)) { - return "--sort_fields"; - } - return "--sort-fields=".concat(val.join(",")); - } - if (val === true) return "--sort-fields"; - return void 0; - }, - title: "Sort fields", - description: ["Sort the fields within entries.", "If no fields are specified fields will be sorted by: title, shorttitle, author, year, month, day, journal, booktitle, location, on, publisher, address, series, volume, number, pages, doi, isbn, issn, url, urldate, copyright, category, note, metadata"], - examples: ["--sort-fields=name,author"], - type: "boolean | string[]", - convertBoolean: { - true: DEFAULT_FIELD_SORT, - false: void 0, - }, - defaultValue: void 0, - }, - { - key: "sortProperties", - cli: { - "--sort-properties": (args) => (args.length > 0 ? args : true), - }, - title: "Sort properties", - description: ["Alias of sort fields (legacy)"], - type: "boolean | string[]", - deprecated: true, - }, - { - key: "stripComments", - cli: { - "--strip-comments": true, - "--no-strip-comments": false, - }, - toCLI: (val) => (val ? "--strip-comments" : void 0), - title: "Remove comments", - description: ["Remove all comments from the bibtex source."], - type: "boolean", - defaultValue: false, - }, - { - key: "trailingCommas", - cli: { - "--trailing-commas": true, - "--no-trailing-commas": true, - }, - toCLI: (val) => (val ? "--trailing-commas" : void 0), - title: "Trailing commas", - description: ["End the last key value pair in each entry with a comma."], - type: "boolean", - defaultValue: false, - }, - { - key: "encodeUrls", - cli: { - "--encode-urls": true, - "--no-encode-urls": true, - }, - toCLI: (val) => (val ? "--encode-urls" : void 0), - title: "Encode URLs", - description: ["Replace invalid URL characters with percent encoded values."], - type: "boolean", - defaultValue: false, - }, - { - key: "tidyComments", - cli: { - "--tidy-comments": true, - "--no-tidy-comments": false, - }, - toCLI: (val) => (val === false ? "--no-tidy-comments" : void 0), - title: "Tidy comments", - description: ["Remove whitespace surrounding comments."], - type: "boolean", - defaultValue: true, - }, - { - key: "removeEmptyFields", - cli: { - "--remove-empty-fields": true, - "--no-remove-empty-fields": false, - }, - toCLI: (val) => (val ? "--remove-empty-fields" : void 0), - title: "Remove empty fields", - description: ["Remove any fields that have empty values."], - type: "boolean", - defaultValue: false, - }, - { - key: "removeDuplicateFields", - cli: { - "--remove-dupe-fields": true, - "--no-remove-dupe-fields": false, - }, - toCLI: (val) => (val === false ? "--no-remove-dupe-fields" : void 0), - title: "Remove duplicate fields", - description: ["Only allow one of each field in each entry. Enabled by default."], - type: "boolean", - defaultValue: true, - }, - { - key: "generateKeys", - cli: { - "--generate-keys": (args) => (args.length > 0 ? args : true), - }, - toCLI: (val) => { - if (val === true || val === DEFAULT_KEY_TEMPLATE) return "--generate-keys"; - if (typeof val === "string") return '--generate-keys="'.concat(val.replace(/"/g, '\\"'), '"'); - return void 0; - }, - title: "Generate citation keys [Experimental]", - description: ["For all entries replace the key with a new key of the form . A JabRef citation pattern can be provided. This is an experimental option that may change without warning."], - type: "boolean | string", - convertBoolean: { - true: DEFAULT_KEY_TEMPLATE, - false: void 0, - }, - defaultValue: void 0, - }, - { - key: "maxAuthors", - cli: { - "--max-authors": (args) => Number(args[0]), - }, - toCLI: (val) => (val ? "--max-authors=".concat(val) : void 0), - title: "Maximum authors", - description: ['Truncate authors if above a given number into "and others".'], - type: "number", - }, - { - key: "lowercase", - cli: { - "--no-lowercase": false, - }, - toCLI: (val) => (val === false ? "--no-lowercase" : void 0), - title: "Lowercase fields", - description: ["Lowercase field names and entry type. Enabled by default."], - type: "boolean", - defaultValue: true, - }, - { - key: "enclosingBraces", - cli: { - "--enclosing-braces": (args) => (args.length > 0 ? args : true), - }, - toCLI: (val) => { - if (Array.isArray(val) && val.length > 0) return "--enclosing-braces=".concat(val.join(",")); - if (val === true) return "--enclosing-braces"; - return void 0; - }, - title: "Enclose values in double braces", - description: ["Enclose the given fields in double braces, such that case is preserved during BibTeX compilation."], - examples: ["--enclosing-braces=title,journal (output title and journal fields will be of the form {{This is a title}})", "--enclosing-braces (equivalent to ---enclosing-braces=title)"], - type: "boolean | string[]", - convertBoolean: { - true: ["title"], - false: void 0, - }, - }, - { - key: "removeBraces", - cli: { - "--remove-braces": (args) => (args.length > 0 ? args : true), - }, - toCLI: (val) => { - if (Array.isArray(val) && val.length > 0) return "--remove-braces=".concat(val.join(",")); - if (val === true) return "--remove-braces"; - return void 0; - }, - title: "Remove braces", - description: ["Remove any curly braces within the value, unless they are part of a command."], - examples: ["--remove-braces=title,journal", "--remove-braces (equivalent to ---remove-braces=title)"], - type: "boolean | string[]", - convertBoolean: { - true: ["title"], - false: void 0, - }, - }, - { - key: "wrap", - cli: { - "--wrap": (args) => (args.length > 0 ? Number(args[0]) : true), - "--no-wrap": false, - }, - toCLI: (val) => (val ? "--wrap=".concat(val) : void 0), - title: "Wrap values", - description: ["Wrap long values at the given column"], - examples: ["--wrap (80 by default)", "--wrap=82"], - type: "boolean | number", - convertBoolean: { - true: DEFAULT_WRAP, - false: void 0, - }, - }, - { - key: "version", - cli: { - "--version": true, - "-v": true, + title: "Check for duplicates", + description: ["Warn if duplicates are found, which are entries where DOI, abstract, or author and title are the same."], + examples: ["--duplicates doi (same DOIs)", "--duplicates key (same IDs)", "--duplicates abstract (similar abstracts)", "--duplicates citation (similar author and titles)", "--duplicates doi, key (identical DOI or keys)", "--duplicates (same DOI, key, abstract, or citation)"], + type: "boolean | ('doi' | 'key' | 'abstract' | 'citation')[]", + convertBoolean: { true: p0, false: void 0 }, + defaultValue: (r) => (r.merge ? p0 : void 0), }, - title: "Version", - description: ["Show bibtex-tidy version."], - type: "boolean", - }, - { - key: "quiet", - cli: { - "--quiet": true, + { + key: "merge", + cli: { "--merge": (r) => (r.length === 0 ? !0 : (r[0] !== "first" && r[0] !== "last" && r[0] !== "combine" && r[0] !== "overwrite" && (console.error('Invalid merge strategy: "'.concat(r[0], '"')), process.exit(1)), r[0])), "--no-merge": !1 }, + toCLI: (r) => { + if (typeof r == "string") return "--merge=".concat(r); + if (r) return "--merge"; + }, + title: "Merge duplicate entries", + description: [ + "Merge duplicates entries. Use the duplicates option to determine how duplicates are identified. There are different ways to merge:", + "- first: only keep the original entry", + "- last: only keep the last found duplicate", + "- combine: keep original entry and merge in fields of duplicates if they do not already exist", + "- overwrite: keep original entry and merge in fields of duplicates, overwriting existing fields if they exist", + ], + type: "boolean | 'first' | 'last' | 'combine' | 'overwrite'", + convertBoolean: { true: "combine", false: void 0 }, }, - title: "Quiet", - description: ["Suppress logs and warnings."], - type: "boolean", - }, - { - key: "backup", - cli: { - "--backup": true, - "--no-backup": false, + { key: "stripEnclosingBraces", cli: { "--strip-enclosing-braces": !0 }, toCLI: (r) => (r ? "--strip-enclosing-braces" : void 0), title: "Strip double-braced values", description: ["Where an entire value is enclosed in double braces, remove the extra braces. For example, {{Journal of Tea}} will become {Journal of Tea}."], type: "boolean", defaultValue: !1 }, + { key: "dropAllCaps", cli: { "--drop-all-caps": !0 }, toCLI: (r) => (r ? "--drop-all-caps" : void 0), title: "Drop all caps", description: ["Where values are all caps, make them title case. For example, {JOURNAL OF TEA} will become {Journal of Tea}. Roman numerals will be left unchanged."], type: "boolean", defaultValue: !1 }, + { key: "escape", cli: { "--escape": !0, "--no-escape": !1 }, toCLI: (r) => (r === !1 ? "--no-escape" : void 0), title: "Escape special characters", description: ["Escape special characters, such as umlaut. This ensures correct typesetting with latex. Enabled by default."], type: "boolean", defaultValue: !0 }, + { + key: "sortFields", + cli: { "--sort-fields": (r) => (r.length > 0 ? r : !0) }, + toCLI: (r) => { + if (Array.isArray(r) && r.length > 0) return JSON.stringify(r) === JSON.stringify(fo) ? "--sort_fields" : "--sort-fields=".concat(r.join(",")); + if (r === !0) return "--sort-fields"; + }, + title: "Sort fields", + description: ["Sort the fields within entries.", "If no fields are specified fields will be sorted by: title, shorttitle, author, year, month, day, journal, booktitle, location, on, publisher, address, series, volume, number, pages, doi, isbn, issn, url, urldate, copyright, category, note, metadata"], + examples: ["--sort-fields=name,author"], + type: "boolean | string[]", + convertBoolean: { true: fo, false: void 0 }, + defaultValue: void 0, + }, + { key: "sortProperties", cli: { "--sort-properties": (r) => (r.length > 0 ? r : !0) }, title: "Sort properties", description: ["Alias of sort fields (legacy)"], type: "boolean | string[]", deprecated: !0 }, + { key: "stripComments", cli: { "--strip-comments": !0, "--no-strip-comments": !1 }, toCLI: (r) => (r ? "--strip-comments" : void 0), title: "Remove comments", description: ["Remove all comments from the bibtex source."], type: "boolean", defaultValue: !1 }, + { key: "trailingCommas", cli: { "--trailing-commas": !0, "--no-trailing-commas": !0 }, toCLI: (r) => (r ? "--trailing-commas" : void 0), title: "Trailing commas", description: ["End the last key value pair in each entry with a comma."], type: "boolean", defaultValue: !1 }, + { key: "encodeUrls", cli: { "--encode-urls": !0, "--no-encode-urls": !0 }, toCLI: (r) => (r ? "--encode-urls" : void 0), title: "Encode URLs", description: ["Replace invalid URL characters with percent encoded values."], type: "boolean", defaultValue: !1 }, + { key: "tidyComments", cli: { "--tidy-comments": !0, "--no-tidy-comments": !1 }, toCLI: (r) => (r === !1 ? "--no-tidy-comments" : void 0), title: "Tidy comments", description: ["Remove whitespace surrounding comments."], type: "boolean", defaultValue: !0 }, + { key: "removeEmptyFields", cli: { "--remove-empty-fields": !0, "--no-remove-empty-fields": !1 }, toCLI: (r) => (r ? "--remove-empty-fields" : void 0), title: "Remove empty fields", description: ["Remove any fields that have empty values."], type: "boolean", defaultValue: !1 }, + { key: "removeDuplicateFields", cli: { "--remove-dupe-fields": !0, "--no-remove-dupe-fields": !1 }, toCLI: (r) => (r === !1 ? "--no-remove-dupe-fields" : void 0), title: "Remove duplicate fields", description: ["Only allow one of each field in each entry. Enabled by default."], type: "boolean", defaultValue: !0 }, + { + key: "generateKeys", + cli: { "--generate-keys": (r) => (r.length > 0 ? r : !0) }, + toCLI: (r) => { + if (r === !0 || r === m0) return "--generate-keys"; + if (typeof r == "string") return '--generate-keys="'.concat(r.replace(/"/g, '\\"'), '"'); + }, + title: "Generate citation keys [Experimental]", + description: ["For all entries replace the key with a new key of the form <author><year><title>. A JabRef citation pattern can be provided. This is an experimental option that may change without warning."], + type: "boolean | string", + convertBoolean: { true: m0, false: void 0 }, + defaultValue: void 0, + }, + { key: "maxAuthors", cli: { "--max-authors": (r) => Number(r[0]) }, toCLI: (r) => (r ? "--max-authors=".concat(r) : void 0), title: "Maximum authors", description: ['Truncate authors if above a given number into "and others".'], type: "number" }, + { key: "lowercase", cli: { "--no-lowercase": !1 }, toCLI: (r) => (r === !1 ? "--no-lowercase" : void 0), title: "Lowercase fields", description: ["Lowercase field names and entry type. Enabled by default."], type: "boolean", defaultValue: !0 }, + { + key: "enclosingBraces", + cli: { "--enclosing-braces": (r) => (r.length > 0 ? r : !0) }, + toCLI: (r) => { + if (Array.isArray(r) && r.length > 0) return "--enclosing-braces=".concat(r.join(",")); + if (r === !0) return "--enclosing-braces"; + }, + title: "Enclose values in double braces", + description: ["Enclose the given fields in double braces, such that case is preserved during BibTeX compilation."], + examples: ["--enclosing-braces=title,journal (output title and journal fields will be of the form {{This is a title}})", "--enclosing-braces (equivalent to ---enclosing-braces=title)"], + type: "boolean | string[]", + convertBoolean: { true: ["title"], false: void 0 }, }, - title: "Backup", - description: ["Make a backup <filename>.original. Enabled by default."], - type: "boolean", - defaultValue: true, - }, - ]; - var optionDefinitionByKey = Object.fromEntries(optionDefinitions.map((opt) => [opt.key, opt])); - // src/optionUtils.ts - function normalizeOptions(options) { + { + key: "removeBraces", + cli: { "--remove-braces": (r) => (r.length > 0 ? r : !0) }, + toCLI: (r) => { + if (Array.isArray(r) && r.length > 0) return "--remove-braces=".concat(r.join(",")); + if (r === !0) return "--remove-braces"; + }, + title: "Remove braces", + description: ["Remove any curly braces within the value, unless they are part of a command."], + examples: ["--remove-braces=title,journal", "--remove-braces (equivalent to ---remove-braces=title)"], + type: "boolean | string[]", + convertBoolean: { true: ["title"], false: void 0 }, + }, + { key: "wrap", cli: { "--wrap": (r) => (r.length > 0 ? Number(r[0]) : !0), "--no-wrap": !1 }, toCLI: (r) => (r ? "--wrap=".concat(r) : void 0), title: "Wrap values", description: ["Wrap long values at the given column"], examples: ["--wrap (80 by default)", "--wrap=82"], type: "boolean | number", convertBoolean: { true: 80, false: void 0 } }, + { key: "version", cli: { "--version": !0, "-v": !0 }, title: "Version", description: ["Show bibtex-tidy version."], type: "boolean" }, + { key: "quiet", cli: { "--quiet": !0 }, title: "Quiet", description: ["Suppress logs and warnings."], type: "boolean" }, + { key: "backup", cli: { "--backup": !0, "--no-backup": !1 }, title: "Backup", description: ["Make a backup <filename>.original. Enabled by default."], type: "boolean", defaultValue: !0 }, + ], + g0 = Object.fromEntries(xr.map((r) => [r.key, r])); + function kn(r) { return Object.fromEntries( - optionDefinitions.map((def) => { - var key = def.key; - var value = options[key]; - if (def.convertBoolean && typeof value === "boolean") { - return [key, value ? def.convertBoolean.true : def.convertBoolean.false]; - } - if (typeof value === "undefined" && def.defaultValue !== void 0) { - if (typeof def.defaultValue === "function") { - return [key, def.defaultValue(options)]; - } - return [key, def.defaultValue]; - } - return [key, value]; + xr.map((e) => { + var t = e.key, + i = r[t]; + return e.convertBoolean && typeof i == "boolean" ? [t, i ? e.convertBoolean.true : e.convertBoolean.false] : typeof i == "undefined" && e.defaultValue !== void 0 ? (typeof e.defaultValue == "function" ? [t, e.defaultValue(r)] : [t, e.defaultValue]) : [t, i]; }) ); } - __name(normalizeOptions, "normalizeOptions"); - // src/index.ts - function tidy(input) { - var options_ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var options = normalizeOptions(options_); - input = convertCRLF(input); - var ast = generateAST(input); - var warnings = getEntries(ast) - .filter((entry) => !entry.key) - .map((entry) => ({ - code: "MISSING_KEY", - message: "".concat(entry.parent.command, " entry does not have a citation key."), - })); - var valueLookup = generateValueLookup(ast, options); - var duplicates = checkForDuplicates(ast, valueLookup, options.duplicates, options.merge); - warnings.push(...duplicates.warnings); - ast.children = ast.children.filter((child) => !isEntryNode(child) || !duplicates.entries.has(child.block)); - if (options.sort) sortEntries(ast, valueLookup, options.sort); - if (options.sortFields) sortEntryFields(ast, options.sortFields); - var newKeys = options.generateKeys ? generateKeys(ast, valueLookup, options.generateKeys) : void 0; - var bibtex = formatBibtex(ast, options, newKeys); - return { - bibtex, - warnings, - count: getEntries(ast).length, - }; - } - __name(tidy, "tidy"); - function getEntries(ast) { - return ast.children.filter(isEntryNode).map((node) => node.block); - } - __name(getEntries, "getEntries"); - function generateValueLookup(ast, options) { + h(kn, "normalizeOptions"); + function D0(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var t = kn(e); + r = Zm(r); + var i = Km(r), + n = Hi(i) + .filter((a) => !a.key) + .map((a) => ({ code: "MISSING_KEY", message: "".concat(a.parent.command, " entry does not have a citation key.") })), + s = ov(i, t), + o = o0(i, s, t.duplicates, t.merge); + n.push(...o.warnings), (i.children = i.children.filter((a) => !An(a) || !o.entries.has(a.block))), t.sort && u0(i, s, t.sort), t.sortFields && l0(i, t.sortFields); + var u = t.generateKeys ? f0(i, s, t.generateKeys) : void 0; + return { bibtex: h0(i, t, u), warnings: n, count: Hi(i).length }; + } + h(D0, "tidy"); + function Hi(r) { + return r.children.filter(An).map((e) => e.block); + } + h(Hi, "getEntries"); + function ov(r, e) { return new Map( - getEntries(ast).map((entry) => [ - entry, + Hi(r).map((t) => [ + t, new Map( - entry.fields.map((field) => { - var _a2; - return [field.name.toLocaleLowerCase(), (_a2 = formatValue(field, options)) != null ? _a2 : ""]; + t.fields.map((i) => { + var n; + return [i.name.toLocaleLowerCase(), (n = Ba(i, e)) != null ? n : ""]; }) ), ]) ); } - __name(generateValueLookup, "generateValueLookup"); - // node_modules/@codemirror/state/dist/index.js - var Text = class Text1 { - lineAt(pos) { - if (pos < 0 || pos > this.length) throw new RangeError("Invalid position ".concat(pos, " in document of length ").concat(this.length)); - return this.lineInner(pos, false, 1, 0); - } - line(n) { - if (n < 1 || n > this.lines) throw new RangeError("Invalid line number ".concat(n, " in ").concat(this.lines, "-line document")); - return this.lineInner(n, true, 1, 0); - } - replace(from, to, text2) { - var parts = []; - this.decompose(0, from, parts, 2); - if (text2.length) text2.decompose(0, text2.length, parts, 1 | 2); - this.decompose(to, this.length, parts, 1); - return TextNode3.from(parts, this.length - (to - from) + text2.length); - } - append(other) { - return this.replace(this.length, this.length, other); - } - slice(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length; - var parts = []; - this.decompose(from, to, parts, 0); - return TextNode3.from(parts, to - from); - } - eq(other) { - if (other == this) return true; - if (other.length != this.length || other.lines != this.lines) return false; - var start = this.scanIdentical(other, 1), - end = this.length - this.scanIdentical(other, -1); - var a = new RawTextCursor(this), - b = new RawTextCursor(other); - for (var skip = start, pos = start; ; ) { - a.next(skip); - b.next(skip); - skip = 0; - if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value) return false; - pos += a.value.length; - if (a.done || pos >= end) return true; + h(ov, "generateValueLookup"); + var ce = class ce1 { + lineAt(e) { + if (e < 0 || e > this.length) throw new RangeError("Invalid position ".concat(e, " in document of length ").concat(this.length)); + return this.lineInner(e, !1, 1, 0); + } + line(e) { + if (e < 1 || e > this.lines) throw new RangeError("Invalid line number ".concat(e, " in ").concat(this.lines, "-line document")); + return this.lineInner(e, !0, 1, 0); + } + replace(e, t, i) { + var n = []; + return this.decompose(0, e, n, 2), i.length && i.decompose(0, i.length, n, 3), this.decompose(t, this.length, n, 1), ot.from(n, this.length - (t - e) + i.length); + } + append(e) { + return this.replace(this.length, this.length, e); + } + slice(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length; + var i = []; + return this.decompose(e, t, i, 0), ot.from(i, t - e); + } + eq(e) { + if (e == this) return !0; + if (e.length != this.length || e.lines != this.lines) return !1; + var t = this.scanIdentical(e, 1), + i = this.length - this.scanIdentical(e, -1), + n = new Ei(this), + s = new Ei(e); + for (var o = t, u = t; ; ) { + if ((n.next(o), s.next(o), (o = 0), n.lineBreak != s.lineBreak || n.done != s.done || n.value != s.value)) return !1; + if (((u += n.value.length), n.done || u >= i)) return !0; } } iter() { - var dir = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1; - return new RawTextCursor(this, dir); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1; + return new Ei(this, e); } - iterRange(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length; - return new PartialTextCursor(this, from, to); + iterRange(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length; + return new xn(this, e, t); } - iterLines(from, to) { - var inner; - if (from == null) { - inner = this.iter(); - } else { - if (to == null) to = this.lines + 1; - var start = this.line(from).from; - inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to)); + iterLines(e, t) { + var i; + if (e == null) i = this.iter(); + else { + t == null && (t = this.lines + 1); + var n = this.line(e).from; + i = this.iterRange(n, Math.max(n, t == this.lines + 1 ? this.length : t <= 1 ? 0 : this.line(t - 1).to)); } - return new LineCursor(inner); + return new Sn(i); } toString() { return this.sliceString(0); } toJSON() { - var lines = []; - this.flatten(lines); - return lines; + var e = []; + return this.flatten(e), e; } - static of(text2) { - if (text2.length == 0) throw new RangeError("A document must have at least one line"); - if (text2.length == 1 && !text2[0]) return Text.empty; - return text2.length <= 32 ? new TextLeaf(text2) : TextNode3.from(TextLeaf.split(text2, [])); + static of(e) { + if (e.length == 0) throw new RangeError("A document must have at least one line"); + return e.length == 1 && !e[0] ? ce.empty : e.length <= 32 ? new ve(e) : ot.from(ve.split(e, [])); } constructor() {} }; - __name(Text, "Text"); - var TextLeaf = class TextLeaf1 extends Text { + h(ce, "Text"); + var ve = class ve1 extends ce { get lines() { return this.text.length; } get children() { return null; } - lineInner(target, isLine, line, offset) { - for (var i = 0; ; i++) { - var string2 = this.text[i], - end = offset + string2.length; - if ((isLine ? line : end) >= target) return new Line(offset, end, line, string2); - offset = end + 1; - line++; - } - } - decompose(from, to, target, open) { - var text2 = from <= 0 && to >= this.length ? this : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from)); - if (open & 1) { - var prev = target.pop(); - var joined = appendText(text2.text, prev.text.slice(), 0, text2.length); - if (joined.length <= 32) { - target.push(new TextLeaf(joined, prev.length + text2.length)); - } else { - var mid = joined.length >> 1; - target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid))); - } - } else { - target.push(text2); - } - } - replace(from, to, text2) { - if (!(text2 instanceof TextLeaf)) return super.replace(from, to, text2); - var lines = appendText(this.text, appendText(text2.text, sliceText(this.text, 0, from)), to); - var newLen = this.length + text2.length - (to - from); - if (lines.length <= 32) return new TextLeaf(lines, newLen); - return TextNode3.from(TextLeaf.split(lines, []), newLen); - } - sliceString(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length, - lineSep = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "\n"; - var result = ""; - for (var pos = 0, i = 0; pos <= to && i < this.text.length; i++) { - var line = this.text[i], - end = pos + line.length; - if (pos > from && i) result += lineSep; - if (from < end && to > pos) result += line.slice(Math.max(0, from - pos), to - pos); - pos = end + 1; - } - return result; - } - flatten(target) { + lineInner(e, t, i, n) { + for (var s = 0; ; s++) { + var o = this.text[s], + u = n + o.length; + if ((t ? i : u) >= e) return new Do(n, u, i, o); + (n = u + 1), i++; + } + } + decompose(e, t, i, n) { + var s = e <= 0 && t >= this.length ? this : new ve(b0(this.text, e, t), Math.min(t, this.length) - Math.max(0, e)); + if (n & 1) { + var o = i.pop(), + u = go(s.text, o.text.slice(), 0, s.length); + if (u.length <= 32) i.push(new ve(u, o.length + s.length)); + else { + var l = u.length >> 1; + i.push(new ve(u.slice(0, l)), new ve(u.slice(l))); + } + } else i.push(s); + } + replace(e, t, i) { + if (!(i instanceof ve)) return super.replace(e, t, i); + var n = go(this.text, go(i.text, b0(this.text, 0, e)), t), + s = this.length + i.length - (t - e); + return n.length <= 32 ? new ve(n, s) : ot.from(ve.split(n, []), s); + } + sliceString(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "\n"; + var n = ""; + for (var s = 0, o = 0; s <= t && o < this.text.length; o++) { + var u = this.text[o], + l = s + u.length; + s > e && o && (n += i), e < l && t > s && (n += u.slice(Math.max(0, e - s), t - s)), (s = l + 1); + } + return n; + } + flatten(e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.text[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var line = _step.value; - target.push(line); + var t = _step.value; + e.push(t); } } catch (err) { _didIteratorError = true; @@ -7935,22 +6300,16 @@ var __generator = scanIdentical() { return 0; } - static split(text2, target) { - var part = [], - len = -1; + static split(e, t) { + var i = [], + n = -1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = text2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var line = _step.value; - part.push(line); - len += line.length + 1; - if (part.length == 32) { - target.push(new TextLeaf(part, len)); - part = []; - len = -1; - } + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + i.push(s), (n += s.length + 1), i.length == 32 && (t.push(new ve(i, n)), (i = []), (n = -1)); } } catch (err) { _didIteratorError = true; @@ -7966,80 +6325,72 @@ var __generator = } } } - if (len > -1) target.push(new TextLeaf(part, len)); - return target; + return n > -1 && t.push(new ve(i, n)), t; } - constructor(text2, ref) { - var length = ref === void 0 ? textLength(text2) : ref; - super(); - this.text = text2; - this.length = length; + constructor(e, ref) { + var t = ref === void 0 ? uv(e) : ref; + super(), (this.text = e), (this.length = t); } }; - __name(TextLeaf, "TextLeaf"); - var TextNode3 = class TextNode31 extends Text { - lineInner(target, isLine, line, offset) { - for (var i = 0; ; i++) { - var child = this.children[i], - end = offset + child.length, - endLine = line + child.lines - 1; - if ((isLine ? endLine : end) >= target) return child.lineInner(target, isLine, line, offset); - offset = end + 1; - line = endLine + 1; - } - } - decompose(from, to, target, open) { - for (var i = 0, pos = 0; pos <= to && i < this.children.length; i++) { - var child = this.children[i], - end = pos + child.length; - if (from <= end && to >= pos) { - var childOpen = open & ((pos <= from ? 1 : 0) | (end >= to ? 2 : 0)); - if (pos >= from && end <= to && !childOpen) target.push(child); - else child.decompose(from - pos, to - pos, target, childOpen); - } - pos = end + 1; - } - } - replace(from, to, text2) { - if (text2.lines < this.lines) - for (var i = 0, pos = 0; i < this.children.length; i++) { - var child = this.children[i], - end = pos + child.length; - if (from >= pos && to <= end) { - var updated = child.replace(from - pos, to - pos, text2); - var totalLines = this.lines - child.lines + updated.lines; - if (updated.lines < totalLines >> (5 - 1) && updated.lines > totalLines >> (5 + 1)) { - var copy = this.children.slice(); - copy[i] = updated; - return new TextNode3(copy, this.length - (to - from) + text2.length); + h(ve, "TextLeaf"); + var ot = class ot1 extends ce { + lineInner(e, t, i, n) { + for (var s = 0; ; s++) { + var o = this.children[s], + u = n + o.length, + l = i + o.lines - 1; + if ((t ? l : u) >= e) return o.lineInner(e, t, i, n); + (n = u + 1), (i = l + 1); + } + } + decompose(e, t, i, n) { + for (var s = 0, o = 0; o <= t && s < this.children.length; s++) { + var u = this.children[s], + l = o + u.length; + if (e <= l && t >= o) { + var a = n & ((o <= e ? 1 : 0) | (l >= t ? 2 : 0)); + o >= e && l <= t && !a ? i.push(u) : u.decompose(e - o, t - o, i, a); + } + o = l + 1; + } + } + replace(e, t, i) { + if (i.lines < this.lines) + for (var n = 0, s = 0; n < this.children.length; n++) { + var o = this.children[n], + u = s + o.length; + if (e >= s && t <= u) { + var l = o.replace(e - s, t - s, i), + a = this.lines - o.lines + l.lines; + if (l.lines < a >> (5 - 1) && l.lines > a >> (5 + 1)) { + var c = this.children.slice(); + return (c[n] = l), new ot(c, this.length - (t - e) + i.length); } - return super.replace(pos, end, updated); + return super.replace(s, u, l); } - pos = end + 1; + s = u + 1; } - return super.replace(from, to, text2); + return super.replace(e, t, i); } - sliceString(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length, - lineSep = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "\n"; - var result = ""; - for (var i = 0, pos = 0; i < this.children.length && pos <= to; i++) { - var child = this.children[i], - end = pos + child.length; - if (pos > from && i) result += lineSep; - if (from < end && to > pos) result += child.sliceString(from - pos, to - pos, lineSep); - pos = end + 1; + sliceString(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.length, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "\n"; + var n = ""; + for (var s = 0, o = 0; s < this.children.length && o <= t; s++) { + var u = this.children[s], + l = o + u.length; + o > e && s && (n += i), e < l && t > o && (n += u.sliceString(e - o, t - o, i)), (o = l + 1); } - return result; + return n; } - flatten(target) { + flatten(e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - child.flatten(target); + var t = _step.value; + t.flatten(e); } } catch (err) { _didIteratorError = true; @@ -8056,32 +6407,32 @@ var __generator = } } } - scanIdentical(other, dir) { - if (!(other instanceof TextNode3)) return 0; - var length = 0; - var _ref = _slicedToArray(dir > 0 ? [0, 0, this.children.length, other.children.length] : [this.children.length - 1, other.children.length - 1, -1, -1], 4), - iA = _ref[0], - iB = _ref[1], - eA = _ref[2], - eB = _ref[3]; - for (; ; iA += dir, iB += dir) { - if (iA == eA || iB == eB) return length; - var chA = this.children[iA], - chB = other.children[iB]; - if (chA != chB) return length + chA.scanIdentical(chB, dir); - length += chA.length + 1; - } - } - static from(children2) { - var length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : children2.reduce((l, ch) => l + ch.length + 1, -1); - var lines = 0; + scanIdentical(e, t) { + if (!(e instanceof ot)) return 0; + var i = 0, + _ref = _slicedToArray(t > 0 ? [0, 0, this.children.length, e.children.length] : [this.children.length - 1, e.children.length - 1, -1, -1], 4), + n = _ref[0], + s = _ref[1], + o = _ref[2], + u = _ref[3]; + for (; ; n += t, s += t) { + if (n == o || s == u) return i; + var l = this.children[n], + a = e.children[s]; + if (l != a) return i + l.scanIdentical(a, t); + i += l.length + 1; + } + } + static from(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e.reduce((i, n) => i + n.length + 1, -1); + var i = 0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = children2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var ch = _step.value; - lines += ch.lines; + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var p = _step.value; + i += p.lines; } } catch (err) { _didIteratorError = true; @@ -8097,15 +6448,15 @@ var __generator = } } } - if (lines < 32) { - var flat = []; + if (i < 32) { + var p1 = []; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = children2[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var ch1 = _step1.value; - ch1.flatten(flat); + for (var _iterator1 = e[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var m = _step1.value; + m.flatten(p1); } } catch (err) { _didIteratorError1 = true; @@ -8121,25 +6472,25 @@ var __generator = } } } - return new TextLeaf(flat, length); + return new ve(p1, t); } - var chunk = Math.max(32, lines >> 5), - maxChunk = chunk << 1, - minChunk = chunk >> 1; - var chunked = [], - currentLines = 0, - currentLen = -1, - currentChunk = []; - function add2(child) { - var last; - if (child.lines > maxChunk && child instanceof TextNode3) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + var n = Math.max(32, i >> 5), + s = n << 1, + o = n >> 1, + u = [], + l = 0, + a = -1, + c = []; + function f(p) { + var m; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (p.lines > s && p instanceof ot) try { - for (var _iterator = child.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var node = _step.value; - add2(node); + for (var _iterator = p.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var D = _step.value; + f(D); } } catch (err) { _didIteratorError = true; @@ -8155,35 +6506,20 @@ var __generator = } } } - } else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) { - flush2(); - chunked.push(child); - } else if (child instanceof TextLeaf && currentLines && (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf && child.lines + last.lines <= 32) { - currentLines += child.lines; - currentLen += child.length + 1; - currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length); - } else { - if (currentLines + child.lines > chunk) flush2(); - currentLines += child.lines; - currentLen += child.length + 1; - currentChunk.push(child); - } + else p.lines > o && (l > o || !l) ? (d(), u.push(p)) : p instanceof ve && l && (m = c[c.length - 1]) instanceof ve && p.lines + m.lines <= 32 ? ((l += p.lines), (a += p.length + 1), (c[c.length - 1] = new ve(m.text.concat(p.text), m.length + 1 + p.length))) : (l + p.lines > n && d(), (l += p.lines), (a += p.length + 1), c.push(p)); } - __name(add2, "add"); - function flush2() { - if (currentLines == 0) return; - chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode3.from(currentChunk, currentLen)); - currentLen = -1; - currentLines = currentChunk.length = 0; + h(f, "add"); + function d() { + l != 0 && (u.push(c.length == 1 ? c[0] : ot.from(c, a)), (a = -1), (l = c.length = 0)); } - __name(flush2, "flush"); + h(d, "flush"); var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined; try { - for (var _iterator2 = children2[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var child = _step2.value; - add2(child); + for (var _iterator2 = e[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var p2 = _step2.value; + f(p2); } } catch (err) { _didIteratorError2 = true; @@ -8199,21 +6535,17 @@ var __generator = } } } - flush2(); - return chunked.length == 1 ? chunked[0] : new TextNode3(chunked, length); + return d(), u.length == 1 ? u[0] : new ot(u, t); } - constructor(children2, length) { - super(); - this.children = children2; - this.length = length; - this.lines = 0; + constructor(e, t) { + super(), (this.children = e), (this.length = t), (this.lines = 0); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = children2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - this.lines += child.lines; + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + this.lines += i.lines; } } catch (err) { _didIteratorError = true; @@ -8231,17 +6563,17 @@ var __generator = } } }; - __name(TextNode3, "TextNode"); - Text.empty = /* @__PURE__ */ new TextLeaf([""], 0); - function textLength(text2) { - var length = -1; + h(ot, "TextNode"); + ce.empty = new ve([""], 0); + function uv(r) { + var e = -1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = text2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var line = _step.value; - length += line.length + 1; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + e += t.length + 1; } } catch (err) { _didIteratorError = true; @@ -8257,492 +6589,381 @@ var __generator = } } } - return length; + return e; } - __name(textLength, "textLength"); - function appendText(text2, target) { - var from = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, - to = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1e9; - for (var pos = 0, i = 0, first = true; i < text2.length && pos <= to; i++) { - var line = text2[i], - end = pos + line.length; - if (end >= from) { - if (end > to) line = line.slice(0, to - pos); - if (pos < from) line = line.slice(from - pos); - if (first) { - target[target.length - 1] += line; - first = false; - } else target.push(line); - } - pos = end + 1; + h(uv, "textLength"); + function go(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, + i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1e9; + for (var n = 0, s = 0, o = !0; s < r.length && n <= i; s++) { + var u = r[s], + l = n + u.length; + l >= t && (l > i && (u = u.slice(0, i - n)), n < t && (u = u.slice(t - n)), o ? ((e[e.length - 1] += u), (o = !1)) : e.push(u)), (n = l + 1); } - return target; - } - __name(appendText, "appendText"); - function sliceText(text2, from, to) { - return appendText(text2, [""], from, to); + return e; } - __name(sliceText, "sliceText"); - var RawTextCursor = class RawTextCursor { - nextInner(skip, dir) { - this.done = this.lineBreak = false; - for (;;) { - var last = this.nodes.length - 1; - var top2 = this.nodes[last], - offsetValue = this.offsets[last], - offset = offsetValue >> 1; - var size = top2 instanceof TextLeaf ? top2.text.length : top2.children.length; - if (offset == (dir > 0 ? size : 0)) { - if (last == 0) { - this.done = true; - this.value = ""; - return this; - } - if (dir > 0) this.offsets[last - 1]++; - this.nodes.pop(); - this.offsets.pop(); - } else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) { - this.offsets[last] += dir; - if (skip == 0) { - this.lineBreak = true; - this.value = "\n"; - return this; - } - skip--; - } else if (top2 instanceof TextLeaf) { - var next = top2.text[offset + (dir < 0 ? -1 : 0)]; - this.offsets[last] += dir; - if (next.length > Math.max(0, skip)) { - this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip); - return this; - } - skip -= next.length; + h(go, "appendText"); + function b0(r, e, t) { + return go(r, [""], e, t); + } + h(b0, "sliceText"); + var Ei = class Ei { + nextInner(e, t) { + for (this.done = this.lineBreak = !1; ; ) { + var i = this.nodes.length - 1, + n = this.nodes[i], + s = this.offsets[i], + o = s >> 1, + u = n instanceof ve ? n.text.length : n.children.length; + if (o == (t > 0 ? u : 0)) { + if (i == 0) return (this.done = !0), (this.value = ""), this; + t > 0 && this.offsets[i - 1]++, this.nodes.pop(), this.offsets.pop(); + } else if ((s & 1) == (t > 0 ? 0 : 1)) { + if (((this.offsets[i] += t), e == 0)) return (this.lineBreak = !0), (this.value = "\n"), this; + e--; + } else if (n instanceof ve) { + var l = n.text[o + (t < 0 ? -1 : 0)]; + if (((this.offsets[i] += t), l.length > Math.max(0, e))) return (this.value = e == 0 ? l : t > 0 ? l.slice(e) : l.slice(0, l.length - e)), this; + e -= l.length; } else { - var next1 = top2.children[offset + (dir < 0 ? -1 : 0)]; - if (skip > next1.length) { - skip -= next1.length; - this.offsets[last] += dir; - } else { - if (dir < 0) this.offsets[last]--; - this.nodes.push(next1); - this.offsets.push(dir > 0 ? 1 : (next1 instanceof TextLeaf ? next1.text.length : next1.children.length) << 1); - } + var l1 = n.children[o + (t < 0 ? -1 : 0)]; + e > l1.length ? ((e -= l1.length), (this.offsets[i] += t)) : (t < 0 && this.offsets[i]--, this.nodes.push(l1), this.offsets.push(t > 0 ? 1 : (l1 instanceof ve ? l1.text.length : l1.children.length) << 1)); } } } next() { - var skip = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - if (skip < 0) { - this.nextInner(-skip, -this.dir); - skip = this.value.length; - } - return this.nextInner(skip, this.dir); - } - constructor(text2, ref) { - var dir = ref === void 0 ? 1 : ref; - this.dir = dir; - this.done = false; - this.lineBreak = false; - this.value = ""; - this.nodes = [text2]; - this.offsets = [dir > 0 ? 1 : (text2 instanceof TextLeaf ? text2.text.length : text2.children.length) << 1]; + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + return e < 0 && (this.nextInner(-e, -this.dir), (e = this.value.length)), this.nextInner(e, this.dir); + } + constructor(e, ref) { + var t = ref === void 0 ? 1 : ref; + (this.dir = t), (this.done = !1), (this.lineBreak = !1), (this.value = ""), (this.nodes = [e]), (this.offsets = [t > 0 ? 1 : (e instanceof ve ? e.text.length : e.children.length) << 1]); } }; - __name(RawTextCursor, "RawTextCursor"); - var PartialTextCursor = class PartialTextCursor { - nextInner(skip, dir) { - if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) { - this.value = ""; - this.done = true; - return this; - } - skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos); - var limit = dir < 0 ? this.pos - this.from : this.to - this.pos; - if (skip > limit) skip = limit; - limit -= skip; - var value = this.cursor.next(skip).value; - this.pos += (value.length + skip) * dir; - this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit); - this.done = !this.value; - return this; + h(Ei, "RawTextCursor"); + var xn = class xn { + nextInner(e, t) { + if (t < 0 ? this.pos <= this.from : this.pos >= this.to) return (this.value = ""), (this.done = !0), this; + e += Math.max(0, t < 0 ? this.pos - this.to : this.from - this.pos); + var i = t < 0 ? this.pos - this.from : this.to - this.pos; + e > i && (e = i), (i -= e); + var _this_cursor_next = this.cursor.next(e), + n = _this_cursor_next.value; + return (this.pos += (n.length + e) * t), (this.value = n.length <= i ? n : t < 0 ? n.slice(n.length - i) : n.slice(0, i)), (this.done = !this.value), this; } next() { - var skip = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - if (skip < 0) skip = Math.max(skip, this.from - this.pos); - else if (skip > 0) skip = Math.min(skip, this.to - this.pos); - return this.nextInner(skip, this.cursor.dir); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + return e < 0 ? (e = Math.max(e, this.from - this.pos)) : e > 0 && (e = Math.min(e, this.to - this.pos)), this.nextInner(e, this.cursor.dir); } get lineBreak() { return this.cursor.lineBreak && this.value != ""; } - constructor(text2, start, end) { - this.value = ""; - this.done = false; - this.cursor = new RawTextCursor(text2, start > end ? -1 : 1); - this.pos = start > end ? text2.length : 0; - this.from = Math.min(start, end); - this.to = Math.max(start, end); + constructor(e, t, i) { + (this.value = ""), (this.done = !1), (this.cursor = new Ei(e, t > i ? -1 : 1)), (this.pos = t > i ? e.length : 0), (this.from = Math.min(t, i)), (this.to = Math.max(t, i)); } }; - __name(PartialTextCursor, "PartialTextCursor"); - var LineCursor = class LineCursor { + h(xn, "PartialTextCursor"); + var Sn = class Sn { next() { - var skip = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - var _this_inner_next = this.inner.next(skip), - done = _this_inner_next.done, - lineBreak = _this_inner_next.lineBreak, - value = _this_inner_next.value; - if (done) { - this.done = true; - this.value = ""; - } else if (lineBreak) { - if (this.afterBreak) { - this.value = ""; - } else { - this.afterBreak = true; - this.next(); - } - } else { - this.value = value; - this.afterBreak = false; - } - return this; + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + var _this_inner_next = this.inner.next(e), + t = _this_inner_next.done, + i = _this_inner_next.lineBreak, + n = _this_inner_next.value; + return t ? ((this.done = !0), (this.value = "")) : i ? (this.afterBreak ? (this.value = "") : ((this.afterBreak = !0), this.next())) : ((this.value = n), (this.afterBreak = !1)), this; } get lineBreak() { - return false; + return !1; } - constructor(inner) { - this.inner = inner; - this.afterBreak = true; - this.value = ""; - this.done = false; + constructor(e) { + (this.inner = e), (this.afterBreak = !0), (this.value = ""), (this.done = !1); } }; - __name(LineCursor, "LineCursor"); - if (typeof Symbol != "undefined") { - Text.prototype[Symbol.iterator] = function () { + h(Sn, "LineCursor"); + typeof Symbol < "u" && + ((ce.prototype[Symbol.iterator] = function () { return this.iter(); - }; - RawTextCursor.prototype[Symbol.iterator] = - PartialTextCursor.prototype[Symbol.iterator] = - LineCursor.prototype[Symbol.iterator] = + }), + (Ei.prototype[Symbol.iterator] = + xn.prototype[Symbol.iterator] = + Sn.prototype[Symbol.iterator] = function () { return this; - }; - } - var Line = class Line { + })); + var Do = class Do { get length() { return this.to - this.from; } - constructor(from, to, number2, text2) { - this.from = from; - this.to = to; - this.number = number2; - this.text = text2; + constructor(e, t, i, n) { + (this.from = e), (this.to = t), (this.number = i), (this.text = n); } }; - __name(Line, "Line"); - var extend = - /* @__PURE__ */ "lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o" + h(Do, "Line"); + var Sr = + "lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o" .split(",") - .map((s) => (s ? parseInt(s, 36) : 1)); - for (var i = 1; i < extend.length; i++) extend[i] += extend[i - 1]; - function isExtendingChar(code) { - for (var i = 1; i < extend.length; i += 2) if (extend[i] > code) return extend[i - 1] <= code; - return false; - } - __name(isExtendingChar, "isExtendingChar"); - function isRegionalIndicator(code) { - return code >= 127462 && code <= 127487; - } - __name(isRegionalIndicator, "isRegionalIndicator"); - var ZWJ = 8205; - function findClusterBreak(str, pos) { - var forward = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true, - includeExtending = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending); - } - __name(findClusterBreak, "findClusterBreak"); - function nextClusterBreak(str, pos, includeExtending) { - if (pos == str.length) return pos; - if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1))) pos--; - var prev = codePointAt(str, pos); - pos += codePointSize(prev); - while (pos < str.length) { - var next = codePointAt(str, pos); - if (prev == ZWJ || next == ZWJ || (includeExtending && isExtendingChar(next))) { - pos += codePointSize(next); - prev = next; - } else if (isRegionalIndicator(next)) { - var countBefore = 0, - i = pos - 2; - while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) { - countBefore++; - i -= 2; - } - if (countBefore % 2 == 0) break; - else pos += 2; - } else { - break; - } + .map((r) => (r ? parseInt(r, 36) : 1)); + for (var r = 1; r < Sr.length; r++) Sr[r] += Sr[r - 1]; + function lv(r) { + for (var e = 1; e < Sr.length; e += 2) if (Sr[e] > r) return Sr[e - 1] <= r; + return !1; + } + h(lv, "isExtendingChar"); + function F0(r) { + return r >= 127462 && r <= 127487; + } + h(F0, "isRegionalIndicator"); + var y0 = 8205; + function Bt(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0, + i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0; + return (t ? w0 : av)(r, e, i); + } + h(Bt, "findClusterBreak"); + function w0(r, e, t) { + if (e == r.length) return e; + e && x0(r.charCodeAt(e)) && S0(r.charCodeAt(e - 1)) && e--; + var i = Bn(r, e); + for (e += yo(i); e < r.length; ) { + var n = Bn(r, e); + if (i == y0 || n == y0 || (t && lv(n))) (e += yo(n)), (i = n); + else if (F0(n)) { + var s = 0, + o = e - 2; + for (; o >= 0 && F0(Bn(r, o)); ) s++, (o -= 2); + if (s % 2 == 0) break; + e += 2; + } else break; } - return pos; + return e; } - __name(nextClusterBreak, "nextClusterBreak"); - function prevClusterBreak(str, pos, includeExtending) { - while (pos > 0) { - var found = nextClusterBreak(str, pos - 2, includeExtending); - if (found < pos) return found; - pos--; + h(w0, "nextClusterBreak"); + function av(r, e, t) { + for (; e > 0; ) { + var i = w0(r, e - 2, t); + if (i < e) return i; + e--; } return 0; } - __name(prevClusterBreak, "prevClusterBreak"); - function surrogateLow(ch) { - return ch >= 56320 && ch < 57344; - } - __name(surrogateLow, "surrogateLow"); - function surrogateHigh(ch) { - return ch >= 55296 && ch < 56320; - } - __name(surrogateHigh, "surrogateHigh"); - function codePointAt(str, pos) { - var code0 = str.charCodeAt(pos); - if (!surrogateHigh(code0) || pos + 1 == str.length) return code0; - var code1 = str.charCodeAt(pos + 1); - if (!surrogateLow(code1)) return code0; - return ((code0 - 55296) << 10) + (code1 - 56320) + 65536; - } - __name(codePointAt, "codePointAt"); - function codePointSize(code) { - return code < 65536 ? 1 : 2; - } - __name(codePointSize, "codePointSize"); - var DefaultSplit = /\r\n?|\n/; - var MapMode = /* @__PURE__ */ (function (MapMode2) { - MapMode2[(MapMode2["Simple"] = 0)] = "Simple"; - MapMode2[(MapMode2["TrackDel"] = 1)] = "TrackDel"; - MapMode2[(MapMode2["TrackBefore"] = 2)] = "TrackBefore"; - MapMode2[(MapMode2["TrackAfter"] = 3)] = "TrackAfter"; - return MapMode2; - })(MapMode || (MapMode = {})); - var ChangeDesc = class ChangeDesc1 { - get length() { - var result = 0; - for (var i = 0; i < this.sections.length; i += 2) result += this.sections[i]; - return result; - } - get newLength() { - var result = 0; - for (var i = 0; i < this.sections.length; i += 2) { - var ins = this.sections[i + 1]; - result += ins < 0 ? this.sections[i] : ins; + h(av, "prevClusterBreak"); + function x0(r) { + return r >= 56320 && r < 57344; + } + h(x0, "surrogateLow"); + function S0(r) { + return r >= 55296 && r < 56320; + } + h(S0, "surrogateHigh"); + function Bn(r, e) { + var t = r.charCodeAt(e); + if (!S0(t) || e + 1 == r.length) return t; + var i = r.charCodeAt(e + 1); + return x0(i) ? ((t - 55296) << 10) + (i - 56320) + 65536 : t; + } + h(Bn, "codePointAt"); + function yo(r) { + return r < 65536 ? 1 : 2; + } + h(yo, "codePointSize"); + var Ta = /\r\n?|\n/, + Xe = (function (r) { + return (r[(r.Simple = 0)] = "Simple"), (r[(r.TrackDel = 1)] = "TrackDel"), (r[(r.TrackBefore = 2)] = "TrackBefore"), (r[(r.TrackAfter = 3)] = "TrackAfter"), r; + })(Xe || (Xe = {})), + Ze = class Ze1 { + get length() { + var e = 0; + for (var t = 0; t < this.sections.length; t += 2) e += this.sections[t]; + return e; + } + get newLength() { + var e = 0; + for (var t = 0; t < this.sections.length; t += 2) { + var i = this.sections[t + 1]; + e += i < 0 ? this.sections[t] : i; + } + return e; + } + get empty() { + return this.sections.length == 0 || (this.sections.length == 2 && this.sections[1] < 0); + } + iterGaps(e) { + for (var t = 0, i = 0, n = 0; t < this.sections.length; ) { + var s = this.sections[t++], + o = this.sections[t++]; + o < 0 ? (e(i, n, s), (n += s)) : (n += o), (i += s); + } + } + iterChangedRanges(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + Ra(this, e, t); + } + get invertedDesc() { + var e = []; + for (var t = 0; t < this.sections.length; ) { + var i = this.sections[t++], + n = this.sections[t++]; + n < 0 ? e.push(i, n) : e.push(n, i); + } + return new Ze(e); + } + composeDesc(e) { + return this.empty ? e : e.empty ? this : B0(this, e); + } + mapDesc(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + return e.empty ? this : $a(this, e, t); + } + mapPos(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Xe.Simple; + var n = 0, + s = 0; + for (var o = 0; o < this.sections.length; ) { + var u = this.sections[o++], + l = this.sections[o++], + a = n + u; + if (l < 0) { + if (a > e) return s + (e - n); + s += u; + } else { + if (i != Xe.Simple && a >= e && ((i == Xe.TrackDel && n < e && a > e) || (i == Xe.TrackBefore && n < e) || (i == Xe.TrackAfter && a > e))) return null; + if (a > e || (a == e && t < 0 && !u)) return e == n || t < 0 ? s : s + l; + s += l; + } + n = a; + } + if (e > n) throw new RangeError("Position ".concat(e, " is out of range for changeset of length ").concat(n)); + return s; } - return result; - } - get empty() { - return this.sections.length == 0 || (this.sections.length == 2 && this.sections[1] < 0); - } - iterGaps(f) { - for (var i = 0, posA = 0, posB = 0; i < this.sections.length; ) { - var len = this.sections[i++], - ins = this.sections[i++]; - if (ins < 0) { - f(posA, posB, len); - posB += len; - } else { - posB += ins; - } - posA += len; - } - } - iterChangedRanges(f) { - var individual = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - iterChanges(this, f, individual); - } - get invertedDesc() { - var sections = []; - for (var i = 0; i < this.sections.length; ) { - var len = this.sections[i++], - ins = this.sections[i++]; - if (ins < 0) sections.push(len, ins); - else sections.push(ins, len); - } - return new ChangeDesc(sections); - } - composeDesc(other) { - return this.empty ? other : other.empty ? this : composeSets(this, other); - } - mapDesc(other) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - return other.empty ? this : mapSet(this, other, before); - } - mapPos(pos) { - var assoc = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1, - mode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : MapMode.Simple; - var posA = 0, - posB = 0; - for (var i = 0; i < this.sections.length; ) { - var len = this.sections[i++], - ins = this.sections[i++], - endA = posA + len; - if (ins < 0) { - if (endA > pos) return posB + (pos - posA); - posB += len; - } else { - if (mode != MapMode.Simple && endA >= pos && ((mode == MapMode.TrackDel && posA < pos && endA > pos) || (mode == MapMode.TrackBefore && posA < pos) || (mode == MapMode.TrackAfter && endA > pos))) return null; - if (endA > pos || (endA == pos && assoc < 0 && !len)) return pos == posA || assoc < 0 ? posB : posB + ins; - posB += ins; + touchesRange(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + for (var i = 0, n = 0; i < this.sections.length && n <= t; ) { + var s = this.sections[i++], + o = this.sections[i++], + u = n + s; + if (o >= 0 && n <= t && u >= e) return n < e && u > t ? "cover" : !0; + n = u; } - posA = endA; + return !1; } - if (pos > posA) throw new RangeError("Position ".concat(pos, " is out of range for changeset of length ").concat(posA)); - return posB; - } - touchesRange(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : from; - for (var i = 0, pos = 0; i < this.sections.length && pos <= to; ) { - var len = this.sections[i++], - ins = this.sections[i++], - end = pos + len; - if (ins >= 0 && pos <= to && end >= from) return pos < from && end > to ? "cover" : true; - pos = end; + toString() { + var e = ""; + for (var t = 0; t < this.sections.length; ) { + var i = this.sections[t++], + n = this.sections[t++]; + e += (e ? " " : "") + i + (n >= 0 ? ":" + n : ""); + } + return e; } - return false; - } - toString() { - var result = ""; - for (var i = 0; i < this.sections.length; ) { - var len = this.sections[i++], - ins = this.sections[i++]; - result += (result ? " " : "") + len + (ins >= 0 ? ":" + ins : ""); + toJSON() { + return this.sections; } - return result; - } - toJSON() { - return this.sections; - } - static fromJSON(json) { - if (!Array.isArray(json) || json.length % 2 || json.some((a) => typeof a != "number")) throw new RangeError("Invalid JSON representation of ChangeDesc"); - return new ChangeDesc(json); - } - static create(sections) { - return new ChangeDesc(sections); - } - constructor(sections) { - this.sections = sections; - } - }; - __name(ChangeDesc, "ChangeDesc"); - var ChangeSet = class ChangeSet1 extends ChangeDesc { - apply(doc2) { - if (this.length != doc2.length) throw new RangeError("Applying change set to a document with the wrong length"); - iterChanges(this, (fromA, toA, fromB, _toB, text2) => (doc2 = doc2.replace(fromB, fromB + (toA - fromA), text2)), false); - return doc2; - } - mapDesc(other) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - return mapSet(this, other, before, true); - } - invert(doc2) { - var sections = this.sections.slice(), - inserted = []; - for (var i = 0, pos = 0; i < sections.length; i += 2) { - var len = sections[i], - ins = sections[i + 1]; - if (ins >= 0) { - sections[i] = ins; - sections[i + 1] = len; - var index = i >> 1; - while (inserted.length < index) inserted.push(Text.empty); - inserted.push(len ? doc2.slice(pos, pos + len) : Text.empty); - } - pos += len; - } - return new ChangeSet(sections, inserted); - } - compose(other) { - return this.empty ? other : other.empty ? this : composeSets(this, other, true); - } - map(other) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - return other.empty ? this : mapSet(this, other, before, true); - } - iterChanges(f) { - var individual = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - iterChanges(this, f, individual); + static fromJSON(e) { + if (!Array.isArray(e) || e.length % 2 || e.some((t) => typeof t != "number")) throw new RangeError("Invalid JSON representation of ChangeDesc"); + return new Ze(e); + } + static create(e) { + return new Ze(e); + } + constructor(e) { + this.sections = e; + } + }; + h(Ze, "ChangeDesc"); + var ke = class ke1 extends Ze { + apply(e) { + if (this.length != e.length) throw new RangeError("Applying change set to a document with the wrong length"); + return Ra(this, (t, i, n, s, o) => (e = e.replace(n, n + (i - t), o)), !1), e; + } + mapDesc(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + return $a(this, e, t, !0); + } + invert(e) { + var t = this.sections.slice(), + i = []; + for (var n = 0, s = 0; n < t.length; n += 2) { + var o = t[n], + u = t[n + 1]; + if (u >= 0) { + (t[n] = u), (t[n + 1] = o); + var l = n >> 1; + for (; i.length < l; ) i.push(ce.empty); + i.push(o ? e.slice(s, s + o) : ce.empty); + } + s += o; + } + return new ke(t, i); + } + compose(e) { + return this.empty ? e : e.empty ? this : B0(this, e, !0); + } + map(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + return e.empty ? this : $a(this, e, t, !0); + } + iterChanges(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + Ra(this, e, t); } get desc() { - return ChangeDesc.create(this.sections); - } - filter(ranges) { - var resultSections = [], - resultInserted = [], - filteredSections = []; - var iter = new SectionIter(this); - done: for (var i = 0, pos = 0; ; ) { - var next = i == ranges.length ? 1e9 : ranges[i++]; - while (pos < next || (pos == next && iter.len == 0)) { - if (iter.done) break done; - var len = Math.min(iter.len, next - pos); - addSection(filteredSections, len, -1); - var ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0; - addSection(resultSections, len, ins); - if (ins > 0) addInsert(resultInserted, resultSections, iter.text); - iter.forward(len); - pos += len; - } - var end = ranges[i++]; - while (pos < end) { - if (iter.done) break done; - var len1 = Math.min(iter.len, end - pos); - addSection(resultSections, len1, -1); - addSection(filteredSections, len1, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0); - iter.forward(len1); - pos += len1; - } - } - return { - changes: new ChangeSet(resultSections, resultInserted), - filtered: ChangeDesc.create(filteredSections), - }; + return Ze.create(this.sections); + } + filter(e) { + var t = [], + i = [], + n = [], + s = new vi(this); + e: for (var o = 0, u = 0; ; ) { + var l = o == e.length ? 1e9 : e[o++]; + for (; u < l || (u == l && s.len == 0); ) { + if (s.done) break e; + var c = Math.min(s.len, l - u); + He(n, c, -1); + var f = s.ins == -1 ? -1 : s.off == 0 ? s.ins : 0; + He(t, c, f), f > 0 && Ai(i, t, s.text), s.forward(c), (u += c); + } + var a = e[o++]; + for (; u < a; ) { + if (s.done) break e; + var c1 = Math.min(s.len, a - u); + He(t, c1, -1), He(n, c1, s.ins == -1 ? -1 : s.off == 0 ? s.ins : 0), s.forward(c1), (u += c1); + } + } + return { changes: new ke(t, i), filtered: Ze.create(n) }; } toJSON() { - var parts = []; - for (var i = 0; i < this.sections.length; i += 2) { - var len = this.sections[i], - ins = this.sections[i + 1]; - if (ins < 0) parts.push(len); - else if (ins == 0) parts.push([len]); - else parts.push([len].concat(this.inserted[i >> 1].toJSON())); - } - return parts; - } - static of(changes, length, lineSep) { - var sections = [], - inserted = [], - pos = 0; - var total = null; - function flush2() { - var force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - if (!force && !sections.length) return; - if (pos < length) addSection(sections, length - pos, -1); - var set = new ChangeSet(sections, inserted); - total = total ? total.compose(set.map(total)) : set; - sections = []; - inserted = []; - pos = 0; - } - __name(flush2, "flush"); - function process2(spec) { - if (Array.isArray(spec)) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + var e = []; + for (var t = 0; t < this.sections.length; t += 2) { + var i = this.sections[t], + n = this.sections[t + 1]; + n < 0 ? e.push(i) : n == 0 ? e.push([i]) : e.push([i].concat(this.inserted[t >> 1].toJSON())); + } + return e; + } + static of(e, t, i) { + var n = [], + s = [], + o = 0, + u = null; + function l() { + var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1; + if (!c && !n.length) return; + o < t && He(n, t - o, -1); + var f = new ke(n, s); + (u = u ? u.compose(f.map(u)) : f), (n = []), (s = []), (o = 0); + } + h(l, "flush"); + function a(c) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (Array.isArray(c)) try { - for (var _iterator = spec[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var sub = _step.value; - process2(sub); + for (var _iterator = c[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var f = _step.value; + a(f); } } catch (err) { _didIteratorError = true; @@ -8758,218 +6979,148 @@ var __generator = } } } - } else if (spec instanceof ChangeSet) { - if (spec.length != length) throw new RangeError("Mismatched change set length (got ".concat(spec.length, ", expected ").concat(length, ")")); - flush2(); - total = total ? total.compose(spec.map(total)) : spec; - } else { - var from = spec.from, - _spec_to = spec.to, - to = _spec_to === void 0 ? from : _spec_to, - insert3 = spec.insert; - if (from > to || from < 0 || to > length) throw new RangeError("Invalid change range ".concat(from, " to ").concat(to, " (in doc of length ").concat(length, ")")); - var insText = !insert3 ? Text.empty : typeof insert3 == "string" ? Text.of(insert3.split(lineSep || DefaultSplit)) : insert3; - var insLen = insText.length; - if (from == to && insLen == 0) return; - if (from < pos) flush2(); - if (from > pos) addSection(sections, from - pos, -1); - addSection(sections, to - from, insLen); - addInsert(inserted, sections, insText); - pos = to; - } - } - __name(process2, "process"); - process2(changes); - flush2(!total); - return total; - } - static empty(length) { - return new ChangeSet(length ? [length, -1] : [], []); - } - static fromJSON(json) { - var _loop = function (i) { - var part = json[i]; - if (typeof part == "number") { - sections.push(part, -1); - } else if (!Array.isArray(part) || typeof part[0] != "number" || part.some((e, i2) => i2 && typeof e != "string")) { - throw new RangeError("Invalid JSON representation of ChangeSet"); - } else if (part.length == 1) { - sections.push(part[0], 0); + else if (c instanceof ke) { + if (c.length != t) throw new RangeError("Mismatched change set length (got ".concat(c.length, ", expected ").concat(t, ")")); + l(), (u = u ? u.compose(c.map(u)) : c); } else { - while (inserted.length < i) inserted.push(Text.empty); - inserted[i] = Text.of(part.slice(1)); - sections.push(part[0], inserted[i].length); + var f1 = c.from, + tmp = c.to, + d = tmp === void 0 ? f1 : tmp, + p = c.insert; + if (f1 > d || f1 < 0 || d > t) throw new RangeError("Invalid change range ".concat(f1, " to ").concat(d, " (in doc of length ").concat(t, ")")); + var m = p ? (typeof p == "string" ? ce.of(p.split(i || Ta)) : p) : ce.empty, + D = m.length; + if (f1 == d && D == 0) return; + f1 < o && l(), f1 > o && He(n, f1 - o, -1), He(n, d - f1, D), Ai(s, n, m), (o = d); + } + } + return h(a, "process"), a(e), l(!u), u; + } + static empty(e) { + return new ke(e ? [e, -1] : [], []); + } + static fromJSON(e) { + if (!Array.isArray(e)) throw new RangeError("Invalid JSON representation of ChangeSet"); + var t = [], + i = []; + for (var n = 0; n < e.length; n++) { + var s = e[n]; + if (typeof s == "number") t.push(s, -1); + else { + if (!Array.isArray(s) || typeof s[0] != "number" || s.some((o, u) => u && typeof o != "string")) throw new RangeError("Invalid JSON representation of ChangeSet"); + if (s.length == 1) t.push(s[0], 0); + else { + for (; i.length < n; ) i.push(ce.empty); + (i[n] = ce.of(s.slice(1))), t.push(s[0], i[n].length); + } } - }; - if (!Array.isArray(json)) throw new RangeError("Invalid JSON representation of ChangeSet"); - var sections = [], - inserted = []; - for (var i = 0; i < json.length; i++) _loop(i); - return new ChangeSet(sections, inserted); + } + return new ke(t, i); } - static createSet(sections, inserted) { - return new ChangeSet(sections, inserted); + static createSet(e, t) { + return new ke(e, t); } - constructor(sections, inserted) { - super(sections); - this.inserted = inserted; + constructor(e, t) { + super(e), (this.inserted = t); } }; - __name(ChangeSet, "ChangeSet"); - function addSection(sections, len, ins) { - var forceJoin = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - if (len == 0 && ins <= 0) return; - var last = sections.length - 2; - if (last >= 0 && ins <= 0 && ins == sections[last + 1]) sections[last] += len; - else if (len == 0 && sections[last] == 0) sections[last + 1] += ins; - else if (forceJoin) { - sections[last] += len; - sections[last + 1] += ins; - } else sections.push(len, ins); - } - __name(addSection, "addSection"); - function addInsert(values, sections, value) { - if (value.length == 0) return; - var index = (sections.length - 2) >> 1; - if (index < values.length) { - values[values.length - 1] = values[values.length - 1].append(value); - } else { - while (values.length < index) values.push(Text.empty); - values.push(value); - } - } - __name(addInsert, "addInsert"); - function iterChanges(desc, f, individual) { - var inserted = desc.inserted; - for (var posA = 0, posB = 0, i = 0; i < desc.sections.length; ) { - var len = desc.sections[i++], - ins = desc.sections[i++]; - if (ins < 0) { - posA += len; - posB += len; - } else { - var endA = posA, - endB = posB, - text2 = Text.empty; - for (;;) { - endA += len; - endB += ins; - if (ins && inserted) text2 = text2.append(inserted[(i - 2) >> 1]); - if (individual || i == desc.sections.length || desc.sections[i + 1] < 0) break; - len = desc.sections[i++]; - ins = desc.sections[i++]; - } - f(posA, endA, posB, endB, text2); - posA = endA; - posB = endB; - } - } - } - __name(iterChanges, "iterChanges"); - function mapSet(setA, setB, before) { - var mkSet = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - var sections = [], - insert3 = mkSet ? [] : null; - var a = new SectionIter(setA), - b = new SectionIter(setB); - for (var inserted = -1; ; ) { - if (a.ins == -1 && b.ins == -1) { - var len = Math.min(a.len, b.len); - addSection(sections, len, -1); - a.forward(len); - b.forward(len); - } else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || (a.off == 0 && (b.len < a.len || (b.len == a.len && !before))))) { - var len1 = b.len; - addSection(sections, b.ins, -1); - while (len1) { - var piece = Math.min(a.len, len1); - if (a.ins >= 0 && inserted < a.i && a.len <= piece) { - addSection(sections, 0, a.ins); - if (insert3) addInsert(insert3, sections, a.text); - inserted = a.i; - } - a.forward(piece); - len1 -= piece; - } - b.next(); - } else if (a.ins >= 0) { - var len2 = 0, - left = a.len; - while (left) { - if (b.ins == -1) { - var piece1 = Math.min(left, b.len); - len2 += piece1; - left -= piece1; - b.forward(piece1); - } else if (b.ins == 0 && b.len < left) { - left -= b.len; - b.next(); - } else { - break; - } - } - addSection(sections, len2, inserted < a.i ? a.ins : 0); - if (insert3 && inserted < a.i) addInsert(insert3, sections, a.text); - inserted = a.i; - a.forward(a.len - left); - } else if (a.done && b.done) { - return insert3 ? ChangeSet.createSet(sections, insert3) : ChangeDesc.create(sections); + h(ke, "ChangeSet"); + function He(r, e, t) { + var i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1; + if (e == 0 && t <= 0) return; + var n = r.length - 2; + n >= 0 && t <= 0 && t == r[n + 1] ? (r[n] += e) : e == 0 && r[n] == 0 ? (r[n + 1] += t) : i ? ((r[n] += e), (r[n + 1] += t)) : r.push(e, t); + } + h(He, "addSection"); + function Ai(r, e, t) { + if (t.length == 0) return; + var i = (e.length - 2) >> 1; + if (i < r.length) r[r.length - 1] = r[r.length - 1].append(t); + else { + for (; r.length < i; ) r.push(ce.empty); + r.push(t); + } + } + h(Ai, "addInsert"); + function Ra(r, e, t) { + var i = r.inserted; + for (var n = 0, s = 0, o = 0; o < r.sections.length; ) { + var u = r.sections[o++], + l = r.sections[o++]; + if (l < 0) (n += u), (s += u); + else { + var a = n, + c = s, + f = ce.empty; + for (; (a += u), (c += l), l && i && (f = f.append(i[(o - 2) >> 1])), !(t || o == r.sections.length || r.sections[o + 1] < 0); ) (u = r.sections[o++]), (l = r.sections[o++]); + e(n, a, s, c, f), (n = a), (s = c); + } + } + } + h(Ra, "iterChanges"); + function $a(r, e, t) { + var i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1; + var n = [], + s = i ? [] : null, + o = new vi(r), + u = new vi(e); + for (var l = -1; ; ) + if (o.ins == -1 && u.ins == -1) { + var a = Math.min(o.len, u.len); + He(n, a, -1), o.forward(a), u.forward(a); + } else if (u.ins >= 0 && (o.ins < 0 || l == o.i || (o.off == 0 && (u.len < o.len || (u.len == o.len && !t))))) { + var a1 = u.len; + for (He(n, u.ins, -1); a1; ) { + var c = Math.min(o.len, a1); + o.ins >= 0 && l < o.i && o.len <= c && (He(n, 0, o.ins), s && Ai(s, n, o.text), (l = o.i)), o.forward(c), (a1 -= c); + } + u.next(); + } else if (o.ins >= 0) { + var a2 = 0, + c1 = o.len; + for (; c1; ) + if (u.ins == -1) { + var f = Math.min(c1, u.len); + (a2 += f), (c1 -= f), u.forward(f); + } else if (u.ins == 0 && u.len < c1) (c1 -= u.len), u.next(); + else break; + He(n, a2, l < o.i ? o.ins : 0), s && l < o.i && Ai(s, n, o.text), (l = o.i), o.forward(o.len - c1); } else { + if (o.done && u.done) return s ? ke.createSet(n, s) : Ze.create(n); throw new Error("Mismatched change set lengths"); } - } } - __name(mapSet, "mapSet"); - function composeSets(setA, setB) { - var mkSet = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - var sections = []; - var insert3 = mkSet ? [] : null; - var a = new SectionIter(setA), - b = new SectionIter(setB); - for (var open = false; ; ) { - if (a.done && b.done) { - return insert3 ? ChangeSet.createSet(sections, insert3) : ChangeDesc.create(sections); - } else if (a.ins == 0) { - addSection(sections, a.len, 0, open); - a.next(); - } else if (b.len == 0 && !b.done) { - addSection(sections, 0, b.ins, open); - if (insert3) addInsert(insert3, sections, b.text); - b.next(); - } else if (a.done || b.done) { - throw new Error("Mismatched change set lengths"); - } else { - var len = Math.min(a.len2, b.len), - sectionLen = sections.length; - if (a.ins == -1) { - var insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins; - addSection(sections, len, insB, open); - if (insert3 && insB) addInsert(insert3, sections, b.text); - } else if (b.ins == -1) { - addSection(sections, a.off ? 0 : a.len, len, open); - if (insert3) addInsert(insert3, sections, a.textBit(len)); - } else { - addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open); - if (insert3 && !b.off) addInsert(insert3, sections, b.text); + h($a, "mapSet"); + function B0(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1; + var i = [], + n = t ? [] : null, + s = new vi(r), + o = new vi(e); + for (var u = !1; ; ) { + if (s.done && o.done) return n ? ke.createSet(i, n) : Ze.create(i); + if (s.ins == 0) He(i, s.len, 0, u), s.next(); + else if (o.len == 0 && !o.done) He(i, 0, o.ins, u), n && Ai(n, i, o.text), o.next(); + else { + if (s.done || o.done) throw new Error("Mismatched change set lengths"); + { + var l = Math.min(s.len2, o.len), + a = i.length; + if (s.ins == -1) { + var c = o.ins == -1 ? -1 : o.off ? 0 : o.ins; + He(i, l, c, u), n && c && Ai(n, i, o.text); + } else o.ins == -1 ? (He(i, s.off ? 0 : s.len, l, u), n && Ai(n, i, s.textBit(l))) : (He(i, s.off ? 0 : s.len, o.off ? 0 : o.ins, u), n && !o.off && Ai(n, i, o.text)); + (u = (s.ins > l || (o.ins >= 0 && o.len > l)) && (u || i.length > a)), s.forward2(l), o.forward(l); } - open = (a.ins > len || (b.ins >= 0 && b.len > len)) && (open || sections.length > sectionLen); - a.forward2(len); - b.forward(len); } } } - __name(composeSets, "composeSets"); - var SectionIter = class SectionIter { + h(B0, "composeSets"); + var vi = class vi { next() { - var sections = this.set.sections; - if (this.i < sections.length) { - this.len = sections[this.i++]; - this.ins = sections[this.i++]; - } else { - this.len = 0; - this.ins = -2; - } - this.off = 0; + var _this_set = this.set, + e = _this_set.sections; + this.i < e.length ? ((this.len = e[this.i++]), (this.ins = e[this.i++])) : ((this.len = 0), (this.ins = -2)), (this.off = 0); } get done() { return this.ins == -2; @@ -8978,38 +7129,29 @@ var __generator = return this.ins < 0 ? this.len : this.ins; } get text() { - var inserted = this.set.inserted, - index = (this.i - 2) >> 1; - return index >= inserted.length ? Text.empty : inserted[index]; + var _this_set = this.set, + e = _this_set.inserted, + t = (this.i - 2) >> 1; + return t >= e.length ? ce.empty : e[t]; } - textBit(len) { - var inserted = this.set.inserted, - index = (this.i - 2) >> 1; - return index >= inserted.length && !len ? Text.empty : inserted[index].slice(this.off, len == null ? void 0 : this.off + len); + textBit(e) { + var _this_set = this.set, + t = _this_set.inserted, + i = (this.i - 2) >> 1; + return i >= t.length && !e ? ce.empty : t[i].slice(this.off, e == null ? void 0 : this.off + e); } - forward(len) { - if (len == this.len) this.next(); - else { - this.len -= len; - this.off += len; - } + forward(e) { + e == this.len ? this.next() : ((this.len -= e), (this.off += e)); } - forward2(len) { - if (this.ins == -1) this.forward(len); - else if (len == this.ins) this.next(); - else { - this.ins -= len; - this.off += len; - } + forward2(e) { + this.ins == -1 ? this.forward(e) : e == this.ins ? this.next() : ((this.ins -= e), (this.off += e)); } - constructor(set) { - this.set = set; - this.i = 0; - this.next(); + constructor(e) { + (this.set = e), (this.i = 0), this.next(); } }; - __name(SectionIter, "SectionIter"); - var SelectionRange = class SelectionRange1 { + h(vi, "SectionIter"); + var Vt = class Vt1 { get anchor() { return this.flags & 16 ? this.to : this.from; } @@ -9023,151 +7165,134 @@ var __generator = return this.flags & 4 ? -1 : this.flags & 8 ? 1 : 0; } get bidiLevel() { - var level = this.flags & 3; - return level == 3 ? null : level; + var e = this.flags & 3; + return e == 3 ? null : e; } get goalColumn() { - var value = this.flags >> 5; - return value == 33554431 ? void 0 : value; - } - map(change) { - var assoc = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1; - var from, to; - if (this.empty) { - from = to = change.mapPos(this.from, assoc); - } else { - from = change.mapPos(this.from, 1); - to = change.mapPos(this.to, -1); - } - return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags); + var e = this.flags >> 5; + return e == 33554431 ? void 0 : e; } - extend(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : from; - if (from <= this.anchor && to >= this.anchor) return EditorSelection.range(from, to); - var head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to; - return EditorSelection.range(this.anchor, head); + map(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1; + var i, n; + return this.empty ? (i = n = e.mapPos(this.from, t)) : ((i = e.mapPos(this.from, 1)), (n = e.mapPos(this.to, -1))), i == this.from && n == this.to ? this : new Vt(i, n, this.flags); } - eq(other) { - return this.anchor == other.anchor && this.head == other.head; + extend(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + if (e <= this.anchor && t >= this.anchor) return z.range(e, t); + var i = Math.abs(e - this.anchor) > Math.abs(t - this.anchor) ? e : t; + return z.range(this.anchor, i); + } + eq(e) { + return this.anchor == e.anchor && this.head == e.head; } toJSON() { - return { - anchor: this.anchor, - head: this.head, - }; + return { anchor: this.anchor, head: this.head }; } - static fromJSON(json) { - if (!json || typeof json.anchor != "number" || typeof json.head != "number") throw new RangeError("Invalid JSON representation for SelectionRange"); - return EditorSelection.range(json.anchor, json.head); + static fromJSON(e) { + if (!e || typeof e.anchor != "number" || typeof e.head != "number") throw new RangeError("Invalid JSON representation for SelectionRange"); + return z.range(e.anchor, e.head); } - static create(from, to, flags) { - return new SelectionRange(from, to, flags); + static create(e, t, i) { + return new Vt(e, t, i); } - constructor(from, to, flags) { - this.from = from; - this.to = to; - this.flags = flags; + constructor(e, t, i) { + (this.from = e), (this.to = t), (this.flags = i); } }; - __name(SelectionRange, "SelectionRange"); - var EditorSelection = class EditorSelection1 { - map(change) { - var assoc = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1; - if (change.empty) return this; - return EditorSelection.create( - this.ranges.map((r) => r.map(change, assoc)), - this.mainIndex - ); + h(Vt, "SelectionRange"); + var z = class z1 { + map(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1; + return e.empty + ? this + : z.create( + this.ranges.map((i) => i.map(e, t)), + this.mainIndex + ); } - eq(other) { - if (this.ranges.length != other.ranges.length || this.mainIndex != other.mainIndex) return false; - for (var i = 0; i < this.ranges.length; i++) if (!this.ranges[i].eq(other.ranges[i])) return false; - return true; + eq(e) { + if (this.ranges.length != e.ranges.length || this.mainIndex != e.mainIndex) return !1; + for (var t = 0; t < this.ranges.length; t++) if (!this.ranges[t].eq(e.ranges[t])) return !1; + return !0; } get main() { return this.ranges[this.mainIndex]; } asSingle() { - return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0); + return this.ranges.length == 1 ? this : new z([this.main], 0); } - addRange(range) { - var main = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1); + addRange(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + return z.create([e].concat(this.ranges), t ? 0 : this.mainIndex + 1); } - replaceRange(range) { - var which = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.mainIndex; - var ranges = this.ranges.slice(); - ranges[which] = range; - return EditorSelection.create(ranges, this.mainIndex); + replaceRange(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.mainIndex; + var i = this.ranges.slice(); + return (i[t] = e), z.create(i, this.mainIndex); } toJSON() { - return { - ranges: this.ranges.map((r) => r.toJSON()), - main: this.mainIndex, - }; + return { ranges: this.ranges.map((e) => e.toJSON()), main: this.mainIndex }; } - static fromJSON(json) { - if (!json || !Array.isArray(json.ranges) || typeof json.main != "number" || json.main >= json.ranges.length) throw new RangeError("Invalid JSON representation for EditorSelection"); - return new EditorSelection( - json.ranges.map((r) => SelectionRange.fromJSON(r)), - json.main + static fromJSON(e) { + if (!e || !Array.isArray(e.ranges) || typeof e.main != "number" || e.main >= e.ranges.length) throw new RangeError("Invalid JSON representation for EditorSelection"); + return new z( + e.ranges.map((t) => Vt.fromJSON(t)), + e.main ); } - static single(anchor) { - var head = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : anchor; - return new EditorSelection([EditorSelection.range(anchor, head)], 0); - } - static create(ranges) { - var mainIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - if (ranges.length == 0) throw new RangeError("A selection needs at least one range"); - for (var pos = 0, i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.empty ? range.from <= pos : range.from < pos) return EditorSelection.normalized(ranges.slice(), mainIndex); - pos = range.to; - } - return new EditorSelection(ranges, mainIndex); - } - static cursor(pos) { - var assoc = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, - bidiLevel = arguments.length > 2 ? arguments[2] : void 0, - goalColumn = arguments.length > 3 ? arguments[3] : void 0; - return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 4 : 8) | (bidiLevel == null ? 3 : Math.min(2, bidiLevel)) | ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431) << 5)); - } - static range(anchor, head, goalColumn) { - var goal = (goalColumn !== null && goalColumn !== void 0 ? goalColumn : 33554431) << 5; - return head < anchor ? SelectionRange.create(head, anchor, 16 | goal | 8) : SelectionRange.create(anchor, head, goal | (head > anchor ? 4 : 0)); - } - static normalized(ranges) { - var mainIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var main = ranges[mainIndex]; - ranges.sort((a, b) => a.from - b.from); - mainIndex = ranges.indexOf(main); - for (var i = 1; i < ranges.length; i++) { - var range = ranges[i], - prev = ranges[i - 1]; - if (range.empty ? range.from <= prev.to : range.from < prev.to) { - var from = prev.from, - to = Math.max(range.to, prev.to); - if (i <= mainIndex) mainIndex--; - ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to)); - } - } - return new EditorSelection(ranges, mainIndex); - } - constructor(ranges, mainIndex) { - this.ranges = ranges; - this.mainIndex = mainIndex; + static single(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + return new z([z.range(e, t)], 0); + } + static create(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + if (e.length == 0) throw new RangeError("A selection needs at least one range"); + for (var i = 0, n = 0; n < e.length; n++) { + var s = e[n]; + if (s.empty ? s.from <= i : s.from < i) return z.normalized(e.slice(), t); + i = s.to; + } + return new z(e, t); + } + static cursor(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, + i = arguments.length > 2 ? arguments[2] : void 0, + n = arguments.length > 3 ? arguments[3] : void 0; + return Vt.create(e, e, (t == 0 ? 0 : t < 0 ? 4 : 8) | (i == null ? 3 : Math.min(2, i)) | ((n !== null && n !== void 0 ? n : 33554431) << 5)); + } + static range(e, t, i, n) { + var s = ((i !== null && i !== void 0 ? i : 33554431) << 5) | (n == null ? 3 : Math.min(2, n)); + return t < e ? Vt.create(t, e, 24 | s) : Vt.create(e, t, (t > e ? 4 : 0) | s); + } + static normalized(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var i = e[t]; + e.sort((n, s) => n.from - s.from), (t = e.indexOf(i)); + for (var n = 1; n < e.length; n++) { + var s = e[n], + o = e[n - 1]; + if (s.empty ? s.from <= o.to : s.from < o.to) { + var u = o.from, + l = Math.max(s.to, o.to); + n <= t && t--, e.splice(--n, 2, s.anchor > s.head ? z.range(l, u) : z.range(u, l)); + } + } + return new z(e, t); + } + constructor(e, t) { + (this.ranges = e), (this.mainIndex = t); } }; - __name(EditorSelection, "EditorSelection"); - function checkSelection(selection, docLength) { + h(z, "EditorSelection"); + function _0(r, e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var range = _step.value; - if (range.to > docLength) throw new RangeError("Selection points outside of document"); + for (var _iterator = r.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + if (t.to > e) throw new RangeError("Selection points outside of document"); } } catch (err) { _didIteratorError = true; @@ -9184,63 +7309,54 @@ var __generator = } } } - __name(checkSelection, "checkSelection"); - var nextID = 0; - var Facet = class Facet1 { - static define() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables); - } - of(value) { - return new FacetProvider([], this, 0, value); - } - compute(deps, get) { - if (this.isStatic) throw new Error("Can't compute a static facet"); - return new FacetProvider(deps, this, 1, get); - } - computeN(deps, get) { - if (this.isStatic) throw new Error("Can't compute a static facet"); - return new FacetProvider(deps, this, 2, get); - } - from(field, get) { - if (!get) get = /* @__PURE__ */ __name((x) => x, "get"); - return this.compute([field], (state) => get(state.field(field))); - } - constructor(combine, compareInput, compare2, isStatic, enables) { - this.combine = combine; - this.compareInput = compareInput; - this.compare = compare2; - this.isStatic = isStatic; - this.id = nextID++; - this.default = combine([]); - this.extensions = typeof enables == "function" ? enables(this) : enables; - } - }; - __name(Facet, "Facet"); - function sameArray(a, b) { - return a == b || (a.length == b.length && a.every((e, i) => e === b[i])); - } - __name(sameArray, "sameArray"); - var FacetProvider = class FacetProvider { - dynamicSlot(addresses) { - var _a2; - var getter = this.value; - var compare2 = this.facet.compareInput; - var id = this.id, - idx = addresses[id] >> 1, - multi = this.type == 2; - var depDoc = false, - depSel = false, - depAddrs = []; + h(_0, "checkSelection"); + var Na = 0, + H = class H1 { + static define() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return new H(e.combine || ((t) => t), e.compareInput || ((t, i) => t === i), e.compare || (e.combine ? (t, i) => t === i : Va), !!e.static, e.enables); + } + of(e) { + return new Yi([], this, 0, e); + } + compute(e, t) { + if (this.isStatic) throw new Error("Can't compute a static facet"); + return new Yi(e, this, 1, t); + } + computeN(e, t) { + if (this.isStatic) throw new Error("Can't compute a static facet"); + return new Yi(e, this, 2, t); + } + from(e, t) { + return t || (t = h((i) => i, "get")), this.compute([e], (i) => t(i.field(e))); + } + constructor(e, t, i, n, s) { + (this.combine = e), (this.compareInput = t), (this.compare = i), (this.isStatic = n), (this.id = Na++), (this.default = e([])), (this.extensions = typeof s == "function" ? s(this) : s); + } + }; + h(H, "Facet"); + function Va(r, e) { + return r == e || (r.length == e.length && r.every((t, i) => t === e[i])); + } + h(Va, "sameArray"); + var Yi = class Yi { + dynamicSlot(e) { + var t; + var i = this.value, + n = this.facet.compareInput, + s = this.id, + o = e[s] >> 1, + u = this.type == 2, + l = !1, + a = !1, + c = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var dep = _step.value; - if (dep == "doc") depDoc = true; - else if (dep == "selection") depSel = true; - else if ((((_a2 = addresses[dep.id]) !== null && _a2 !== void 0 ? _a2 : 1) & 1) == 0) depAddrs.push(addresses[dep.id]); + var f = _step.value; + f == "doc" ? (l = !0) : f == "selection" ? (a = !0) : ((t = e[f.id]) !== null && t !== void 0 ? t : 1) & 1 || c.push(e[f.id]); } } catch (err) { _didIteratorError = true; @@ -9257,66 +7373,47 @@ var __generator = } } return { - create(state) { - state.values[idx] = getter(state); - return 1; + create(f) { + return (f.values[o] = i(f)), 1; }, - update(state, tr) { - if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) { - var newVal = getter(state); - if (multi ? !compareArray(newVal, state.values[idx], compare2) : !compare2(newVal, state.values[idx])) { - state.values[idx] = newVal; - return 1; - } + update(f, d) { + if ((l && d.docChanged) || (a && (d.docChanged || d.selection)) || Ma(f, c)) { + var p = i(f); + if (u ? !C0(p, f.values[o], n) : !n(p, f.values[o])) return (f.values[o] = p), 1; } return 0; }, - reconfigure: (state, oldState) => { - var newVal, - oldAddr = oldState.config.address[id]; - if (oldAddr != null) { - var oldVal = getAddr(oldState, oldAddr); - if ( - this.dependencies.every((dep) => { - return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) : dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true; - }) || - (multi ? compareArray((newVal = getter(state)), oldVal, compare2) : compare2((newVal = getter(state)), oldVal)) - ) { - state.values[idx] = oldVal; - return 0; - } - } else { - newVal = getter(state); - } - state.values[idx] = newVal; - return 1; + reconfigure: (f, d) => { + var p, + m = d.config.address[s]; + if (m != null) { + var D = Co(d, m); + if (this.dependencies.every((g) => (g instanceof H ? d.facet(g) === f.facet(g) : g instanceof $e ? d.field(g, !1) == f.field(g, !1) : !0)) || (u ? C0((p = i(f)), D, n) : n((p = i(f)), D))) return (f.values[o] = D), 0; + } else p = i(f); + return (f.values[o] = p), 1; }, }; } - constructor(dependencies, facet, type, value) { - this.dependencies = dependencies; - this.facet = facet; - this.type = type; - this.value = value; - this.id = nextID++; + constructor(e, t, i, n) { + (this.dependencies = e), (this.facet = t), (this.type = i), (this.value = n), (this.id = Na++); } }; - __name(FacetProvider, "FacetProvider"); - function compareArray(a, b, compare2) { - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) if (!compare2(a[i], b[i])) return false; - return true; - } - __name(compareArray, "compareArray"); - function ensureAll(state, addrs) { - var changed = false; + h(Yi, "FacetProvider"); + function C0(r, e, t) { + if (r.length != e.length) return !1; + for (var i = 0; i < r.length; i++) if (!t(r[i], e[i])) return !1; + return !0; + } + h(C0, "compareArray"); + function Ma(r, e) { + var t = !1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = addrs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var addr = _step.value; - if (ensureAddr(state, addr) & 1) changed = true; + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + On(r, i) & 1 && (t = !0); } } catch (err) { _didIteratorError = true; @@ -9332,26 +7429,26 @@ var __generator = } } } - return changed; + return t; } - __name(ensureAll, "ensureAll"); - function dynamicFacetSlot(addresses, facet, providers) { - var providerAddrs = providers.map((p) => addresses[p.id]); - var providerTypes = providers.map((p) => p.type); - var dynamic = providerAddrs.filter((p) => !(p & 1)); - var idx = addresses[facet.id] >> 1; - function get(state) { - var values = []; - for (var i = 0; i < providerAddrs.length; i++) { - var value = getAddr(state, providerAddrs[i]); + h(Ma, "ensureAll"); + function hv(r, e, t) { + var i = t.map((l) => r[l.id]), + n = t.map((l) => l.type), + s = i.filter((l) => !(l & 1)), + o = r[e.id] >> 1; + function u(l) { + var a = []; + for (var c = 0; c < i.length; c++) { + var f = Co(l, i[c]); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - if (providerTypes[i] == 2) + if (n[c] == 2) try { - for (var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var val = _step.value; - values.push(val); + for (var _iterator = f[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var d = _step.value; + a.push(d); } } catch (err) { _didIteratorError = true; @@ -9367,204 +7464,144 @@ var __generator = } } } - else values.push(value); + else a.push(f); } - return facet.combine(values); + return e.combine(a); } - __name(get, "get"); - return { - create(state) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = providerAddrs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var addr = _step.value; - ensureAddr(state, addr); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + return ( + h(u, "get"), + { + create(l) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var a = _step.value; + On(l, a); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - state.values[idx] = get(state); - return 1; - }, - update(state, tr) { - if (!ensureAll(state, dynamic)) return 0; - var value = get(state); - if (facet.compare(value, state.values[idx])) return 0; - state.values[idx] = value; - return 1; - }, - reconfigure(state, oldState) { - var depChanged = ensureAll(state, providerAddrs); - var oldProviders = oldState.config.facets[facet.id], - oldValue = oldState.facet(facet); - if (oldProviders && !depChanged && sameArray(providers, oldProviders)) { - state.values[idx] = oldValue; - return 0; - } - var value = get(state); - if (facet.compare(value, oldValue)) { - state.values[idx] = oldValue; - return 0; - } - state.values[idx] = value; - return 1; - }, - }; - } - __name(dynamicFacetSlot, "dynamicFacetSlot"); - var initField = /* @__PURE__ */ Facet.define({ - static: true, - }); - var StateField = class StateField1 { - static define(config) { - var field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config); - if (config.provide) field.provides = config.provide(field); - return field; - } - create(state) { - var init2 = state.facet(initField).find((i) => i.field == this); - return ((init2 === null || init2 === void 0 ? void 0 : init2.create) || this.createF)(state); - } - slot(addresses) { - var idx = addresses[this.id] >> 1; - return { - create: (state) => { - state.values[idx] = this.create(state); - return 1; + return (l.values[o] = u(l)), 1; }, - update: (state, tr) => { - var oldVal = state.values[idx]; - var value = this.updateF(oldVal, tr); - if (this.compareF(oldVal, value)) return 0; - state.values[idx] = value; - return 1; + update(l, a) { + if (!Ma(l, s)) return 0; + var c = u(l); + return e.compare(c, l.values[o]) ? 0 : ((l.values[o] = c), 1); }, - reconfigure: (state, oldState) => { - if (oldState.config.address[this.id] != null) { - state.values[idx] = oldState.field(this); - return 0; - } - state.values[idx] = this.create(state); - return 1; + reconfigure(l, a) { + var c = Ma(l, i), + f = a.config.facets[e.id], + d = a.facet(e); + if (f && !c && Va(t, f)) return (l.values[o] = d), 0; + var p = u(l); + return e.compare(p, d) ? ((l.values[o] = d), 0) : ((l.values[o] = p), 1); }, - }; - } - init(create) { - return [ - this, - initField.of({ - field: this, - create, - }), - ]; - } - get extension() { - return this; - } - constructor(id, createF, updateF, compareF, spec) { - this.id = id; - this.createF = createF; - this.updateF = updateF; - this.compareF = compareF; - this.spec = spec; - this.provides = void 0; - } - }; - __name(StateField, "StateField"); - var Prec_ = { - lowest: 4, - low: 3, - default: 2, - high: 1, - highest: 0, - }; - function prec(value) { - return (ext) => new PrecExtension(ext, value); - } - __name(prec, "prec"); - var Prec = { - highest: /* @__PURE__ */ prec(Prec_.highest), - high: /* @__PURE__ */ prec(Prec_.high), - default: /* @__PURE__ */ prec(Prec_.default), - low: /* @__PURE__ */ prec(Prec_.low), - lowest: /* @__PURE__ */ prec(Prec_.lowest), - }; - var PrecExtension = class PrecExtension { - constructor(inner, prec2) { - this.inner = inner; - this.prec = prec2; + } + ); + } + h(hv, "dynamicFacetSlot"); + var A0 = H.define({ static: !0 }), + $e = class $e1 { + static define(e) { + var t = new $e(Na++, e.create, e.update, e.compare || ((i, n) => i === n), e); + return e.provide && (t.provides = e.provide(t)), t; + } + create(e) { + var t = e.facet(A0).find((i) => i.field == this); + return ((t === null || t === void 0 ? void 0 : t.create) || this.createF)(e); + } + slot(e) { + var t = e[this.id] >> 1; + return { + create: (i) => ((i.values[t] = this.create(i)), 1), + update: (i, n) => { + var s = i.values[t], + o = this.updateF(s, n); + return this.compareF(s, o) ? 0 : ((i.values[t] = o), 1); + }, + reconfigure: (i, n) => (n.config.address[this.id] != null ? ((i.values[t] = n.field(this)), 0) : ((i.values[t] = this.create(i)), 1)), + }; + } + init(e) { + return [this, A0.of({ field: this, create: e })]; + } + get extension() { + return this; + } + constructor(e, t, i, n, s) { + (this.id = e), (this.createF = t), (this.updateF = i), (this.compareF = n), (this.spec = s), (this.provides = void 0); + } + }; + h($e, "StateField"); + var Ui = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 }; + function wn(r) { + return (e) => new _n(e, r); + } + h(wn, "prec"); + var Tr = { highest: wn(Ui.highest), high: wn(Ui.high), default: wn(Ui.default), low: wn(Ui.low), lowest: wn(Ui.lowest) }, + _n = class _n { + constructor(e, t) { + (this.inner = e), (this.prec = t); + } + }; + h(_n, "PrecExtension"); + var oi = class oi1 { + of(e) { + return new Br(this, e); } - }; - __name(PrecExtension, "PrecExtension"); - var Compartment = class Compartment1 { - of(ext) { - return new CompartmentInstance(this, ext); - } - reconfigure(content2) { - return Compartment.reconfigure.of({ - compartment: this, - extension: content2, - }); + reconfigure(e) { + return oi.reconfigure.of({ compartment: this, extension: e }); } - get(state) { - return state.config.compartments.get(this); + get(e) { + return e.config.compartments.get(this); } }; - __name(Compartment, "Compartment"); - var CompartmentInstance = class CompartmentInstance { - constructor(compartment, inner) { - this.compartment = compartment; - this.inner = inner; + h(oi, "Compartment"); + var Br = class Br { + constructor(e, t) { + (this.compartment = e), (this.inner = t); } }; - __name(CompartmentInstance, "CompartmentInstance"); - var Configuration = class Configuration1 { - staticFacet(facet) { - var addr = this.address[facet.id]; - return addr == null ? facet.default : this.staticValues[addr >> 1]; - } - static resolve(base2, compartments, oldState) { - var _loop = function (id) { - var providers = facets[id], - facet = providers[0].facet; - var oldProviders = (oldFacets && oldFacets[id]) || []; - if (providers.every((p) => p.type == 0)) { - address[facet.id] = (staticValues.length << 1) | 1; - if (sameArray(oldProviders, providers)) { - staticValues.push(oldState.facet(facet)); - } else { - var value = facet.combine(providers.map((p) => p.value)); - staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value); + h(Br, "CompartmentInstance"); + var Gi = class Gi1 { + staticFacet(e) { + var t = this.address[e.id]; + return t == null ? e.default : this.staticValues[t >> 1]; + } + static resolve(e, t, i) { + var _loop = function (d1) { + var p = s[d1], + m = p[0].facet, + D = (c && c[d1]) || []; + if (p.every((g) => g.type == 0)) + if (((u[m.id] = (l.length << 1) | 1), Va(D, p))) l.push(i.facet(m)); + else { + var g = m.combine(p.map((b) => b.value)); + l.push(i && m.compare(g, i.facet(m)) ? i.facet(m) : g); } - } else { + else { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { var _loop = function () { - var p = _step.value; - if (p.type == 0) { - address[p.id] = (staticValues.length << 1) | 1; - staticValues.push(p.value); - } else { - address[p.id] = dynamicSlots.length << 1; - dynamicSlots.push((a) => p.dynamicSlot(a)); - } + var g = _step.value; + g.type == 0 ? ((u[g.id] = (l.length << 1) | 1), l.push(g.value)) : ((u[g.id] = a.length << 1), a.push((b) => g.dynamicSlot(b))); }; - for (var _iterator = providers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop(); + for (var _iterator = p[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop(); } catch (err) { _didIteratorError = true; _iteratorError = err; @@ -9579,21 +7616,19 @@ var __generator = } } } - address[facet.id] = dynamicSlots.length << 1; - dynamicSlots.push((a) => dynamicFacetSlot(a, facet, providers)); + (u[m.id] = a.length << 1), a.push((g) => hv(g, m, p)); } }; - var fields = []; - var facets = /* @__PURE__ */ Object.create(null); - var newCompartments = /* @__PURE__ */ new Map(); + var n = [], + s = Object.create(null), + o = new Map(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = flatten(base2, compartments, newCompartments)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var ext = _step.value; - if (ext instanceof StateField) fields.push(ext); - else (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext); + for (var _iterator = cv(e, t, o)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var d = _step.value; + d instanceof $e ? n.push(d) : (s[d.facet.id] || (s[d.facet.id] = [])).push(d); } } catch (err) { _didIteratorError = true; @@ -9609,19 +7644,18 @@ var __generator = } } } - var address = /* @__PURE__ */ Object.create(null); - var staticValues = []; - var dynamicSlots = []; + var u = Object.create(null), + l = [], + a = []; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { var _loop1 = function () { - var field = _step1.value; - address[field.id] = dynamicSlots.length << 1; - dynamicSlots.push((a) => field.slot(a)); + var d = _step1.value; + (u[d.id] = a.length << 1), a.push((p) => d.slot(p)); }; - for (var _iterator1 = fields[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1(); + for (var _iterator1 = n[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1(); } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; @@ -9636,43 +7670,34 @@ var __generator = } } } - var oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets; - for (var id in facets) _loop(id); - var dynamic = dynamicSlots.map((f) => f(address)); - return new Configuration(base2, newCompartments, dynamic, address, staticValues, facets); + var c = i === null || i === void 0 ? void 0 : i.config.facets; + for (var d1 in s) _loop(d1); + var f = a.map((d) => d(u)); + return new Gi(e, o, f, u, l, s); } - constructor(base2, compartments, dynamicSlots, address, staticValues, facets) { - this.base = base2; - this.compartments = compartments; - this.dynamicSlots = dynamicSlots; - this.address = address; - this.staticValues = staticValues; - this.facets = facets; - this.statusTemplate = []; - while (this.statusTemplate.length < dynamicSlots.length) this.statusTemplate.push(0); + constructor(e, t, i, n, s, o) { + for (this.base = e, this.compartments = t, this.dynamicSlots = i, this.address = n, this.staticValues = s, this.facets = o, this.statusTemplate = []; this.statusTemplate.length < i.length; ) this.statusTemplate.push(0); } }; - __name(Configuration, "Configuration"); - function flatten(extension, compartments, newCompartments) { - var result = [[], [], [], [], []]; - var seen = /* @__PURE__ */ new Map(); - function inner(ext, prec2) { - var known = seen.get(ext); - if (known != null) { - if (known <= prec2) return; - var found = result[known].indexOf(ext); - if (found > -1) result[known].splice(found, 1); - if (ext instanceof CompartmentInstance) newCompartments.delete(ext.compartment); - } - seen.set(ext, prec2); - if (Array.isArray(ext)) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + h(Gi, "Configuration"); + function cv(r, e, t) { + var i = [[], [], [], [], []], + n = new Map(); + function s(o, u) { + var l = n.get(o); + if (l != null) { + if (l <= u) return; + var a = i[l].indexOf(o); + a > -1 && i[l].splice(a, 1), o instanceof Br && t.delete(o.compartment); + } + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if ((n.set(o, u), Array.isArray(o))) try { - for (var _iterator = ext[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var e = _step.value; - inner(e, prec2); + for (var _iterator = o[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var a1 = _step.value; + s(a1, u); } } catch (err) { _didIteratorError = true; @@ -9688,108 +7713,91 @@ var __generator = } } } - } else if (ext instanceof CompartmentInstance) { - if (newCompartments.has(ext.compartment)) throw new RangeError("Duplicate use of compartment in extensions"); - var content2 = compartments.get(ext.compartment) || ext.inner; - newCompartments.set(ext.compartment, content2); - inner(content2, prec2); - } else if (ext instanceof PrecExtension) { - inner(ext.inner, ext.prec); - } else if (ext instanceof StateField) { - result[prec2].push(ext); - if (ext.provides) inner(ext.provides, prec2); - } else if (ext instanceof FacetProvider) { - result[prec2].push(ext); - if (ext.facet.extensions) inner(ext.facet.extensions, Prec_.default); - } else { - var content21 = ext.extension; - if (!content21) throw new Error("Unrecognized extension value in extension set (".concat(ext, "). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.")); - inner(content21, prec2); - } - } - __name(inner, "inner"); - inner(extension, Prec_.default); - return result.reduce((a, b) => a.concat(b)); - } - __name(flatten, "flatten"); - function ensureAddr(state, addr) { - if (addr & 1) return 2; - var idx = addr >> 1; - var status = state.status[idx]; - if (status == 4) throw new Error("Cyclic dependency between fields and/or facets"); - if (status & 2) return status; - state.status[idx] = 4; - var changed = state.computeSlot(state, state.config.dynamicSlots[idx]); - return (state.status[idx] = 2 | changed); - } - __name(ensureAddr, "ensureAddr"); - function getAddr(state, addr) { - return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1]; - } - __name(getAddr, "getAddr"); - var languageData = /* @__PURE__ */ Facet.define(); - var allowMultipleSelections = /* @__PURE__ */ Facet.define({ - combine: (values) => values.some((v) => v), - static: true, - }); - var lineSeparator = /* @__PURE__ */ Facet.define({ - combine: (values) => (values.length ? values[0] : void 0), - static: true, - }); - var changeFilter = /* @__PURE__ */ Facet.define(); - var transactionFilter = /* @__PURE__ */ Facet.define(); - var transactionExtender = /* @__PURE__ */ Facet.define(); - var readOnly = /* @__PURE__ */ Facet.define({ - combine: (values) => (values.length ? values[0] : false), - }); - var Annotation = class Annotation { - static define() { - return new AnnotationType(); - } - constructor(type, value) { - this.type = type; - this.value = value; - } - }; - __name(Annotation, "Annotation"); - var AnnotationType = class AnnotationType { - of(value) { - return new Annotation(this, value); + else if (o instanceof Br) { + if (t.has(o.compartment)) throw new RangeError("Duplicate use of compartment in extensions"); + var a2 = e.get(o.compartment) || o.inner; + t.set(o.compartment, a2), s(a2, u); + } else if (o instanceof _n) s(o.inner, o.prec); + else if (o instanceof $e) i[u].push(o), o.provides && s(o.provides, u); + else if (o instanceof Yi) i[u].push(o), o.facet.extensions && s(o.facet.extensions, Ui.default); + else { + var a3 = o.extension; + if (!a3) throw new Error("Unrecognized extension value in extension set (".concat(o, "). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.")); + s(a3, u); + } + } + return h(s, "inner"), s(r, Ui.default), i.reduce((o, u) => o.concat(u)); + } + h(cv, "flatten"); + function On(r, e) { + if (e & 1) return 2; + var t = e >> 1, + i = r.status[t]; + if (i == 4) throw new Error("Cyclic dependency between fields and/or facets"); + if (i & 2) return i; + r.status[t] = 4; + var n = r.computeSlot(r, r.config.dynamicSlots[t]); + return (r.status[t] = 2 | n); + } + h(On, "ensureAddr"); + function Co(r, e) { + return e & 1 ? r.config.staticValues[e >> 1] : r.values[e >> 1]; + } + h(Co, "getAddr"); + var O0 = H.define(), + T0 = H.define({ combine: (r) => r.some((e) => e), static: !0 }), + R0 = H.define({ combine: (r) => (r.length ? r[0] : void 0), static: !0 }), + $0 = H.define(), + M0 = H.define(), + P0 = H.define(), + L0 = H.define({ combine: (r) => (r.length ? r[0] : !1) }), + ut = class ut { + static define() { + return new bo(); + } + constructor(e, t) { + (this.type = e), (this.value = t); + } + }; + h(ut, "Annotation"); + var bo = class bo { + of(e) { + return new ut(this, e); } }; - __name(AnnotationType, "AnnotationType"); - var StateEffectType = class StateEffectType { - of(value) { - return new StateEffect(this, value); + h(bo, "AnnotationType"); + var Fo = class Fo { + of(e) { + return new de(this, e); } - constructor(map) { - this.map = map; + constructor(e) { + this.map = e; } }; - __name(StateEffectType, "StateEffectType"); - var StateEffect = class StateEffect1 { - map(mapping) { - var mapped = this.type.map(this.value, mapping); - return mapped === void 0 ? void 0 : mapped == this.value ? this : new StateEffect(this.type, mapped); + h(Fo, "StateEffectType"); + var de = class de1 { + map(e) { + var t = this.type.map(this.value, e); + return t === void 0 ? void 0 : t == this.value ? this : new de(this.type, t); } - is(type) { - return this.type == type; + is(e) { + return this.type == e; } static define() { - var spec = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - return new StateEffectType(spec.map || ((v) => v)); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return new Fo(e.map || ((t) => t)); } - static mapEffects(effects, mapping) { - if (!effects.length) return effects; - var result = []; + static mapEffects(e, t) { + if (!e.length) return e; + var i = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var effect = _step.value; - var mapped = effect.map(mapping); - if (mapped) result.push(mapped); + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + var s = n.map(t); + s && i.push(s); } } catch (err) { _didIteratorError = true; @@ -9805,19 +7813,18 @@ var __generator = } } } - return result; + return i; } - constructor(type, value) { - this.type = type; - this.value = value; + constructor(e, t) { + (this.type = e), (this.value = t); } }; - __name(StateEffect, "StateEffect"); - StateEffect.reconfigure = /* @__PURE__ */ StateEffect.define(); - StateEffect.appendConfig = /* @__PURE__ */ StateEffect.define(); - var Transaction = class Transaction1 { - static create(startState, changes, selection, effects, annotations, scrollIntoView2) { - return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView2); + h(de, "StateEffect"); + de.reconfigure = de.define(); + de.appendConfig = de.define(); + var we = class we1 { + static create(e, t, i, n, s, o) { + return new we(e, t, i, n, s, o); } get newDoc() { return this._doc || (this._doc = this.changes.apply(this.startState.doc)); @@ -9826,17 +7833,16 @@ var __generator = return this.selection || this.startState.selection.map(this.changes); } get state() { - if (!this._state) this.startState.applyTransaction(this); - return this._state; + return this._state || this.startState.applyTransaction(this), this._state; } - annotation(type) { + annotation(e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.annotations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var ann = _step.value; - if (ann.type == type) return ann.value; + var t = _step.value; + if (t.type == e) return t.value; } } catch (err) { _didIteratorError = true; @@ -9852,7 +7858,6 @@ var __generator = } } } - return void 0; } get docChanged() { return !this.changes.empty; @@ -9860,106 +7865,73 @@ var __generator = get reconfigured() { return this.startState.config != this.state.config; } - isUserEvent(event) { - var e = this.annotation(Transaction.userEvent); - return !!(e && (e == event || (e.length > event.length && e.slice(0, event.length) == event && e[event.length] == "."))); - } - constructor(startState, changes, selection, effects, annotations, scrollIntoView2) { - this.startState = startState; - this.changes = changes; - this.selection = selection; - this.effects = effects; - this.annotations = annotations; - this.scrollIntoView = scrollIntoView2; - this._doc = null; - this._state = null; - if (selection) checkSelection(selection, changes.newLength); - if (!annotations.some((a) => a.type == Transaction.time)) this.annotations = annotations.concat(Transaction.time.of(Date.now())); + isUserEvent(e) { + var t = this.annotation(we.userEvent); + return !!(t && (t == e || (t.length > e.length && t.slice(0, e.length) == e && t[e.length] == "."))); } - }; - __name(Transaction, "Transaction"); - Transaction.time = /* @__PURE__ */ Annotation.define(); - Transaction.userEvent = /* @__PURE__ */ Annotation.define(); - Transaction.addToHistory = /* @__PURE__ */ Annotation.define(); - Transaction.remote = /* @__PURE__ */ Annotation.define(); - function joinRanges(a, b) { - var result = []; - for (var iA = 0, iB = 0; ; ) { - var from = void 0, - to = void 0; - if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) { - from = a[iA++]; - to = a[iA++]; - } else if (iB < b.length) { - from = b[iB++]; - to = b[iB++]; - } else return result; - if (!result.length || result[result.length - 1] < from) result.push(from, to); - else if (result[result.length - 1] < to) result[result.length - 1] = to; - } - } - __name(joinRanges, "joinRanges"); - function mergeTransaction(a, b, sequential) { - var _a2; - var mapForA, mapForB, changes; - if (sequential) { - mapForA = b.changes; - mapForB = ChangeSet.empty(b.changes.length); - changes = a.changes.compose(b.changes); - } else { - mapForA = b.changes.map(a.changes); - mapForB = a.changes.mapDesc(b.changes, true); - changes = a.changes.compose(mapForA); + constructor(e, t, i, n, s, o) { + (this.startState = e), (this.changes = t), (this.selection = i), (this.effects = n), (this.annotations = s), (this.scrollIntoView = o), (this._doc = null), (this._state = null), i && _0(i, t.newLength), s.some((u) => u.type == we.time) || (this.annotations = s.concat(we.time.of(Date.now()))); } - return { - changes, - selection: b.selection ? b.selection.map(mapForB) : (_a2 = a.selection) === null || _a2 === void 0 ? void 0 : _a2.map(mapForA), - effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)), - annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations, - scrollIntoView: a.scrollIntoView || b.scrollIntoView, - }; - } - __name(mergeTransaction, "mergeTransaction"); - function resolveTransactionInner(state, spec, docSize) { - var sel = spec.selection, - annotations = asArray(spec.annotations); - if (spec.userEvent) annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent)); - return { - changes: spec.changes instanceof ChangeSet ? spec.changes : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)), - selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)), - effects: asArray(spec.effects), - annotations, - scrollIntoView: !!spec.scrollIntoView, - }; + }; + h(we, "Transaction"); + we.time = ut.define(); + we.userEvent = ut.define(); + we.addToHistory = ut.define(); + we.remote = ut.define(); + function fv(r, e) { + var t = []; + for (var i = 0, n = 0; ; ) { + var s = void 0, + o = void 0; + if (i < r.length && (n == e.length || e[n] >= r[i])) (s = r[i++]), (o = r[i++]); + else if (n < e.length) (s = e[n++]), (o = e[n++]); + else return t; + !t.length || t[t.length - 1] < s ? t.push(s, o) : t[t.length - 1] < o && (t[t.length - 1] = o); + } + } + h(fv, "joinRanges"); + function q0(r, e, t) { + var i; + var n, s, o; + return ( + t ? ((n = e.changes), (s = ke.empty(e.changes.length)), (o = r.changes.compose(e.changes))) : ((n = e.changes.map(r.changes)), (s = r.changes.mapDesc(e.changes, !0)), (o = r.changes.compose(n))), + { changes: o, selection: e.selection ? e.selection.map(s) : (i = r.selection) === null || i === void 0 ? void 0 : i.map(n), effects: de.mapEffects(r.effects, n).concat(de.mapEffects(e.effects, s)), annotations: r.annotations.length ? r.annotations.concat(e.annotations) : e.annotations, scrollIntoView: r.scrollIntoView || e.scrollIntoView } + ); } - __name(resolveTransactionInner, "resolveTransactionInner"); - function resolveTransaction(state, specs, filter) { - var s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length); - if (specs.length && specs[0].filter === false) filter = false; - for (var i = 1; i < specs.length; i++) { - if (specs[i].filter === false) filter = false; - var seq = !!specs[i].sequential; - s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq); - } - var tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView); - return extendTransaction(filter ? filterTransaction(tr) : tr); - } - __name(resolveTransaction, "resolveTransaction"); - function filterTransaction(tr) { - var state = tr.startState; - var result = true; + h(q0, "mergeTransaction"); + function Pa(r, e, t) { + var i = e.selection, + n = _r(e.annotations); + return e.userEvent && (n = n.concat(we.userEvent.of(e.userEvent))), { changes: e.changes instanceof ke ? e.changes : ke.of(e.changes || [], t, r.facet(R0)), selection: i && (i instanceof z ? i : z.single(i.anchor, i.head)), effects: _r(e.effects), annotations: n, scrollIntoView: !!e.scrollIntoView }; + } + h(Pa, "resolveTransactionInner"); + function I0(r, e, t) { + var i = Pa(r, e.length ? e[0] : {}, r.doc.length); + e.length && e[0].filter === !1 && (t = !1); + for (var s = 1; s < e.length; s++) { + e[s].filter === !1 && (t = !1); + var o = !!e[s].sequential; + i = q0(i, Pa(r, e[s], o ? i.changes.newLength : r.doc.length), o); + } + var n = we.create(r, i.changes, i.selection, i.effects, i.annotations, i.scrollIntoView); + return pv(t ? dv(n) : n); + } + h(I0, "resolveTransaction"); + function dv(r) { + var e = r.startState, + t = !0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = state.facet(changeFilter)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var filter = _step.value; - var value = filter(tr); - if (value === false) { - result = false; + for (var _iterator = e.facet($0)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + var s = n(r); + if (s === !1) { + t = !1; break; } - if (Array.isArray(value)) result = result === true ? value : joinRanges(result, value); + Array.isArray(s) && (t = t === !0 ? s : fv(t, s)); } } catch (err) { _didIteratorError = true; @@ -9975,114 +7947,92 @@ var __generator = } } } - if (result !== true) { - var changes, back; - if (result === false) { - back = tr.changes.invertedDesc; - changes = ChangeSet.empty(state.doc.length); - } else { - var filtered = tr.changes.filter(result); - changes = filtered.changes; - back = filtered.filtered.mapDesc(filtered.changes).invertedDesc; - } - tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView); - } - var filters = state.facet(transactionFilter); - for (var i = filters.length - 1; i >= 0; i--) { - var filtered1 = filters[i](tr); - if (filtered1 instanceof Transaction) tr = filtered1; - else if (Array.isArray(filtered1) && filtered1.length == 1 && filtered1[0] instanceof Transaction) tr = filtered1[0]; - else tr = resolveTransaction(state, asArray(filtered1), false); - } - return tr; - } - __name(filterTransaction, "filterTransaction"); - function extendTransaction(tr) { - var state = tr.startState, - extenders = state.facet(transactionExtender), - spec = tr; - for (var i = extenders.length - 1; i >= 0; i--) { - var extension = extenders[i](tr); - if (extension && Object.keys(extension).length) spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true); - } - return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView); - } - __name(extendTransaction, "extendTransaction"); - var none = []; - function asArray(value) { - return value == null ? none : Array.isArray(value) ? value : [value]; - } - __name(asArray, "asArray"); - var CharCategory = /* @__PURE__ */ (function (CharCategory2) { - CharCategory2[(CharCategory2["Word"] = 0)] = "Word"; - CharCategory2[(CharCategory2["Space"] = 1)] = "Space"; - CharCategory2[(CharCategory2["Other"] = 2)] = "Other"; - return CharCategory2; - })(CharCategory || (CharCategory = {})); - var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; - var wordChar; + if (t !== !0) { + var n1, s1; + if (t === !1) (s1 = r.changes.invertedDesc), (n1 = ke.empty(e.doc.length)); + else { + var o = r.changes.filter(t); + (n1 = o.changes), (s1 = o.filtered.mapDesc(o.changes).invertedDesc); + } + r = we.create(e, n1, r.selection && r.selection.map(s1), de.mapEffects(r.effects, s1), r.annotations, r.scrollIntoView); + } + var i = e.facet(M0); + for (var n2 = i.length - 1; n2 >= 0; n2--) { + var s2 = i[n2](r); + s2 instanceof we ? (r = s2) : Array.isArray(s2) && s2.length == 1 && s2[0] instanceof we ? (r = s2[0]) : (r = I0(e, _r(s2), !1)); + } + return r; + } + h(dv, "filterTransaction"); + function pv(r) { + var e = r.startState, + t = e.facet(P0), + i = r; + for (var n = t.length - 1; n >= 0; n--) { + var s = t[n](r); + s && Object.keys(s).length && (i = q0(i, Pa(e, s, r.changes.newLength), !0)); + } + return i == r ? r : we.create(e, r.changes, r.selection, i.effects, i.annotations, i.scrollIntoView); + } + h(pv, "extendTransaction"); + var mv = []; + function _r(r) { + return r == null ? mv : Array.isArray(r) ? r : [r]; + } + h(_r, "asArray"); + var St = (function (r) { + return (r[(r.Word = 0)] = "Word"), (r[(r.Space = 1)] = "Space"), (r[(r.Other = 2)] = "Other"), r; + })(St || (St = {})), + gv = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/, + La; try { - wordChar = /* @__PURE__ */ new RegExp("[\\p{Alphabetic}\\p{Number}_]", "u"); - } catch (_) {} - function hasWordChar(str) { - if (wordChar) return wordChar.test(str); - for (var i = 0; i < str.length; i++) { - var ch = str[i]; - if (/\w/.test(ch) || (ch > "\x80" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))) return true; - } - return false; - } - __name(hasWordChar, "hasWordChar"); - function makeCategorizer(wordChars) { - return (char) => { - if (!/\S/.test(char)) return CharCategory.Space; - if (hasWordChar(char)) return CharCategory.Word; - for (var i = 0; i < wordChars.length; i++) if (char.indexOf(wordChars[i]) > -1) return CharCategory.Word; - return CharCategory.Other; + La = new RegExp("[\\p{Alphabetic}\\p{Number}_]", "u"); + } catch (e) {} + function Dv(r) { + if (La) return La.test(r); + for (var e = 0; e < r.length; e++) { + var t = r[e]; + if (/\w/.test(t) || (t > "\x80" && (t.toUpperCase() != t.toLowerCase() || gv.test(t)))) return !0; + } + return !1; + } + h(Dv, "hasWordChar"); + function bv(r) { + return (e) => { + if (!/\S/.test(e)) return St.Space; + if (Dv(e)) return St.Word; + for (var t = 0; t < r.length; t++) if (e.indexOf(r[t]) > -1) return St.Word; + return St.Other; }; } - __name(makeCategorizer, "makeCategorizer"); - var EditorState = class EditorState1 { - field(field) { - var require2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - var addr = this.config.address[field.id]; - if (addr == null) { - if (require2) throw new RangeError("Field is not present in this state"); - return void 0; + h(bv, "makeCategorizer"); + var ae = class ae1 { + field(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + var i = this.config.address[e.id]; + if (i == null) { + if (t) throw new RangeError("Field is not present in this state"); + return; } - ensureAddr(this, addr); - return getAddr(this, addr); + return On(this, i), Co(this, i); } update() { - for (var _len = arguments.length, specs = new Array(_len), _key = 0; _key < _len; _key++) { - specs[_key] = arguments[_key]; + for (var _len = arguments.length, e = new Array(_len), _key = 0; _key < _len; _key++) { + e[_key] = arguments[_key]; } - return resolveTransaction(this, specs, true); + return I0(this, e, !0); } - applyTransaction(tr) { - var conf = this.config, - base2 = conf.base, - compartments = conf.compartments; + applyTransaction(e) { + var t = this.config, + i = t.base, + n = t.compartments; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = tr.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var effect = _step.value; - if (effect.is(Compartment.reconfigure)) { - if (conf) { - compartments = /* @__PURE__ */ new Map(); - conf.compartments.forEach((val, key) => compartments.set(key, val)); - conf = null; - } - compartments.set(effect.value.compartment, effect.value.extension); - } else if (effect.is(StateEffect.reconfigure)) { - conf = null; - base2 = effect.value; - } else if (effect.is(StateEffect.appendConfig)) { - conf = null; - base2 = asArray(base2).concat(effect.value); - } + for (var _iterator = e.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var o = _step.value; + o.is(oi.reconfigure) ? (t && ((n = new Map()), t.compartments.forEach((u, l) => n.set(l, u)), (t = null)), n.set(o.value.compartment, o.value.extension)) : o.is(de.reconfigure) ? ((t = null), (i = o.value)) : o.is(de.appendConfig) && ((t = null), (i = _r(i).concat(o.value))); } } catch (err) { _didIteratorError = true; @@ -10098,143 +8048,120 @@ var __generator = } } } - var startValues; - if (!conf) { - conf = Configuration.resolve(base2, compartments, this); - var intermediateState = new EditorState( - conf, - this.doc, - this.selection, - conf.dynamicSlots.map(() => null), - (state, slot) => slot.reconfigure(state, this), - null - ); - startValues = intermediateState.values; - } else { - startValues = tr.startState.values.slice(); - } - new EditorState(conf, tr.newDoc, tr.newSelection, startValues, (state, slot) => slot.update(state, tr), tr); - } - replaceSelection(text2) { - if (typeof text2 == "string") text2 = this.toText(text2); - return this.changeByRange((range) => ({ - changes: { - from: range.from, - to: range.to, - insert: text2, - }, - range: EditorSelection.cursor(range.from + text2.length), - })); - } - changeByRange(f) { - var sel = this.selection; - var result1 = f(sel.ranges[0]); - var changes = this.changes(result1.changes), - ranges = [result1.range]; - var effects = asArray(result1.effects); - for (var i = 1; i < sel.ranges.length; i++) { - var result = f(sel.ranges[i]); - var newChanges = this.changes(result.changes), - newMapped = newChanges.map(changes); - for (var j = 0; j < i; j++) ranges[j] = ranges[j].map(newMapped); - var mapBy = changes.mapDesc(newChanges, true); - ranges.push(result.range.map(mapBy)); - changes = changes.compose(newMapped); - effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy)); - } - return { - changes, - selection: EditorSelection.create(ranges, sel.mainIndex), - effects, - }; + var s; + t + ? (s = e.startState.values.slice()) + : ((t = Gi.resolve(i, n, this)), + (s = new ae( + t, + this.doc, + this.selection, + t.dynamicSlots.map(() => null), + (u, l) => l.reconfigure(u, this), + null + ).values)), + new ae(t, e.newDoc, e.newSelection, s, (o, u) => u.update(o, e), e); + } + replaceSelection(e) { + return typeof e == "string" && (e = this.toText(e)), this.changeByRange((t) => ({ changes: { from: t.from, to: t.to, insert: e }, range: z.cursor(t.from + e.length) })); + } + changeByRange(e) { + var t = this.selection, + i = e(t.ranges[0]), + n = this.changes(i.changes), + s = [i.range], + o = _r(i.effects); + for (var u = 1; u < t.ranges.length; u++) { + var l = e(t.ranges[u]), + a = this.changes(l.changes), + c = a.map(n); + for (var d = 0; d < u; d++) s[d] = s[d].map(c); + var f = n.mapDesc(a, !0); + s.push(l.range.map(f)), (n = n.compose(c)), (o = de.mapEffects(o, c).concat(de.mapEffects(_r(l.effects), f))); + } + return { changes: n, selection: z.create(s, t.mainIndex), effects: o }; } changes() { - var spec = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - if (spec instanceof ChangeSet) return spec; - return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator)); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; + return e instanceof ke ? e : ke.of(e, this.doc.length, this.facet(ae.lineSeparator)); } - toText(string2) { - return Text.of(string2.split(this.facet(EditorState.lineSeparator) || DefaultSplit)); + toText(e) { + return ce.of(e.split(this.facet(ae.lineSeparator) || Ta)); } sliceDoc() { - var from = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0, - to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.doc.length; - return this.doc.sliceString(from, to, this.lineBreak); - } - facet(facet) { - var addr = this.config.address[facet.id]; - if (addr == null) return facet.default; - ensureAddr(this, addr); - return getAddr(this, addr); - } - toJSON(fields) { - var result = { - doc: this.sliceDoc(), - selection: this.selection.toJSON(), - }; - if (fields) - for (var prop in fields) { - var value = fields[prop]; - if (value instanceof StateField && this.config.address[value.id] != null) result[prop] = value.spec.toJSON(this.field(fields[prop]), this); - } - return result; - } - static fromJSON(json) { - var _loop = function (prop) { - if (Object.prototype.hasOwnProperty.call(json, prop)) { - var field = fields[prop], - value = json[prop]; - fieldInit.push(field.init((state) => field.spec.fromJSON(value, state))); - } - }; - var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, - fields = arguments.length > 2 ? arguments[2] : void 0; - if (!json || typeof json.doc != "string") throw new RangeError("Invalid JSON representation for EditorState"); - var fieldInit = []; - if (fields) for (var prop in fields) _loop(prop); - return EditorState.create({ - doc: json.doc, - selection: EditorSelection.fromJSON(json.selection), - extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit, - }); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0, + t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.doc.length; + return this.doc.sliceString(e, t, this.lineBreak); + } + facet(e) { + var t = this.config.address[e.id]; + return t == null ? e.default : (On(this, t), Co(this, t)); + } + toJSON(e) { + var t = { doc: this.sliceDoc(), selection: this.selection.toJSON() }; + if (e) + for (var i in e) { + var n = e[i]; + n instanceof $e && this.config.address[n.id] != null && (t[i] = n.spec.toJSON(this.field(e[i]), this)); + } + return t; + } + static fromJSON(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, + i = arguments.length > 2 ? arguments[2] : void 0; + if (!e || typeof e.doc != "string") throw new RangeError("Invalid JSON representation for EditorState"); + var n = []; + if (i) { + var _loop = function (s) { + if (Object.prototype.hasOwnProperty.call(e, s)) { + var o = i[s], + u = e[s]; + n.push(o.init((l) => o.spec.fromJSON(u, l))); + } + }; + for (var s in i) _loop(s); + } + return ae.create({ doc: e.doc, selection: z.fromJSON(e.selection), extensions: t.extensions ? n.concat([t.extensions]) : n }); } static create() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - var configuration = Configuration.resolve(config.extensions || [], /* @__PURE__ */ new Map()); - var doc2 = config.doc instanceof Text ? config.doc : Text.of((config.doc || "").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit)); - var selection = !config.selection ? EditorSelection.single(0) : config.selection instanceof EditorSelection ? config.selection : EditorSelection.single(config.selection.anchor, config.selection.head); - checkSelection(selection, doc2.length); - if (!configuration.staticFacet(allowMultipleSelections)) selection = selection.asSingle(); - return new EditorState( - configuration, - doc2, - selection, - configuration.dynamicSlots.map(() => null), - (state, slot) => slot.create(state), - null + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var t = Gi.resolve(e.extensions || [], new Map()), + i = e.doc instanceof ce ? e.doc : ce.of((e.doc || "").split(t.staticFacet(ae.lineSeparator) || Ta)), + n = e.selection ? (e.selection instanceof z ? e.selection : z.single(e.selection.anchor, e.selection.head)) : z.single(0); + return ( + _0(n, i.length), + t.staticFacet(T0) || (n = n.asSingle()), + new ae( + t, + i, + n, + t.dynamicSlots.map(() => null), + (s, o) => o.create(s), + null + ) ); } get tabSize() { - return this.facet(EditorState.tabSize); + return this.facet(ae.tabSize); } get lineBreak() { - return this.facet(EditorState.lineSeparator) || "\n"; + return this.facet(ae.lineSeparator) || "\n"; } get readOnly() { - return this.facet(readOnly); + return this.facet(L0); } - phrase(phrase) { - for (var _len = arguments.length, insert3 = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - insert3[_key - 1] = arguments[_key]; + phrase(e) { + for (var _len = arguments.length, t = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + t[_key - 1] = arguments[_key]; } var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = this.facet(EditorState.phrases)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var map = _step.value; - if (Object.prototype.hasOwnProperty.call(map, phrase)) { - phrase = map[phrase]; + for (var _iterator = this.facet(ae.phrases)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + if (Object.prototype.hasOwnProperty.call(i, e)) { + e = i[e]; break; } } @@ -10252,119 +8179,113 @@ var __generator = } } } - if (insert3.length) - phrase = phrase.replace(/\$(\$|\d*)/g, (m, i) => { - if (i == "$") return "$"; - var n = +(i || 1); - return !n || n > insert3.length ? m : insert3[n - 1]; - }); - return phrase; + return ( + t.length && + (e = e.replace(/\$(\$|\d*)/g, (i, n) => { + if (n == "$") return "$"; + var s = +(n || 1); + return !s || s > t.length ? i : t[s - 1]; + })), + e + ); } - languageDataAt(name2, pos) { - var side = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1; - var values = []; + languageDataAt(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1; + var n = []; var _iteratorNormalCompletion = true, _didIteratorError = false, - _iteratorError = undefined; + _iteratorError = undefined, + _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; try { - for (var _iterator = this.facet(languageData)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var provider = _step.value; - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; + for (var _iterator = this.facet(O0)[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var s = _step.value; try { - for (var _iterator1 = provider(this, pos, side)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var result = _step1.value; - if (Object.prototype.hasOwnProperty.call(result, name2)) values.push(result[name2]); + for (var _iterator1 = s(this, t, i)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { + var o = _step1.value; + Object.prototype.hasOwnProperty.call(o, e) && n.push(o[e]); } } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; + _didIteratorError = true; + _iteratorError = err; } finally { try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + if (!_iteratorNormalCompletion && _iterator1.return != null) { _iterator1.return(); } } finally { - if (_didIteratorError1) { - throw _iteratorError1; + if (_didIteratorError) { + throw _iteratorError; } } } } } catch (err) { - _didIteratorError = true; - _iteratorError = err; + _didIteratorError1 = true; + _iteratorError1 = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return != null) { + if (!_iteratorNormalCompletion1 && _iterator.return != null) { _iterator.return(); } } finally { - if (_didIteratorError) { - throw _iteratorError; + if (_didIteratorError1) { + throw _iteratorError1; } } } - return values; - } - charCategorizer(at) { - return makeCategorizer(this.languageDataAt("wordChars", at).join("")); - } - wordAt(pos) { - var _this_doc_lineAt = this.doc.lineAt(pos), - text2 = _this_doc_lineAt.text, - from = _this_doc_lineAt.from, - length = _this_doc_lineAt.length; - var cat = this.charCategorizer(pos); - var start = pos - from, - end = pos - from; - while (start > 0) { - var prev = findClusterBreak(text2, start, false); - if (cat(text2.slice(prev, start)) != CharCategory.Word) break; - start = prev; - } - while (end < length) { - var next = findClusterBreak(text2, end); - if (cat(text2.slice(end, next)) != CharCategory.Word) break; - end = next; - } - return start == end ? null : EditorSelection.range(start + from, end + from); - } - constructor(config, doc2, selection, values, computeSlot, tr) { - this.config = config; - this.doc = doc2; - this.selection = selection; - this.values = values; - this.status = config.statusTemplate.slice(); - this.computeSlot = computeSlot; - if (tr) tr._state = this; - for (var i = 0; i < this.config.dynamicSlots.length; i++) ensureAddr(this, i << 1); + return n; + } + charCategorizer(e) { + return bv(this.languageDataAt("wordChars", e).join("")); + } + wordAt(e) { + var _this_doc_lineAt = this.doc.lineAt(e), + t = _this_doc_lineAt.text, + i = _this_doc_lineAt.from, + n = _this_doc_lineAt.length, + s = this.charCategorizer(e), + o = e - i, + u = e - i; + for (; o > 0; ) { + var l = Bt(t, o, !1); + if (s(t.slice(l, o)) != St.Word) break; + o = l; + } + for (; u < n; ) { + var l1 = Bt(t, u); + if (s(t.slice(u, l1)) != St.Word) break; + u = l1; + } + return o == u ? null : z.range(o + i, u + i); + } + constructor(e, t, i, n, s, o) { + (this.config = e), (this.doc = t), (this.selection = i), (this.values = n), (this.status = e.statusTemplate.slice()), (this.computeSlot = s), o && (o._state = this); + for (var u = 0; u < this.config.dynamicSlots.length; u++) On(this, u << 1); this.computeSlot = null; } }; - __name(EditorState, "EditorState"); - EditorState.allowMultipleSelections = allowMultipleSelections; - EditorState.tabSize = /* @__PURE__ */ Facet.define({ - combine: (values) => (values.length ? values[0] : 4), - }); - EditorState.lineSeparator = lineSeparator; - EditorState.readOnly = readOnly; - EditorState.phrases = /* @__PURE__ */ Facet.define({ - compare(a, b) { - var kA = Object.keys(a), - kB = Object.keys(b); - return kA.length == kB.length && kA.every((k) => a[k] == b[k]); + h(ae, "EditorState"); + ae.allowMultipleSelections = T0; + ae.tabSize = H.define({ combine: (r) => (r.length ? r[0] : 4) }); + ae.lineSeparator = R0; + ae.readOnly = L0; + ae.phrases = H.define({ + compare(r, e) { + var t = Object.keys(r), + i = Object.keys(e); + return t.length == i.length && t.every((n) => r[n] == e[n]); }, }); - EditorState.languageData = languageData; - EditorState.changeFilter = changeFilter; - EditorState.transactionFilter = transactionFilter; - EditorState.transactionExtender = transactionExtender; - Compartment.reconfigure = /* @__PURE__ */ StateEffect.define(); - function combineConfig(configs, defaults) { - var combine = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - var result = {}; + ae.languageData = O0; + ae.changeFilter = $0; + ae.transactionFilter = M0; + ae.transactionExtender = P0; + oi.reconfigure = de.define(); + function ui(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var i = {}; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined, @@ -10372,17 +8293,17 @@ var __generator = _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator = configs[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { - var config = _step.value; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var n = _step.value; try { - for (var _iterator1 = Object.keys(config)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { - var key = _step1.value; - var value = config[key], - current = result[key]; - if (current === void 0) result[key] = value; - else if (current === value || value === void 0); - else if (Object.hasOwnProperty.call(combine, key)) result[key] = combine[key](current, value); - else throw new Error("Config merge conflict for field " + key); + for (var _iterator1 = Object.keys(n)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { + var s = _step1.value; + var o = n[s], + u = i[s]; + if (u === void 0) i[s] = o; + else if (!(u === o || o === void 0)) + if (Object.hasOwnProperty.call(t, s)) i[s] = t[s](u, o); + else throw new Error("Config merge conflict for field " + s); } } catch (err) { _didIteratorError = true; @@ -10413,120 +8334,97 @@ var __generator = } } } - for (var key1 in defaults) if (result[key1] === void 0) result[key1] = defaults[key1]; - return result; + for (var n1 in e) i[n1] === void 0 && (i[n1] = e[n1]); + return i; } - __name(combineConfig, "combineConfig"); - var RangeValue = class RangeValue { - eq(other) { - return this == other; + h(ui, "combineConfig"); + var zt = class zt { + eq(e) { + return this == e; } - range(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : from; - return Range.create(from, to, this); + range(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + return ki.create(e, t, this); } }; - __name(RangeValue, "RangeValue"); - RangeValue.prototype.startSide = RangeValue.prototype.endSide = 0; - RangeValue.prototype.point = false; - RangeValue.prototype.mapMode = MapMode.TrackDel; - var Range = class Range1 { - static create(from, to, value) { - return new Range(from, to, value); - } - constructor(from, to, value) { - this.from = from; - this.to = to; - this.value = value; + h(zt, "RangeValue"); + zt.prototype.startSide = zt.prototype.endSide = 0; + zt.prototype.point = !1; + zt.prototype.mapMode = Xe.TrackDel; + var ki = class ki1 { + static create(e, t, i) { + return new ki(e, t, i); + } + constructor(e, t, i) { + (this.from = e), (this.to = t), (this.value = i); } }; - __name(Range, "Range"); - function cmpRange(a, b) { - return a.from - b.from || a.value.startSide - b.value.startSide; + h(ki, "Range"); + function qa(r, e) { + return r.from - e.from || r.value.startSide - e.value.startSide; } - __name(cmpRange, "cmpRange"); - var Chunk = class Chunk1 { + h(qa, "cmpRange"); + var Or = class Or1 { get length() { return this.to[this.to.length - 1]; } - findIndex(pos, side, end) { - var startAt = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; - var arr = end ? this.to : this.from; - for (var lo = startAt, hi = arr.length; ; ) { - if (lo == hi) return lo; - var mid = (lo + hi) >> 1; - var diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side; - if (mid == lo) return diff >= 0 ? lo : hi; - if (diff >= 0) hi = mid; - else lo = mid + 1; - } - } - between(offset, from, to, f) { - for (var i = this.findIndex(from, -1e9, true), e = this.findIndex(to, 1e9, false, i); i < e; i++) if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false) return false; - } - map(offset, changes) { - var value = [], - from = [], - to = [], - newPos = -1, - maxPoint = -1; - for (var i = 0; i < this.value.length; i++) { - var val = this.value[i], - curFrom = this.from[i] + offset, - curTo = this.to[i] + offset, - newFrom = void 0, - newTo = void 0; - if (curFrom == curTo) { - var mapped = changes.mapPos(curFrom, val.startSide, val.mapMode); - if (mapped == null) continue; - newFrom = newTo = mapped; - if (val.startSide != val.endSide) { - newTo = changes.mapPos(curFrom, val.endSide); - if (newTo < newFrom) continue; - } - } else { - newFrom = changes.mapPos(curFrom, val.startSide); - newTo = changes.mapPos(curTo, val.endSide); - if (newFrom > newTo || (newFrom == newTo && val.startSide > 0 && val.endSide <= 0)) continue; - } - if ((newTo - newFrom || val.endSide - val.startSide) < 0) continue; - if (newPos < 0) newPos = newFrom; - if (val.point) maxPoint = Math.max(maxPoint, newTo - newFrom); - value.push(val); - from.push(newFrom - newPos); - to.push(newTo - newPos); - } - return { - mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, - pos: newPos, - }; - } - constructor(from, to, value, maxPoint) { - this.from = from; - this.to = to; - this.value = value; - this.maxPoint = maxPoint; + findIndex(e, t, i) { + var n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; + var s = i ? this.to : this.from; + for (var o = n, u = s.length; ; ) { + if (o == u) return o; + var l = (o + u) >> 1, + a = s[l] - e || (i ? this.value[l].endSide : this.value[l].startSide) - t; + if (l == o) return a >= 0 ? o : u; + a >= 0 ? (u = l) : (o = l + 1); + } + } + between(e, t, i, n) { + for (var s = this.findIndex(t, -1e9, !0), o = this.findIndex(i, 1e9, !1, s); s < o; s++) if (n(this.from[s] + e, this.to[s] + e, this.value[s]) === !1) return !1; + } + map(e, t) { + var i = [], + n = [], + s = [], + o = -1, + u = -1; + for (var l = 0; l < this.value.length; l++) { + var a = this.value[l], + c = this.from[l] + e, + f = this.to[l] + e, + d = void 0, + p = void 0; + if (c == f) { + var m = t.mapPos(c, a.startSide, a.mapMode); + if (m == null || ((d = p = m), a.startSide != a.endSide && ((p = t.mapPos(c, a.endSide)), p < d))) continue; + } else if (((d = t.mapPos(c, a.startSide)), (p = t.mapPos(f, a.endSide)), d > p || (d == p && a.startSide > 0 && a.endSide <= 0))) continue; + (p - d || a.endSide - a.startSide) < 0 || (o < 0 && (o = d), a.point && (u = Math.max(u, p - d)), i.push(a), n.push(d - o), s.push(p - o)); + } + return { mapped: i.length ? new Or(n, s, i, u) : null, pos: o }; + } + constructor(e, t, i, n) { + (this.from = e), (this.to = t), (this.value = i), (this.maxPoint = n); } }; - __name(Chunk, "Chunk"); - var RangeSet = class RangeSet1 { - static create(chunkPos, chunk, nextLayer, maxPoint) { - return new RangeSet(chunkPos, chunk, nextLayer, maxPoint); + h(Or, "Chunk"); + var pe = class pe1 { + static create(e, t, i, n) { + return new pe(e, t, i, n); } get length() { - var last = this.chunk.length - 1; - return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length); + var e = this.chunk.length - 1; + return e < 0 ? 0 : Math.max(this.chunkEnd(e), this.nextLayer.length); } get size() { if (this.isEmpty) return 0; - var size = this.nextLayer.size; + var e = this.nextLayer.size; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.chunk[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var chunk = _step.value; - size += chunk.value.length; + var t = _step.value; + e += t.value.length; } } catch (err) { _didIteratorError = true; @@ -10542,158 +8440,130 @@ var __generator = } } } - return size; - } - chunkEnd(index) { - return this.chunkPos[index] + this.chunk[index].length; - } - update(updateSpec) { - var tmp = updateSpec.add, - add2 = tmp === void 0 ? [] : tmp, - _updateSpec_sort = updateSpec.sort, - sort = _updateSpec_sort === void 0 ? false : _updateSpec_sort, - _updateSpec_filterFrom = updateSpec.filterFrom, - filterFrom = _updateSpec_filterFrom === void 0 ? 0 : _updateSpec_filterFrom, - _updateSpec_filterTo = updateSpec.filterTo, - filterTo = _updateSpec_filterTo === void 0 ? this.length : _updateSpec_filterTo; - var filter = updateSpec.filter; - if (add2.length == 0 && !filter) return this; - if (sort) add2 = add2.slice().sort(cmpRange); - if (this.isEmpty) return add2.length ? RangeSet.of(add2) : this; - var cur = new LayerCursor(this, null, -1).goto(0), - i = 0, - spill = []; - var builder = new RangeSetBuilder(); - while (cur.value || i < add2.length) { - if (i < add2.length && (cur.from - add2[i].from || cur.startSide - add2[i].value.startSide) >= 0) { - var range = add2[i++]; - if (!builder.addInner(range.from, range.to, range.value)) spill.push(range); - } else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length && (i == add2.length || this.chunkEnd(cur.chunkIndex) < add2[i].from) && (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) && builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) { - cur.nextChunk(); - } else { - if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) { - if (!builder.addInner(cur.from, cur.to, cur.value)) spill.push(Range.create(cur.from, cur.to, cur.value)); - } - cur.next(); - } + return e; + } + chunkEnd(e) { + return this.chunkPos[e] + this.chunk[e].length; + } + update(e) { + var tmp = e.add, + t = tmp === void 0 ? [] : tmp, + tmp1 = e.sort, + i = tmp1 === void 0 ? !1 : tmp1, + tmp2 = e.filterFrom, + n = tmp2 === void 0 ? 0 : tmp2, + tmp3 = e.filterTo, + s = tmp3 === void 0 ? this.length : tmp3, + o = e.filter; + if (t.length == 0 && !o) return this; + if ((i && (t = t.slice().sort(qa)), this.isEmpty)) return t.length ? pe.of(t) : this; + var u = new Tn(this, null, -1).goto(0), + l = 0, + a = [], + c = new Wt(); + for (; u.value || l < t.length; ) + if (l < t.length && (u.from - t[l].from || u.startSide - t[l].value.startSide) >= 0) { + var f = t[l++]; + c.addInner(f.from, f.to, f.value) || a.push(f); + } else + u.rangeIndex == 1 && u.chunkIndex < this.chunk.length && (l == t.length || this.chunkEnd(u.chunkIndex) < t[l].from) && (!o || n > this.chunkEnd(u.chunkIndex) || s < this.chunkPos[u.chunkIndex]) && c.addChunk(this.chunkPos[u.chunkIndex], this.chunk[u.chunkIndex]) + ? u.nextChunk() + : ((!o || n > u.to || s < u.from || o(u.from, u.to, u.value)) && (c.addInner(u.from, u.to, u.value) || a.push(ki.create(u.from, u.to, u.value))), u.next()); + return c.finishInner(this.nextLayer.isEmpty && !a.length ? pe.empty : this.nextLayer.update({ add: a, filter: o, filterFrom: n, filterTo: s })); + } + map(e) { + if (e.empty || this.isEmpty) return this; + var t = [], + i = [], + n = -1; + for (var o = 0; o < this.chunk.length; o++) { + var u = this.chunkPos[o], + l = this.chunk[o], + a = e.touchesRange(u, u + l.length); + if (a === !1) (n = Math.max(n, l.maxPoint)), t.push(l), i.push(e.mapPos(u)); + else if (a === !0) { + var _l_map = l.map(u, e), + c = _l_map.mapped, + f = _l_map.pos; + c && ((n = Math.max(n, c.maxPoint)), t.push(c), i.push(f)); + } + } + var s = this.nextLayer.map(e); + return t.length == 0 ? s : new pe(i, t, s || pe.empty, n); + } + between(e, t, i) { + if (!this.isEmpty) { + for (var n = 0; n < this.chunk.length; n++) { + var s = this.chunkPos[n], + o = this.chunk[n]; + if (t >= s && e <= s + o.length && o.between(s, e - s, t - s, i) === !1) return; + } + this.nextLayer.between(e, t, i); } - return builder.finishInner( - this.nextLayer.isEmpty && !spill.length - ? RangeSet.empty - : this.nextLayer.update({ - add: spill, - filter, - filterFrom, - filterTo, - }) - ); - } - map(changes) { - if (changes.empty || this.isEmpty) return this; - var chunks = [], - chunkPos = [], - maxPoint = -1; - for (var i = 0; i < this.chunk.length; i++) { - var start = this.chunkPos[i], - chunk = this.chunk[i]; - var touch = changes.touchesRange(start, start + chunk.length); - if (touch === false) { - maxPoint = Math.max(maxPoint, chunk.maxPoint); - chunks.push(chunk); - chunkPos.push(changes.mapPos(start)); - } else if (touch === true) { - var _chunk_map = chunk.map(start, changes), - mapped = _chunk_map.mapped, - pos = _chunk_map.pos; - if (mapped) { - maxPoint = Math.max(maxPoint, mapped.maxPoint); - chunks.push(mapped); - chunkPos.push(pos); - } - } - } - var next = this.nextLayer.map(changes); - return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint); - } - between(from, to, f) { - if (this.isEmpty) return; - for (var i = 0; i < this.chunk.length; i++) { - var start = this.chunkPos[i], - chunk = this.chunk[i]; - if (to >= start && from <= start + chunk.length && chunk.between(start, from - start, to - start, f) === false) return; - } - this.nextLayer.between(from, to, f); } iter() { - var from = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - return HeapCursor.from([this]).goto(from); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + return wi.from([this]).goto(e); } get isEmpty() { return this.nextLayer == this; } - static iter(sets) { - var from = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - return HeapCursor.from(sets).goto(from); - } - static compare(oldSets, newSets, textDiff, comparator) { - var minPointSize = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; - var a = oldSets.filter((set) => set.maxPoint > 0 || (!set.isEmpty && set.maxPoint >= minPointSize)); - var b = newSets.filter((set) => set.maxPoint > 0 || (!set.isEmpty && set.maxPoint >= minPointSize)); - var sharedChunks = findSharedChunks(a, b, textDiff); - var sideA = new SpanCursor(a, sharedChunks, minPointSize); - var sideB = new SpanCursor(b, sharedChunks, minPointSize); - textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator)); - if (textDiff.empty && textDiff.length == 0) compare(sideA, 0, sideB, 0, 0, comparator); - } - static eq(oldSets, newSets) { - var from = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, - to = arguments.length > 3 ? arguments[3] : void 0; - if (to == null) to = 1e9 - 1; - var a = oldSets.filter((set) => !set.isEmpty && newSets.indexOf(set) < 0); - var b = newSets.filter((set) => !set.isEmpty && oldSets.indexOf(set) < 0); - if (a.length != b.length) return false; - if (!a.length) return true; - var sharedChunks = findSharedChunks(a, b); - var sideA = new SpanCursor(a, sharedChunks, 0).goto(from), - sideB = new SpanCursor(b, sharedChunks, 0).goto(from); + static iter(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return wi.from(e).goto(t); + } + static compare(e, t, i, n) { + var s = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; + var o = e.filter((f) => f.maxPoint > 0 || (!f.isEmpty && f.maxPoint >= s)), + u = t.filter((f) => f.maxPoint > 0 || (!f.isEmpty && f.maxPoint >= s)), + l = E0(o, u, i), + a = new Ci(o, l, s), + c = new Ci(u, l, s); + i.iterGaps((f, d, p) => v0(a, f, c, d, p, n)), i.empty && i.length == 0 && v0(a, 0, c, 0, 0, n); + } + static eq(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, + n = arguments.length > 3 ? arguments[3] : void 0; + n == null && (n = 1e9 - 1); + var s = e.filter((c) => !c.isEmpty && t.indexOf(c) < 0), + o = t.filter((c) => !c.isEmpty && e.indexOf(c) < 0); + if (s.length != o.length) return !1; + if (!s.length) return !0; + var u = E0(s, o), + l = new Ci(s, u, 0).goto(i), + a = new Ci(o, u, 0).goto(i); for (;;) { - if (sideA.to != sideB.to || !sameValues(sideA.active, sideB.active) || (sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))) return false; - if (sideA.to > to) return true; - sideA.next(); - sideB.next(); + if (l.to != a.to || !Ia(l.active, a.active) || (l.point && (!a.point || !l.point.eq(a.point)))) return !1; + if (l.to > n) return !0; + l.next(), a.next(); } } - static spans(sets, from, to, iterator) { - var minPointSize = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; - var cursor = new SpanCursor(sets, null, minPointSize).goto(from), - pos = from; - var openRanges = cursor.openStart; + static spans(e, t, i, n) { + var s = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; + var o = new Ci(e, null, s).goto(t), + u = t, + l = o.openStart; for (;;) { - var curTo = Math.min(cursor.to, to); - if (cursor.point) { - var active = cursor.activeForPoint(cursor.to); - var openCount = cursor.pointFrom < from ? active.length + 1 : Math.min(active.length, openRanges); - iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank); - openRanges = Math.min(cursor.openEnd(curTo), active.length); - } else if (curTo > pos) { - iterator.span(pos, curTo, cursor.active, openRanges); - openRanges = cursor.openEnd(curTo); - } - if (cursor.to > to) return openRanges + (cursor.point && cursor.to > to ? 1 : 0); - pos = cursor.to; - cursor.next(); - } - } - static of(ranges) { - var sort = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - var build = new RangeSetBuilder(); + var a = Math.min(o.to, i); + if (o.point) { + var c = o.activeForPoint(o.to), + f = o.pointFrom < t ? c.length + 1 : Math.min(c.length, l); + n.point(u, a, o.point, c, f, o.pointRank), (l = Math.min(o.openEnd(a), c.length)); + } else a > u && (n.span(u, a, o.active, l), (l = o.openEnd(a))); + if (o.to > i) return l + (o.point && o.to > i ? 1 : 0); + (u = o.to), o.next(); + } + } + static of(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + var i = new Wt(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = (ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var range = _step.value; - build.add(range.from, range.to, range.value); + for (var _iterator = (e instanceof ki ? [e] : t ? Fv(e) : e)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + i.add(n.from, n.to, n.value); } } catch (err) { _didIteratorError = true; @@ -10709,106 +8579,65 @@ var __generator = } } } - return build.finish(); + return i.finish(); } - constructor(chunkPos, chunk, nextLayer, maxPoint) { - this.chunkPos = chunkPos; - this.chunk = chunk; - this.nextLayer = nextLayer; - this.maxPoint = maxPoint; + constructor(e, t, i, n) { + (this.chunkPos = e), (this.chunk = t), (this.nextLayer = i), (this.maxPoint = n); } }; - __name(RangeSet, "RangeSet"); - RangeSet.empty = /* @__PURE__ */ new RangeSet([], [], null, -1); - function lazySort(ranges) { - if (ranges.length > 1) - for (var prev = ranges[0], i = 1; i < ranges.length; i++) { - var cur = ranges[i]; - if (cmpRange(prev, cur) > 0) return ranges.slice().sort(cmpRange); - prev = cur; - } - return ranges; - } - __name(lazySort, "lazySort"); - RangeSet.empty.nextLayer = RangeSet.empty; - var RangeSetBuilder = class RangeSetBuilder1 { - finishChunk(newArrays) { - this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint)); - this.chunkPos.push(this.chunkStart); - this.chunkStart = -1; - this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint); - this.maxPoint = -1; - if (newArrays) { - this.from = []; - this.to = []; - this.value = []; - } - } - add(from, to, value) { - if (!this.addInner(from, to, value)) (this.nextLayer || (this.nextLayer = new RangeSetBuilder())).add(from, to, value); - } - addInner(from, to, value) { - var diff = from - this.lastTo || value.startSide - this.last.endSide; - if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0) throw new Error("Ranges must be added sorted by `from` position and `startSide`"); - if (diff < 0) return false; - if (this.from.length == 250) this.finishChunk(true); - if (this.chunkStart < 0) this.chunkStart = from; - this.from.push(from - this.chunkStart); - this.to.push(to - this.chunkStart); - this.last = value; - this.lastFrom = from; - this.lastTo = to; - this.value.push(value); - if (value.point) this.maxPoint = Math.max(this.maxPoint, to - from); - return true; - } - addChunk(from, chunk) { - if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0) return false; - if (this.from.length) this.finishChunk(true); - this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint); - this.chunks.push(chunk); - this.chunkPos.push(from); - var last = chunk.value.length - 1; - this.last = chunk.value[last]; - this.lastFrom = chunk.from[last] + from; - this.lastTo = chunk.to[last] + from; - return true; + h(pe, "RangeSet"); + pe.empty = new pe([], [], null, -1); + function Fv(r) { + if (r.length > 1) + for (var e = r[0], t = 1; t < r.length; t++) { + var i = r[t]; + if (qa(e, i) > 0) return r.slice().sort(qa); + e = i; + } + return r; + } + h(Fv, "lazySort"); + pe.empty.nextLayer = pe.empty; + var Wt = class Wt1 { + finishChunk(e) { + this.chunks.push(new Or(this.from, this.to, this.value, this.maxPoint)), this.chunkPos.push(this.chunkStart), (this.chunkStart = -1), (this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint)), (this.maxPoint = -1), e && ((this.from = []), (this.to = []), (this.value = [])); + } + add(e, t, i) { + this.addInner(e, t, i) || (this.nextLayer || (this.nextLayer = new Wt())).add(e, t, i); + } + addInner(e, t, i) { + var n = e - this.lastTo || i.startSide - this.last.endSide; + if (n <= 0 && (e - this.lastFrom || i.startSide - this.last.startSide) < 0) throw new Error("Ranges must be added sorted by `from` position and `startSide`"); + return n < 0 ? !1 : (this.from.length == 250 && this.finishChunk(!0), this.chunkStart < 0 && (this.chunkStart = e), this.from.push(e - this.chunkStart), this.to.push(t - this.chunkStart), (this.last = i), (this.lastFrom = e), (this.lastTo = t), this.value.push(i), i.point && (this.maxPoint = Math.max(this.maxPoint, t - e)), !0); + } + addChunk(e, t) { + if ((e - this.lastTo || t.value[0].startSide - this.last.endSide) < 0) return !1; + this.from.length && this.finishChunk(!0), (this.setMaxPoint = Math.max(this.setMaxPoint, t.maxPoint)), this.chunks.push(t), this.chunkPos.push(e); + var i = t.value.length - 1; + return (this.last = t.value[i]), (this.lastFrom = t.from[i] + e), (this.lastTo = t.to[i] + e), !0; } finish() { - return this.finishInner(RangeSet.empty); + return this.finishInner(pe.empty); } - finishInner(next) { - if (this.from.length) this.finishChunk(false); - if (this.chunks.length == 0) return next; - var result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint); - this.from = null; - return result; + finishInner(e) { + if ((this.from.length && this.finishChunk(!1), this.chunks.length == 0)) return e; + var t = pe.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(e) : e, this.setMaxPoint); + return (this.from = null), t; } constructor() { - this.chunks = []; - this.chunkPos = []; - this.chunkStart = -1; - this.last = null; - this.lastFrom = -1e9; - this.lastTo = -1e9; - this.from = []; - this.to = []; - this.value = []; - this.maxPoint = -1; - this.setMaxPoint = -1; - this.nextLayer = null; + (this.chunks = []), (this.chunkPos = []), (this.chunkStart = -1), (this.last = null), (this.lastFrom = -1e9), (this.lastTo = -1e9), (this.from = []), (this.to = []), (this.value = []), (this.maxPoint = -1), (this.setMaxPoint = -1), (this.nextLayer = null); } }; - __name(RangeSetBuilder, "RangeSetBuilder"); - function findSharedChunks(a, b, textDiff) { - var inA = /* @__PURE__ */ new Map(); + h(Wt, "RangeSetBuilder"); + function E0(r, e, t) { + var i = new Map(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = a[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var set = _step.value; - for (var i = 0; i < set.chunk.length; i++) if (set.chunk[i].maxPoint <= 0) inA.set(set.chunk[i], set.chunkPos[i]); + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + for (var o = 0; o < s.chunk.length; o++) s.chunk[o].maxPoint <= 0 && i.set(s.chunk[o], s.chunkPos[o]); } } catch (err) { _didIteratorError = true; @@ -10824,16 +8653,16 @@ var __generator = } } } - var shared = /* @__PURE__ */ new Set(); + var n = new Set(); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = b[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var set1 = _step1.value; - for (var i1 = 0; i1 < set1.chunk.length; i1++) { - var known = inA.get(set1.chunk[i1]); - if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set1.chunkPos[i1] && !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set1.chunk[i1].length))) shared.add(set1.chunk[i1]); + for (var _iterator1 = e[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var s1 = _step1.value; + for (var o1 = 0; o1 < s1.chunk.length; o1++) { + var u = i.get(s1.chunk[o1]); + u != null && (t ? t.mapPos(u) : u) == s1.chunkPos[o1] && !(t === null || t === void 0 ? void 0 : t.touchesRange(u, u + s1.chunk[o1].length)) && n.add(s1.chunk[o1]); } } } catch (err) { @@ -10850,108 +8679,85 @@ var __generator = } } } - return shared; + return n; } - __name(findSharedChunks, "findSharedChunks"); - var LayerCursor = class LayerCursor { + h(E0, "findSharedChunks"); + var Tn = class Tn { get startSide() { return this.value ? this.value.startSide : 0; } get endSide() { return this.value ? this.value.endSide : 0; } - goto(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1e9; - this.chunkIndex = this.rangeIndex = 0; - this.gotoInner(pos, side, false); - return this; + goto(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1e9; + return (this.chunkIndex = this.rangeIndex = 0), this.gotoInner(e, t, !1), this; } - gotoInner(pos, side, forward) { - while (this.chunkIndex < this.layer.chunk.length) { - var next = this.layer.chunk[this.chunkIndex]; - if (!((this.skip && this.skip.has(next)) || this.layer.chunkEnd(this.chunkIndex) < pos || next.maxPoint < this.minPoint)) break; - this.chunkIndex++; - forward = false; + gotoInner(e, t, i) { + for (; this.chunkIndex < this.layer.chunk.length; ) { + var n = this.layer.chunk[this.chunkIndex]; + if (!((this.skip && this.skip.has(n)) || this.layer.chunkEnd(this.chunkIndex) < e || n.maxPoint < this.minPoint)) break; + this.chunkIndex++, (i = !1); } if (this.chunkIndex < this.layer.chunk.length) { - var rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true); - if (!forward || this.rangeIndex < rangeIndex) this.setRangeIndex(rangeIndex); + var n1 = this.layer.chunk[this.chunkIndex].findIndex(e - this.layer.chunkPos[this.chunkIndex], t, !0); + (!i || this.rangeIndex < n1) && this.setRangeIndex(n1); } this.next(); } - forward(pos, side) { - if ((this.to - pos || this.endSide - side) < 0) this.gotoInner(pos, side, true); + forward(e, t) { + (this.to - e || this.endSide - t) < 0 && this.gotoInner(e, t, !0); } next() { - for (;;) { + for (;;) if (this.chunkIndex == this.layer.chunk.length) { - this.from = this.to = 1e9; - this.value = null; + (this.from = this.to = 1e9), (this.value = null); break; } else { - var chunkPos = this.layer.chunkPos[this.chunkIndex], - chunk = this.layer.chunk[this.chunkIndex]; - var from = chunkPos + chunk.from[this.rangeIndex]; - this.from = from; - this.to = chunkPos + chunk.to[this.rangeIndex]; - this.value = chunk.value[this.rangeIndex]; - this.setRangeIndex(this.rangeIndex + 1); - if (this.minPoint < 0 || (this.value.point && this.to - this.from >= this.minPoint)) break; + var e = this.layer.chunkPos[this.chunkIndex], + t = this.layer.chunk[this.chunkIndex], + i = e + t.from[this.rangeIndex]; + if (((this.from = i), (this.to = e + t.to[this.rangeIndex]), (this.value = t.value[this.rangeIndex]), this.setRangeIndex(this.rangeIndex + 1), this.minPoint < 0 || (this.value.point && this.to - this.from >= this.minPoint))) break; } - } } - setRangeIndex(index) { - if (index == this.layer.chunk[this.chunkIndex].value.length) { - this.chunkIndex++; - if (this.skip) { - while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex])) this.chunkIndex++; - } + setRangeIndex(e) { + if (e == this.layer.chunk[this.chunkIndex].value.length) { + if ((this.chunkIndex++, this.skip)) for (; this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]); ) this.chunkIndex++; this.rangeIndex = 0; - } else { - this.rangeIndex = index; - } + } else this.rangeIndex = e; } nextChunk() { - this.chunkIndex++; - this.rangeIndex = 0; - this.next(); + this.chunkIndex++, (this.rangeIndex = 0), this.next(); } - compare(other) { - return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank || this.to - other.to || this.endSide - other.endSide; + compare(e) { + return this.from - e.from || this.startSide - e.startSide || this.rank - e.rank || this.to - e.to || this.endSide - e.endSide; } - constructor(layer2, skip, minPoint, ref) { - var rank = ref === void 0 ? 0 : ref; - this.layer = layer2; - this.skip = skip; - this.minPoint = minPoint; - this.rank = rank; + constructor(e, t, i, ref) { + var n = ref === void 0 ? 0 : ref; + (this.layer = e), (this.skip = t), (this.minPoint = i), (this.rank = n); } }; - __name(LayerCursor, "LayerCursor"); - var HeapCursor = class HeapCursor1 { - static from(sets) { - var skip = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, - minPoint = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1; - var heap = []; - for (var i = 0; i < sets.length; i++) { - for (var cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) { - if (cur.maxPoint >= minPoint) heap.push(new LayerCursor(cur, skip, minPoint, i)); - } - } - return heap.length == 1 ? heap[0] : new HeapCursor(heap); + h(Tn, "LayerCursor"); + var wi = class wi1 { + static from(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1; + var n = []; + for (var s = 0; s < e.length; s++) for (var o = e[s]; !o.isEmpty; o = o.nextLayer) o.maxPoint >= i && n.push(new Tn(o, t, i, s)); + return n.length == 1 ? n[0] : new wi(n); } get startSide() { return this.value ? this.value.startSide : 0; } - goto(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1e9; + goto(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1e9; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.heap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var cur = _step.value; - cur.goto(pos, side); + var i = _step.value; + i.goto(e, t); } } catch (err) { _didIteratorError = true; @@ -10967,18 +8773,17 @@ var __generator = } } } - for (var i = this.heap.length >> 1; i >= 0; i--) heapBubble(this.heap, i); - this.next(); - return this; + for (var i1 = this.heap.length >> 1; i1 >= 0; i1--) Oa(this.heap, i1); + return this.next(), this; } - forward(pos, side) { + forward(e, t) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.heap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var cur = _step.value; - cur.forward(pos, side); + var i = _step.value; + i.forward(e, t); } } catch (err) { _didIteratorError = true; @@ -10994,845 +8799,564 @@ var __generator = } } } - for (var i = this.heap.length >> 1; i >= 0; i--) heapBubble(this.heap, i); - if ((this.to - pos || this.value.endSide - side) < 0) this.next(); + for (var i1 = this.heap.length >> 1; i1 >= 0; i1--) Oa(this.heap, i1); + (this.to - e || this.value.endSide - t) < 0 && this.next(); } next() { - if (this.heap.length == 0) { - this.from = this.to = 1e9; - this.value = null; - this.rank = -1; - } else { - var top2 = this.heap[0]; - this.from = top2.from; - this.to = top2.to; - this.value = top2.value; - this.rank = top2.rank; - if (top2.value) top2.next(); - heapBubble(this.heap, 0); + if (this.heap.length == 0) (this.from = this.to = 1e9), (this.value = null), (this.rank = -1); + else { + var e = this.heap[0]; + (this.from = e.from), (this.to = e.to), (this.value = e.value), (this.rank = e.rank), e.value && e.next(), Oa(this.heap, 0); } } - constructor(heap) { - this.heap = heap; + constructor(e) { + this.heap = e; } }; - __name(HeapCursor, "HeapCursor"); - function heapBubble(heap, index) { - for (var cur = heap[index]; ; ) { - var childIndex = (index << 1) + 1; - if (childIndex >= heap.length) break; - var child = heap[childIndex]; - if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) { - child = heap[childIndex + 1]; - childIndex++; - } - if (cur.compare(child) < 0) break; - heap[childIndex] = cur; - heap[index] = child; - index = childIndex; - } - } - __name(heapBubble, "heapBubble"); - var SpanCursor = class SpanCursor { - goto(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1e9; - this.cursor.goto(pos, side); - this.active.length = this.activeTo.length = this.activeRank.length = 0; - this.minActive = -1; - this.to = pos; - this.endSide = side; - this.openStart = -1; - this.next(); - return this; - } - forward(pos, side) { - while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0) this.removeActive(this.minActive); - this.cursor.forward(pos, side); - } - removeActive(index) { - remove(this.active, index); - remove(this.activeTo, index); - remove(this.activeRank, index); - this.minActive = findMinIndex(this.active, this.activeTo); - } - addActive(trackOpen) { - var i = 0, + h(wi, "HeapCursor"); + function Oa(r, e) { + for (var t = r[e]; ; ) { + var i = (e << 1) + 1; + if (i >= r.length) break; + var n = r[i]; + if ((i + 1 < r.length && n.compare(r[i + 1]) >= 0 && ((n = r[i + 1]), i++), t.compare(n) < 0)) break; + (r[i] = t), (r[e] = n), (e = i); + } + } + h(Oa, "heapBubble"); + var Ci = class Ci { + goto(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1e9; + return this.cursor.goto(e, t), (this.active.length = this.activeTo.length = this.activeRank.length = 0), (this.minActive = -1), (this.to = e), (this.endSide = t), (this.openStart = -1), this.next(), this; + } + forward(e, t) { + for (; this.minActive > -1 && (this.activeTo[this.minActive] - e || this.active[this.minActive].endSide - t) < 0; ) this.removeActive(this.minActive); + this.cursor.forward(e, t); + } + removeActive(e) { + po(this.active, e), po(this.activeTo, e), po(this.activeRank, e), (this.minActive = k0(this.active, this.activeTo)); + } + addActive(e) { + var t = 0, _this_cursor = this.cursor, - value = _this_cursor.value, - to = _this_cursor.to, - rank = _this_cursor.rank; - while (i < this.activeRank.length && this.activeRank[i] <= rank) i++; - insert2(this.active, i, value); - insert2(this.activeTo, i, to); - insert2(this.activeRank, i, rank); - if (trackOpen) insert2(trackOpen, i, this.cursor.from); - this.minActive = findMinIndex(this.active, this.activeTo); + i = _this_cursor.value, + n = _this_cursor.to, + s = _this_cursor.rank; + for (; t < this.activeRank.length && this.activeRank[t] <= s; ) t++; + mo(this.active, t, i), mo(this.activeTo, t, n), mo(this.activeRank, t, s), e && mo(e, t, this.cursor.from), (this.minActive = k0(this.active, this.activeTo)); } next() { - var from = this.to, - wasPoint = this.point; + var e = this.to, + t = this.point; this.point = null; - var trackOpen = this.openStart < 0 ? [] : null; + var i = this.openStart < 0 ? [] : null; for (;;) { - var a = this.minActive; - if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) { - if (this.activeTo[a] > from) { - this.to = this.activeTo[a]; - this.endSide = this.active[a].endSide; + var n = this.minActive; + if (n > -1 && (this.activeTo[n] - this.cursor.from || this.active[n].endSide - this.cursor.startSide) < 0) { + if (this.activeTo[n] > e) { + (this.to = this.activeTo[n]), (this.endSide = this.active[n].endSide); break; } - this.removeActive(a); - if (trackOpen) remove(trackOpen, a); - } else if (!this.cursor.value) { - this.to = this.endSide = 1e9; - break; - } else if (this.cursor.from > from) { - this.to = this.cursor.from; - this.endSide = this.cursor.startSide; - break; - } else { - var nextVal = this.cursor.value; - if (!nextVal.point) { - this.addActive(trackOpen); - this.cursor.next(); - } else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) { - this.cursor.next(); - } else { - this.point = nextVal; - this.pointFrom = this.cursor.from; - this.pointRank = this.cursor.rank; - this.to = this.cursor.to; - this.endSide = nextVal.endSide; - this.cursor.next(); - this.forward(this.to, this.endSide); + this.removeActive(n), i && po(i, n); + } else if (this.cursor.value) + if (this.cursor.from > e) { + (this.to = this.cursor.from), (this.endSide = this.cursor.startSide); break; + } else { + var s = this.cursor.value; + if (!s.point) this.addActive(i), this.cursor.next(); + else if (t && this.cursor.to == this.to && this.cursor.from < this.cursor.to) this.cursor.next(); + else { + (this.point = s), (this.pointFrom = this.cursor.from), (this.pointRank = this.cursor.rank), (this.to = this.cursor.to), (this.endSide = s.endSide), this.cursor.next(), this.forward(this.to, this.endSide); + break; + } } + else { + this.to = this.endSide = 1e9; + break; } } - if (trackOpen) { + if (i) { this.openStart = 0; - for (var i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--) this.openStart++; + for (var n1 = i.length - 1; n1 >= 0 && i[n1] < e; n1--) this.openStart++; } } - activeForPoint(to) { + activeForPoint(e) { if (!this.active.length) return this.active; - var active = []; - for (var i = this.active.length - 1; i >= 0; i--) { - if (this.activeRank[i] < this.pointRank) break; - if (this.activeTo[i] > to || (this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)) active.push(this.active[i]); - } - return active.reverse(); - } - openEnd(to) { - var open = 0; - for (var i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--) open++; - return open; - } - constructor(sets, skip, minPoint) { - this.minPoint = minPoint; - this.active = []; - this.activeTo = []; - this.activeRank = []; - this.minActive = -1; - this.point = null; - this.pointFrom = 0; - this.pointRank = 0; - this.to = -1e9; - this.endSide = 0; - this.openStart = -1; - this.cursor = HeapCursor.from(sets, skip, minPoint); + var t = []; + for (var i = this.active.length - 1; i >= 0 && !(this.activeRank[i] < this.pointRank); i--) (this.activeTo[i] > e || (this.activeTo[i] == e && this.active[i].endSide >= this.point.endSide)) && t.push(this.active[i]); + return t.reverse(); + } + openEnd(e) { + var t = 0; + for (var i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > e; i--) t++; + return t; + } + constructor(e, t, i) { + (this.minPoint = i), (this.active = []), (this.activeTo = []), (this.activeRank = []), (this.minActive = -1), (this.point = null), (this.pointFrom = 0), (this.pointRank = 0), (this.to = -1e9), (this.endSide = 0), (this.openStart = -1), (this.cursor = wi.from(e, t, i)); } }; - __name(SpanCursor, "SpanCursor"); - function compare(a, startA, b, startB, length, comparator) { - a.goto(startA); - b.goto(startB); - var endB = startB + length; - var pos = startB, - dPos = startB - startA; + h(Ci, "SpanCursor"); + function v0(r, e, t, i, n, s) { + r.goto(e), t.goto(i); + var o = i + n, + u = i, + l = i - e; for (;;) { - var diff = a.to + dPos - b.to || a.endSide - b.endSide; - var end = diff < 0 ? a.to + dPos : b.to, - clipEnd = Math.min(end, endB); - if (a.point || b.point) { - if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) && sameValues(a.activeForPoint(a.to + dPos), b.activeForPoint(b.to)))) comparator.comparePoint(pos, clipEnd, a.point, b.point); - } else { - if (clipEnd > pos && !sameValues(a.active, b.active)) comparator.compareRange(pos, clipEnd, a.active, b.active); - } - if (end > endB) break; - pos = end; - if (diff <= 0) a.next(); - if (diff >= 0) b.next(); - } - } - __name(compare, "compare"); - function sameValues(a, b) { - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) if (a[i] != b[i] && !a[i].eq(b[i])) return false; - return true; - } - __name(sameValues, "sameValues"); - function remove(array, index) { - for (var i = index, e = array.length - 1; i < e; i++) array[i] = array[i + 1]; - array.pop(); - } - __name(remove, "remove"); - function insert2(array, index, value) { - for (var i = array.length - 1; i >= index; i--) array[i + 1] = array[i]; - array[index] = value; - } - __name(insert2, "insert"); - function findMinIndex(value, array) { - var found = -1, - foundPos = 1e9; - for (var i = 0; i < array.length; i++) - if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) { - found = i; - foundPos = array[i]; - } - return found; - } - __name(findMinIndex, "findMinIndex"); - function countColumn(string2, tabSize) { - var to = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : string2.length; - var n = 0; - for (var i = 0; i < to; ) { - if (string2.charCodeAt(i) == 9) { - n += tabSize - (n % tabSize); - i++; - } else { - n++; - i = findClusterBreak(string2, i); + var a = r.to + l - t.to || r.endSide - t.endSide, + c = a < 0 ? r.to + l : t.to, + f = Math.min(c, o); + if ((r.point || t.point ? (r.point && t.point && (r.point == t.point || r.point.eq(t.point)) && Ia(r.activeForPoint(r.to + l), t.activeForPoint(t.to))) || s.comparePoint(u, f, r.point, t.point) : f > u && !Ia(r.active, t.active) && s.compareRange(u, f, r.active, t.active), c > o)) break; + (u = c), a <= 0 && r.next(), a >= 0 && t.next(); + } + } + h(v0, "compare"); + function Ia(r, e) { + if (r.length != e.length) return !1; + for (var t = 0; t < r.length; t++) if (r[t] != e[t] && !r[t].eq(e[t])) return !1; + return !0; + } + h(Ia, "sameValues"); + function po(r, e) { + for (var t = e, i = r.length - 1; t < i; t++) r[t] = r[t + 1]; + r.pop(); + } + h(po, "remove"); + function mo(r, e, t) { + for (var i = r.length - 1; i >= e; i--) r[i + 1] = r[i]; + r[e] = t; + } + h(mo, "insert"); + function k0(r, e) { + var t = -1, + i = 1e9; + for (var n = 0; n < e.length; n++) (e[n] - i || r[n].endSide - r[t].endSide) < 0 && ((t = n), (i = e[n])); + return t; + } + h(k0, "findMinIndex"); + function Ao(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : r.length; + var i = 0; + for (var n = 0; n < t; ) r.charCodeAt(n) == 9 ? ((i += e - (i % e)), n++) : (i++, (n = Bt(r, n))); + return i; + } + h(Ao, "countColumn"); + function N0(r, e, t, i) { + for (var n = 0, s = 0; ; ) { + if (s >= e) return n; + if (n == r.length) break; + (s += r.charCodeAt(n) == 9 ? t - (s % t) : 1), (n = Bt(r, n)); + } + return i === !0 ? -1 : r.length; + } + h(N0, "findColumn"); + var za = "ͼ", + V0 = typeof Symbol > "u" ? "__" + za : Symbol.for(za), + Wa = typeof Symbol > "u" ? "__styleSet" + Math.floor(Math.random() * 1e8) : Symbol("styleSet"), + z0 = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : {}, + lt = class lt { + getRules() { + return this.rules.join("\n"); + } + static newName() { + var e = z0[V0] || 1; + return (z0[V0] = e + 1), za + e.toString(36); + } + static mount(e, t) { + (e[Wa] || new vo(e)).mount(Array.isArray(t) ? t : [t]); + } + constructor(e, t) { + this.rules = []; + var _ref = t || {}, + i = _ref.finish; + function n(o) { + return /^@/.test(o) ? [o] : o.split(/,\s*/); + } + h(n, "splitSelector"); + function s(o, u, l, a) { + var c = [], + f = /^@(\w+)\b/.exec(o[0]), + d = f && f[1] == "keyframes"; + if (f && u == null) return l.push(o[0] + ";"); + for (var p in u) { + var m = u[p]; + if (/&/.test(p)) + s( + p + .split(/,\s*/) + .map((D) => o.map((g) => D.replace(/&/, g))) + .reduce((D, g) => D.concat(g)), + m, + l + ); + else if (m && typeof m == "object") { + if (!f) throw new RangeError("The value of a property (" + p + ") should be a primitive value."); + s(n(p), m, c, d); + } else m != null && c.push(p.replace(/_.*/, "").replace(/[A-Z]/g, (D) => "-" + D.toLowerCase()) + ": " + m + ";"); + } + (c.length || d) && l.push((i && !f && !a ? o.map(i) : o).join(", ") + " {" + c.join(" ") + "}"); + } + h(s, "render"); + for (var o in e) s(n(o), e[o], this.rules); } - } - return n; - } - __name(countColumn, "countColumn"); - function findColumn(string2, col, tabSize, strict) { - for (var i = 0, n = 0; ; ) { - if (n >= col) return i; - if (i == string2.length) break; - n += string2.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1; - i = findClusterBreak(string2, i); - } - return strict === true ? -1 : string2.length; - } - __name(findColumn, "findColumn"); - // node_modules/style-mod/src/style-mod.js - var C = "ͼ"; - var COUNT = typeof Symbol == "undefined" ? "__" + C : Symbol.for(C); - var SET = typeof Symbol == "undefined" ? "__styleSet" + Math.floor(Math.random() * 1e8) : Symbol("styleSet"); - var top = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : {}; - var StyleModule = class StyleModule { - getRules() { - return this.rules.join("\n"); - } - static newName() { - var id = top[COUNT] || 1; - top[COUNT] = id + 1; - return C + id.toString(36); - } - static mount(root, modules) { - (root[SET] || new StyleSet(root)).mount(Array.isArray(modules) ? modules : [modules]); - } - constructor(spec, options) { - this.rules = []; - var finish = (options || {}).finish; - function splitSelector(selector) { - return /^@/.test(selector) ? [selector] : selector.split(/,\s*/); - } - __name(splitSelector, "splitSelector"); - function render(selectors, spec2, target, isKeyframes) { - var local = [], - isAt = /^@(\w+)\b/.exec(selectors[0]), - keyframes = isAt && isAt[1] == "keyframes"; - if (isAt && spec2 == null) return target.push(selectors[0] + ";"); - for (var prop in spec2) { - var value = spec2[prop]; - if (/&/.test(prop)) { - render( - prop - .split(/,\s*/) - .map((part) => selectors.map((sel) => part.replace(/&/, sel))) - .reduce((a, b) => a.concat(b)), - value, - target - ); - } else if (value && typeof value == "object") { - if (!isAt) throw new RangeError("The value of a property (" + prop + ") should be a primitive value."); - render(splitSelector(prop), value, local, keyframes); - } else if (value != null) { - local.push(prop.replace(/_.*/, "").replace(/[A-Z]/g, (l) => "-" + l.toLowerCase()) + ": " + value + ";"); + }; + h(lt, "StyleModule"); + var Eo = null, + vo = class vo { + mount(e) { + var t = this.sheet, + i = 0, + n = 0; + for (var s = 0; s < e.length; s++) { + var o = e[s], + u = this.modules.indexOf(o); + if ((u < n && u > -1 && (this.modules.splice(u, 1), n--, (u = -1)), u == -1)) { + if ((this.modules.splice(n++, 0, o), t)) for (var l = 0; l < o.rules.length; l++) t.insertRule(o.rules[l], i++); + } else { + for (; n < u; ) i += this.modules[n++].rules.length; + (i += o.rules.length), n++; } } - if (local.length || keyframes) { - target.push((finish && !isAt && !isKeyframes ? selectors.map(finish) : selectors).join(", ") + " {" + local.join(" ") + "}"); + if (!t) { + var s1 = ""; + for (var o1 = 0; o1 < this.modules.length; o1++) s1 += this.modules[o1].getRules() + "\n"; + this.styleTag.textContent = s1; } } - __name(render, "render"); - for (var prop in spec) render(splitSelector(prop), spec[prop], this.rules); - } - }; - __name(StyleModule, "StyleModule"); - var adoptedSet = null; - var StyleSet = class StyleSet { - mount(modules) { - var sheet = this.sheet; - var pos = 0, - j = 0; - for (var i = 0; i < modules.length; i++) { - var mod = modules[i], - index = this.modules.indexOf(mod); - if (index < j && index > -1) { - this.modules.splice(index, 1); - j--; - index = -1; - } - if (index == -1) { - this.modules.splice(j++, 0, mod); - if (sheet) for (var k = 0; k < mod.rules.length; k++) sheet.insertRule(mod.rules[k], pos++); + constructor(e) { + if (!e.head && e.adoptedStyleSheets && typeof CSSStyleSheet < "u") { + if (Eo) return (e.adoptedStyleSheets = [Eo.sheet].concat(e.adoptedStyleSheets)), (e[Wa] = Eo); + (this.sheet = new CSSStyleSheet()), (e.adoptedStyleSheets = [this.sheet].concat(e.adoptedStyleSheets)), (Eo = this); } else { - while (j < index) pos += this.modules[j++].rules.length; - pos += mod.rules.length; - j++; - } - } - if (!sheet) { - var text2 = ""; - for (var i1 = 0; i1 < this.modules.length; i1++) text2 += this.modules[i1].getRules() + "\n"; - this.styleTag.textContent = text2; - } - } - constructor(root) { - if (!root.head && root.adoptedStyleSheets && typeof CSSStyleSheet != "undefined") { - if (adoptedSet) { - root.adoptedStyleSheets = [adoptedSet.sheet].concat(root.adoptedStyleSheets); - return (root[SET] = adoptedSet); + this.styleTag = (e.ownerDocument || e).createElement("style"); + var t = e.head || e; + t.insertBefore(this.styleTag, t.firstChild); } - this.sheet = new CSSStyleSheet(); - root.adoptedStyleSheets = [this.sheet].concat(root.adoptedStyleSheets); - adoptedSet = this; - } else { - this.styleTag = (root.ownerDocument || root).createElement("style"); - var target = root.head || root; - target.insertBefore(this.styleTag, target.firstChild); + (this.modules = []), (e[Wa] = this); } - this.modules = []; - root[SET] = this; - } - }; - __name(StyleSet, "StyleSet"); - // node_modules/w3c-keyname/index.es.js - var base = { - 8: "Backspace", - 9: "Tab", - 10: "Enter", - 12: "NumLock", - 13: "Enter", - 16: "Shift", - 17: "Control", - 18: "Alt", - 20: "CapsLock", - 27: "Escape", - 32: " ", - 33: "PageUp", - 34: "PageDown", - 35: "End", - 36: "Home", - 37: "ArrowLeft", - 38: "ArrowUp", - 39: "ArrowRight", - 40: "ArrowDown", - 44: "PrintScreen", - 45: "Insert", - 46: "Delete", - 59: ";", - 61: "=", - 91: "Meta", - 92: "Meta", - 106: "*", - 107: "+", - 108: ",", - 109: "-", - 110: ".", - 111: "/", - 144: "NumLock", - 145: "ScrollLock", - 160: "Shift", - 161: "Shift", - 162: "Control", - 163: "Control", - 164: "Alt", - 165: "Alt", - 173: "-", - 186: ";", - 187: "=", - 188: ",", - 189: "-", - 190: ".", - 191: "/", - 192: "`", - 219: "[", - 220: "\\", - 221: "]", - 222: "'", - }; - var shift = { - 48: ")", - 49: "!", - 50: "@", - 51: "#", - 52: "$", - 53: "%", - 54: "^", - 55: "&", - 56: "*", - 57: "(", - 59: ":", - 61: "+", - 173: "_", - 186: ":", - 187: "+", - 188: "<", - 189: "_", - 190: ">", - 191: "?", - 192: "~", - 219: "{", - 220: "|", - 221: "}", - 222: '"', - }; - var chrome = typeof navigator != "undefined" && /Chrome\/(\d+)/.exec(navigator.userAgent); - var gecko = typeof navigator != "undefined" && /Gecko\/\d+/.test(navigator.userAgent); - var mac = typeof navigator != "undefined" && /Mac/.test(navigator.platform); - var ie = typeof navigator != "undefined" && /MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent); - var brokenModifierNames = mac || (chrome && +chrome[1] < 57); - for (i1 = 0; i1 < 10; i1++) base[48 + i1] = base[96 + i1] = String(i1); - var i1; - for (i1 = 1; i1 <= 24; i1++) base[i1 + 111] = "F" + i1; - var i1; - for (i1 = 65; i1 <= 90; i1++) { - base[i1] = String.fromCharCode(i1 + 32); - shift[i1] = String.fromCharCode(i1); - } - var i1; - for (code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]; - var code; - function keyName(event) { - var ignoreKey = (brokenModifierNames && (event.ctrlKey || event.altKey || event.metaKey)) || (ie && event.shiftKey && event.key && event.key.length == 1) || event.key == "Unidentified"; - var name2 = (!ignoreKey && event.key) || (event.shiftKey ? shift : base)[event.keyCode] || event.key || "Unidentified"; - if (name2 == "Esc") name2 = "Escape"; - if (name2 == "Del") name2 = "Delete"; - if (name2 == "Left") name2 = "ArrowLeft"; - if (name2 == "Up") name2 = "ArrowUp"; - if (name2 == "Right") name2 = "ArrowRight"; - if (name2 == "Down") name2 = "ArrowDown"; - return name2; - } - __name(keyName, "keyName"); - // node_modules/@codemirror/view/dist/index.js - function getSelection(root) { - var target; - if (root.nodeType == 11) { - target = root.getSelection ? root : root.ownerDocument; - } else { - target = root; - } - return target.getSelection(); - } - __name(getSelection, "getSelection"); - function contains(dom, node) { - return node ? dom == node || dom.contains(node.nodeType != 1 ? node.parentNode : node) : false; - } - __name(contains, "contains"); - function deepActiveElement(doc2) { - var elt = doc2.activeElement; - while (elt && elt.shadowRoot) elt = elt.shadowRoot.activeElement; - return elt; + }; + h(vo, "StyleSet"); + var li = { + 8: "Backspace", + 9: "Tab", + 10: "Enter", + 12: "NumLock", + 13: "Enter", + 16: "Shift", + 17: "Control", + 18: "Alt", + 20: "CapsLock", + 27: "Escape", + 32: " ", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 44: "PrintScreen", + 45: "Insert", + 46: "Delete", + 59: ";", + 61: "=", + 91: "Meta", + 92: "Meta", + 106: "*", + 107: "+", + 108: ",", + 109: "-", + 110: ".", + 111: "/", + 144: "NumLock", + 145: "ScrollLock", + 160: "Shift", + 161: "Shift", + 162: "Control", + 163: "Control", + 164: "Alt", + 165: "Alt", + 173: "-", + 186: ";", + 187: "=", + 188: ",", + 189: "-", + 190: ".", + 191: "/", + 192: "`", + 219: "[", + 220: "\\", + 221: "]", + 222: "'", + }, + Rr = { 48: ")", 49: "!", 50: "@", 51: "#", 52: "$", 53: "%", 54: "^", 55: "&", 56: "*", 57: "(", 59: ":", 61: "+", 173: "_", 186: ":", 187: "+", 188: "<", 189: "_", 190: ">", 191: "?", 192: "~", 219: "{", 220: "|", 221: "}", 222: '"' }, + W0 = typeof navigator < "u" && /Chrome\/(\d+)/.exec(navigator.userAgent), + oB = typeof navigator < "u" && /Gecko\/\d+/.test(navigator.userAgent), + yv = typeof navigator < "u" && /Mac/.test(navigator.platform), + Cv = typeof navigator < "u" && /MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent), + Av = yv || (W0 && +W0[1] < 57); + for (Oe = 0; Oe < 10; Oe++) li[48 + Oe] = li[96 + Oe] = String(Oe); + var Oe; + for (Oe = 1; Oe <= 24; Oe++) li[Oe + 111] = "F" + Oe; + var Oe; + for (Oe = 65; Oe <= 90; Oe++) (li[Oe] = String.fromCharCode(Oe + 32)), (Rr[Oe] = String.fromCharCode(Oe)); + var Oe; + for (ko in li) Rr.hasOwnProperty(ko) || (Rr[ko] = li[ko]); + var ko; + function j0(r) { + var e = (Av && (r.ctrlKey || r.altKey || r.metaKey)) || (Cv && r.shiftKey && r.key && r.key.length == 1) || r.key == "Unidentified", + t = (!e && r.key) || (r.shiftKey ? Rr : li)[r.keyCode] || r.key || "Unidentified"; + return t == "Esc" && (t = "Escape"), t == "Del" && (t = "Delete"), t == "Left" && (t = "ArrowLeft"), t == "Up" && (t = "ArrowUp"), t == "Right" && (t = "ArrowRight"), t == "Down" && (t = "ArrowDown"), t; + } + h(j0, "keyName"); + function eu(r) { + var e; + return r.nodeType == 11 ? (e = r.getSelection ? r : r.ownerDocument) : (e = r), e.getSelection(); + } + h(eu, "getSelection"); + function Wr(r, e) { + return e ? r == e || r.contains(e.nodeType != 1 ? e.parentNode : e) : !1; + } + h(Wr, "contains"); + function Ev(r) { + var e = r.activeElement; + for (; e && e.shadowRoot; ) e = e.shadowRoot.activeElement; + return e; } - __name(deepActiveElement, "deepActiveElement"); - function hasSelection(dom, selection) { - if (!selection.anchorNode) return false; + h(Ev, "deepActiveElement"); + function Ro(r, e) { + if (!e.anchorNode) return !1; try { - return contains(dom, selection.anchorNode); - } catch (_) { - return false; + return Wr(r, e.anchorNode); + } catch (e) { + return !1; } } - __name(hasSelection, "hasSelection"); - function clientRectsFor(dom) { - if (dom.nodeType == 3) return textRange(dom, 0, dom.nodeValue.length).getClientRects(); - else if (dom.nodeType == 1) return dom.getClientRects(); - else return []; + h(Ro, "hasSelection"); + function Kn(r) { + return r.nodeType == 3 ? jr(r, 0, r.nodeValue.length).getClientRects() : r.nodeType == 1 ? r.getClientRects() : []; } - __name(clientRectsFor, "clientRectsFor"); - function isEquivalentPosition(node, off, targetNode, targetOff) { - return targetNode ? scanFor(node, off, targetNode, targetOff, -1) || scanFor(node, off, targetNode, targetOff, 1) : false; + h(Kn, "clientRectsFor"); + function tu(r, e, t, i) { + return t ? H0(r, e, t, i, -1) || H0(r, e, t, i, 1) : !1; } - __name(isEquivalentPosition, "isEquivalentPosition"); - function domIndex(node) { - for (var index = 0; ; index++) { - node = node.previousSibling; - if (!node) return index; - } + h(tu, "isEquivalentPosition"); + function iu(r) { + for (var e = 0; ; e++) if (((r = r.previousSibling), !r)) return e; } - __name(domIndex, "domIndex"); - function scanFor(node, off, targetNode, targetOff, dir) { + h(iu, "domIndex"); + function H0(r, e, t, i, n) { for (;;) { - if (node == targetNode && off == targetOff) return true; - if (off == (dir < 0 ? 0 : maxOffset(node))) { - if (node.nodeName == "DIV") return false; - var parent = node.parentNode; - if (!parent || parent.nodeType != 1) return false; - off = domIndex(node) + (dir < 0 ? 0 : 1); - node = parent; - } else if (node.nodeType == 1) { - node = node.childNodes[off + (dir < 0 ? -1 : 0)]; - if (node.nodeType == 1 && node.contentEditable == "false") return false; - off = dir < 0 ? maxOffset(node) : 0; - } else { - return false; - } - } - } - __name(scanFor, "scanFor"); - function maxOffset(node) { - return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length; - } - __name(maxOffset, "maxOffset"); - var Rect0 = { - left: 0, - right: 0, - top: 0, - bottom: 0, - }; - function flattenRect(rect, left) { - var x = left ? rect.left : rect.right; - return { - left: x, - right: x, - top: rect.top, - bottom: rect.bottom, - }; - } - __name(flattenRect, "flattenRect"); - function windowRect(win) { - return { - left: 0, - right: win.innerWidth, - top: 0, - bottom: win.innerHeight, - }; - } - __name(windowRect, "windowRect"); - function scrollRectIntoView(dom, rect, side, x, y, xMargin, yMargin, ltr) { - var doc2 = dom.ownerDocument, - win = doc2.defaultView || window; - for (var cur = dom; cur; ) { - if (cur.nodeType == 1) { - var bounding = void 0, - top2 = cur == doc2.body; - if (top2) { - bounding = windowRect(win); - } else { - if (cur.scrollHeight <= cur.clientHeight && cur.scrollWidth <= cur.clientWidth) { - cur = cur.assignedSlot || cur.parentNode; + if (r == t && e == i) return !0; + if (e == (n < 0 ? 0 : Xn(r))) { + if (r.nodeName == "DIV") return !1; + var s = r.parentNode; + if (!s || s.nodeType != 1) return !1; + (e = iu(r) + (n < 0 ? 0 : 1)), (r = s); + } else if (r.nodeType == 1) { + if (((r = r.childNodes[e + (n < 0 ? -1 : 0)]), r.nodeType == 1 && r.contentEditable == "false")) return !1; + e = n < 0 ? Xn(r) : 0; + } else return !1; + } + } + h(H0, "scanFor"); + function Xn(r) { + return r.nodeType == 3 ? r.nodeValue.length : r.childNodes.length; + } + h(Xn, "maxOffset"); + var Sg = { left: 0, right: 0, top: 0, bottom: 0 }; + function ph(r, e) { + var t = e ? r.left : r.right; + return { left: t, right: t, top: r.top, bottom: r.bottom }; + } + h(ph, "flattenRect"); + function vv(r) { + return { left: 0, right: r.innerWidth, top: 0, bottom: r.innerHeight }; + } + h(vv, "windowRect"); + function kv(r, e, t, i, n, s, o, u) { + var l = r.ownerDocument, + a = l.defaultView || window; + for (var c = r; c; ) + if (c.nodeType == 1) { + var f = void 0, + d = c == l.body; + if (d) f = vv(a); + else { + if (c.scrollHeight <= c.clientHeight && c.scrollWidth <= c.clientWidth) { + c = c.assignedSlot || c.parentNode; continue; } - var rect2 = cur.getBoundingClientRect(); - bounding = { - left: rect2.left, - right: rect2.left + cur.clientWidth, - top: rect2.top, - bottom: rect2.top + cur.clientHeight, - }; + var D = c.getBoundingClientRect(); + f = { left: D.left, right: D.left + c.clientWidth, top: D.top, bottom: D.top + c.clientHeight }; } - var moveX = 0, - moveY = 0; - if (y == "nearest") { - if (rect.top < bounding.top) { - moveY = -(bounding.top - rect.top + yMargin); - if (side > 0 && rect.bottom > bounding.bottom + moveY) moveY = rect.bottom - bounding.bottom + moveY + yMargin; - } else if (rect.bottom > bounding.bottom) { - moveY = rect.bottom - bounding.bottom + yMargin; - if (side < 0 && rect.top - moveY < bounding.top) moveY = -(bounding.top + moveY - rect.top + yMargin); - } - } else { - var rectHeight = rect.bottom - rect.top, - boundingHeight = bounding.bottom - bounding.top; - var targetTop = y == "center" && rectHeight <= boundingHeight ? rect.top + rectHeight / 2 - boundingHeight / 2 : y == "start" || (y == "center" && side < 0) ? rect.top - yMargin : rect.bottom - boundingHeight + yMargin; - moveY = targetTop - bounding.top; - } - if (x == "nearest") { - if (rect.left < bounding.left) { - moveX = -(bounding.left - rect.left + xMargin); - if (side > 0 && rect.right > bounding.right + moveX) moveX = rect.right - bounding.right + moveX + xMargin; - } else if (rect.right > bounding.right) { - moveX = rect.right - bounding.right + xMargin; - if (side < 0 && rect.left < bounding.left + moveX) moveX = -(bounding.left + moveX - rect.left + xMargin); - } - } else { - var targetLeft = x == "center" ? rect.left + (rect.right - rect.left) / 2 - (bounding.right - bounding.left) / 2 : (x == "start") == ltr ? rect.left - xMargin : rect.right - (bounding.right - bounding.left) + xMargin; - moveX = targetLeft - bounding.left; + var p = 0, + m = 0; + if (n == "nearest") e.top < f.top ? ((m = -(f.top - e.top + o)), t > 0 && e.bottom > f.bottom + m && (m = e.bottom - f.bottom + m + o)) : e.bottom > f.bottom && ((m = e.bottom - f.bottom + o), t < 0 && e.top - m < f.top && (m = -(f.top + m - e.top + o))); + else { + var D1 = e.bottom - e.top, + g = f.bottom - f.top; + m = (n == "center" && D1 <= g ? e.top + D1 / 2 - g / 2 : n == "start" || (n == "center" && t < 0) ? e.top - o : e.bottom - g + o) - f.top; } - if (moveX || moveY) { - if (top2) { - win.scrollBy(moveX, moveY); - } else { - var movedX = 0, - movedY = 0; - if (moveY) { - var start = cur.scrollTop; - cur.scrollTop += moveY; - movedY = cur.scrollTop - start; + if ( + (i == "nearest" + ? e.left < f.left + ? ((p = -(f.left - e.left + s)), t > 0 && e.right > f.right + p && (p = e.right - f.right + p + s)) + : e.right > f.right && ((p = e.right - f.right + s), t < 0 && e.left < f.left + p && (p = -(f.left + p - e.left + s))) + : (p = (i == "center" ? e.left + (e.right - e.left) / 2 - (f.right - f.left) / 2 : (i == "start") == u ? e.left - s : e.right - (f.right - f.left) + s) - f.left), + p || m) + ) + if (d) a.scrollBy(p, m); + else { + var D2 = 0, + g1 = 0; + if (m) { + var b = c.scrollTop; + (c.scrollTop += m), (g1 = c.scrollTop - b); } - if (moveX) { - var start1 = cur.scrollLeft; - cur.scrollLeft += moveX; - movedX = cur.scrollLeft - start1; + if (p) { + var b1 = c.scrollLeft; + (c.scrollLeft += p), (D2 = c.scrollLeft - b1); } - rect = { - left: rect.left - movedX, - top: rect.top - movedY, - right: rect.right - movedX, - bottom: rect.bottom - movedY, - }; - if (movedX && Math.abs(movedX - moveX) < 1) x = "nearest"; - if (movedY && Math.abs(movedY - moveY) < 1) y = "nearest"; - } - } - if (top2) break; - cur = cur.assignedSlot || cur.parentNode; - } else if (cur.nodeType == 11) { - cur = cur.host; - } else { - break; - } - } - } - __name(scrollRectIntoView, "scrollRectIntoView"); - function scrollableParent(dom) { - var doc2 = dom.ownerDocument; - for (var cur = dom.parentNode; cur; ) { - if (cur == doc2.body) { - break; - } else if (cur.nodeType == 1) { - if (cur.scrollHeight > cur.clientHeight || cur.scrollWidth > cur.clientWidth) return cur; - cur = cur.assignedSlot || cur.parentNode; - } else if (cur.nodeType == 11) { - cur = cur.host; - } else { - break; - } - } + (e = { left: e.left - D2, top: e.top - g1, right: e.right - D2, bottom: e.bottom - g1 }), D2 && Math.abs(D2 - p) < 1 && (i = "nearest"), g1 && Math.abs(g1 - m) < 1 && (n = "nearest"); + } + if (d) break; + c = c.assignedSlot || c.parentNode; + } else if (c.nodeType == 11) c = c.host; + else break; + } + h(kv, "scrollRectIntoView"); + function wv(r) { + var e = r.ownerDocument; + for (var t = r.parentNode; t && t != e.body; ) + if (t.nodeType == 1) { + if (t.scrollHeight > t.clientHeight || t.scrollWidth > t.clientWidth) return t; + t = t.assignedSlot || t.parentNode; + } else if (t.nodeType == 11) t = t.host; + else break; return null; } - __name(scrollableParent, "scrollableParent"); - var DOMSelectionState = class DOMSelectionState { - eq(domSel) { - return this.anchorNode == domSel.anchorNode && this.anchorOffset == domSel.anchorOffset && this.focusNode == domSel.focusNode && this.focusOffset == domSel.focusOffset; + h(wv, "scrollableParent"); + var $o = class $o { + eq(e) { + return this.anchorNode == e.anchorNode && this.anchorOffset == e.anchorOffset && this.focusNode == e.focusNode && this.focusOffset == e.focusOffset; } - setRange(range) { - this.set(range.anchorNode, range.anchorOffset, range.focusNode, range.focusOffset); + setRange(e) { + this.set(e.anchorNode, e.anchorOffset, e.focusNode, e.focusOffset); } - set(anchorNode, anchorOffset, focusNode, focusOffset) { - this.anchorNode = anchorNode; - this.anchorOffset = anchorOffset; - this.focusNode = focusNode; - this.focusOffset = focusOffset; + set(e, t, i, n) { + (this.anchorNode = e), (this.anchorOffset = t), (this.focusNode = i), (this.focusOffset = n); } constructor() { - this.anchorNode = null; - this.anchorOffset = 0; - this.focusNode = null; - this.focusOffset = 0; + (this.anchorNode = null), (this.anchorOffset = 0), (this.focusNode = null), (this.focusOffset = 0); } }; - __name(DOMSelectionState, "DOMSelectionState"); - var preventScrollSupported = null; - function focusPreventScroll(dom) { - if (dom.setActive) return dom.setActive(); - if (preventScrollSupported) return dom.focus(preventScrollSupported); - var stack = []; - for (var cur = dom; cur; cur = cur.parentNode) { - stack.push(cur, cur.scrollTop, cur.scrollLeft); - if (cur == cur.ownerDocument) break; - } - dom.focus( - preventScrollSupported == null - ? { - get preventScroll() { - preventScrollSupported = { - preventScroll: true, - }; - return true; - }, - } - : void 0 - ); - if (!preventScrollSupported) { - preventScrollSupported = false; - for (var i = 0; i < stack.length; ) { - var elt = stack[i++], - top2 = stack[i++], - left = stack[i++]; - if (elt.scrollTop != top2) elt.scrollTop = top2; - if (elt.scrollLeft != left) elt.scrollLeft = left; - } - } - } - __name(focusPreventScroll, "focusPreventScroll"); - var scratchRange; - function textRange(node, from) { - var to = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : from; - var range = scratchRange || (scratchRange = document.createRange()); - range.setEnd(node, to); - range.setStart(node, from); - return range; - } - __name(textRange, "textRange"); - function dispatchKey(elt, name2, code) { - var options = { - key: name2, - code: name2, - keyCode: code, - which: code, - cancelable: true, - }; - var down = new KeyboardEvent("keydown", options); - down.synthetic = true; - elt.dispatchEvent(down); - var up = new KeyboardEvent("keyup", options); - up.synthetic = true; - elt.dispatchEvent(up); - return down.defaultPrevented || up.defaultPrevented; - } - __name(dispatchKey, "dispatchKey"); - function getRoot(node) { - while (node) { - if (node && (node.nodeType == 9 || (node.nodeType == 11 && node.host))) return node; - node = node.assignedSlot || node.parentNode; + h($o, "DOMSelectionState"); + var $r = null; + function Bg(r) { + if (r.setActive) return r.setActive(); + if ($r) return r.focus($r); + var e = []; + for (var t = r; t && (e.push(t, t.scrollTop, t.scrollLeft), t != t.ownerDocument); t = t.parentNode); + if ( + (r.focus( + $r == null + ? { + get preventScroll() { + return ($r = { preventScroll: !0 }), !0; + }, + } + : void 0 + ), + !$r) + ) { + $r = !1; + for (var t1 = 0; t1 < e.length; ) { + var i = e[t1++], + n = e[t1++], + s = e[t1++]; + i.scrollTop != n && (i.scrollTop = n), i.scrollLeft != s && (i.scrollLeft = s); + } + } + } + h(Bg, "focusPreventScroll"); + var U0; + function jr(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e; + var i = U0 || (U0 = document.createRange()); + return i.setEnd(r, t), i.setStart(r, e), i; + } + h(jr, "textRange"); + function Pr(r, e, t) { + var i = { key: e, code: e, keyCode: t, which: t, cancelable: !0 }, + n = new KeyboardEvent("keydown", i); + (n.synthetic = !0), r.dispatchEvent(n); + var s = new KeyboardEvent("keyup", i); + return (s.synthetic = !0), r.dispatchEvent(s), n.defaultPrevented || s.defaultPrevented; + } + h(Pr, "dispatchKey"); + function xv(r) { + for (; r; ) { + if (r && (r.nodeType == 9 || (r.nodeType == 11 && r.host))) return r; + r = r.assignedSlot || r.parentNode; } return null; } - __name(getRoot, "getRoot"); - function clearAttributes(node) { - while (node.attributes.length) node.removeAttributeNode(node.attributes[0]); - } - __name(clearAttributes, "clearAttributes"); - function atElementStart(doc2, selection) { - var node = selection.focusNode, - offset = selection.focusOffset; - if (!node || selection.anchorNode != node || selection.anchorOffset != offset) return false; - for (;;) { - if (offset) { - if (node.nodeType != 1) return false; - var prev = node.childNodes[offset - 1]; - if (prev.contentEditable == "false") offset--; - else { - node = prev; - offset = maxOffset(node); - } - } else if (node == doc2) { - return true; + h(xv, "getRoot"); + function _g(r) { + for (; r.attributes.length; ) r.removeAttributeNode(r.attributes[0]); + } + h(_g, "clearAttributes"); + function Sv(r, e) { + var t = e.focusNode, + i = e.focusOffset; + if (!t || e.anchorNode != t || e.anchorOffset != i) return !1; + for (;;) + if (i) { + if (t.nodeType != 1) return !1; + var n = t.childNodes[i - 1]; + n.contentEditable == "false" ? i-- : ((t = n), (i = Xn(t))); } else { - offset = domIndex(node); - node = node.parentNode; + if (t == r) return !0; + (i = iu(t)), (t = t.parentNode); } - } } - __name(atElementStart, "atElementStart"); - var DOMPos = class DOMPos1 { - static before(dom, precise) { - return new DOMPos(dom.parentNode, domIndex(dom), precise); + h(Sv, "atElementStart"); + var Me = class Me1 { + static before(e, t) { + return new Me(e.parentNode, iu(e), t); } - static after(dom, precise) { - return new DOMPos(dom.parentNode, domIndex(dom) + 1, precise); + static after(e, t) { + return new Me(e.parentNode, iu(e) + 1, t); } - constructor(node, offset, ref) { - var precise = ref === void 0 ? true : ref; - this.node = node; - this.offset = offset; - this.precise = precise; + constructor(e, t, ref) { + var i = ref === void 0 ? !0 : ref; + (this.node = e), (this.offset = t), (this.precise = i); } }; - __name(DOMPos, "DOMPos"); - var noChildren = []; - var ContentView = class ContentView1 { - get editorView() { - if (!this.parent) throw new Error("Accessing view in orphan content view"); - return this.parent.editorView; - } - get overrideDOMText() { - return null; - } - get posAtStart() { - return this.parent ? this.parent.posBefore(this) : 0; - } - get posAtEnd() { - return this.posAtStart + this.length; - } - posBefore(view) { - var pos = this.posAtStart; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (child == view) return pos; - pos += child.length + child.breakAfter; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } + h(Me, "DOMPos"); + var mh = [], + De = class De1 { + get overrideDOMText() { + return null; } - throw new RangeError("Invalid child in posBefore"); - } - posAfter(view) { - return this.posBefore(view) + view.length; - } - coordsAt(_pos, _side) { - return null; - } - sync(track) { - if (this.dirty & 2) { - var parent = this.dom; - var prev = null, - next; + get posAtStart() { + return this.parent ? this.parent.posBefore(this) : 0; + } + get posAtEnd() { + return this.posAtStart + this.length; + } + posBefore(e) { + var t = this.posAtStart; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (child.dirty) { - if (!child.dom && (next = prev ? prev.nextSibling : parent.firstChild)) { - var contentView = ContentView.get(next); - if (!contentView || (!contentView.parent && contentView.canReuseDOM(child))) child.reuseDOM(next); - } - child.sync(track); - child.dirty = 0; - } - next = prev ? prev.nextSibling : parent.firstChild; - if (track && !track.written && track.node == parent && next != child.dom) track.written = true; - if (child.dom.parentNode == parent) { - while (next && next != child.dom) next = rm$1(next); - } else { - parent.insertBefore(child.dom, next); - } - prev = child.dom; + var i = _step.value; + if (i == e) return t; + t += i.length + i.breakAfter; } } catch (err) { _didIteratorError = true; @@ -11848,277 +9372,249 @@ var __generator = } } } - next = prev ? prev.nextSibling : parent.firstChild; - if (next && track && track.node == parent) track.written = true; - while (next) next = rm$1(next); - } else if (this.dirty & 1) { - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - try { - for (var _iterator1 = this.children[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var child1 = _step1.value; - if (child1.dirty) { - child1.sync(track); - child1.dirty = 0; + throw new RangeError("Invalid child in posBefore"); + } + posAfter(e) { + return this.posBefore(e) + e.length; + } + coordsAt(e, t) { + return null; + } + sync(e, t) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (this.dirty & 2) { + var i = this.dom, + n = null, + s; + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; + try { + for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var o = _step.value; + if (o.dirty) { + if (!o.dom && (s = n ? n.nextSibling : i.firstChild)) { + var u = De.get(s); + (!u || (!u.parent && u.canReuseDOM(o))) && o.reuseDOM(s); + } + o.sync(e, t), (o.dirty = 0); + } + if (((s = n ? n.nextSibling : i.firstChild), t && !t.written && t.node == i && s != o.dom && (t.written = !0), o.dom.parentNode == i)) for (; s && s != o.dom; ) s = Y0(s); + else i.insertBefore(o.dom, s); + n = o.dom; + } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; + } finally { + try { + if (!_iteratorNormalCompletion1 && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } } } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { + for (s = n ? n.nextSibling : i.firstChild, s && t && t.node == i && (t.written = !0); s; ) s = Y0(s); + } else if (this.dirty & 1) try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); + for (var _iterator1 = this.children[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { + var i1 = _step1.value; + i1.dirty && (i1.sync(e, t), (i1.dirty = 0)); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError1) { - throw _iteratorError1; + try { + if (!_iteratorNormalCompletion && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + } + reuseDOM(e) {} + localPosFromDOM(e, t) { + var i; + if (e == this.dom) i = this.dom.childNodes[t]; + else { + var n = Xn(e) == 0 ? 0 : t == 0 ? -1 : 1; + for (;;) { + var s = e.parentNode; + if (s == this.dom) break; + n == 0 && s.firstChild != s.lastChild && (e == s.firstChild ? (n = -1) : (n = 1)), (e = s); + } + n < 0 ? (i = e) : (i = e.nextSibling); + } + if (i == this.dom.firstChild) return 0; + for (; i && !De.get(i); ) i = i.nextSibling; + if (!i) return this.length; + for (var n1 = 0, s1 = 0; ; n1++) { + var o = this.children[n1]; + if (o.dom == i) return s1; + s1 += o.length + o.breakAfter; + } + } + domBoundsAround(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + var n = -1, + s = -1, + o = -1, + u = -1; + for (var l = 0, a = i, c = i; l < this.children.length; l++) { + var f = this.children[l], + d = a + f.length; + if (a < e && d > t) return f.domBoundsAround(e, t, a); + if ((d >= e && n == -1 && ((n = l), (s = a)), a > t && f.dom.parentNode == this.dom)) { + (o = l), (u = c); + break; + } + (c = d), (a = d + f.breakAfter); } + return { from: s, to: u < 0 ? i + this.length : u, startDOM: (n ? this.children[n - 1].dom.nextSibling : null) || this.dom.firstChild, endDOM: o < this.children.length && o >= 0 ? this.children[o].dom : null }; } - } - reuseDOM(_dom) {} - localPosFromDOM(node, offset) { - var after; - if (node == this.dom) { - after = this.dom.childNodes[offset]; - } else { - var bias = maxOffset(node) == 0 ? 0 : offset == 0 ? -1 : 1; - for (;;) { - var parent = node.parentNode; - if (parent == this.dom) break; - if (bias == 0 && parent.firstChild != parent.lastChild) { - if (node == parent.firstChild) bias = -1; - else bias = 1; - } - node = parent; - } - if (bias < 0) after = node; - else after = node.nextSibling; - } - if (after == this.dom.firstChild) return 0; - while (after && !ContentView.get(after)) after = after.nextSibling; - if (!after) return this.length; - for (var i = 0, pos = 0; ; i++) { - var child = this.children[i]; - if (child.dom == after) return pos; - pos += child.length + child.breakAfter; - } - } - domBoundsAround(from, to) { - var offset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - var fromI = -1, - fromStart = -1, - toI = -1, - toEnd = -1; - for (var i = 0, pos = offset, prevEnd = offset; i < this.children.length; i++) { - var child = this.children[i], - end = pos + child.length; - if (pos < from && end > to) return child.domBoundsAround(from, to, pos); - if (end >= from && fromI == -1) { - fromI = i; - fromStart = pos; - } - if (pos > to && child.dom.parentNode == this.dom) { - toI = i; - toEnd = prevEnd; - break; + markDirty() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1; + (this.dirty |= 2), this.markParentsDirty(e); + } + markParentsDirty(e) { + for (var t = this.parent; t; t = t.parent) { + if ((e && (t.dirty |= 2), t.dirty & 1)) return; + (t.dirty |= 1), (e = !1); } - prevEnd = end; - pos = end + child.breakAfter; } - return { - from: fromStart, - to: toEnd < 0 ? offset + this.length : toEnd, - startDOM: (fromI ? this.children[fromI - 1].dom.nextSibling : null) || this.dom.firstChild, - endDOM: toI < this.children.length && toI >= 0 ? this.children[toI].dom : null, - }; - } - markDirty() { - var andParent = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - this.dirty |= 2; - this.markParentsDirty(andParent); - } - markParentsDirty(childList) { - for (var parent = this.parent; parent; parent = parent.parent) { - if (childList) parent.dirty |= 2; - if (parent.dirty & 1) return; - parent.dirty |= 1; - childList = false; + setParent(e) { + this.parent != e && ((this.parent = e), this.dirty && this.markParentsDirty(!0)); } - } - setParent(parent) { - if (this.parent != parent) { - this.parent = parent; - if (this.dirty) this.markParentsDirty(true); + setDOM(e) { + this.dom && (this.dom.cmView = null), (this.dom = e), (e.cmView = this); } - } - setDOM(dom) { - if (this.dom) this.dom.cmView = null; - this.dom = dom; - dom.cmView = this; - } - get rootView() { - for (var v = this; ; ) { - var parent = v.parent; - if (!parent) return v; - v = parent; + get rootView() { + for (var e = this; ; ) { + var t = e.parent; + if (!t) return e; + e = t; + } } - } - replaceChildren(from, to) { - var children2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : noChildren; - this.markDirty(); - for (var i = from; i < to; i++) { - var child = this.children[i]; - if (child.parent == this) child.destroy(); + replaceChildren(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : mh; + this.markDirty(); + for (var n = e; n < t; n++) { + var s = this.children[n]; + s.parent == this && s.destroy(); + } + this.children.splice(e, t - e, ...i); + for (var n1 = 0; n1 < i.length; n1++) i[n1].setParent(this); } - this.children.splice(from, to - from, ...children2); - for (var i1 = 0; i1 < children2.length; i1++) children2[i1].setParent(this); - } - ignoreMutation(_rec) { - return false; - } - ignoreEvent(_event) { - return false; - } - childCursor() { - var pos = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.length; - return new ChildCursor(this.children, pos, this.children.length); - } - childPos(pos) { - var bias = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; - return this.childCursor().findPos(pos, bias); - } - toString() { - var name2 = this.constructor.name.replace("View", ""); - return name2 + (this.children.length ? "(" + this.children.join() + ")" : this.length ? "[" + (name2 == "Text" ? this.text : this.length) + "]" : "") + (this.breakAfter ? "#" : ""); - } - static get(node) { - return node.cmView; - } - get isEditable() { - return true; - } - merge(from, to, source, hasStart, openStart, openEnd) { - return false; - } - become(other) { - return false; - } - canReuseDOM(other) { - return other.constructor == this.constructor; - } - getSide() { - return 0; - } - destroy() { - this.parent = null; - } - constructor() { - this.parent = null; - this.dom = null; - this.dirty = 2; - } - }; - __name(ContentView, "ContentView"); - ContentView.prototype.breakAfter = 0; - function rm$1(dom) { - var next = dom.nextSibling; - dom.parentNode.removeChild(dom); - return next; - } - __name(rm$1, "rm$1"); - var ChildCursor = class ChildCursor { - findPos(pos) { - var bias = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + ignoreMutation(e) { + return !1; + } + ignoreEvent(e) { + return !1; + } + childCursor() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.length; + return new Ln(this.children, e, this.children.length); + } + childPos(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + return this.childCursor().findPos(e, t); + } + toString() { + var e = this.constructor.name.replace("View", ""); + return e + (this.children.length ? "(" + this.children.join() + ")" : this.length ? "[" + (e == "Text" ? this.text : this.length) + "]" : "") + (this.breakAfter ? "#" : ""); + } + static get(e) { + return e.cmView; + } + get isEditable() { + return !0; + } + get isWidget() { + return !1; + } + merge(e, t, i, n, s, o) { + return !1; + } + become(e) { + return !1; + } + canReuseDOM(e) { + return e.constructor == this.constructor; + } + getSide() { + return 0; + } + destroy() { + this.parent = null; + } + constructor() { + (this.parent = null), (this.dom = null), (this.dirty = 2); + } + }; + h(De, "ContentView"); + De.prototype.breakAfter = 0; + function Y0(r) { + var e = r.nextSibling; + return r.parentNode.removeChild(r), e; + } + h(Y0, "rm$1"); + var Ln = class Ln { + findPos(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; for (;;) { - if (pos > this.pos || (pos == this.pos && (bias > 0 || this.i == 0 || this.children[this.i - 1].breakAfter))) { - this.off = pos - this.pos; - return this; - } - var next = this.children[--this.i]; - this.pos -= next.length + next.breakAfter; + if (e > this.pos || (e == this.pos && (t > 0 || this.i == 0 || this.children[this.i - 1].breakAfter))) return (this.off = e - this.pos), this; + var i = this.children[--this.i]; + this.pos -= i.length + i.breakAfter; } } - constructor(children2, pos, i) { - this.children = children2; - this.pos = pos; - this.i = i; - this.off = 0; + constructor(e, t, i) { + (this.children = e), (this.pos = t), (this.i = i), (this.off = 0); } }; - __name(ChildCursor, "ChildCursor"); - function replaceRange(parent, fromI, fromOff, toI, toOff, insert3, breakAtStart, openStart, openEnd) { - var children2 = parent.children; - var before = children2.length ? children2[fromI] : null; - var last = insert3.length ? insert3[insert3.length - 1] : null; - var breakAtEnd = last ? last.breakAfter : breakAtStart; - if (fromI == toI && before && !breakAtStart && !breakAtEnd && insert3.length < 2 && before.merge(fromOff, toOff, insert3.length ? last : null, fromOff == 0, openStart, openEnd)) return; - if (toI < children2.length) { - var after = children2[toI]; - if (after && toOff < after.length) { - if (fromI == toI) { - after = after.split(toOff); - toOff = 0; - } - if (!breakAtEnd && last && after.merge(0, toOff, last, true, 0, openEnd)) { - insert3[insert3.length - 1] = after; - } else { - if (toOff) after.merge(0, toOff, null, false, 0, openEnd); - insert3.push(after); - } - } else if (after === null || after === void 0 ? void 0 : after.breakAfter) { - if (last) last.breakAfter = 1; - else breakAtStart = 1; - } - toI++; - } - if (before) { - before.breakAfter = breakAtStart; - if (fromOff > 0) { - if (!breakAtStart && insert3.length && before.merge(fromOff, before.length, insert3[0], false, openStart, 0)) { - before.breakAfter = insert3.shift().breakAfter; - } else if (fromOff < before.length || (before.children.length && before.children[before.children.length - 1].length == 0)) { - before.merge(fromOff, before.length, null, false, openStart, 0); - } - fromI++; - } - } - while (fromI < toI && insert3.length) { - if (children2[toI - 1].become(insert3[insert3.length - 1])) { - toI--; - insert3.pop(); - openEnd = insert3.length ? 0 : openStart; - } else if (children2[fromI].become(insert3[0])) { - fromI++; - insert3.shift(); - openStart = insert3.length ? 0 : openEnd; - } else { - break; - } - } - if (!insert3.length && fromI && toI < children2.length && !children2[fromI - 1].breakAfter && children2[toI].merge(0, 0, children2[fromI - 1], false, openStart, openEnd)) fromI--; - if (fromI < toI || insert3.length) parent.replaceChildren(fromI, toI, insert3); - } - __name(replaceRange, "replaceRange"); - function mergeChildrenInto(parent, from, to, insert3, openStart, openEnd) { - var cur = parent.childCursor(); - var _cur_findPos = cur.findPos(to, 1), - toI = _cur_findPos.i, - toOff = _cur_findPos.off; - var _cur_findPos1 = cur.findPos(from, -1), - fromI = _cur_findPos1.i, - fromOff = _cur_findPos1.off; - var dLen = from - to; + h(Ln, "ChildCursor"); + function Og(r, e, t, i, n, s, o, u, l) { + var a = r.children, + c = a.length ? a[e] : null, + f = s.length ? s[s.length - 1] : null, + d = f ? f.breakAfter : o; + if (!(e == i && c && !o && !d && s.length < 2 && c.merge(t, n, s.length ? f : null, t == 0, u, l))) { + if (i < a.length) { + var p = a[i]; + p && n < p.length ? (e == i && ((p = p.split(n)), (n = 0)), !d && f && p.merge(0, n, f, !0, 0, l) ? (s[s.length - 1] = p) : (n && p.merge(0, n, null, !1, 0, l), s.push(p))) : (p === null || p === void 0 ? void 0 : p.breakAfter) && (f ? (f.breakAfter = 1) : (o = 1)), i++; + } + for (c && ((c.breakAfter = o), t > 0 && (!o && s.length && c.merge(t, c.length, s[0], !1, u, 0) ? (c.breakAfter = s.shift().breakAfter) : (t < c.length || (c.children.length && c.children[c.children.length - 1].length == 0)) && c.merge(t, c.length, null, !1, u, 0), e++)); e < i && s.length; ) + if (a[i - 1].become(s[s.length - 1])) i--, s.pop(), (l = s.length ? 0 : u); + else if (a[e].become(s[0])) e++, s.shift(), (u = s.length ? 0 : l); + else break; + !s.length && e && i < a.length && !a[e - 1].breakAfter && a[i].merge(0, 0, a[e - 1], !1, u, l) && e--, (e < i || s.length) && r.replaceChildren(e, i, s); + } + } + h(Og, "replaceRange"); + function Tg(r, e, t, i, n, s) { + var o = r.childCursor(), + _o_findPos = o.findPos(t, 1), + u = _o_findPos.i, + l = _o_findPos.off, + _o_findPos1 = o.findPos(e, -1), + a = _o_findPos1.i, + c = _o_findPos1.off, + f = e - t; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = insert3[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var view = _step.value; - dLen += view.length; + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var d = _step.value; + f += d.length; } } catch (err) { _didIteratorError = true; @@ -12134,145 +9630,102 @@ var __generator = } } } - parent.length += dLen; - replaceRange(parent, fromI, fromOff, toI, toOff, insert3, 0, openStart, openEnd); - } - __name(mergeChildrenInto, "mergeChildrenInto"); - var nav = - typeof navigator != "undefined" - ? navigator - : { - userAgent: "", - vendor: "", - platform: "", - }; - var doc = - typeof document != "undefined" - ? document - : { - documentElement: { - style: {}, - }, - }; - var ie_edge = /* @__PURE__ */ /Edge\/(\d+)/.exec(nav.userAgent); - var ie_upto10 = /* @__PURE__ */ /MSIE \d/.test(nav.userAgent); - var ie_11up = /* @__PURE__ */ /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(nav.userAgent); - var ie2 = !!(ie_upto10 || ie_11up || ie_edge); - var gecko2 = !ie2 && /* @__PURE__ */ /gecko\/(\d+)/i.test(nav.userAgent); - var chrome2 = !ie2 && /* @__PURE__ */ /Chrome\/(\d+)/.exec(nav.userAgent); - var webkit = "webkitFontSmoothing" in doc.documentElement.style; - var safari = !ie2 && /* @__PURE__ */ /Apple Computer/.test(nav.vendor); - var ios = safari && /* @__PURE__ */ (/Mobile\/\w+/.test(nav.userAgent) || nav.maxTouchPoints > 2); - var browser = { - mac: ios || /* @__PURE__ */ /Mac/.test(nav.platform), - windows: /* @__PURE__ */ /Win/.test(nav.platform), - linux: /* @__PURE__ */ /Linux|X11/.test(nav.platform), - ie: ie2, - ie_version: ie_upto10 ? doc.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0, - gecko: gecko2, - gecko_version: gecko2 ? +(/* @__PURE__ */ (/Firefox\/(\d+)/.exec(nav.userAgent) || [0, 0])[1]) : 0, - chrome: !!chrome2, - chrome_version: chrome2 ? +chrome2[1] : 0, - ios, - android: /* @__PURE__ */ /Android\b/.test(nav.userAgent), - webkit, - safari, - webkit_version: webkit ? +(/* @__PURE__ */ (/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent) || [0, 0])[1]) : 0, - tabSize: doc.documentElement.style.tabSize != null ? "tab-size" : "-moz-tab-size", - }; - var MaxJoinLen = 256; - var TextView = class TextView1 extends ContentView { - get length() { - return this.text.length; - } - createDOM(textDOM) { - this.setDOM(textDOM || document.createTextNode(this.text)); - } - sync(track) { - if (!this.dom) this.createDOM(); - if (this.dom.nodeValue != this.text) { - if (track && track.node == this.dom) track.written = true; - this.dom.nodeValue = this.text; + (r.length += f), Og(r, a, c, u, l, i, 0, n, s); + } + h(Tg, "mergeChildrenInto"); + var at = typeof navigator < "u" ? navigator : { userAgent: "", vendor: "", platform: "" }, + Xa = typeof document < "u" ? document : { documentElement: { style: {} } }, + Qa = /Edge\/(\d+)/.exec(at.userAgent), + Rg = /MSIE \d/.test(at.userAgent), + Ja = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(at.userAgent), + su = !!(Rg || Ja || Qa), + G0 = !su && /gecko\/(\d+)/i.test(at.userAgent), + ja = !su && /Chrome\/(\d+)/.exec(at.userAgent), + K0 = "webkitFontSmoothing" in Xa.documentElement.style, + $g = !su && /Apple Computer/.test(at.vendor), + X0 = $g && (/Mobile\/\w+/.test(at.userAgent) || at.maxTouchPoints > 2), + U = { + mac: X0 || /Mac/.test(at.platform), + windows: /Win/.test(at.platform), + linux: /Linux|X11/.test(at.platform), + ie: su, + ie_version: Rg ? Xa.documentMode || 6 : Ja ? +Ja[1] : Qa ? +Qa[1] : 0, + gecko: G0, + gecko_version: G0 ? +(/Firefox\/(\d+)/.exec(at.userAgent) || [0, 0])[1] : 0, + chrome: !!ja, + chrome_version: ja ? +ja[1] : 0, + ios: X0, + android: /Android\b/.test(at.userAgent), + webkit: K0, + safari: $g, + webkit_version: K0 ? +(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0, + tabSize: Xa.documentElement.style.tabSize != null ? "tab-size" : "-moz-tab-size", + }, + Bv = 256, + Ot = class Ot1 extends De { + get length() { + return this.text.length; + } + createDOM(e) { + this.setDOM(e || document.createTextNode(this.text)); + } + sync(e, t) { + this.dom || this.createDOM(), this.dom.nodeValue != this.text && (t && t.node == this.dom && (t.written = !0), (this.dom.nodeValue = this.text)); + } + reuseDOM(e) { + e.nodeType == 3 && this.createDOM(e); + } + merge(e, t, i) { + return i && (!(i instanceof Ot) || this.length - (t - e) + i.length > Bv) ? !1 : ((this.text = this.text.slice(0, e) + (i ? i.text : "") + this.text.slice(t)), this.markDirty(), !0); + } + split(e) { + var t = new Ot(this.text.slice(e)); + return (this.text = this.text.slice(0, e)), this.markDirty(), t; + } + localPosFromDOM(e, t) { + return e == this.dom ? t : t ? this.text.length : 0; + } + domAtPos(e) { + return new Me(this.dom, e); + } + domBoundsAround(e, t, i) { + return { from: i, to: i + this.length, startDOM: this.dom, endDOM: this.dom.nextSibling }; + } + coordsAt(e, t) { + return Za(this.dom, e, t); + } + constructor(e) { + super(), (this.text = e); } + }; + h(Ot, "TextView"); + var ht = class ht1 extends De { + setAttrs(e) { + if ((_g(e), this.mark.class && (e.className = this.mark.class), this.mark.attrs)) for (var t in this.mark.attrs) e.setAttribute(t, this.mark.attrs[t]); + return e; } - reuseDOM(dom) { - if (dom.nodeType == 3) this.createDOM(dom); - } - merge(from, to, source) { - if (source && (!(source instanceof TextView) || this.length - (to - from) + source.length > MaxJoinLen)) return false; - this.text = this.text.slice(0, from) + (source ? source.text : "") + this.text.slice(to); - this.markDirty(); - return true; - } - split(from) { - var result = new TextView(this.text.slice(from)); - this.text = this.text.slice(0, from); - this.markDirty(); - return result; - } - localPosFromDOM(node, offset) { - return node == this.dom ? offset : offset ? this.text.length : 0; - } - domAtPos(pos) { - return new DOMPos(this.dom, pos); - } - domBoundsAround(_from, _to, offset) { - return { - from: offset, - to: offset + this.length, - startDOM: this.dom, - endDOM: this.dom.nextSibling, - }; + reuseDOM(e) { + e.nodeName == this.mark.tagName.toUpperCase() && (this.setDOM(e), (this.dirty |= 6)); } - coordsAt(pos, side) { - return textCoords(this.dom, pos, side); + sync(e, t) { + this.dom ? this.dirty & 4 && this.setAttrs(this.dom) : this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))), super.sync(e, t); } - constructor(text2) { - super(); - this.text = text2; + merge(e, t, i, n, s, o) { + return i && (!(i instanceof ht && i.mark.eq(this.mark)) || (e && s <= 0) || (t < this.length && o <= 0)) ? !1 : (Tg(this, e, t, i ? i.children : [], s - 1, o - 1), this.markDirty(), !0); } - }; - __name(TextView, "TextView"); - var MarkView = class MarkView1 extends ContentView { - setAttrs(dom) { - clearAttributes(dom); - if (this.mark.class) dom.className = this.mark.class; - if (this.mark.attrs) for (var name2 in this.mark.attrs) dom.setAttribute(name2, this.mark.attrs[name2]); - return dom; - } - reuseDOM(node) { - if (node.nodeName == this.mark.tagName.toUpperCase()) { - this.setDOM(node); - this.dirty |= 4 | 2; - } - } - sync(track) { - if (!this.dom) this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))); - else if (this.dirty & 4) this.setAttrs(this.dom); - super.sync(track); - } - merge(from, to, source, _hasStart, openStart, openEnd) { - if (source && (!(source instanceof MarkView && source.mark.eq(this.mark)) || (from && openStart <= 0) || (to < this.length && openEnd <= 0))) return false; - mergeChildrenInto(this, from, to, source ? source.children : [], openStart - 1, openEnd - 1); - this.markDirty(); - return true; - } - split(from) { - var result = [], - off = 0, - detachFrom = -1, - i = 0; + split(e) { + var t = [], + i = 0, + n = -1, + s = 0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var elt = _step.value; - var end = off + elt.length; - if (end > from) result.push(off < from ? elt.split(from - off) : elt); - if (detachFrom < 0 && off >= from) detachFrom = i; - off = end; - i++; + var u = _step.value; + var l = i + u.length; + l > e && t.push(i < e ? u.split(e - i) : u), n < 0 && i >= e && (n = s), (i = l), s++; } } catch (err) { _didIteratorError = true; @@ -12288,34 +9741,26 @@ var __generator = } } } - var length = this.length - from; - this.length = from; - if (detachFrom > -1) { - this.children.length = detachFrom; - this.markDirty(); - } - return new MarkView(this.mark, result, length); + var o = this.length - e; + return (this.length = e), n > -1 && ((this.children.length = n), this.markDirty()), new ht(this.mark, t, o); } - domAtPos(pos) { - return inlineDOMAtPos(this, pos); + domAtPos(e) { + return Pg(this, e); } - coordsAt(pos, side) { - return coordsInChildren(this, pos, side); + coordsAt(e, t) { + return qg(this, e, t); } - constructor(mark, ref, ref1) { - var children2 = ref === void 0 ? [] : ref, - length = ref1 === void 0 ? 0 : ref1; - super(); - this.mark = mark; - this.children = children2; - this.length = length; + constructor(e, ref, ref1) { + var t = ref === void 0 ? [] : ref, + i = ref1 === void 0 ? 0 : ref1; + super(), (this.mark = e), (this.children = t), (this.length = i); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = children2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var ch = _step.value; - ch.setParent(this); + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + n.setParent(this); } } catch (err) { _didIteratorError = true; @@ -12333,205 +9778,166 @@ var __generator = } } }; - __name(MarkView, "MarkView"); - function textCoords(text2, pos, side) { - var length = text2.nodeValue.length; - if (pos > length) pos = length; - var from = pos, - to = pos, - flatten2 = 0; - if ((pos == 0 && side < 0) || (pos == length && side >= 0)) { - if (!(browser.chrome || browser.gecko)) { - if (pos) { - from--; - flatten2 = 1; - } else if (to < length) { - to++; - flatten2 = -1; - } - } - } else { - if (side < 0) from--; - else if (to < length) to++; - } - var rects = textRange(text2, from, to).getClientRects(); - if (!rects.length) return Rect0; - var rect = rects[(flatten2 ? flatten2 < 0 : side >= 0) ? 0 : rects.length - 1]; - if (browser.safari && !flatten2 && rect.width == 0) rect = Array.prototype.find.call(rects, (r) => r.width) || rect; - return flatten2 ? flattenRect(rect, flatten2 < 0) : rect || null; - } - __name(textCoords, "textCoords"); - var WidgetView = class WidgetView1 extends ContentView { - static create(widget, length, side) { - return new (widget.customView || WidgetView)(widget, length, side); - } - split(from) { - var result = WidgetView.create(this.widget, this.length - from, this.side); - this.length -= from; - return result; - } - sync() { - if (!this.dom || !this.widget.updateDOM(this.dom)) { - if (this.dom && this.prevWidget) this.prevWidget.destroy(this.dom); - this.prevWidget = null; - this.setDOM(this.widget.toDOM(this.editorView)); - this.dom.contentEditable = "false"; - } + h(ht, "MarkView"); + function Za(r, e, t) { + var i = r.nodeValue.length; + e > i && (e = i); + var n = e, + s = e, + o = 0; + (e == 0 && t < 0) || (e == i && t >= 0) ? U.chrome || U.gecko || (e ? (n--, (o = 1)) : s < i && (s++, (o = -1))) : t < 0 ? n-- : s < i && s++; + var u = jr(r, n, s).getClientRects(); + if (!u.length) return Sg; + var l = u[(o ? o < 0 : t >= 0) ? 0 : u.length - 1]; + return U.safari && !o && l.width == 0 && (l = Array.prototype.find.call(u, (a) => a.width) || l), o ? ph(l, o < 0) : l || null; + } + h(Za, "textCoords"); + var _t = class _t1 extends De { + static create(e, t, i) { + return new (e.customView || _t)(e, t, i); + } + split(e) { + var t = _t.create(this.widget, this.length - e, this.side); + return (this.length -= e), t; + } + sync(e) { + (!this.dom || !this.widget.updateDOM(this.dom, e)) && (this.dom && this.prevWidget && this.prevWidget.destroy(this.dom), (this.prevWidget = null), this.setDOM(this.widget.toDOM(e)), (this.dom.contentEditable = "false")); } getSide() { return this.side; } - merge(from, to, source, hasStart, openStart, openEnd) { - if (source && (!(source instanceof WidgetView) || !this.widget.compare(source.widget) || (from > 0 && openStart <= 0) || (to < this.length && openEnd <= 0))) return false; - this.length = from + (source ? source.length : 0) + (this.length - to); - return true; + merge(e, t, i, n, s, o) { + return i && (!(i instanceof _t) || !this.widget.compare(i.widget) || (e > 0 && s <= 0) || (t < this.length && o <= 0)) ? !1 : ((this.length = e + (i ? i.length : 0) + (this.length - t)), !0); } - become(other) { - if (other.length == this.length && other instanceof WidgetView && other.side == this.side) { - if (this.widget.constructor == other.widget.constructor) { - if (!this.widget.eq(other.widget)) this.markDirty(true); - if (this.dom && !this.prevWidget) this.prevWidget = this.widget; - this.widget = other.widget; - return true; - } - } - return false; + become(e) { + return e.length == this.length && e instanceof _t && e.side == this.side && this.widget.constructor == e.widget.constructor ? (this.widget.eq(e.widget) || this.markDirty(!0), this.dom && !this.prevWidget && (this.prevWidget = this.widget), (this.widget = e.widget), !0) : !1; } ignoreMutation() { - return true; + return !0; } - ignoreEvent(event) { - return this.widget.ignoreEvent(event); + ignoreEvent(e) { + return this.widget.ignoreEvent(e); } get overrideDOMText() { - if (this.length == 0) return Text.empty; - var top2 = this; - while (top2.parent) top2 = top2.parent; - var view = top2.editorView, - text2 = view && view.state.doc, - start = this.posAtStart; - return text2 ? text2.slice(start, start + this.length) : Text.empty; + if (this.length == 0) return ce.empty; + var e = this; + for (; e.parent; ) e = e.parent; + var t = e.view, + i = t && t.state.doc, + n = this.posAtStart; + return i ? i.slice(n, n + this.length) : ce.empty; } - domAtPos(pos) { - return pos == 0 ? DOMPos.before(this.dom) : DOMPos.after(this.dom, pos == this.length); + domAtPos(e) { + return e == 0 ? Me.before(this.dom) : Me.after(this.dom, e == this.length); } domBoundsAround() { return null; } - coordsAt(pos, side) { - var rects = this.dom.getClientRects(), - rect = null; - if (!rects.length) return Rect0; - for (var i = pos > 0 ? rects.length - 1 : 0; ; i += pos > 0 ? -1 : 1) { - rect = rects[i]; - if (pos > 0 ? i == 0 : i == rects.length - 1 || rect.top < rect.bottom) break; - } - return this.length ? rect : flattenRect(rect, this.side > 0); + coordsAt(e, t) { + var i = this.dom.getClientRects(), + n = null; + if (!i.length) return Sg; + for (var s = e > 0 ? i.length - 1 : 0; (n = i[s]), !(e > 0 ? s == 0 : s == i.length - 1 || n.top < n.bottom); s += e > 0 ? -1 : 1); + return this.length ? n : ph(n, this.side > 0); } get isEditable() { - return false; + return !1; + } + get isWidget() { + return !0; } destroy() { - super.destroy(); - if (this.dom) this.widget.destroy(this.dom); + super.destroy(), this.dom && this.widget.destroy(this.dom); } - constructor(widget, length, side) { - super(); - this.widget = widget; - this.length = length; - this.side = side; - this.prevWidget = null; + constructor(e, t, i) { + super(), (this.widget = e), (this.length = t), (this.side = i), (this.prevWidget = null); } }; - __name(WidgetView, "WidgetView"); - var CompositionView = class CompositionView extends WidgetView { - domAtPos(pos) { + h(_t, "WidgetView"); + var qn = class qn extends _t { + domAtPos(e) { var _this_widget = this.widget, - topView = _this_widget.topView, - text2 = _this_widget.text; - if (!topView) return new DOMPos(text2, Math.min(pos, text2.nodeValue.length)); - return scanCompositionTree( - pos, - 0, - topView, - text2, - (v, p) => v.domAtPos(p), - (p) => new DOMPos(text2, Math.min(p, text2.nodeValue.length)) - ); + t = _this_widget.topView, + i = _this_widget.text; + return t + ? eh( + e, + 0, + t, + i, + (n, s) => n.domAtPos(s), + (n) => new Me(i, Math.min(n, i.nodeValue.length)) + ) + : new Me(i, Math.min(e, i.nodeValue.length)); } sync() { this.setDOM(this.widget.toDOM()); } - localPosFromDOM(node, offset) { + localPosFromDOM(e, t) { var _this_widget = this.widget, - topView = _this_widget.topView, - text2 = _this_widget.text; - if (!topView) return Math.min(offset, this.length); - return posFromDOMInCompositionTree(node, offset, topView, text2); + i = _this_widget.topView, + n = _this_widget.text; + return i ? Mg(e, t, i, n) : Math.min(t, this.length); } ignoreMutation() { - return false; + return !1; } get overrideDOMText() { return null; } - coordsAt(pos, side) { + coordsAt(e, t) { var _this_widget = this.widget, - topView = _this_widget.topView, - text2 = _this_widget.text; - if (!topView) return textCoords(text2, pos, side); - return scanCompositionTree( - pos, - side, - topView, - text2, - (v, pos2, side2) => v.coordsAt(pos2, side2), - (pos2, side2) => textCoords(text2, pos2, side2) - ); + i = _this_widget.topView, + n = _this_widget.text; + return i + ? eh( + e, + t, + i, + n, + (s, o, u) => s.coordsAt(o, u), + (s, o) => Za(n, s, o) + ) + : Za(n, e, t); } destroy() { - var _a2; - super.destroy(); - (_a2 = this.widget.topView) === null || _a2 === void 0 ? void 0 : _a2.destroy(); + var e; + super.destroy(), (e = this.widget.topView) === null || e === void 0 || e.destroy(); } get isEditable() { - return true; + return !0; } canReuseDOM() { - return true; + return !0; } }; - __name(CompositionView, "CompositionView"); - function scanCompositionTree(pos, side, view, text2, enterView, fromText) { - if (view instanceof MarkView) { - for (var child = view.dom.firstChild; child; child = child.nextSibling) { - var desc = ContentView.get(child); - if (!desc) return fromText(pos, side); - var hasComp = contains(child, text2); - var len = desc.length + (hasComp ? text2.nodeValue.length : 0); - if (pos < len || (pos == len && desc.getSide() <= 0)) return hasComp ? scanCompositionTree(pos, side, desc, text2, enterView, fromText) : enterView(desc, pos, side); - pos -= len; - } - return enterView(view, view.length, -1); - } else if (view.dom == text2) { - return fromText(pos, side); - } else { - return enterView(view, pos, side); - } - } - __name(scanCompositionTree, "scanCompositionTree"); - function posFromDOMInCompositionTree(node, offset, view, text2) { - if (view instanceof MarkView) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + h(qn, "CompositionView"); + function eh(r, e, t, i, n, s) { + if (t instanceof ht) { + for (var o = t.dom.firstChild; o; o = o.nextSibling) { + var u = De.get(o); + if (!u) return s(r, e); + var l = Wr(o, i), + a = u.length + (l ? i.nodeValue.length : 0); + if (r < a || (r == a && u.getSide() <= 0)) return l ? eh(r, e, u, i, n, s) : n(u, r, e); + r -= a; + } + return n(t, t.length, -1); + } else return t.dom == i ? s(r, e) : n(t, r, e); + } + h(eh, "scanCompositionTree"); + function Mg(r, e, t, i) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (t instanceof ht) try { - for (var _iterator = view.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - var pos = 0, - hasComp = contains(child.dom, text2); - if (contains(child.dom, node)) return pos + (hasComp ? posFromDOMInCompositionTree(node, offset, child, text2) : child.localPosFromDOM(node, offset)); - pos += hasComp ? text2.nodeValue.length : child.length; + for (var _iterator = t.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + var s = 0, + o = Wr(n.dom, i); + if (Wr(n.dom, r)) return s + (o ? Mg(r, e, n, i) : n.localPosFromDOM(r, e)); + s += o ? i.nodeValue.length : n.length; } } catch (err) { _didIteratorError = true; @@ -12547,38 +9953,34 @@ var __generator = } } } - } else if (view.dom == text2) { - return Math.min(offset, text2.nodeValue.length); - } - return view.localPosFromDOM(node, offset); + else if (t.dom == i) return Math.min(e, i.nodeValue.length); + return t.localPosFromDOM(r, e); } - __name(posFromDOMInCompositionTree, "posFromDOMInCompositionTree"); - var WidgetBufferView = class WidgetBufferView1 extends ContentView { + h(Mg, "posFromDOMInCompositionTree"); + var ai = class ai1 extends De { get length() { return 0; } merge() { - return false; + return !1; } - become(other) { - return other instanceof WidgetBufferView && other.side == this.side; + become(e) { + return e instanceof ai && e.side == this.side; } split() { - return new WidgetBufferView(this.side); + return new ai(this.side); } sync() { if (!this.dom) { - var dom = document.createElement("img"); - dom.className = "cm-widgetBuffer"; - dom.setAttribute("aria-hidden", "true"); - this.setDOM(dom); + var e = document.createElement("img"); + (e.className = "cm-widgetBuffer"), e.setAttribute("aria-hidden", "true"), this.setDOM(e); } } getSide() { return this.side; } - domAtPos(pos) { - return DOMPos.before(this.dom); + domAtPos(e) { + return Me.before(this.dom); } localPosFromDOM() { return 0; @@ -12586,145 +9988,111 @@ var __generator = domBoundsAround() { return null; } - coordsAt(pos) { - var imgRect = this.dom.getBoundingClientRect(); - var siblingRect = inlineSiblingRect(this, this.side > 0 ? -1 : 1); - return siblingRect && siblingRect.top < imgRect.bottom && siblingRect.bottom > imgRect.top - ? { - left: imgRect.left, - right: imgRect.right, - top: siblingRect.top, - bottom: siblingRect.bottom, - } - : imgRect; + coordsAt(e) { + var t = this.dom.getBoundingClientRect(), + i = _v(this, this.side > 0 ? -1 : 1); + return i && i.top < t.bottom && i.bottom > t.top ? { left: t.left, right: t.right, top: i.top, bottom: i.bottom } : t; } get overrideDOMText() { - return Text.empty; + return ce.empty; } - constructor(side) { - super(); - this.side = side; + constructor(e) { + super(), (this.side = e); } }; - __name(WidgetBufferView, "WidgetBufferView"); - TextView.prototype.children = WidgetView.prototype.children = WidgetBufferView.prototype.children = noChildren; - function inlineSiblingRect(view, side) { - var parent = view.parent, - index = parent ? parent.children.indexOf(view) : -1; - while (parent && index >= 0) { - if (side < 0 ? index > 0 : index < parent.children.length) { - var next = parent.children[index + side]; - if (next instanceof TextView) { - var nextRect = next.coordsAt(side < 0 ? next.length : 0, side); - if (nextRect) return nextRect; - } - index += side; - } else if (parent instanceof MarkView && parent.parent) { - index = parent.parent.children.indexOf(parent) + (side < 0 ? 0 : 1); - parent = parent.parent; - } else { - var last = parent.dom.lastChild; - if (last && last.nodeName == "BR") return last.getClientRects()[0]; + h(ai, "WidgetBufferView"); + Ot.prototype.children = _t.prototype.children = ai.prototype.children = mh; + function _v(r, e) { + var t = r.parent, + i = t ? t.children.indexOf(r) : -1; + for (; t && i >= 0; ) + if (e < 0 ? i > 0 : i < t.children.length) { + var n = t.children[i + e]; + if (n instanceof Ot) { + var s = n.coordsAt(e < 0 ? n.length : 0, e); + if (s) return s; + } + i += e; + } else if (t instanceof ht && t.parent) (i = t.parent.children.indexOf(t) + (e < 0 ? 0 : 1)), (t = t.parent); + else { + var n1 = t.dom.lastChild; + if (n1 && n1.nodeName == "BR") return n1.getClientRects()[0]; break; } - } - return void 0; - } - __name(inlineSiblingRect, "inlineSiblingRect"); - function inlineDOMAtPos(parent, pos) { - var dom = parent.dom, - children2 = parent.children, - i = 0; - for (var off = 0; i < children2.length; i++) { - var child = children2[i], - end = off + child.length; - if (end == off && child.getSide() <= 0) continue; - if (pos > off && pos < end && child.dom.parentNode == dom) return child.domAtPos(pos - off); - if (pos <= off) break; - off = end; - } - for (var j = i; j > 0; j--) { - var prev = children2[j - 1]; - if (prev.dom.parentNode == dom) return prev.domAtPos(prev.length); - } - for (var j1 = i; j1 < children2.length; j1++) { - var next = children2[j1]; - if (next.dom.parentNode == dom) return next.domAtPos(0); - } - return new DOMPos(dom, 0); - } - __name(inlineDOMAtPos, "inlineDOMAtPos"); - function joinInlineInto(parent, view, open) { - var last, - children2 = parent.children; - if (open > 0 && view instanceof MarkView && children2.length && (last = children2[children2.length - 1]) instanceof MarkView && last.mark.eq(view.mark)) { - joinInlineInto(last, view.children[0], open - 1); - } else { - children2.push(view); - view.setParent(parent); - } - parent.length += view.length; - } - __name(joinInlineInto, "joinInlineInto"); - function coordsInChildren(view, pos, side) { - var before = null, - beforePos = -1, - after = null, - afterPos = -1; - function scan(view2, pos2) { - for (var i = 0, off = 0; i < view2.children.length && off <= pos2; i++) { - var child = view2.children[i], - end = off + child.length; - if (end >= pos2) { - if (child.children.length) { - scan(child, pos2 - off); - } else if (!after && (end > pos2 || (off == end && child.getSide() > 0))) { - after = child; - afterPos = pos2 - off; - } else if (off < pos2 || (off == end && child.getSide() < 0)) { - before = child; - beforePos = pos2 - off; - } - } - off = end; - } - } - __name(scan, "scan"); - scan(view, pos); - var target = (side < 0 ? before : after) || before || after; - if (target) return target.coordsAt(Math.max(0, target == before ? beforePos : afterPos), side); - return fallbackRect(view); - } - __name(coordsInChildren, "coordsInChildren"); - function fallbackRect(view) { - var last = view.dom.lastChild; - if (!last) return view.dom.getBoundingClientRect(); - var rects = clientRectsFor(last); - return rects[rects.length - 1] || null; - } - __name(fallbackRect, "fallbackRect"); - function combineAttrs(source, target) { - for (var name2 in source) { - if (name2 == "class" && target.class) target.class += " " + source.class; - else if (name2 == "style" && target.style) target.style += ";" + source.style; - else target[name2] = source[name2]; - } - return target; - } - __name(combineAttrs, "combineAttrs"); - function attrsEq(a, b) { - if (a == b) return true; - if (!a || !b) return false; - var keysA = Object.keys(a), - keysB = Object.keys(b); - if (keysA.length != keysB.length) return false; + } + h(_v, "inlineSiblingRect"); + function Pg(r, e) { + var t = r.dom, + i = r.children, + n = 0; + for (var s = 0; n < i.length; n++) { + var o = i[n], + u = s + o.length; + if (!(u == s && o.getSide() <= 0)) { + if (e > s && e < u && o.dom.parentNode == t) return o.domAtPos(e - s); + if (e <= s) break; + s = u; + } + } + for (var s1 = n; s1 > 0; s1--) { + var o1 = i[s1 - 1]; + if (o1.dom.parentNode == t) return o1.domAtPos(o1.length); + } + for (var s2 = n; s2 < i.length; s2++) { + var o2 = i[s2]; + if (o2.dom.parentNode == t) return o2.domAtPos(0); + } + return new Me(t, 0); + } + h(Pg, "inlineDOMAtPos"); + function Lg(r, e, t) { + var i, + n = r.children; + t > 0 && e instanceof ht && n.length && (i = n[n.length - 1]) instanceof ht && i.mark.eq(e.mark) ? Lg(i, e.children[0], t - 1) : (n.push(e), e.setParent(r)), (r.length += e.length); + } + h(Lg, "joinInlineInto"); + function qg(r, e, t) { + var i = null, + n = -1, + s = null, + o = -1; + function u(a, c) { + for (var f = 0, d = 0; f < a.children.length && d <= c; f++) { + var p = a.children[f], + m = d + p.length; + m >= c && (p.children.length ? u(p, c - d) : !s && (m > c || (d == m && p.getSide() > 0)) ? ((s = p), (o = c - d)) : (d < c || (d == m && p.getSide() < 0)) && ((i = p), (n = c - d))), (d = m); + } + } + h(u, "scan"), u(r, e); + var l = (t < 0 ? i : s) || i || s; + return l ? l.coordsAt(Math.max(0, l == i ? n : o), t) : Ov(r); + } + h(qg, "coordsInChildren"); + function Ov(r) { + var e = r.dom.lastChild; + if (!e) return r.dom.getBoundingClientRect(); + var t = Kn(e); + return t[t.length - 1] || null; + } + h(Ov, "fallbackRect"); + function th(r, e) { + for (var t in r) t == "class" && e.class ? (e.class += " " + r.class) : t == "style" && e.style ? (e.style += ";" + r.style) : (e[t] = r[t]); + return e; + } + h(th, "combineAttrs"); + function gh(r, e) { + if (r == e) return !0; + if (!r || !e) return !1; + var t = Object.keys(r), + i = Object.keys(e); + if (t.length != i.length) return !1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = keysA[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - if (keysB.indexOf(key) == -1 || a[key] !== b[key]) return false; + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + if (i.indexOf(n) == -1 || r[n] !== e[n]) return !1; } } catch (err) { _didIteratorError = true; @@ -12740,291 +10108,219 @@ var __generator = } } } - return true; + return !0; } - __name(attrsEq, "attrsEq"); - function updateAttrs(dom, prev, attrs) { - var changed = null; - if (prev) { - for (var name2 in prev) if (!(attrs && name2 in attrs)) dom.removeAttribute((changed = name2)); - } - if (attrs) { - for (var name21 in attrs) if (!(prev && prev[name21] == attrs[name21])) dom.setAttribute((changed = name21), attrs[name21]); - } - return !!changed; + h(gh, "attrsEq"); + function ih(r, e, t) { + var i = null; + if (e) for (var n in e) (t && n in t) || r.removeAttribute((i = n)); + if (t) for (var n1 in t) (e && e[n1] == t[n1]) || r.setAttribute((i = n1), t[n1]); + return !!i; } - __name(updateAttrs, "updateAttrs"); - var WidgetType = class WidgetType { - eq(widget) { - return false; + h(ih, "updateAttrs"); + var Ht = class Ht { + eq(e) { + return !1; } - updateDOM(dom) { - return false; + updateDOM(e, t) { + return !1; } - compare(other) { - return this == other || (this.constructor == other.constructor && this.eq(other)); + compare(e) { + return this == e || (this.constructor == e.constructor && this.eq(e)); } get estimatedHeight() { return -1; } - ignoreEvent(event) { - return true; + ignoreEvent(e) { + return !0; } get customView() { return null; } - destroy(dom) {} + destroy(e) {} }; - __name(WidgetType, "WidgetType"); - var BlockType = /* @__PURE__ */ (function (BlockType2) { - BlockType2[(BlockType2["Text"] = 0)] = "Text"; - BlockType2[(BlockType2["WidgetBefore"] = 1)] = "WidgetBefore"; - BlockType2[(BlockType2["WidgetAfter"] = 2)] = "WidgetAfter"; - BlockType2[(BlockType2["WidgetRange"] = 3)] = "WidgetRange"; - return BlockType2; - })(BlockType || (BlockType = {})); - var Decoration = class Decoration extends RangeValue { - get heightRelevant() { - return false; - } - static mark(spec) { - return new MarkDecoration(spec); - } - static widget(spec) { - var side = spec.side || 0, - block = !!spec.block; - side += block ? (side > 0 ? 3e8 : -4e8) : side > 0 ? 1e8 : -1e8; - return new PointDecoration(spec, side, side, block, spec.widget || null, false); - } - static replace(spec) { - var block = !!spec.block, - startSide, - endSide; - if (spec.isBlockGap) { - startSide = -5e8; - endSide = 4e8; - } else { - var _getInclusive = getInclusive(spec, block), - start = _getInclusive.start, - end = _getInclusive.end; - startSide = (start ? (block ? -3e8 : -1) : 5e8) - 1; - endSide = (end ? (block ? 2e8 : 1) : -6e8) + 1; + h(Ht, "WidgetType"); + var be = (function (r) { + return (r[(r.Text = 0)] = "Text"), (r[(r.WidgetBefore = 1)] = "WidgetBefore"), (r[(r.WidgetAfter = 2)] = "WidgetAfter"), (r[(r.WidgetRange = 3)] = "WidgetRange"), r; + })(be || (be = {})), + he = class he extends zt { + get heightRelevant() { + return !1; + } + static mark(e) { + return new Qi(e); + } + static widget(e) { + var t = e.side || 0, + i = !!e.block; + return (t += i ? (t > 0 ? 3e8 : -4e8) : t > 0 ? 1e8 : -1e8), new Ut(e, t, t, i, e.widget || null, !1); + } + static replace(e) { + var t = !!e.block, + i, + n; + if (e.isBlockGap) (i = -5e8), (n = 4e8); + else { + var _Ig = Ig(e, t), + s = _Ig.start, + o = _Ig.end; + (i = (s ? (t ? -3e8 : -1) : 5e8) - 1), (n = (o ? (t ? 2e8 : 1) : -6e8) + 1); + } + return new Ut(e, i, n, t, e.widget || null, !0); } - return new PointDecoration(spec, startSide, endSide, block, spec.widget || null, true); - } - static line(spec) { - return new LineDecoration(spec); - } - static set(of) { - var sort = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - return RangeSet.of(of, sort); - } - hasHeight() { - return this.widget ? this.widget.estimatedHeight > -1 : false; - } - constructor(startSide, endSide, widget, spec) { - super(); - this.startSide = startSide; - this.endSide = endSide; - this.widget = widget; - this.spec = spec; - } - }; - __name(Decoration, "Decoration"); - Decoration.none = RangeSet.empty; - var MarkDecoration = class MarkDecoration1 extends Decoration { - eq(other) { - return this == other || (other instanceof MarkDecoration && this.tagName == other.tagName && this.class == other.class && attrsEq(this.attrs, other.attrs)); - } - range(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : from; - if (from >= to) throw new RangeError("Mark decorations may not be empty"); - return super.range(from, to); - } - constructor(spec) { - var _getInclusive = getInclusive(spec), - start = _getInclusive.start, - end = _getInclusive.end; - super(start ? -1 : 5e8, end ? 1 : -6e8, null, spec); - this.tagName = spec.tagName || "span"; - this.class = spec.class || ""; - this.attrs = spec.attributes || null; + static line(e) { + return new Bi(e); + } + static set(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + return pe.of(e, t); + } + hasHeight() { + return this.widget ? this.widget.estimatedHeight > -1 : !1; + } + constructor(e, t, i, n) { + super(), (this.startSide = e), (this.endSide = t), (this.widget = i), (this.spec = n); + } + }; + h(he, "Decoration"); + he.none = pe.empty; + var Qi = class Qi1 extends he { + eq(e) { + return this == e || (e instanceof Qi && this.tagName == e.tagName && this.class == e.class && gh(this.attrs, e.attrs)); + } + range(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + if (e >= t) throw new RangeError("Mark decorations may not be empty"); + return super.range(e, t); + } + constructor(e) { + var _Ig = Ig(e), + t = _Ig.start, + i = _Ig.end; + super(t ? -1 : 5e8, i ? 1 : -6e8, null, e), (this.tagName = e.tagName || "span"), (this.class = e.class || ""), (this.attrs = e.attributes || null); } }; - __name(MarkDecoration, "MarkDecoration"); - MarkDecoration.prototype.point = false; - var LineDecoration = class LineDecoration1 extends Decoration { - eq(other) { - return other instanceof LineDecoration && attrsEq(this.spec.attributes, other.spec.attributes); + h(Qi, "MarkDecoration"); + Qi.prototype.point = !1; + var Bi = class Bi1 extends he { + eq(e) { + return e instanceof Bi && this.spec.class == e.spec.class && gh(this.spec.attributes, e.spec.attributes); } - range(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : from; - if (to != from) throw new RangeError("Line decoration ranges must be zero-length"); - return super.range(from, to); + range(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + if (t != e) throw new RangeError("Line decoration ranges must be zero-length"); + return super.range(e, t); } - constructor(spec) { - super(-2e8, -2e8, null, spec); + constructor(e) { + super(-2e8, -2e8, null, e); } }; - __name(LineDecoration, "LineDecoration"); - LineDecoration.prototype.mapMode = MapMode.TrackBefore; - LineDecoration.prototype.point = true; - var PointDecoration = class PointDecoration1 extends Decoration { + h(Bi, "LineDecoration"); + Bi.prototype.mapMode = Xe.TrackBefore; + Bi.prototype.point = !0; + var Ut = class Ut1 extends he { get type() { - return this.startSide < this.endSide ? BlockType.WidgetRange : this.startSide <= 0 ? BlockType.WidgetBefore : BlockType.WidgetAfter; + return this.startSide < this.endSide ? be.WidgetRange : this.startSide <= 0 ? be.WidgetBefore : be.WidgetAfter; } get heightRelevant() { return this.block || (!!this.widget && this.widget.estimatedHeight >= 5); } - eq(other) { - return other instanceof PointDecoration && widgetsEq(this.widget, other.widget) && this.block == other.block && this.startSide == other.startSide && this.endSide == other.endSide; + eq(e) { + return e instanceof Ut && Tv(this.widget, e.widget) && this.block == e.block && this.startSide == e.startSide && this.endSide == e.endSide; } - range(from) { - var to = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : from; - if (this.isReplace && (from > to || (from == to && this.startSide > 0 && this.endSide <= 0))) throw new RangeError("Invalid range for replacement decoration"); - if (!this.isReplace && to != from) throw new RangeError("Widget decorations can only have zero-length ranges"); - return super.range(from, to); + range(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e; + if (this.isReplace && (e > t || (e == t && this.startSide > 0 && this.endSide <= 0))) throw new RangeError("Invalid range for replacement decoration"); + if (!this.isReplace && t != e) throw new RangeError("Widget decorations can only have zero-length ranges"); + return super.range(e, t); } - constructor(spec, startSide, endSide, block, widget, isReplace) { - super(startSide, endSide, widget, spec); - this.block = block; - this.isReplace = isReplace; - this.mapMode = !block ? MapMode.TrackDel : startSide <= 0 ? MapMode.TrackBefore : MapMode.TrackAfter; + constructor(e, t, i, n, s, o) { + super(t, i, s, e), (this.block = n), (this.isReplace = o), (this.mapMode = n ? (t <= 0 ? Xe.TrackBefore : Xe.TrackAfter) : Xe.TrackDel); } }; - __name(PointDecoration, "PointDecoration"); - PointDecoration.prototype.point = true; - function getInclusive(spec) { - var block = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - var start = spec.inclusiveStart, - end = spec.inclusiveEnd; - if (start == null) start = spec.inclusive; - if (end == null) end = spec.inclusive; - return { - start: start !== null && start !== void 0 ? start : block, - end: end !== null && end !== void 0 ? end : block, - }; - } - __name(getInclusive, "getInclusive"); - function widgetsEq(a, b) { - return a == b || !!(a && b && a.compare(b)); - } - __name(widgetsEq, "widgetsEq"); - function addRange(from, to, ranges) { - var margin = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; - var last = ranges.length - 1; - if (last >= 0 && ranges[last] + margin >= from) ranges[last] = Math.max(ranges[last], to); - else ranges.push(from, to); - } - __name(addRange, "addRange"); - var LineView = class LineView1 extends ContentView { - merge(from, to, source, hasStart, openStart, openEnd) { - if (source) { - if (!(source instanceof LineView)) return false; - if (!this.dom) source.transferDOM(this); - } - if (hasStart) this.setDeco(source ? source.attrs : null); - mergeChildrenInto(this, from, to, source ? source.children : [], openStart, openEnd); - return true; - } - split(at) { - var end = new LineView(); - end.breakAfter = this.breakAfter; - if (this.length == 0) return end; - var _this_childPos = this.childPos(at), + h(Ut, "PointDecoration"); + Ut.prototype.point = !0; + function Ig(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + var t = r.inclusiveStart, + i = r.inclusiveEnd; + return t == null && (t = r.inclusive), i == null && (i = r.inclusive), { start: t !== null && t !== void 0 ? t : e, end: i !== null && i !== void 0 ? i : e }; + } + h(Ig, "getInclusive"); + function Tv(r, e) { + return r == e || !!(r && e && r.compare(e)); + } + h(Tv, "widgetsEq"); + function rh(r, e, t) { + var i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; + var n = t.length - 1; + n >= 0 && t[n] + i >= r ? (t[n] = Math.max(t[n], e)) : t.push(r, e); + } + h(rh, "addRange"); + var Ve = class Ve1 extends De { + merge(e, t, i, n, s, o) { + if (i) { + if (!(i instanceof Ve)) return !1; + this.dom || i.transferDOM(this); + } + return n && this.setDeco(i ? i.attrs : null), Tg(this, e, t, i ? i.children : [], s, o), !0; + } + split(e) { + var t = new Ve(); + if (((t.breakAfter = this.breakAfter), this.length == 0)) return t; + var _this_childPos = this.childPos(e), i = _this_childPos.i, - off = _this_childPos.off; - if (off) { - end.append(this.children[i].split(off), 0); - this.children[i].merge(off, this.children[i].length, null, false, 0, 0); - i++; - } - for (var j = i; j < this.children.length; j++) end.append(this.children[j], 0); - while (i > 0 && this.children[i - 1].length == 0) this.children[--i].destroy(); - this.children.length = i; - this.markDirty(); - this.length = at; - return end; - } - transferDOM(other) { - if (!this.dom) return; - this.markDirty(); - other.setDOM(this.dom); - other.prevAttrs = this.prevAttrs === void 0 ? this.attrs : this.prevAttrs; - this.prevAttrs = void 0; - this.dom = null; - } - setDeco(attrs) { - if (!attrsEq(this.attrs, attrs)) { - if (this.dom) { - this.prevAttrs = this.attrs; - this.markDirty(); - } - this.attrs = attrs; - } - } - append(child, openStart) { - joinInlineInto(this, child, openStart); - } - addLineDeco(deco) { - var attrs = deco.spec.attributes, - cls = deco.spec.class; - if (attrs) this.attrs = combineAttrs(attrs, this.attrs || {}); - if (cls) - this.attrs = combineAttrs( - { - class: cls, - }, - this.attrs || {} - ); + n = _this_childPos.off; + n && (t.append(this.children[i].split(n), 0), this.children[i].merge(n, this.children[i].length, null, !1, 0, 0), i++); + for (var s = i; s < this.children.length; s++) t.append(this.children[s], 0); + for (; i > 0 && this.children[i - 1].length == 0; ) this.children[--i].destroy(); + return (this.children.length = i), this.markDirty(), (this.length = e), t; } - domAtPos(pos) { - return inlineDOMAtPos(this, pos); + transferDOM(e) { + this.dom && (this.markDirty(), e.setDOM(this.dom), (e.prevAttrs = this.prevAttrs === void 0 ? this.attrs : this.prevAttrs), (this.prevAttrs = void 0), (this.dom = null)); } - reuseDOM(node) { - if (node.nodeName == "DIV") { - this.setDOM(node); - this.dirty |= 4 | 2; - } + setDeco(e) { + gh(this.attrs, e) || (this.dom && ((this.prevAttrs = this.attrs), this.markDirty()), (this.attrs = e)); } - sync(track) { - var _a2; - if (!this.dom) { - this.setDOM(document.createElement("div")); - this.dom.className = "cm-line"; - this.prevAttrs = this.attrs ? null : void 0; - } else if (this.dirty & 4) { - clearAttributes(this.dom); - this.dom.className = "cm-line"; - this.prevAttrs = this.attrs ? null : void 0; - } - if (this.prevAttrs !== void 0) { - updateAttrs(this.dom, this.prevAttrs, this.attrs); - this.dom.classList.add("cm-line"); - this.prevAttrs = void 0; - } - super.sync(track); - var last = this.dom.lastChild; - while (last && ContentView.get(last) instanceof MarkView) last = last.lastChild; - if (!last || !this.length || (last.nodeName != "BR" && ((_a2 = ContentView.get(last)) === null || _a2 === void 0 ? void 0 : _a2.isEditable) == false && (!browser.ios || !this.children.some((ch) => ch instanceof TextView)))) { - var hack = document.createElement("BR"); - hack.cmIgnore = true; - this.dom.appendChild(hack); + append(e, t) { + Lg(this, e, t); + } + addLineDeco(e) { + var t = e.spec.attributes, + i = e.spec.class; + t && (this.attrs = th(t, this.attrs || {})), i && (this.attrs = th({ class: i }, this.attrs || {})); + } + domAtPos(e) { + return Pg(this, e); + } + reuseDOM(e) { + e.nodeName == "DIV" && (this.setDOM(e), (this.dirty |= 6)); + } + sync(e, t) { + var i; + this.dom ? this.dirty & 4 && (_g(this.dom), (this.dom.className = "cm-line"), (this.prevAttrs = this.attrs ? null : void 0)) : (this.setDOM(document.createElement("div")), (this.dom.className = "cm-line"), (this.prevAttrs = this.attrs ? null : void 0)), + this.prevAttrs !== void 0 && (ih(this.dom, this.prevAttrs, this.attrs), this.dom.classList.add("cm-line"), (this.prevAttrs = void 0)), + super.sync(e, t); + var n = this.dom.lastChild; + for (; n && De.get(n) instanceof ht; ) n = n.lastChild; + if (!n || !this.length || (n.nodeName != "BR" && ((i = De.get(n)) === null || i === void 0 ? void 0 : i.isEditable) == !1 && (!U.ios || !this.children.some((s) => s instanceof Ot)))) { + var s = document.createElement("BR"); + (s.cmIgnore = !0), this.dom.appendChild(s); } } measureTextSize() { if (this.children.length == 0 || this.length > 20) return null; - var totalWidth = 0; + var e = 0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (!(child instanceof TextView) || /[^ -~]/.test(child.text)) return null; - var rects = clientRectsFor(child.dom); - if (rects.length != 1) return null; - totalWidth += rects[0].width; + var t = _step.value; + if (!(t instanceof Ot) || /[^ -~]/.test(t.text)) return null; + var i = Kn(t.dom); + if (i.length != 1) return null; + e += i[0].width; } } catch (err) { _didIteratorError = true; @@ -13040,252 +10336,158 @@ var __generator = } } } - return !totalWidth - ? null - : { - lineHeight: this.dom.getBoundingClientRect().height, - charWidth: totalWidth / this.length, - }; + return e ? { lineHeight: this.dom.getBoundingClientRect().height, charWidth: e / this.length } : null; } - coordsAt(pos, side) { - return coordsInChildren(this, pos, side); + coordsAt(e, t) { + return qg(this, e, t); } - become(_other) { - return false; + become(e) { + return !1; } get type() { - return BlockType.Text; + return be.Text; } - static find(docView, pos) { - for (var i = 0, off = 0; i < docView.children.length; i++) { - var block = docView.children[i], - end = off + block.length; - if (end >= pos) { - if (block instanceof LineView) return block; - if (end > pos) break; + static find(e, t) { + for (var i = 0, n = 0; i < e.children.length; i++) { + var s = e.children[i], + o = n + s.length; + if (o >= t) { + if (s instanceof Ve) return s; + if (o > t) break; } - off = end + block.breakAfter; + n = o + s.breakAfter; } return null; } constructor() { - super(...arguments); - this.children = []; - this.length = 0; - this.prevAttrs = void 0; - this.attrs = null; - this.breakAfter = 0; + super(...arguments), (this.children = []), (this.length = 0), (this.prevAttrs = void 0), (this.attrs = null), (this.breakAfter = 0); } }; - __name(LineView, "LineView"); - var BlockWidgetView = class BlockWidgetView1 extends ContentView { - merge(from, to, source, _takeDeco, openStart, openEnd) { - if (source && (!(source instanceof BlockWidgetView) || !this.widget.compare(source.widget) || (from > 0 && openStart <= 0) || (to < this.length && openEnd <= 0))) return false; - this.length = from + (source ? source.length : 0) + (this.length - to); - return true; - } - domAtPos(pos) { - return pos == 0 ? DOMPos.before(this.dom) : DOMPos.after(this.dom, pos == this.length); - } - split(at) { - var len = this.length - at; - this.length = at; - var end = new BlockWidgetView(this.widget, len, this.type); - end.breakAfter = this.breakAfter; - return end; + h(Ve, "LineView"); + var Yt = class Yt1 extends De { + merge(e, t, i, n, s, o) { + return i && (!(i instanceof Yt) || !this.widget.compare(i.widget) || (e > 0 && s <= 0) || (t < this.length && o <= 0)) ? !1 : ((this.length = e + (i ? i.length : 0) + (this.length - t)), !0); + } + domAtPos(e) { + return e == 0 ? Me.before(this.dom) : Me.after(this.dom, e == this.length); + } + split(e) { + var t = this.length - e; + this.length = e; + var i = new Yt(this.widget, t, this.type); + return (i.breakAfter = this.breakAfter), i; } get children() { - return noChildren; + return mh; } - sync() { - if (!this.dom || !this.widget.updateDOM(this.dom)) { - if (this.dom && this.prevWidget) this.prevWidget.destroy(this.dom); - this.prevWidget = null; - this.setDOM(this.widget.toDOM(this.editorView)); - this.dom.contentEditable = "false"; - } + sync(e) { + (!this.dom || !this.widget.updateDOM(this.dom, e)) && (this.dom && this.prevWidget && this.prevWidget.destroy(this.dom), (this.prevWidget = null), this.setDOM(this.widget.toDOM(e)), (this.dom.contentEditable = "false")); } get overrideDOMText() { - return this.parent ? this.parent.view.state.doc.slice(this.posAtStart, this.posAtEnd) : Text.empty; + return this.parent ? this.parent.view.state.doc.slice(this.posAtStart, this.posAtEnd) : ce.empty; } domBoundsAround() { return null; } - become(other) { - if (other instanceof BlockWidgetView && other.type == this.type && other.widget.constructor == this.widget.constructor) { - if (!other.widget.eq(this.widget)) this.markDirty(true); - if (this.dom && !this.prevWidget) this.prevWidget = this.widget; - this.widget = other.widget; - this.length = other.length; - this.breakAfter = other.breakAfter; - return true; - } - return false; + become(e) { + return e instanceof Yt && e.type == this.type && e.widget.constructor == this.widget.constructor ? (e.widget.eq(this.widget) || this.markDirty(!0), this.dom && !this.prevWidget && (this.prevWidget = this.widget), (this.widget = e.widget), (this.length = e.length), (this.breakAfter = e.breakAfter), !0) : !1; } ignoreMutation() { - return true; + return !0; + } + ignoreEvent(e) { + return this.widget.ignoreEvent(e); + } + get isEditable() { + return !1; } - ignoreEvent(event) { - return this.widget.ignoreEvent(event); + get isWidget() { + return !0; } destroy() { - super.destroy(); - if (this.dom) this.widget.destroy(this.dom); + super.destroy(), this.dom && this.widget.destroy(this.dom); } - constructor(widget, length, type) { - super(); - this.widget = widget; - this.length = length; - this.type = type; - this.breakAfter = 0; - this.prevWidget = null; + constructor(e, t, i) { + super(), (this.widget = e), (this.length = t), (this.type = i), (this.breakAfter = 0), (this.prevWidget = null); } }; - __name(BlockWidgetView, "BlockWidgetView"); - var ContentBuilder = class ContentBuilder1 { + h(Yt, "BlockWidgetView"); + var Lr = class Lr1 { posCovered() { if (this.content.length == 0) return !this.breakAtStart && this.doc.lineAt(this.pos).from != this.pos; - var last = this.content[this.content.length - 1]; - return !last.breakAfter && !(last instanceof BlockWidgetView && last.type == BlockType.WidgetBefore); + var e = this.content[this.content.length - 1]; + return !e.breakAfter && !(e instanceof Yt && e.type == be.WidgetBefore); } getLine() { - if (!this.curLine) { - this.content.push((this.curLine = new LineView())); - this.atCursorPos = true; - } - return this.curLine; + return this.curLine || (this.content.push((this.curLine = new Ve())), (this.atCursorPos = !0)), this.curLine; } flushBuffer() { - var active = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.bufferMarks; - if (this.pendingBuffer) { - this.curLine.append(wrapMarks(new WidgetBufferView(-1), active), active.length); - this.pendingBuffer = 0; - } + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.bufferMarks; + this.pendingBuffer && (this.curLine.append(wo(new ai(-1), e), e.length), (this.pendingBuffer = 0)); } - addBlockWidget(view) { - this.flushBuffer(); - this.curLine = null; - this.content.push(view); + addBlockWidget(e) { + this.flushBuffer(), (this.curLine = null), this.content.push(e); } - finish(openEnd) { - if (this.pendingBuffer && openEnd <= this.bufferMarks.length) this.flushBuffer(); - else this.pendingBuffer = 0; - if (!this.posCovered()) this.getLine(); + finish(e) { + this.pendingBuffer && e <= this.bufferMarks.length ? this.flushBuffer() : (this.pendingBuffer = 0), this.posCovered() || this.getLine(); } - buildText(length, active, openStart) { - while (length > 0) { + buildText(e, t, i) { + for (; e > 0; ) { if (this.textOff == this.text.length) { var _this_cursor_next = this.cursor.next(this.skip), - value = _this_cursor_next.value, - lineBreak = _this_cursor_next.lineBreak, - done = _this_cursor_next.done; - this.skip = 0; - if (done) throw new Error("Ran out of text content when drawing inline views"); - if (lineBreak) { - if (!this.posCovered()) this.getLine(); - if (this.content.length) this.content[this.content.length - 1].breakAfter = 1; - else this.breakAtStart = 1; - this.flushBuffer(); - this.curLine = null; - this.atCursorPos = true; - length--; + s = _this_cursor_next.value, + o = _this_cursor_next.lineBreak, + u = _this_cursor_next.done; + if (((this.skip = 0), u)) throw new Error("Ran out of text content when drawing inline views"); + if (o) { + this.posCovered() || this.getLine(), this.content.length ? (this.content[this.content.length - 1].breakAfter = 1) : (this.breakAtStart = 1), this.flushBuffer(), (this.curLine = null), (this.atCursorPos = !0), e--; continue; - } else { - this.text = value; - this.textOff = 0; - } - } - var take = Math.min(this.text.length - this.textOff, length, 512); - this.flushBuffer(active.slice(active.length - openStart)); - this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff, this.textOff + take)), active), openStart); - this.atCursorPos = true; - this.textOff += take; - length -= take; - openStart = 0; - } - } - span(from, to, active, openStart) { - this.buildText(to - from, active, openStart); - this.pos = to; - if (this.openStart < 0) this.openStart = openStart; - } - point(from, to, deco, active, openStart, index) { - if (this.disallowBlockEffectsFor[index] && deco instanceof PointDecoration) { - if (deco.block) throw new RangeError("Block decorations may not be specified via plugins"); - if (to > this.doc.lineAt(this.pos).to) throw new RangeError("Decorations that replace line breaks may not be specified via plugins"); - } - var len = to - from; - if (deco instanceof PointDecoration) { - if (deco.block) { - var type = deco.type; - if (type == BlockType.WidgetAfter && !this.posCovered()) this.getLine(); - this.addBlockWidget(new BlockWidgetView(deco.widget || new NullWidget("div"), len, type)); - } else { - var view = WidgetView.create(deco.widget || new NullWidget("span"), len, len ? 0 : deco.startSide); - var cursorBefore = this.atCursorPos && !view.isEditable && openStart <= active.length && (from < to || deco.startSide > 0); - var cursorAfter = !view.isEditable && (from < to || openStart > active.length || deco.startSide <= 0); - var line = this.getLine(); - if (this.pendingBuffer == 2 && !cursorBefore) this.pendingBuffer = 0; - this.flushBuffer(active); - if (cursorBefore) { - line.append(wrapMarks(new WidgetBufferView(1), active), openStart); - openStart = active.length + Math.max(0, openStart - active.length); - } - line.append(wrapMarks(view, active), openStart); - this.atCursorPos = cursorAfter; - this.pendingBuffer = !cursorAfter ? 0 : from < to || openStart > active.length ? 1 : 2; - if (this.pendingBuffer) this.bufferMarks = active.slice(); - } - } else if (this.doc.lineAt(this.pos).from == this.pos) { - this.getLine().addLineDeco(deco); - } - if (len) { - if (this.textOff + len <= this.text.length) { - this.textOff += len; + } else (this.text = s), (this.textOff = 0); + } + var n = Math.min(this.text.length - this.textOff, e, 512); + this.flushBuffer(t.slice(t.length - i)), this.getLine().append(wo(new Ot(this.text.slice(this.textOff, this.textOff + n)), t), i), (this.atCursorPos = !0), (this.textOff += n), (e -= n), (i = 0); + } + } + span(e, t, i, n) { + this.buildText(t - e, i, n), (this.pos = t), this.openStart < 0 && (this.openStart = n); + } + point(e, t, i, n, s, o) { + if (this.disallowBlockEffectsFor[o] && i instanceof Ut) { + if (i.block) throw new RangeError("Block decorations may not be specified via plugins"); + if (t > this.doc.lineAt(this.pos).to) throw new RangeError("Decorations that replace line breaks may not be specified via plugins"); + } + var u = t - e; + if (i instanceof Ut) + if (i.block) { + var l = i.type; + l == be.WidgetAfter && !this.posCovered() && this.getLine(), this.addBlockWidget(new Yt(i.widget || new In("div"), u, l)); } else { - this.skip += len - (this.text.length - this.textOff); - this.text = ""; - this.textOff = 0; - } - this.pos = to; - } - if (this.openStart < 0) this.openStart = openStart; - } - static build(text2, from, to, decorations2, dynamicDecorationMap) { - var builder = new ContentBuilder(text2, from, to, dynamicDecorationMap); - builder.openEnd = RangeSet.spans(decorations2, from, to, builder); - if (builder.openStart < 0) builder.openStart = builder.openEnd; - builder.finish(builder.openEnd); - return builder; - } - constructor(doc2, pos, end, disallowBlockEffectsFor) { - this.doc = doc2; - this.pos = pos; - this.end = end; - this.disallowBlockEffectsFor = disallowBlockEffectsFor; - this.content = []; - this.curLine = null; - this.breakAtStart = 0; - this.pendingBuffer = 0; - this.bufferMarks = []; - this.atCursorPos = true; - this.openStart = -1; - this.openEnd = -1; - this.text = ""; - this.textOff = 0; - this.cursor = doc2.iter(); - this.skip = pos; + var l1 = _t.create(i.widget || new In("span"), u, u ? 0 : i.startSide), + a = this.atCursorPos && !l1.isEditable && s <= n.length && (e < t || i.startSide > 0), + c = !l1.isEditable && (e < t || s > n.length || i.startSide <= 0), + f = this.getLine(); + this.pendingBuffer == 2 && !a && (this.pendingBuffer = 0), this.flushBuffer(n), a && (f.append(wo(new ai(1), n), s), (s = n.length + Math.max(0, s - n.length))), f.append(wo(l1, n), s), (this.atCursorPos = c), (this.pendingBuffer = c ? (e < t || s > n.length ? 1 : 2) : 0), this.pendingBuffer && (this.bufferMarks = n.slice()); + } + else this.doc.lineAt(this.pos).from == this.pos && this.getLine().addLineDeco(i); + u && (this.textOff + u <= this.text.length ? (this.textOff += u) : ((this.skip += u - (this.text.length - this.textOff)), (this.text = ""), (this.textOff = 0)), (this.pos = t)), this.openStart < 0 && (this.openStart = s); + } + static build(e, t, i, n, s) { + var o = new Lr(e, t, i, s); + return (o.openEnd = pe.spans(n, t, i, o)), o.openStart < 0 && (o.openStart = o.openEnd), o.finish(o.openEnd), o; + } + constructor(e, t, i, n) { + (this.doc = e), (this.pos = t), (this.end = i), (this.disallowBlockEffectsFor = n), (this.content = []), (this.curLine = null), (this.breakAtStart = 0), (this.pendingBuffer = 0), (this.bufferMarks = []), (this.atCursorPos = !0), (this.openStart = -1), (this.openEnd = -1), (this.text = ""), (this.textOff = 0), (this.cursor = e.iter()), (this.skip = t); } }; - __name(ContentBuilder, "ContentBuilder"); - function wrapMarks(view, active) { + h(Lr, "ContentBuilder"); + function wo(r, e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = active[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var mark = _step.value; - view = new MarkView(mark, [view], view.length); + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + r = new ht(t, [r], r.length); } } catch (err) { _didIteratorError = true; @@ -13301,205 +10503,174 @@ var __generator = } } } - return view; + return r; } - __name(wrapMarks, "wrapMarks"); - var NullWidget = class NullWidget extends WidgetType { - eq(other) { - return other.tag == this.tag; + h(wo, "wrapMarks"); + var In = class In extends Ht { + eq(e) { + return e.tag == this.tag; } toDOM() { return document.createElement(this.tag); } - updateDOM(elt) { - return elt.nodeName.toLowerCase() == this.tag; - } - constructor(tag) { - super(); - this.tag = tag; + updateDOM(e) { + return e.nodeName.toLowerCase() == this.tag; } - }; - __name(NullWidget, "NullWidget"); - var clickAddsSelectionRange = /* @__PURE__ */ Facet.define(); - var dragMovesSelection$1 = /* @__PURE__ */ Facet.define(); - var mouseSelectionStyle = /* @__PURE__ */ Facet.define(); - var exceptionSink = /* @__PURE__ */ Facet.define(); - var updateListener = /* @__PURE__ */ Facet.define(); - var inputHandler = /* @__PURE__ */ Facet.define(); - var perLineTextDirection = /* @__PURE__ */ Facet.define({ - combine: (values) => values.some((x) => x), - }); - var nativeSelectionHidden = /* @__PURE__ */ Facet.define({ - combine: (values) => values.some((x) => x), - }); - var ScrollTarget = class ScrollTarget1 { - map(changes) { - return changes.empty ? this : new ScrollTarget(this.range.map(changes), this.y, this.x, this.yMargin, this.xMargin); - } - constructor(range, ref, ref1, ref2, ref3) { - var y = ref === void 0 ? "nearest" : ref, - x = ref1 === void 0 ? "nearest" : ref1, - yMargin = ref2 === void 0 ? 5 : ref2, - xMargin = ref3 === void 0 ? 5 : ref3; - this.range = range; - this.y = y; - this.x = x; - this.yMargin = yMargin; - this.xMargin = xMargin; + constructor(e) { + super(), (this.tag = e); } }; - __name(ScrollTarget, "ScrollTarget"); - var scrollIntoView = /* @__PURE__ */ StateEffect.define({ - map: (t2, ch) => t2.map(ch), - }); - function logException(state, exception, context) { - var handler = state.facet(exceptionSink); - if (handler.length) handler[0](exception); - else if (window.onerror) window.onerror(String(exception), context, void 0, void 0, exception); - else if (context) console.error(context + ":", exception); - else console.error(exception); - } - __name(logException, "logException"); - var editable = /* @__PURE__ */ Facet.define({ - combine: (values) => (values.length ? values[0] : true), - }); - var nextPluginID = 0; - var viewPlugin = /* @__PURE__ */ Facet.define(); - var ViewPlugin = class ViewPlugin1 { - static define(create, spec) { - var _ref = spec || {}, - eventHandlers = _ref.eventHandlers, - provide = _ref.provide, - deco = _ref.decorations; - return new ViewPlugin(nextPluginID++, create, eventHandlers, (plugin) => { - var ext = [viewPlugin.of(plugin)]; - if (deco) - ext.push( - decorations.of((view) => { - var pluginInst = view.plugin(plugin); - return pluginInst ? deco(pluginInst) : Decoration.none; - }) + h(In, "NullWidget"); + var Ng = H.define(), + Vg = H.define(), + zg = H.define(), + Wg = H.define(), + nh = H.define(), + jg = H.define(), + Hg = H.define(), + Ug = H.define({ combine: (r) => r.some((e) => e) }), + Yg = H.define({ combine: (r) => r.some((e) => e) }), + Ji = class Ji1 { + map(e) { + return e.empty ? this : new Ji(this.range.map(e), this.y, this.x, this.yMargin, this.xMargin); + } + constructor(e, ref, ref1, ref2, ref3) { + var t = ref === void 0 ? "nearest" : ref, + i = ref1 === void 0 ? "nearest" : ref1, + n = ref2 === void 0 ? 5 : ref2, + s = ref3 === void 0 ? 5 : ref3; + (this.range = e), (this.y = t), (this.x = i), (this.yMargin = n), (this.xMargin = s); + } + }; + h(Ji, "ScrollTarget"); + var Q0 = de.define({ map: (r, e) => r.map(e) }); + function Ft(r, e, t) { + var i = r.facet(Wg); + i.length ? i[0](e) : window.onerror ? window.onerror(String(e), t, void 0, void 0, e) : t ? console.error(t + ":", e) : console.error(e); + } + h(Ft, "logException"); + var ou = H.define({ combine: (r) => (r.length ? r[0] : !0) }), + Rv = 0, + Rn = H.define(), + ze = class ze1 { + static define(e, t) { + var _ref = t || {}, + i = _ref.eventHandlers, + n = _ref.provide, + s = _ref.decorations; + return new ze(Rv++, e, i, (o) => { + var u = [Rn.of(o)]; + return ( + s && + u.push( + Qn.of((l) => { + var a = l.plugin(o); + return a ? s(a) : he.none; + }) + ), + n && u.push(n(o)), + u ); - if (provide) ext.push(provide(plugin)); - return ext; - }); - } - static fromClass(cls, spec) { - return ViewPlugin.define((view) => new cls(view), spec); - } - constructor(id, create, domEventHandlers, buildExtensions) { - this.id = id; - this.create = create; - this.domEventHandlers = domEventHandlers; - this.extension = buildExtensions(this); - } - }; - __name(ViewPlugin, "ViewPlugin"); - var PluginInstance = class PluginInstance { - update(view) { - if (!this.value) { - if (this.spec) { - try { - this.value = this.spec.create(view); - } catch (e) { - logException(view.state, e, "CodeMirror plugin crashed"); - this.deactivate(); - } + }); + } + static fromClass(e, t) { + return ze.define((i) => new e(i), t); + } + constructor(e, t, i, n) { + (this.id = e), (this.create = t), (this.domEventHandlers = i), (this.extension = n(this)); + } + }; + h(ze, "ViewPlugin"); + var qr = class qr { + update(e) { + if (this.value) { + if (this.mustUpdate) { + var _$t = this.mustUpdate; + if (((this.mustUpdate = null), this.value.update)) + try { + this.value.update(_$t); + } catch (i) { + if ((Ft(_$t.state, i, "CodeMirror plugin crashed"), this.value.destroy)) + try { + this.value.destroy(); + } catch (e) {} + this.deactivate(); + } } - } else if (this.mustUpdate) { - var update2 = this.mustUpdate; - this.mustUpdate = null; - if (this.value.update) { - try { - this.value.update(update2); - } catch (e1) { - logException(update2.state, e1, "CodeMirror plugin crashed"); - if (this.value.destroy) - try { - this.value.destroy(); - } catch (_) {} - this.deactivate(); - } + } else if (this.spec) + try { + this.value = this.spec.create(e); + } catch (t) { + Ft(e.state, t, "CodeMirror plugin crashed"), this.deactivate(); } - } return this; } - destroy(view) { - var _a2; - if ((_a2 = this.value) === null || _a2 === void 0 ? void 0 : _a2.destroy) { + destroy(e) { + var t; + if (!((t = this.value) === null || t === void 0) && t.destroy) try { this.value.destroy(); - } catch (e) { - logException(view.state, e, "CodeMirror plugin crashed"); + } catch (i) { + Ft(e.state, i, "CodeMirror plugin crashed"); } - } } deactivate() { this.spec = this.value = null; } - constructor(spec) { - this.spec = spec; - this.mustUpdate = null; - this.value = null; - } - }; - __name(PluginInstance, "PluginInstance"); - var editorAttributes = /* @__PURE__ */ Facet.define(); - var contentAttributes = /* @__PURE__ */ Facet.define(); - var decorations = /* @__PURE__ */ Facet.define(); - var atomicRanges = /* @__PURE__ */ Facet.define(); - var scrollMargins = /* @__PURE__ */ Facet.define(); - var styleModule = /* @__PURE__ */ Facet.define(); - var ChangedRange = class ChangedRange1 { - join(other) { - return new ChangedRange(Math.min(this.fromA, other.fromA), Math.max(this.toA, other.toA), Math.min(this.fromB, other.fromB), Math.max(this.toB, other.toB)); - } - addToSet(set) { - var i = set.length, - me = this; - for (; i > 0; i--) { - var range = set[i - 1]; - if (range.fromA > me.toA) continue; - if (range.toA < me.fromA) break; - me = me.join(range); - set.splice(i - 1, 1); - } - set.splice(i, 0, me); - return set; - } - static extendWithRanges(diff, ranges) { - if (ranges.length == 0) return diff; - var result = []; - for (var dI = 0, rI = 0, posA = 0, posB = 0; ; dI++) { - var next = dI == diff.length ? null : diff[dI], - off = posA - posB; - var end = next ? next.fromB : 1e9; - while (rI < ranges.length && ranges[rI] < end) { - var from = ranges[rI], - to = ranges[rI + 1]; - var fromB = Math.max(posB, from), - toB = Math.min(end, to); - if (fromB <= toB) new ChangedRange(fromB + off, toB + off, fromB, toB).addToSet(result); - if (to > end) break; - else rI += 2; - } - if (!next) return result; - new ChangedRange(next.fromA, next.toA, next.fromB, next.toB).addToSet(result); - posA = next.toA; - posB = next.toB; - } - } - constructor(fromA, toA, fromB, toB) { - this.fromA = fromA; - this.toA = toA; - this.fromB = fromB; - this.toB = toB; + constructor(e) { + (this.spec = e), (this.mustUpdate = null), (this.value = null); } }; - __name(ChangedRange, "ChangedRange"); - var ViewUpdate = class ViewUpdate1 { - static create(view, state, transactions) { - return new ViewUpdate(view, state, transactions); + h(qr, "PluginInstance"); + var Gg = H.define(), + Dh = H.define(), + Qn = H.define(), + Kg = H.define(), + Xg = H.define(), + $n = H.define(), + ct = class ct1 { + join(e) { + return new ct(Math.min(this.fromA, e.fromA), Math.max(this.toA, e.toA), Math.min(this.fromB, e.fromB), Math.max(this.toB, e.toB)); + } + addToSet(e) { + var t = e.length, + i = this; + for (; t > 0; t--) { + var n = e[t - 1]; + if (!(n.fromA > i.toA)) { + if (n.toA < i.fromA) break; + (i = i.join(n)), e.splice(t - 1, 1); + } + } + return e.splice(t, 0, i), e; + } + static extendWithRanges(e, t) { + if (t.length == 0) return e; + var i = []; + for (var n = 0, s = 0, o = 0, u = 0; ; n++) { + var l = n == e.length ? null : e[n], + a = o - u, + c = l ? l.fromB : 1e9; + for (; s < t.length && t[s] < c; ) { + var f = t[s], + d = t[s + 1], + p = Math.max(u, f), + m = Math.min(c, d); + if ((p <= m && new ct(p + a, m + a, p, m).addToSet(i), d > c)) break; + s += 2; + } + if (!l) return i; + new ct(l.fromA, l.toA, l.fromB, l.toB).addToSet(i), (o = l.toA), (u = l.toB); + } + } + constructor(e, t, i, n) { + (this.fromA = e), (this.toA = t), (this.fromB = i), (this.toB = n); + } + }; + h(ct, "ChangedRange"); + var Zi = class Zi1 { + static create(e, t, i) { + return new Zi(e, t, i); } get viewportChanged() { return (this.flags & 4) > 0; @@ -13508,7 +10679,7 @@ var __generator = return (this.flags & 2) > 0; } get geometryChanged() { - return this.docChanged || (this.flags & (8 | 2)) > 0; + return this.docChanged || (this.flags & 10) > 0; } get focusChanged() { return (this.flags & 1) > 0; @@ -13517,25 +10688,20 @@ var __generator = return !this.changes.empty; } get selectionSet() { - return this.transactions.some((tr) => tr.selection); + return this.transactions.some((e) => e.selection); } get empty() { return this.flags == 0 && this.transactions.length == 0; } - constructor(view, state, transactions) { - this.view = view; - this.state = state; - this.transactions = transactions; - this.flags = 0; - this.startState = view.state; - this.changes = ChangeSet.empty(this.startState.doc.length); + constructor(e, t, i) { + (this.view = e), (this.state = t), (this.transactions = i), (this.flags = 0), (this.startState = e.state), (this.changes = ke.empty(this.startState.doc.length)); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = transactions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tr = _step.value; - this.changes = this.changes.compose(tr.changes); + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + this.changes = this.changes.compose(s.changes); } } catch (err) { _didIteratorError = true; @@ -13551,455 +10717,360 @@ var __generator = } } } - var changedRanges = []; - this.changes.iterChangedRanges((fromA, toA, fromB, toB) => changedRanges.push(new ChangedRange(fromA, toA, fromB, toB))); - this.changedRanges = changedRanges; - var focus = view.hasFocus; - if (focus != view.inputState.notifiedFocused) { - view.inputState.notifiedFocused = focus; - this.flags |= 1; - } + var n = []; + this.changes.iterChangedRanges((s, o, u, l) => n.push(new ct(s, o, u, l))), (this.changedRanges = n); } }; - __name(ViewUpdate, "ViewUpdate"); - var Direction = /* @__PURE__ */ (function (Direction2) { - Direction2[(Direction2["LTR"] = 0)] = "LTR"; - Direction2[(Direction2["RTL"] = 1)] = "RTL"; - return Direction2; - })(Direction || (Direction = {})); - var LTR = Direction.LTR; - var RTL = Direction.RTL; - function dec(str) { - var result = []; - for (var i = 0; i < str.length; i++) result.push(1 << +str[i]); - return result; - } - __name(dec, "dec"); - var LowTypes = /* @__PURE__ */ dec("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"); - var ArabicTypes = /* @__PURE__ */ dec("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"); - var Brackets = /* @__PURE__ */ Object.create(null); - var BracketStack = []; + h(Zi, "ViewUpdate"); + var _e = (function (r) { + return (r[(r.LTR = 0)] = "LTR"), (r[(r.RTL = 1)] = "RTL"), r; + })(_e || (_e = {})), + sh = _e.LTR, + $v = _e.RTL; + function Qg(r) { + var e = []; + for (var t = 0; t < r.length; t++) e.push(1 << +r[t]); + return e; + } + h(Qg, "dec"); + var Mv = Qg("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"), + Pv = Qg("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"), + oh = Object.create(null), + jt = []; for (var _i = 0, _iter = ["()", "[]", "{}"]; _i < _iter.length; _i++) { - var p = _iter[_i]; - var l = /* @__PURE__ */ p.charCodeAt(0), - r = /* @__PURE__ */ p.charCodeAt(1); - Brackets[l] = r; - Brackets[r] = -l; + var r1 = _iter[_i]; + var e = r1.charCodeAt(0), + t = r1.charCodeAt(1); + (oh[e] = t), (oh[t] = -e); } - function charType(ch) { - return ch <= 247 ? LowTypes[ch] : 1424 <= ch && ch <= 1524 ? 2 : 1536 <= ch && ch <= 1785 ? ArabicTypes[ch - 1536] : 1774 <= ch && ch <= 2220 ? 4 : 8192 <= ch && ch <= 8203 ? 256 : 64336 <= ch && ch <= 65023 ? 4 : ch == 8204 ? 256 : 1; + function Lv(r) { + return r <= 247 ? Mv[r] : 1424 <= r && r <= 1524 ? 2 : 1536 <= r && r <= 1785 ? Pv[r - 1536] : 1774 <= r && r <= 2220 ? 4 : 8192 <= r && r <= 8203 ? 256 : 64336 <= r && r <= 65023 ? 4 : r == 8204 ? 256 : 1; } - __name(charType, "charType"); - var BidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/; - var BidiSpan = class BidiSpan { - get dir() { - return this.level % 2 ? RTL : LTR; - } - side(end, dir) { - return (this.dir == dir) == end ? this.to : this.from; - } - static find(order, index, level, assoc) { - var maybe = -1; - for (var i = 0; i < order.length; i++) { - var span = order[i]; - if (span.from <= index && span.to >= index) { - if (span.level == level) return i; - if (maybe < 0 || (assoc != 0 ? (assoc < 0 ? span.from < index : span.to > index) : order[maybe].level > span.level)) maybe = i; - } + h(Lv, "charType"); + var qv = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/, + hi = class hi { + get dir() { + return this.level % 2 ? $v : sh; } - if (maybe < 0) throw new RangeError("Index out of range"); - return maybe; - } - constructor(from, to, level) { - this.from = from; - this.to = to; - this.level = level; - } - }; - __name(BidiSpan, "BidiSpan"); - var types = []; - function computeOrder(line, direction) { - var len = line.length, - outerType = direction == LTR ? 1 : 2, - oppositeType = direction == LTR ? 2 : 1; - if (!line || (outerType == 1 && !BidiRE.test(line))) return trivialOrder(len); - for (var i = 0, prev = outerType, prevStrong = outerType; i < len; i++) { - var type = charType(line.charCodeAt(i)); - if (type == 512) type = prev; - else if (type == 8 && prevStrong == 4) type = 16; - types[i] = type == 4 ? 2 : type; - if (type & 7) prevStrong = type; - prev = type; - } - for (var i1 = 0, prev1 = outerType, prevStrong1 = outerType; i1 < len; i1++) { - var type1 = types[i1]; - if (type1 == 128) { - if (i1 < len - 1 && prev1 == types[i1 + 1] && prev1 & 24) type1 = types[i1] = prev1; - else types[i1] = 256; - } else if (type1 == 64) { - var end = i1 + 1; - while (end < len && types[end] == 64) end++; - var replace = (i1 && prev1 == 8) || (end < len && types[end] == 8) ? (prevStrong1 == 1 ? 1 : 8) : 256; - for (var j = i1; j < end; j++) types[j] = replace; - i1 = end - 1; - } else if (type1 == 8 && prevStrong1 == 1) { - types[i1] = 1; - } - prev1 = type1; - if (type1 & 7) prevStrong1 = type1; - } - for (var i2 = 0, sI = 0, context = 0, ch, br, type2; i2 < len; i2++) { - if ((br = Brackets[(ch = line.charCodeAt(i2))])) { - if (br < 0) { - for (var sJ = sI - 3; sJ >= 0; sJ -= 3) { - if (BracketStack[sJ + 1] == -br) { - var flags = BracketStack[sJ + 2]; - var type21 = flags & 2 ? outerType : !(flags & 4) ? 0 : flags & 1 ? oppositeType : outerType; - if (type21) types[i2] = types[BracketStack[sJ]] = type21; - sI = sJ; - break; - } - } - } else if (BracketStack.length == 189) { - break; - } else { - BracketStack[sI++] = i2; - BracketStack[sI++] = ch; - BracketStack[sI++] = context; - } - } else if ((type2 = types[i2]) == 2 || type2 == 1) { - var embed = type2 == outerType; - context = embed ? 0 : 1; - for (var sJ1 = sI - 3; sJ1 >= 0; sJ1 -= 3) { - var cur = BracketStack[sJ1 + 2]; - if (cur & 2) break; - if (embed) { - BracketStack[sJ1 + 2] |= 2; - } else { - if (cur & 4) break; - BracketStack[sJ1 + 2] |= 4; + side(e, t) { + return (this.dir == t) == e ? this.to : this.from; + } + static find(e, t, i, n) { + var s = -1; + for (var o = 0; o < e.length; o++) { + var u = e[o]; + if (u.from <= t && u.to >= t) { + if (u.level == i) return o; + (s < 0 || (n != 0 ? (n < 0 ? u.from < t : u.to > t) : e[s].level > u.level)) && (s = o); } } + if (s < 0) throw new RangeError("Index out of range"); + return s; } - } - for (var i3 = 0; i3 < len; i3++) { - if (types[i3] == 256) { - var end1 = i3 + 1; - while (end1 < len && types[end1] == 256) end1++; - var beforeL = (i3 ? types[i3 - 1] : outerType) == 1; - var afterL = (end1 < len ? types[end1] : outerType) == 1; - var replace1 = beforeL == afterL ? (beforeL ? 1 : 2) : outerType; - for (var j1 = i3; j1 < end1; j1++) types[j1] = replace1; - i3 = end1 - 1; + constructor(e, t, i) { + (this.from = e), (this.to = t), (this.level = i); } - } - var order = []; - if (outerType == 1) { - for (var i4 = 0; i4 < len; ) { - var start = i4, - rtl = types[i4++] != 1; - while (i4 < len && rtl == (types[i4] != 1)) i4++; - if (rtl) { - for (var j2 = i4; j2 > start; ) { - var end2 = j2, - l = types[--j2] != 2; - while (j2 > start && l == (types[j2 - 1] != 2)) j2--; - order.push(new BidiSpan(j2, end2, l ? 2 : 1)); - } + }; + h(hi, "BidiSpan"); + var Se = []; + function Iv(r, e) { + var t = r.length, + i = e == sh ? 1 : 2, + n = e == sh ? 2 : 1; + if (!r || (i == 1 && !qv.test(r))) return Jg(t); + for (var o = 0, u = i, l = i; o < t; o++) { + var a = Lv(r.charCodeAt(o)); + a == 512 ? (a = u) : a == 8 && l == 4 && (a = 16), (Se[o] = a == 4 ? 2 : a), a & 7 && (l = a), (u = a); + } + for (var o1 = 0, u1 = i, l1 = i; o1 < t; o1++) { + var a1 = Se[o1]; + if (a1 == 128) o1 < t - 1 && u1 == Se[o1 + 1] && u1 & 24 ? (a1 = Se[o1] = u1) : (Se[o1] = 256); + else if (a1 == 64) { + var c = o1 + 1; + for (; c < t && Se[c] == 64; ) c++; + var f = (o1 && u1 == 8) || (c < t && Se[c] == 8) ? (l1 == 1 ? 1 : 8) : 256; + for (var d = o1; d < c; d++) Se[d] = f; + o1 = c - 1; + } else a1 == 8 && l1 == 1 && (Se[o1] = 1); + (u1 = a1), a1 & 7 && (l1 = a1); + } + for (var o2 = 0, u2 = 0, l2 = 0, a2, c1, f1; o2 < t; o2++) + if ((c1 = oh[(a2 = r.charCodeAt(o2))])) + if (c1 < 0) { + for (var d1 = u2 - 3; d1 >= 0; d1 -= 3) + if (jt[d1 + 1] == -c1) { + var p = jt[d1 + 2], + m = p & 2 ? i : p & 4 ? (p & 1 ? n : i) : 0; + m && (Se[o2] = Se[jt[d1]] = m), (u2 = d1); + break; + } } else { - order.push(new BidiSpan(start, i4, 0)); - } - } - } else { - for (var i5 = 0; i5 < len; ) { - var start1 = i5, - rtl1 = types[i5++] == 2; - while (i5 < len && rtl1 == (types[i5] == 2)) i5++; - order.push(new BidiSpan(start1, i5, rtl1 ? 1 : 2)); - } - } - return order; - } - __name(computeOrder, "computeOrder"); - function trivialOrder(length) { - return [new BidiSpan(0, length, 0)]; - } - __name(trivialOrder, "trivialOrder"); - var movedOver = ""; - function moveVisually(line, order, dir, start, forward) { - var _a2; - var startIndex = start.head - line.from, - spanI = -1; - if (startIndex == 0) { - if (!forward || !line.length) return null; - if (order[0].level != dir) { - startIndex = order[0].side(false, dir); - spanI = 0; - } - } else if (startIndex == line.length) { - if (forward) return null; - var last = order[order.length - 1]; - if (last.level != dir) { - startIndex = last.side(true, dir); - spanI = order.length - 1; - } - } - if (spanI < 0) spanI = BidiSpan.find(order, startIndex, (_a2 = start.bidiLevel) !== null && _a2 !== void 0 ? _a2 : -1, start.assoc); - var span = order[spanI]; - if (startIndex == span.side(forward, dir)) { - span = order[(spanI += forward ? 1 : -1)]; - startIndex = span.side(!forward, dir); - } - var indexForward = forward == (span.dir == dir); - var nextIndex = findClusterBreak(line.text, startIndex, indexForward); - movedOver = line.text.slice(Math.min(startIndex, nextIndex), Math.max(startIndex, nextIndex)); - if (nextIndex != span.side(forward, dir)) return EditorSelection.cursor(nextIndex + line.from, indexForward ? -1 : 1, span.level); - var nextSpan = spanI == (forward ? order.length - 1 : 0) ? null : order[spanI + (forward ? 1 : -1)]; - if (!nextSpan && span.level != dir) return EditorSelection.cursor(forward ? line.to : line.from, forward ? -1 : 1, dir); - if (nextSpan && nextSpan.level < span.level) return EditorSelection.cursor(nextSpan.side(!forward, dir) + line.from, forward ? 1 : -1, nextSpan.level); - return EditorSelection.cursor(nextIndex + line.from, forward ? -1 : 1, span.level); - } - __name(moveVisually, "moveVisually"); - var LineBreakPlaceholder = "￿"; - var DOMReader = class DOMReader { - append(text2) { - this.text += text2; - } - lineBreak() { - this.text += LineBreakPlaceholder; - } - readRange(start, end) { - if (!start) return this; - var parent = start.parentNode; - for (var cur = start; ; ) { - this.findPointBefore(parent, cur); - this.readNode(cur); - var next = cur.nextSibling; - if (next == end) break; - var view = ContentView.get(cur), - nextView = ContentView.get(next); - if (view && nextView ? view.breakAfter : (view ? view.breakAfter : isBlockElement(cur)) || (isBlockElement(next) && (cur.nodeName != "BR" || cur.cmIgnore))) this.lineBreak(); - cur = next; - } - this.findPointBefore(parent, end); - return this; - } - readTextNode(node) { - var text2 = node.nodeValue; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.points[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var point = _step.value; - if (point.node == node) point.pos = this.text.length + Math.min(point.offset, text2.length); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + if (jt.length == 189) break; + (jt[u2++] = o2), (jt[u2++] = a2), (jt[u2++] = l2); + } + else if ((f1 = Se[o2]) == 2 || f1 == 1) { + var d2 = f1 == i; + l2 = d2 ? 0 : 1; + for (var p1 = u2 - 3; p1 >= 0; p1 -= 3) { + var m1 = jt[p1 + 2]; + if (m1 & 2) break; + if (d2) jt[p1 + 2] |= 2; + else { + if (m1 & 4) break; + jt[p1 + 2] |= 4; + } + } + } + for (var o3 = 0; o3 < t; o3++) + if (Se[o3] == 256) { + var u3 = o3 + 1; + for (; u3 < t && Se[u3] == 256; ) u3++; + var l3 = (o3 ? Se[o3 - 1] : i) == 1, + a3 = (u3 < t ? Se[u3] : i) == 1, + c2 = l3 == a3 ? (l3 ? 1 : 2) : i; + for (var f2 = o3; f2 < u3; f2++) Se[f2] = c2; + o3 = u3 - 1; + } + var s = []; + if (i == 1) + for (var o4 = 0; o4 < t; ) { + var u4 = o4, + l4 = Se[o4++] != 1; + for (; o4 < t && l4 == (Se[o4] != 1); ) o4++; + if (l4) + for (var a4 = o4; a4 > u4; ) { + var c3 = a4, + f3 = Se[--a4] != 2; + for (; a4 > u4 && f3 == (Se[a4 - 1] != 2); ) a4--; + s.push(new hi(a4, c3, f3 ? 2 : 1)); + } + else s.push(new hi(u4, o4, 0)); + } + else + for (var o5 = 0; o5 < t; ) { + var u5 = o5, + l5 = Se[o5++] == 2; + for (; o5 < t && l5 == (Se[o5] == 2); ) o5++; + s.push(new hi(u5, o5, l5 ? 1 : 2)); + } + return s; + } + h(Iv, "computeOrder"); + function Jg(r) { + return [new hi(0, r, 0)]; + } + h(Jg, "trivialOrder"); + var Zg = ""; + function Nv(r, e, t, i, n) { + var s; + var o = i.head - r.from, + u = -1; + if (o == 0) { + if (!n || !r.length) return null; + e[0].level != t && ((o = e[0].side(!1, t)), (u = 0)); + } else if (o == r.length) { + if (n) return null; + var d = e[e.length - 1]; + d.level != t && ((o = d.side(!0, t)), (u = e.length - 1)); + } + u < 0 && (u = hi.find(e, o, (s = i.bidiLevel) !== null && s !== void 0 ? s : -1, i.assoc)); + var l = e[u]; + o == l.side(n, t) && ((l = e[(u += n ? 1 : -1)]), (o = l.side(!n, t))); + var a = n == (l.dir == t), + c = Bt(r.text, o, a); + if (((Zg = r.text.slice(Math.min(o, c), Math.max(o, c))), c != l.side(n, t))) return z.cursor(c + r.from, a ? -1 : 1, l.level); + var f = u == (n ? e.length - 1 : 0) ? null : e[u + (n ? 1 : -1)]; + return !f && l.level != t ? z.cursor(n ? r.to : r.from, n ? -1 : 1, t) : f && f.level < l.level ? z.cursor(f.side(!n, t) + r.from, n ? 1 : -1, f.level) : z.cursor(c + r.from, n ? -1 : 1, l.level); + } + h(Nv, "moveVisually"); + var Si = "￿", + Nn = class Nn { + append(e) { + this.text += e; + } + lineBreak() { + this.text += Si; + } + readRange(e, t) { + if (!e) return this; + var i = e.parentNode; + for (var n = e; ; ) { + this.findPointBefore(i, n), this.readNode(n); + var s = n.nextSibling; + if (s == t) break; + var o = De.get(n), + u = De.get(s); + (o && u ? o.breakAfter : (o ? o.breakAfter : J0(n)) || (J0(s) && (n.nodeName != "BR" || n.cmIgnore))) && this.lineBreak(), (n = s); + } + return this.findPointBefore(i, t), this; + } + readTextNode(e) { + var t = e.nodeValue; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.points[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + i.node == e && (i.pos = this.text.length + Math.min(i.offset, t.length)); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - for (var off = 0, re = this.lineSeparator ? null : /\r\n?|\n/g; ; ) { - var nextBreak = -1, - breakSize = 1, - m = void 0; - if (this.lineSeparator) { - nextBreak = text2.indexOf(this.lineSeparator, off); - breakSize = this.lineSeparator.length; - } else if ((m = re.exec(text2))) { - nextBreak = m.index; - breakSize = m[0].length; - } - this.append(text2.slice(off, nextBreak < 0 ? text2.length : nextBreak)); - if (nextBreak < 0) break; - this.lineBreak(); - if (breakSize > 1) { - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; try { - for (var _iterator1 = this.points[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var point1 = _step1.value; - if (point1.node == node && point1.pos > this.text.length) point1.pos -= breakSize - 1; + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + for (var i1 = 0, n = this.lineSeparator ? null : /\r\n?|\n/g; ; ) { + var s = -1, + o = 1, + u = void 0; + if ((this.lineSeparator ? ((s = t.indexOf(this.lineSeparator, i1)), (o = this.lineSeparator.length)) : (u = n.exec(t)) && ((s = u.index), (o = u[0].length)), this.append(t.slice(i1, s < 0 ? t.length : s)), s < 0)) break; + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; + if ((this.lineBreak(), o > 1)) try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); + for (var _iterator1 = this.points[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var l = _step1.value; + l.node == e && l.pos > this.text.length && (l.pos -= o - 1); } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; } finally { - if (_didIteratorError1) { - throw _iteratorError1; + try { + if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } } } - } + i1 = s + o; } - off = nextBreak + breakSize; } - } - readNode(node) { - if (node.cmIgnore) return; - var view = ContentView.get(node); - var fromView = view && view.overrideDOMText; - if (fromView != null) { - this.findPointInside(node, fromView.length); - for (var i = fromView.iter(); !i.next().done; ) { - if (i.lineBreak) this.lineBreak(); - else this.append(i.value); - } - } else if (node.nodeType == 3) { - this.readTextNode(node); - } else if (node.nodeName == "BR") { - if (node.nextSibling) this.lineBreak(); - } else if (node.nodeType == 1) { - this.readRange(node.firstChild, null); + readNode(e) { + if (e.cmIgnore) return; + var t = De.get(e), + i = t && t.overrideDOMText; + if (i != null) { + this.findPointInside(e, i.length); + for (var n = i.iter(); !n.next().done; ) n.lineBreak ? this.lineBreak() : this.append(n.value); + } else e.nodeType == 3 ? this.readTextNode(e) : e.nodeName == "BR" ? e.nextSibling && this.lineBreak() : e.nodeType == 1 && this.readRange(e.firstChild, null); } - } - findPointBefore(node, next) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.points[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var point = _step.value; - if (point.node == node && node.childNodes[point.offset] == next) point.pos = this.text.length; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + findPointBefore(e, t) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.points[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + i.node == e && e.childNodes[i.offset] == t && (i.pos = this.text.length); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } } - } - findPointInside(node, maxLen) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.points[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var point = _step.value; - if (node.nodeType == 3 ? point.node == node : node.contains(point.node)) point.pos = this.text.length + Math.min(maxLen, point.offset); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + findPointInside(e, t) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.points[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + (e.nodeType == 3 ? i.node == e : e.contains(i.node)) && (i.pos = this.text.length + Math.min(t, i.offset)); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } } - } - constructor(points, state) { - this.points = points; - this.text = ""; - this.lineSeparator = state.facet(EditorState.lineSeparator); - } - }; - __name(DOMReader, "DOMReader"); - function isBlockElement(node) { - return node.nodeType == 1 && /^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(node.nodeName); + constructor(e, t) { + (this.points = e), (this.text = ""), (this.lineSeparator = t.facet(ae.lineSeparator)); + } + }; + h(Nn, "DOMReader"); + function J0(r) { + return r.nodeType == 1 && /^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(r.nodeName); } - __name(isBlockElement, "isBlockElement"); - var DOMPoint = class DOMPoint { - constructor(node, offset) { - this.node = node; - this.offset = offset; - this.pos = -1; + h(J0, "isBlockElement"); + var Vn = class Vn { + constructor(e, t) { + (this.node = e), (this.offset = t), (this.pos = -1); } }; - __name(DOMPoint, "DOMPoint"); - var DocView = class DocView extends ContentView { - get editorView() { - return this.view; - } + h(Vn, "DOMPoint"); + var zn = class zn extends De { get length() { return this.view.state.doc.length; } - update(update2) { - var changedRanges = update2.changedRanges; - if (this.minWidth > 0 && changedRanges.length) { - if ( - !changedRanges.every((param) => { - var fromA = param.fromA, - toA = param.toA; - return toA < this.minWidthFrom || fromA > this.minWidthTo; - }) - ) { - this.minWidth = this.minWidthFrom = this.minWidthTo = 0; - } else { - this.minWidthFrom = update2.changes.mapPos(this.minWidthFrom, 1); - this.minWidthTo = update2.changes.mapPos(this.minWidthTo, 1); - } - } - if (this.view.inputState.composing < 0) this.compositionDeco = Decoration.none; - else if (update2.transactions.length || this.dirty) this.compositionDeco = computeCompositionDeco(this.view, update2.changes); - if ((browser.ie || browser.chrome) && !this.compositionDeco.size && update2 && update2.state.doc.lines != update2.startState.doc.lines) this.forceSelection = true; - var prevDeco = this.decorations, - deco = this.updateDeco(); - var decoDiff = findChangedDeco(prevDeco, deco, update2.changes); - changedRanges = ChangedRange.extendWithRanges(changedRanges, decoDiff); - if (this.dirty == 0 && changedRanges.length == 0) { - return false; - } else { - this.updateInner(changedRanges, update2.startState.doc.length); - if (update2.transactions.length) this.lastUpdate = Date.now(); - return true; - } - } - updateInner(changes, oldLength) { - this.view.viewState.mustMeasureContent = true; - this.updateChildren(changes, oldLength); - var observer = this.view.observer; - observer.ignore(() => { - this.dom.style.height = this.view.viewState.contentHeight + "px"; - this.dom.style.flexBasis = this.minWidth ? this.minWidth + "px" : ""; - var track = - browser.chrome || browser.ios - ? { - node: observer.selectionRange.focusNode, - written: false, - } - : void 0; - this.sync(track); - this.dirty = 0; - if (track && (track.written || observer.selectionRange.focusNode != track.node)) this.forceSelection = true; - this.dom.style.height = ""; + update(e) { + var t = e.changedRanges; + this.minWidth > 0 && + t.length && + (t.every((param) => { + var o = param.fromA, + u = param.toA; + return u < this.minWidthFrom || o > this.minWidthTo; + }) + ? ((this.minWidthFrom = e.changes.mapPos(this.minWidthFrom, 1)), (this.minWidthTo = e.changes.mapPos(this.minWidthTo, 1))) + : (this.minWidth = this.minWidthFrom = this.minWidthTo = 0)), + this.view.inputState.composing < 0 ? (this.compositionDeco = he.none) : (e.transactions.length || this.dirty) && (this.compositionDeco = zv(this.view, e.changes)), + (U.ie || U.chrome) && !this.compositionDeco.size && e && e.state.doc.lines != e.startState.doc.lines && (this.forceSelection = !0); + var i = this.decorations, + n = this.updateDeco(), + s = jv(i, n, e.changes); + return (t = ct.extendWithRanges(t, s)), this.dirty == 0 && t.length == 0 ? !1 : (this.updateInner(t, e.startState.doc.length), e.transactions.length && (this.lastUpdate = Date.now()), !0); + } + updateInner(e, t) { + (this.view.viewState.mustMeasureContent = !0), this.updateChildren(e, t); + var _this_view = this.view, + i = _this_view.observer; + i.ignore(() => { + (this.dom.style.height = this.view.viewState.contentHeight + "px"), (this.dom.style.flexBasis = this.minWidth ? this.minWidth + "px" : ""); + var s = U.chrome || U.ios ? { node: i.selectionRange.focusNode, written: !1 } : void 0; + this.sync(this.view, s), (this.dirty = 0), s && (s.written || i.selectionRange.focusNode != s.node) && (this.forceSelection = !0), (this.dom.style.height = ""); }); - var gaps = []; - if (this.view.viewport.from || this.view.viewport.to < this.view.state.doc.length) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + var n = []; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (this.view.viewport.from || this.view.viewport.to < this.view.state.doc.length) try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (child instanceof BlockWidgetView && child.widget instanceof BlockGapWidget) gaps.push(child.dom); + var s = _step.value; + s instanceof Yt && s.widget instanceof Wn && n.push(s.dom); } } catch (err) { _didIteratorError = true; @@ -14015,186 +11086,164 @@ var __generator = } } } - } - observer.updateGaps(gaps); - } - updateChildren(changes, oldLength) { - var cursor = this.childCursor(oldLength); - for (var i = changes.length - 1; ; i--) { - var next = i >= 0 ? changes[i] : null; - if (!next) break; - var fromA = next.fromA, - toA = next.toA, - fromB = next.fromB, - toB = next.toB; - var _ContentBuilder_build = ContentBuilder.build(this.view.state.doc, fromB, toB, this.decorations, this.dynamicDecorationMap), - content2 = _ContentBuilder_build.content, - breakAtStart = _ContentBuilder_build.breakAtStart, - openStart = _ContentBuilder_build.openStart, - openEnd = _ContentBuilder_build.openEnd; - var _cursor_findPos = cursor.findPos(toA, 1), - toI = _cursor_findPos.i, - toOff = _cursor_findPos.off; - var _cursor_findPos1 = cursor.findPos(fromA, -1), - fromI = _cursor_findPos1.i, - fromOff = _cursor_findPos1.off; - replaceRange(this, fromI, fromOff, toI, toOff, content2, breakAtStart, openStart, openEnd); + i.updateGaps(n); + } + updateChildren(e, t) { + var i = this.childCursor(t); + for (var n = e.length - 1; ; n--) { + var s = n >= 0 ? e[n] : null; + if (!s) break; + var o = s.fromA, + u = s.toA, + l = s.fromB, + a = s.toB, + _Lr_build = Lr.build(this.view.state.doc, l, a, this.decorations, this.dynamicDecorationMap), + c = _Lr_build.content, + f = _Lr_build.breakAtStart, + d = _Lr_build.openStart, + p = _Lr_build.openEnd, + _i_findPos = i.findPos(u, 1), + m = _i_findPos.i, + D = _i_findPos.off, + _i_findPos1 = i.findPos(o, -1), + g = _i_findPos1.i, + b = _i_findPos1.off; + Og(this, g, b, m, D, c, f, d, p); } } updateSelection() { - var mustRead = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false, - fromPointer = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - if (mustRead || !this.view.observer.selectionRange.focusNode) this.view.observer.readSelectionRange(); - if (!(fromPointer || this.mayControlSelection())) return; - var force = this.forceSelection; - this.forceSelection = false; - var main = this.view.state.selection.main; - var anchor = this.domAtPos(main.anchor); - var head = main.empty ? anchor : this.domAtPos(main.head); - if (browser.gecko && main.empty && betweenUneditable(anchor)) { - var dummy = document.createTextNode(""); - this.view.observer.ignore(() => anchor.node.insertBefore(dummy, anchor.node.childNodes[anchor.offset] || null)); - anchor = head = new DOMPos(dummy, 0); - force = true; - } - var domSel = this.view.observer.selectionRange; - if (force || !domSel.focusNode || !isEquivalentPosition(anchor.node, anchor.offset, domSel.anchorNode, domSel.anchorOffset) || !isEquivalentPosition(head.node, head.offset, domSel.focusNode, domSel.focusOffset)) { - this.view.observer.ignore(() => { - if (browser.android && browser.chrome && this.dom.contains(domSel.focusNode) && inUneditable(domSel.focusNode, this.dom)) { - this.dom.blur(); - this.dom.focus({ - preventScroll: true, - }); - } - var rawSel = getSelection(this.view.root); - if (!rawSel); - else if (main.empty) { - if (browser.gecko) { - var nextTo = nextToUneditable(anchor.node, anchor.offset); - if (nextTo && nextTo != (1 | 2)) { - var text2 = nearbyTextNode(anchor.node, anchor.offset, nextTo == 1 ? 1 : -1); - if (text2) anchor = new DOMPos(text2, nextTo == 1 ? 0 : text2.nodeValue.length); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, + t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1; + if (((e || !this.view.observer.selectionRange.focusNode) && this.view.observer.readSelectionRange(), !(t || this.mayControlSelection()))) return; + var i = this.forceSelection; + this.forceSelection = !1; + var n = this.view.state.selection.main, + s = this.domAtPos(n.anchor), + o = n.empty ? s : this.domAtPos(n.head); + if (U.gecko && n.empty && Vv(s)) { + var l = document.createTextNode(""); + this.view.observer.ignore(() => s.node.insertBefore(l, s.node.childNodes[s.offset] || null)), (s = o = new Me(l, 0)), (i = !0); + } + var u = this.view.observer.selectionRange; + (i || !u.focusNode || !tu(s.node, s.offset, u.anchorNode, u.anchorOffset) || !tu(o.node, o.offset, u.focusNode, u.focusOffset)) && + (this.view.observer.ignore(() => { + U.android && U.chrome && this.dom.contains(u.focusNode) && Hv(u.focusNode, this.dom) && (this.dom.blur(), this.dom.focus({ preventScroll: !0 })); + var l = eu(this.view.root); + if (l) + if (n.empty) { + if (U.gecko) { + var a = Wv(s.node, s.offset); + if (a && a != 3) { + var c = tD(s.node, s.offset, a == 1 ? 1 : -1); + c && (s = new Me(c, a == 1 ? 0 : c.nodeValue.length)); + } } + l.collapse(s.node, s.offset), n.bidiLevel != null && u.cursorBidiLevel != null && (u.cursorBidiLevel = n.bidiLevel); + } else if (l.extend) { + l.collapse(s.node, s.offset); + try { + l.extend(o.node, o.offset); + } catch (e) {} + } else { + var a1 = document.createRange(); + var ref; + n.anchor > n.head && ((ref = [o, s]), (s = ref[0]), (o = ref[1]), ref), a1.setEnd(o.node, o.offset), a1.setStart(s.node, s.offset), l.removeAllRanges(), l.addRange(a1); } - rawSel.collapse(anchor.node, anchor.offset); - if (main.bidiLevel != null && domSel.cursorBidiLevel != null) domSel.cursorBidiLevel = main.bidiLevel; - } else if (rawSel.extend) { - rawSel.collapse(anchor.node, anchor.offset); - try { - rawSel.extend(head.node, head.offset); - } catch (_) {} - } else { - var range = document.createRange(); - var ref; - if (main.anchor > main.head) (ref = [head, anchor]), (anchor = ref[0]), (head = ref[1]), ref; - range.setEnd(head.node, head.offset); - range.setStart(anchor.node, anchor.offset); - rawSel.removeAllRanges(); - rawSel.addRange(range); - } - }); - this.view.observer.setSelectionRange(anchor, head); - } - this.impreciseAnchor = anchor.precise ? null : new DOMPos(domSel.anchorNode, domSel.anchorOffset); - this.impreciseHead = head.precise ? null : new DOMPos(domSel.focusNode, domSel.focusOffset); + }), + this.view.observer.setSelectionRange(s, o)), + (this.impreciseAnchor = s.precise ? null : new Me(u.anchorNode, u.anchorOffset)), + (this.impreciseHead = o.precise ? null : new Me(u.focusNode, u.focusOffset)); } enforceCursorAssoc() { if (this.compositionDeco.size) return; - var view = this.view, - cursor = view.state.selection.main; - var sel = getSelection(view.root); - var _view_observer_selectionRange = view.observer.selectionRange, - anchorNode = _view_observer_selectionRange.anchorNode, - anchorOffset = _view_observer_selectionRange.anchorOffset; - if (!sel || !cursor.empty || !cursor.assoc || !sel.modify) return; - var line = LineView.find(this, cursor.head); - if (!line) return; - var lineStart = line.posAtStart; - if (cursor.head == lineStart || cursor.head == lineStart + line.length) return; - var before = this.coordsAt(cursor.head, -1), - after = this.coordsAt(cursor.head, 1); - if (!before || !after || before.bottom > after.top) return; - var dom = this.domAtPos(cursor.head + cursor.assoc); - sel.collapse(dom.node, dom.offset); - sel.modify("move", cursor.assoc < 0 ? "forward" : "backward", "lineboundary"); - view.observer.readSelectionRange(); - var newRange = view.observer.selectionRange; - if (view.docView.posFromDOM(newRange.anchorNode, newRange.anchorOffset) != cursor.from) sel.collapse(anchorNode, anchorOffset); + var _this = this, + e = _this.view, + t = e.state.selection.main, + i = eu(e.root), + _e_observer_selectionRange = e.observer.selectionRange, + n = _e_observer_selectionRange.anchorNode, + s = _e_observer_selectionRange.anchorOffset; + if (!i || !t.empty || !t.assoc || !i.modify) return; + var o = Ve.find(this, t.head); + if (!o) return; + var u = o.posAtStart; + if (t.head == u || t.head == u + o.length) return; + var l = this.coordsAt(t.head, -1), + a = this.coordsAt(t.head, 1); + if (!l || !a || l.bottom > a.top) return; + var c = this.domAtPos(t.head + t.assoc); + i.collapse(c.node, c.offset), i.modify("move", t.assoc < 0 ? "forward" : "backward", "lineboundary"), e.observer.readSelectionRange(); + var f = e.observer.selectionRange; + e.docView.posFromDOM(f.anchorNode, f.anchorOffset) != t.from && i.collapse(n, s); } mayControlSelection() { - var active = this.view.root.activeElement; - return active == this.dom || (hasSelection(this.dom, this.view.observer.selectionRange) && !(active && this.dom.contains(active))); + var e = this.view.root.activeElement; + return e == this.dom || (Ro(this.dom, this.view.observer.selectionRange) && !(e && this.dom.contains(e))); } - nearest(dom) { - for (var cur = dom; cur; ) { - var domView = ContentView.get(cur); - if (domView && domView.rootView == this) return domView; - cur = cur.parentNode; + nearest(e) { + for (var t = e; t; ) { + var i = De.get(t); + if (i && i.rootView == this) return i; + t = t.parentNode; } return null; } - posFromDOM(node, offset) { - var view = this.nearest(node); - if (!view) throw new RangeError("Trying to find position for a DOM position outside of the document"); - return view.localPosFromDOM(node, offset) + view.posAtStart; - } - domAtPos(pos) { - var _this_childCursor_findPos = this.childCursor().findPos(pos, -1), - i = _this_childCursor_findPos.i, - off = _this_childCursor_findPos.off; - for (; i < this.children.length - 1; ) { - var child = this.children[i]; - if (off < child.length || child instanceof LineView) break; - i++; - off = 0; - } - return this.children[i].domAtPos(off); - } - coordsAt(pos, side) { - for (var off = this.length, i = this.children.length - 1; ; i--) { - var child = this.children[i], - start = off - child.breakAfter - child.length; - if (pos > start || (pos == start && child.type != BlockType.WidgetBefore && child.type != BlockType.WidgetAfter && (!i || side == 2 || this.children[i - 1].breakAfter || (this.children[i - 1].type == BlockType.WidgetBefore && side > -2)))) return child.coordsAt(pos - start, side); - off = start; - } - } - measureVisibleLineHeights(viewport) { - var result = [], - from = viewport.from, - to = viewport.to; - var contentWidth = this.view.contentDOM.clientWidth; - var isWider = contentWidth > Math.max(this.view.scrollDOM.clientWidth, this.minWidth) + 1; - var widest = -1, - ltr = this.view.textDirection == Direction.LTR; - for (var pos = 0, i = 0; i < this.children.length; i++) { - var child = this.children[i], - end = pos + child.length; - if (end > to) break; - if (pos >= from) { - var childRect = child.dom.getBoundingClientRect(); - result.push(childRect.height); - if (isWider) { - var last = child.dom.lastChild; - var rects = last ? clientRectsFor(last) : []; - if (rects.length) { - var rect = rects[rects.length - 1]; - var width = ltr ? rect.right - childRect.left : childRect.right - rect.left; - if (width > widest) { - widest = width; - this.minWidth = contentWidth; - this.minWidthFrom = pos; - this.minWidthTo = end; - } + posFromDOM(e, t) { + var i = this.nearest(e); + if (!i) throw new RangeError("Trying to find position for a DOM position outside of the document"); + return i.localPosFromDOM(e, t) + i.posAtStart; + } + domAtPos(e) { + var _this_childCursor_findPos = this.childCursor().findPos(e, -1), + t = _this_childCursor_findPos.i, + i = _this_childCursor_findPos.off; + for (; t < this.children.length - 1; ) { + var n = this.children[t]; + if (i < n.length || n instanceof Ve) break; + t++, (i = 0); + } + return this.children[t].domAtPos(i); + } + coordsAt(e, t) { + for (var i = this.length, n = this.children.length - 1; ; n--) { + var s = this.children[n], + o = i - s.breakAfter - s.length; + if (e > o || (e == o && s.type != be.WidgetBefore && s.type != be.WidgetAfter && (!n || t == 2 || this.children[n - 1].breakAfter || (this.children[n - 1].type == be.WidgetBefore && t > -2)))) return s.coordsAt(e - o, t); + i = o; + } + } + measureVisibleLineHeights(e) { + var t = [], + i = e.from, + n = e.to, + s = this.view.contentDOM.clientWidth, + o = s > Math.max(this.view.scrollDOM.clientWidth, this.minWidth) + 1, + u = -1, + l = this.view.textDirection == _e.LTR; + for (var a = 0, c = 0; c < this.children.length; c++) { + var f = this.children[c], + d = a + f.length; + if (d > n) break; + if (a >= i) { + var p = f.dom.getBoundingClientRect(); + if ((t.push(p.height), o)) { + var m = f.dom.lastChild, + D = m ? Kn(m) : []; + if (D.length) { + var g = D[D.length - 1], + b = l ? g.right - p.left : p.right - g.left; + b > u && ((u = b), (this.minWidth = s), (this.minWidthFrom = a), (this.minWidthTo = d)); } } } - pos = end + child.breakAfter; + a = d + f.breakAfter; } - return result; + return t; } - textDirectionAt(pos) { - var i = this.childPos(pos, 1).i; - return getComputedStyle(this.children[i].dom).direction == "rtl" ? Direction.RTL : Direction.LTR; + textDirectionAt(e) { + var _this_childPos = this.childPos(e, 1), + t = _this_childPos.i; + return getComputedStyle(this.children[t].dom).direction == "rtl" ? _e.RTL : _e.LTR; } measureTextSize() { var _iteratorNormalCompletion = true, @@ -14202,10 +11251,10 @@ var __generator = _iteratorError = undefined; try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (child instanceof LineView) { - var measure = child.measureTextSize(); - if (measure) return measure; + var n = _step.value; + if (n instanceof Ve) { + var s = n.measureTextSize(); + if (s) return s; } } } catch (err) { @@ -14222,99 +11271,76 @@ var __generator = } } } - var dummy = document.createElement("div"), - lineHeight, - charWidth; - dummy.className = "cm-line"; - dummy.style.width = "99999px"; - dummy.textContent = "abc def ghi jkl mno pqr stu"; - this.view.observer.ignore(() => { - this.dom.appendChild(dummy); - var rect = clientRectsFor(dummy.firstChild)[0]; - lineHeight = dummy.getBoundingClientRect().height; - charWidth = rect ? rect.width / 27 : 7; - dummy.remove(); - }); - return { - lineHeight, - charWidth, - }; + var e = document.createElement("div"), + t, + i; + return ( + (e.className = "cm-line"), + (e.style.width = "99999px"), + (e.textContent = "abc def ghi jkl mno pqr stu"), + this.view.observer.ignore(() => { + this.dom.appendChild(e); + var n = Kn(e.firstChild)[0]; + (t = e.getBoundingClientRect().height), (i = n ? n.width / 27 : 7), e.remove(); + }), + { lineHeight: t, charWidth: i } + ); } childCursor() { - var pos = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.length; - var i = this.children.length; - if (i) pos -= this.children[--i].length; - return new ChildCursor(this.children, pos, i); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.length; + var t = this.children.length; + return t && (e -= this.children[--t].length), new Ln(this.children, e, t); } computeBlockGapDeco() { - var deco = [], - vs = this.view.viewState; - for (var pos = 0, i = 0; ; i++) { - var next = i == vs.viewports.length ? null : vs.viewports[i]; - var end = next ? next.from - 1 : this.length; - if (end > pos) { - var height = vs.lineBlockAt(end).bottom - vs.lineBlockAt(pos).top; - deco.push( - Decoration.replace({ - widget: new BlockGapWidget(height), - block: true, - inclusive: true, - isBlockGap: true, - }).range(pos, end) - ); + var e = [], + t = this.view.viewState; + for (var i = 0, n = 0; ; n++) { + var s = n == t.viewports.length ? null : t.viewports[n], + o = s ? s.from - 1 : this.length; + if (o > i) { + var u = t.lineBlockAt(o).bottom - t.lineBlockAt(i).top; + e.push(he.replace({ widget: new Wn(u), block: !0, inclusive: !0, isBlockGap: !0 }).range(i, o)); } - if (!next) break; - pos = next.to + 1; + if (!s) break; + i = s.to + 1; } - return Decoration.set(deco); + return he.set(e); } updateDeco() { - var allDeco = this.view.state.facet(decorations).map((d, i) => { - var dynamic = (this.dynamicDecorationMap[i] = typeof d == "function"); - return dynamic ? d(this.view) : d; - }); - for (var i = allDeco.length; i < allDeco.length + 3; i++) this.dynamicDecorationMap[i] = false; - return (this.decorations = [...allDeco, this.compositionDeco, this.computeBlockGapDeco(), this.view.viewState.lineGapDeco]); - } - scrollIntoView(target) { - var range = target.range; - var rect = this.coordsAt(range.head, range.empty ? range.assoc : range.head > range.anchor ? -1 : 1), - other; - if (!rect) return; - if (!range.empty && (other = this.coordsAt(range.anchor, range.anchor > range.head ? -1 : 1))) - rect = { - left: Math.min(rect.left, other.left), - top: Math.min(rect.top, other.top), - right: Math.max(rect.right, other.right), - bottom: Math.max(rect.bottom, other.bottom), - }; - var mLeft = 0, - mRight = 0, - mTop = 0, - mBottom = 0; + var e = this.view.state.facet(Qn).map((t, i) => ((this.dynamicDecorationMap[i] = typeof t == "function") ? t(this.view) : t)); + for (var t = e.length; t < e.length + 3; t++) this.dynamicDecorationMap[t] = !1; + return (this.decorations = [...e, this.compositionDeco, this.computeBlockGapDeco(), this.view.viewState.lineGapDeco]); + } + scrollIntoView(e) { + var t = e.range, + i = this.coordsAt(t.head, t.empty ? t.assoc : t.head > t.anchor ? -1 : 1), + n; + if (!i) return; + !t.empty && (n = this.coordsAt(t.anchor, t.anchor > t.head ? -1 : 1)) && (i = { left: Math.min(i.left, n.left), top: Math.min(i.top, n.top), right: Math.max(i.right, n.right), bottom: Math.max(i.bottom, n.bottom) }); + var s = 0, + o = 0, + u = 0, + l = 0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for ( var _iterator = this.view.state - .facet(scrollMargins) + .facet(Xg) .map((f) => f(this.view)) [Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true ) { - var margins = _step.value; - if (margins) { - var left = margins.left, - right = margins.right, - top2 = margins.top, - bottom = margins.bottom; - if (left != null) mLeft = Math.max(mLeft, left); - if (right != null) mRight = Math.max(mRight, right); - if (top2 != null) mTop = Math.max(mTop, top2); - if (bottom != null) mBottom = Math.max(mBottom, bottom); + var c = _step.value; + if (c) { + var f = c.left, + d = c.right, + p = c.top, + m = c.bottom; + f != null && (s = Math.max(s, f)), d != null && (o = Math.max(o, d)), p != null && (u = Math.max(u, p)), m != null && (l = Math.max(l, m)); } } } catch (err) { @@ -14331,537 +11357,413 @@ var __generator = } } } - var targetRect = { - left: rect.left - mLeft, - top: rect.top - mTop, - right: rect.right + mRight, - bottom: rect.bottom + mBottom, - }; - scrollRectIntoView(this.view.scrollDOM, targetRect, range.head < range.anchor ? -1 : 1, target.x, target.y, target.xMargin, target.yMargin, this.view.textDirection == Direction.LTR); - } - constructor(view) { - super(); - this.view = view; - this.compositionDeco = Decoration.none; - this.decorations = []; - this.dynamicDecorationMap = []; - this.minWidth = 0; - this.minWidthFrom = 0; - this.minWidthTo = 0; - this.impreciseAnchor = null; - this.impreciseHead = null; - this.forceSelection = false; - this.lastUpdate = Date.now(); - this.setDOM(view.contentDOM); - this.children = [new LineView()]; - this.children[0].setParent(this); - this.updateDeco(); - this.updateInner([new ChangedRange(0, 0, 0, view.state.doc.length)], 0); + var a = { left: i.left - s, top: i.top - u, right: i.right + o, bottom: i.bottom + l }; + kv(this.view.scrollDOM, a, t.head < t.anchor ? -1 : 1, e.x, e.y, e.xMargin, e.yMargin, this.view.textDirection == _e.LTR); + } + constructor(e) { + super(), + (this.view = e), + (this.compositionDeco = he.none), + (this.decorations = []), + (this.dynamicDecorationMap = []), + (this.minWidth = 0), + (this.minWidthFrom = 0), + (this.minWidthTo = 0), + (this.impreciseAnchor = null), + (this.impreciseHead = null), + (this.forceSelection = !1), + (this.lastUpdate = Date.now()), + this.setDOM(e.contentDOM), + (this.children = [new Ve()]), + this.children[0].setParent(this), + this.updateDeco(), + this.updateInner([new ct(0, 0, 0, e.state.doc.length)], 0); } }; - __name(DocView, "DocView"); - function betweenUneditable(pos) { - return pos.node.nodeType == 1 && pos.node.firstChild && (pos.offset == 0 || pos.node.childNodes[pos.offset - 1].contentEditable == "false") && (pos.offset == pos.node.childNodes.length || pos.node.childNodes[pos.offset].contentEditable == "false"); + h(zn, "DocView"); + function Vv(r) { + return r.node.nodeType == 1 && r.node.firstChild && (r.offset == 0 || r.node.childNodes[r.offset - 1].contentEditable == "false") && (r.offset == r.node.childNodes.length || r.node.childNodes[r.offset].contentEditable == "false"); } - __name(betweenUneditable, "betweenUneditable"); - var BlockGapWidget = class BlockGapWidget extends WidgetType { + h(Vv, "betweenUneditable"); + var Wn = class Wn extends Ht { toDOM() { - var elt = document.createElement("div"); - this.updateDOM(elt); - return elt; + var e = document.createElement("div"); + return this.updateDOM(e), e; } - eq(other) { - return other.height == this.height; + eq(e) { + return e.height == this.height; } - updateDOM(elt) { - elt.style.height = this.height + "px"; - return true; + updateDOM(e) { + return (e.style.height = this.height + "px"), !0; } get estimatedHeight() { return this.height; } - constructor(height) { - super(); - this.height = height; + constructor(e) { + super(), (this.height = e); } }; - __name(BlockGapWidget, "BlockGapWidget"); - function compositionSurroundingNode(view) { - var sel = view.observer.selectionRange; - var textNode = sel.focusNode && nearbyTextNode(sel.focusNode, sel.focusOffset, 0); - if (!textNode) return null; - var cView = view.docView.nearest(textNode); - if (!cView) return null; - if (cView instanceof LineView) { - var topNode = textNode; - while (topNode.parentNode != cView.dom) topNode = topNode.parentNode; - var prev = topNode.previousSibling; - while (prev && !ContentView.get(prev)) prev = prev.previousSibling; - var pos = prev ? ContentView.get(prev).posAtEnd : cView.posAtStart; - return { - from: pos, - to: pos, - node: topNode, - text: textNode, - }; + h(Wn, "BlockGapWidget"); + function eD(r) { + var e = r.observer.selectionRange, + t = e.focusNode && tD(e.focusNode, e.focusOffset, 0); + if (!t) return null; + var i = r.docView.nearest(t); + if (!i) return null; + if (i instanceof Ve) { + var n = t; + for (; n.parentNode != i.dom; ) n = n.parentNode; + var s = n.previousSibling; + for (; s && !De.get(s); ) s = s.previousSibling; + var o = s ? De.get(s).posAtEnd : i.posAtStart; + return { from: o, to: o, node: n, text: t }; } else { for (;;) { - var parent = cView.parent; - if (!parent) return null; - if (parent instanceof LineView) break; - cView = parent; - } - var from = cView.posAtStart; - return { - from, - to: from + cView.length, - node: cView.dom, - text: textNode, - }; - } - } - __name(compositionSurroundingNode, "compositionSurroundingNode"); - function computeCompositionDeco(view, changes) { - var surrounding = compositionSurroundingNode(view); - if (!surrounding) return Decoration.none; - var from = surrounding.from, - to = surrounding.to, - node = surrounding.node, - textNode = surrounding.text; - var newFrom = changes.mapPos(from, 1), - newTo = Math.max(newFrom, changes.mapPos(to, -1)); - var state = view.state, - text2 = node.nodeType == 3 ? node.nodeValue : new DOMReader([], state).readRange(node.firstChild, null).text; - if (newTo - newFrom < text2.length) { - if (state.doc.sliceString(newFrom, Math.min(state.doc.length, newFrom + text2.length), LineBreakPlaceholder) == text2) newTo = newFrom + text2.length; - else if (state.doc.sliceString(Math.max(0, newTo - text2.length), newTo, LineBreakPlaceholder) == text2) newFrom = newTo - text2.length; - else return Decoration.none; - } else if (state.doc.sliceString(newFrom, newTo, LineBreakPlaceholder) != text2) { - return Decoration.none; - } - var topView = ContentView.get(node); - if (topView instanceof CompositionView) topView = topView.widget.topView; - else if (topView) topView.parent = null; - return Decoration.set( - Decoration.replace({ - widget: new CompositionWidget(node, textNode, topView), - inclusive: true, - }).range(newFrom, newTo) - ); - } - __name(computeCompositionDeco, "computeCompositionDeco"); - var CompositionWidget = class CompositionWidget extends WidgetType { - eq(other) { - return this.top == other.top && this.text == other.text; + var s1 = i.parent; + if (!s1) return null; + if (s1 instanceof Ve) break; + i = s1; + } + var n1 = i.posAtStart; + return { from: n1, to: n1 + i.length, node: i.dom, text: t }; + } + } + h(eD, "compositionSurroundingNode"); + function zv(r, e) { + var t = eD(r); + if (!t) return he.none; + var i = t.from, + n = t.to, + s = t.node, + o = t.text, + u = e.mapPos(i, 1), + l = Math.max(u, e.mapPos(n, -1)), + a = r.state, + c = s.nodeType == 3 ? s.nodeValue : new Nn([], a).readRange(s.firstChild, null).text; + if (l - u < c.length) + if (a.doc.sliceString(u, Math.min(a.doc.length, u + c.length), Si) == c) l = u + c.length; + else if (a.doc.sliceString(Math.max(0, l - c.length), l, Si) == c) u = l - c.length; + else return he.none; + else if (a.doc.sliceString(u, l, Si) != c) return he.none; + var f = De.get(s); + return f instanceof qn ? (f = f.widget.topView) : f && (f.parent = null), he.set(he.replace({ widget: new Mo(s, o, f), inclusive: !0 }).range(u, l)); + } + h(zv, "computeCompositionDeco"); + var Mo = class Mo extends Ht { + eq(e) { + return this.top == e.top && this.text == e.text; } toDOM() { return this.top; } ignoreEvent() { - return false; + return !1; } get customView() { - return CompositionView; + return qn; } - constructor(top2, text2, topView) { - super(); - this.top = top2; - this.text = text2; - this.topView = topView; + constructor(e, t, i) { + super(), (this.top = e), (this.text = t), (this.topView = i); } }; - __name(CompositionWidget, "CompositionWidget"); - function nearbyTextNode(node, offset, side) { + h(Mo, "CompositionWidget"); + function tD(r, e, t) { for (;;) { - if (node.nodeType == 3) return node; - if (node.nodeType == 1 && offset > 0 && side <= 0) { - node = node.childNodes[offset - 1]; - offset = maxOffset(node); - } else if (node.nodeType == 1 && offset < node.childNodes.length && side >= 0) { - node = node.childNodes[offset]; - offset = 0; - } else { - return null; - } + if (r.nodeType == 3) return r; + if (r.nodeType == 1 && e > 0 && t <= 0) (r = r.childNodes[e - 1]), (e = Xn(r)); + else if (r.nodeType == 1 && e < r.childNodes.length && t >= 0) (r = r.childNodes[e]), (e = 0); + else return null; } } - __name(nearbyTextNode, "nearbyTextNode"); - function nextToUneditable(node, offset) { - if (node.nodeType != 1) return 0; - return (offset && node.childNodes[offset - 1].contentEditable == "false" ? 1 : 0) | (offset < node.childNodes.length && node.childNodes[offset].contentEditable == "false" ? 2 : 0); + h(tD, "nearbyTextNode"); + function Wv(r, e) { + return r.nodeType != 1 ? 0 : (e && r.childNodes[e - 1].contentEditable == "false" ? 1 : 0) | (e < r.childNodes.length && r.childNodes[e].contentEditable == "false" ? 2 : 0); } - __name(nextToUneditable, "nextToUneditable"); - var DecorationComparator$1 = class DecorationComparator$1 { - compareRange(from, to) { - addRange(from, to, this.changes); + h(Wv, "nextToUneditable"); + var Po = class Po { + compareRange(e, t) { + rh(e, t, this.changes); } - comparePoint(from, to) { - addRange(from, to, this.changes); + comparePoint(e, t) { + rh(e, t, this.changes); } constructor() { this.changes = []; } }; - __name(DecorationComparator$1, "DecorationComparator$1"); - function findChangedDeco(a, b, diff) { - var comp = new DecorationComparator$1(); - RangeSet.compare(a, b, diff, comp); - return comp.changes; - } - __name(findChangedDeco, "findChangedDeco"); - function inUneditable(node, inside2) { - for (var cur = node; cur && cur != inside2; cur = cur.assignedSlot || cur.parentNode) { - if (cur.nodeType == 1 && cur.contentEditable == "false") { - return true; - } - } - return false; - } - __name(inUneditable, "inUneditable"); - function groupAt(state, pos) { - var bias = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; - var categorize = state.charCategorizer(pos); - var line = state.doc.lineAt(pos), - linePos = pos - line.from; - if (line.length == 0) return EditorSelection.cursor(pos); - if (linePos == 0) bias = 1; - else if (linePos == line.length) bias = -1; - var from = linePos, - to = linePos; - if (bias < 0) from = findClusterBreak(line.text, linePos, false); - else to = findClusterBreak(line.text, linePos); - var cat = categorize(line.text.slice(from, to)); - while (from > 0) { - var prev = findClusterBreak(line.text, from, false); - if (categorize(line.text.slice(prev, from)) != cat) break; - from = prev; - } - while (to < line.length) { - var next = findClusterBreak(line.text, to); - if (categorize(line.text.slice(to, next)) != cat) break; - to = next; - } - return EditorSelection.range(from + line.from, to + line.from); - } - __name(groupAt, "groupAt"); - function getdx(x, rect) { - return rect.left > x ? rect.left - x : Math.max(0, x - rect.right); - } - __name(getdx, "getdx"); - function getdy(y, rect) { - return rect.top > y ? rect.top - y : Math.max(0, y - rect.bottom); - } - __name(getdy, "getdy"); - function yOverlap(a, b) { - return a.top < b.bottom - 1 && a.bottom > b.top + 1; - } - __name(yOverlap, "yOverlap"); - function upTop(rect, top2) { - return top2 < rect.top - ? { - top: top2, - left: rect.left, - right: rect.right, - bottom: rect.bottom, - } - : rect; - } - __name(upTop, "upTop"); - function upBot(rect, bottom) { - return bottom > rect.bottom - ? { - top: rect.top, - left: rect.left, - right: rect.right, - bottom, - } - : rect; - } - __name(upBot, "upBot"); - function domPosAtCoords(parent, x, y) { - var closest, - closestRect, - closestX, - closestY, - closestOverlap = false; - var above, below, aboveRect, belowRect; - for (var child = parent.firstChild; child; child = child.nextSibling) { - var rects = clientRectsFor(child); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (closestRect && yOverlap(closestRect, rect)) rect = upTop(upBot(rect, closestRect.bottom), closestRect.top); - var dx = getdx(x, rect), - dy = getdy(y, rect); - if (dx == 0 && dy == 0) return child.nodeType == 3 ? domPosInText(child, x, y) : domPosAtCoords(child, x, y); - if (!closest || closestY > dy || (closestY == dy && closestX > dx)) { - closest = child; - closestRect = rect; - closestX = dx; - closestY = dy; - closestOverlap = !dx || (dx > 0 ? i < rects.length - 1 : i > 0); - } - if (dx == 0) { - if (y > rect.bottom && (!aboveRect || aboveRect.bottom < rect.bottom)) { - above = child; - aboveRect = rect; - } else if (y < rect.top && (!belowRect || belowRect.top > rect.top)) { - below = child; - belowRect = rect; - } - } else if (aboveRect && yOverlap(aboveRect, rect)) { - aboveRect = upBot(aboveRect, rect.bottom); - } else if (belowRect && yOverlap(belowRect, rect)) { - belowRect = upTop(belowRect, rect.top); - } - } - } - if (aboveRect && aboveRect.bottom >= y) { - closest = above; - closestRect = aboveRect; - } else if (belowRect && belowRect.top <= y) { - closest = below; - closestRect = belowRect; - } - if (!closest) - return { - node: parent, - offset: 0, - }; - var clipX = Math.max(closestRect.left, Math.min(closestRect.right, x)); - if (closest.nodeType == 3) return domPosInText(closest, clipX, y); - if (closestOverlap && closest.contentEditable != "false") return domPosAtCoords(closest, clipX, y); - var offset = Array.prototype.indexOf.call(parent.childNodes, closest) + (x >= (closestRect.left + closestRect.right) / 2 ? 1 : 0); - return { - node: parent, - offset, - }; - } - __name(domPosAtCoords, "domPosAtCoords"); - function domPosInText(node, x, y) { - var len = node.nodeValue.length; - var closestOffset = -1, - closestDY = 1e9, - generalSide = 0; - for (var i = 0; i < len; i++) { - var rects = textRange(node, i, i + 1).getClientRects(); - for (var j = 0; j < rects.length; j++) { - var rect = rects[j]; - if (rect.top == rect.bottom) continue; - if (!generalSide) generalSide = x - rect.left; - var dy = (rect.top > y ? rect.top - y : y - rect.bottom) - 1; - if (rect.left - 1 <= x && rect.right + 1 >= x && dy < closestDY) { - var right = x >= (rect.left + rect.right) / 2, - after = right; - if (browser.chrome || browser.gecko) { - var rectBefore = textRange(node, i).getBoundingClientRect(); - if (rectBefore.left == rect.right) after = !right; - } - if (dy <= 0) - return { - node, - offset: i + (after ? 1 : 0), - }; - closestOffset = i + (after ? 1 : 0); - closestDY = dy; - } - } - } - return { - node, - offset: closestOffset > -1 ? closestOffset : generalSide > 0 ? node.nodeValue.length : 0, - }; - } - __name(domPosInText, "domPosInText"); - function posAtCoords(view, param, precise) { - var x = param.x, - y = param.y, - bias = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1; - var _a2; - var content2 = view.contentDOM.getBoundingClientRect(), - docTop = content2.top + view.viewState.paddingTop; - var block, - docHeight = view.viewState.docHeight; - var yOffset = y - docTop; - if (yOffset < 0) return 0; - if (yOffset > docHeight) return view.state.doc.length; - for (var halfLine = view.defaultLineHeight / 2, bounced = false; ; ) { - block = view.elementAtHeight(yOffset); - if (block.type == BlockType.Text) break; - for (;;) { - yOffset = bias > 0 ? block.bottom + halfLine : block.top - halfLine; - if (yOffset >= 0 && yOffset <= docHeight) break; - if (bounced) return precise ? null : 0; - bounced = true; - bias = -bias; - } - } - y = docTop + yOffset; - var lineStart = block.from; - if (lineStart < view.viewport.from) return view.viewport.from == 0 ? 0 : precise ? null : posAtCoordsImprecise(view, content2, block, x, y); - if (lineStart > view.viewport.to) return view.viewport.to == view.state.doc.length ? view.state.doc.length : precise ? null : posAtCoordsImprecise(view, content2, block, x, y); - var doc2 = view.dom.ownerDocument; - var root = view.root.elementFromPoint ? view.root : doc2; - var element2 = root.elementFromPoint(x, y); - if (element2 && !view.contentDOM.contains(element2)) element2 = null; - if (!element2) { - x = Math.max(content2.left + 1, Math.min(content2.right - 1, x)); - element2 = root.elementFromPoint(x, y); - if (element2 && !view.contentDOM.contains(element2)) element2 = null; - } - var node, - offset = -1; - if (element2 && ((_a2 = view.docView.nearest(element2)) === null || _a2 === void 0 ? void 0 : _a2.isEditable) != false) { - if (doc2.caretPositionFromPoint) { - var pos = doc2.caretPositionFromPoint(x, y); + h(Po, "DecorationComparator$1"); + function jv(r, e, t) { + var i = new Po(); + return pe.compare(r, e, t, i), i.changes; + } + h(jv, "findChangedDeco"); + function Hv(r, e) { + for (var t = r; t && t != e; t = t.assignedSlot || t.parentNode) if (t.nodeType == 1 && t.contentEditable == "false") return !0; + return !1; + } + h(Hv, "inUneditable"); + function Uv(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; + var i = r.charCategorizer(e), + n = r.doc.lineAt(e), + s = e - n.from; + if (n.length == 0) return z.cursor(e); + s == 0 ? (t = 1) : s == n.length && (t = -1); + var o = s, + u = s; + t < 0 ? (o = Bt(n.text, s, !1)) : (u = Bt(n.text, s)); + var l = i(n.text.slice(o, u)); + for (; o > 0; ) { + var a = Bt(n.text, o, !1); + if (i(n.text.slice(a, o)) != l) break; + o = a; + } + for (; u < n.length; ) { + var a1 = Bt(n.text, u); + if (i(n.text.slice(u, a1)) != l) break; + u = a1; + } + return z.range(o + n.from, u + n.from); + } + h(Uv, "groupAt"); + function Yv(r, e) { + return e.left > r ? e.left - r : Math.max(0, r - e.right); + } + h(Yv, "getdx"); + function Gv(r, e) { + return e.top > r ? e.top - r : Math.max(0, r - e.bottom); + } + h(Gv, "getdy"); + function Ha(r, e) { + return r.top < e.bottom - 1 && r.bottom > e.top + 1; + } + h(Ha, "yOverlap"); + function Z0(r, e) { + return e < r.top ? { top: e, left: r.left, right: r.right, bottom: r.bottom } : r; + } + h(Z0, "upTop"); + function eg(r, e) { + return e > r.bottom ? { top: r.top, left: r.left, right: r.right, bottom: e } : r; + } + h(eg, "upBot"); + function uh(r, e, t) { + var i, + n, + s, + o, + u = !1, + l, + a, + c, + f; + for (var m = r.firstChild; m; m = m.nextSibling) { + var D = Kn(m); + for (var g = 0; g < D.length; g++) { + var b = D[g]; + n && Ha(n, b) && (b = Z0(eg(b, n.bottom), n.top)); + var F = Yv(e, b), + A = Gv(t, b); + if (F == 0 && A == 0) return m.nodeType == 3 ? tg(m, e, t) : uh(m, e, t); + if (!i || o > A || (o == A && s > F)) { + (i = m), (n = b), (s = F), (o = A); + var E = A ? (t < b.top ? -1 : 1) : F ? (e < b.left ? -1 : 1) : 0; + u = !E || (E > 0 ? g < D.length - 1 : g > 0); + } + F == 0 ? (t > b.bottom && (!c || c.bottom < b.bottom) ? ((l = m), (c = b)) : t < b.top && (!f || f.top > b.top) && ((a = m), (f = b))) : c && Ha(c, b) ? (c = eg(c, b.bottom)) : f && Ha(f, b) && (f = Z0(f, b.top)); + } + } + if ((c && c.bottom >= t ? ((i = l), (n = c)) : f && f.top <= t && ((i = a), (n = f)), !i)) return { node: r, offset: 0 }; + var d = Math.max(n.left, Math.min(n.right, e)); + if (i.nodeType == 3) return tg(i, d, t); + if (u && i.contentEditable != "false") return uh(i, d, t); + var p = Array.prototype.indexOf.call(r.childNodes, i) + (e >= (n.left + n.right) / 2 ? 1 : 0); + return { node: r, offset: p }; + } + h(uh, "domPosAtCoords"); + function tg(r, e, t) { + var i = r.nodeValue.length, + n = -1, + s = 1e9, + o = 0; + for (var u = 0; u < i; u++) { + var l = jr(r, u, u + 1).getClientRects(); + for (var a = 0; a < l.length; a++) { + var c = l[a]; + if (c.top == c.bottom) continue; + o || (o = e - c.left); + var f = (c.top > t ? c.top - t : t - c.bottom) - 1; + if (c.left - 1 <= e && c.right + 1 >= e && f < s) { + var d = e >= (c.left + c.right) / 2, + p = d; + if (((U.chrome || U.gecko) && jr(r, u).getBoundingClientRect().left == c.right && (p = !d), f <= 0)) return { node: r, offset: u + (p ? 1 : 0) }; + (n = u + (p ? 1 : 0)), (s = f); + } + } + } + return { node: r, offset: n > -1 ? n : o > 0 ? r.nodeValue.length : 0 }; + } + h(tg, "domPosInText"); + function iD(r, e, t) { + var i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1; + var n; + var s = r.contentDOM.getBoundingClientRect(), + o = s.top + r.viewState.paddingTop, + u, + _r_viewState = r.viewState, + l = _r_viewState.docHeight, + a = e.x, + c = e.y, + f = c - o; + if (f < 0) return 0; + if (f > l) return r.state.doc.length; + for (var A = r.defaultLineHeight / 2, E = !1; (u = r.elementAtHeight(f)), u.type != be.Text; ) + for (; (f = i > 0 ? u.bottom + A : u.top - A), !(f >= 0 && f <= l); ) { + if (E) return t ? null : 0; + (E = !0), (i = -i); + } + c = o + f; + var d = u.from; + if (d < r.viewport.from) return r.viewport.from == 0 ? 0 : t ? null : ig(r, s, u, a, c); + if (d > r.viewport.to) return r.viewport.to == r.state.doc.length ? r.state.doc.length : t ? null : ig(r, s, u, a, c); + var p = r.dom.ownerDocument, + m = r.root.elementFromPoint ? r.root : p, + D = m.elementFromPoint(a, c); + D && !r.contentDOM.contains(D) && (D = null), D || ((a = Math.max(s.left + 1, Math.min(s.right - 1, a))), (D = m.elementFromPoint(a, c)), D && !r.contentDOM.contains(D) && (D = null)); + var g, + b = -1; + if (D && ((n = r.docView.nearest(D)) === null || n === void 0 ? void 0 : n.isEditable) != !1) { + if (p.caretPositionFromPoint) { + var A1 = p.caretPositionFromPoint(a, c); var ref; - if (pos) (ref = pos), (node = ref.offsetNode), (offset = ref.offset), ref; - } else if (doc2.caretRangeFromPoint) { - var range = doc2.caretRangeFromPoint(x, y); - if (range) { - var ref1; - (ref1 = range), (node = ref1.startContainer), (offset = ref1.startOffset), ref1; - if (!view.contentDOM.contains(node) || (browser.safari && isSuspiciousSafariCaretResult(node, offset, x)) || (browser.chrome && isSuspiciousChromeCaretResult(node, offset, x))) node = void 0; - } + A1 && ((ref = A1), (g = ref.offsetNode), (b = ref.offset), ref); + } else if (p.caretRangeFromPoint) { + var A2 = p.caretRangeFromPoint(a, c); + var ref1; + A2 && ((ref1 = A2), (g = ref1.startContainer), (b = ref1.startOffset), ref1, (!r.contentDOM.contains(g) || (U.safari && Kv(g, b, a)) || (U.chrome && Xv(g, b, a))) && (g = void 0)); } } - if (!node || !view.docView.dom.contains(node)) { - var line = LineView.find(view.docView, lineStart); - if (!line) return yOffset > block.top + block.height / 2 ? block.to : block.from; + if (!g || !r.docView.dom.contains(g)) { + var A3 = Ve.find(r.docView, d); + if (!A3) return f > u.top + u.height / 2 ? u.to : u.from; var ref2; - (ref2 = domPosAtCoords(line.dom, x, y)), (node = ref2.node), (offset = ref2.offset), ref2; - } - return view.docView.posFromDOM(node, offset); - } - __name(posAtCoords, "posAtCoords"); - function posAtCoordsImprecise(view, contentRect, block, x, y) { - var into = Math.round((x - contentRect.left) * view.defaultCharacterWidth); - if (view.lineWrapping && block.height > view.defaultLineHeight * 1.5) { - var line = Math.floor((y - block.top) / view.defaultLineHeight); - into += line * view.viewState.heightOracle.lineLength; - } - var content2 = view.state.sliceDoc(block.from, block.to); - return block.from + findColumn(content2, into, view.state.tabSize); - } - __name(posAtCoordsImprecise, "posAtCoordsImprecise"); - function isSuspiciousSafariCaretResult(node, offset, x) { - var len; - if (node.nodeType != 3 || offset != (len = node.nodeValue.length)) return false; - for (var next = node.nextSibling; next; next = next.nextSibling) if (next.nodeType != 1 || next.nodeName != "BR") return false; - return textRange(node, len - 1, len).getBoundingClientRect().left > x; - } - __name(isSuspiciousSafariCaretResult, "isSuspiciousSafariCaretResult"); - function isSuspiciousChromeCaretResult(node, offset, x) { - if (offset != 0) return false; - for (var cur = node; ; ) { - var parent = cur.parentNode; - if (!parent || parent.nodeType != 1 || parent.firstChild != cur) return false; - if (parent.classList.contains("cm-line")) break; - cur = parent; - } - var rect = node.nodeType == 1 ? node.getBoundingClientRect() : textRange(node, 0, Math.max(node.nodeValue.length, 1)).getBoundingClientRect(); - return x - rect.left > 5; - } - __name(isSuspiciousChromeCaretResult, "isSuspiciousChromeCaretResult"); - function moveToLineBoundary(view, start, forward, includeWrap) { - var line = view.state.doc.lineAt(start.head); - var coords = !includeWrap || !view.lineWrapping ? null : view.coordsAtPos(start.assoc < 0 && start.head > line.from ? start.head - 1 : start.head); - if (coords) { - var editorRect = view.dom.getBoundingClientRect(); - var direction = view.textDirectionAt(line.from); - var pos = view.posAtCoords({ - x: forward == (direction == Direction.LTR) ? editorRect.right - 1 : editorRect.left + 1, - y: (coords.top + coords.bottom) / 2, - }); - if (pos != null) return EditorSelection.cursor(pos, forward ? -1 : 1); - } - var lineView = LineView.find(view.docView, start.head); - var end = lineView ? (forward ? lineView.posAtEnd : lineView.posAtStart) : forward ? line.to : line.from; - return EditorSelection.cursor(end, forward ? -1 : 1); - } - __name(moveToLineBoundary, "moveToLineBoundary"); - function moveByChar(view, start, forward, by) { - var line = view.state.doc.lineAt(start.head), - spans = view.bidiSpans(line); - var direction = view.textDirectionAt(line.from); - for (var cur = start, check = null; ; ) { - var next = moveVisually(line, spans, direction, cur, forward), - char = movedOver; - if (!next) { - if (line.number == (forward ? view.state.doc.lines : 1)) return cur; - char = "\n"; - line = view.state.doc.line(line.number + (forward ? 1 : -1)); - spans = view.bidiSpans(line); - next = EditorSelection.cursor(forward ? line.from : line.to); - } - if (!check) { - if (!by) return next; - check = by(char); - } else if (!check(char)) { - return cur; - } - cur = next; - } - } - __name(moveByChar, "moveByChar"); - function byGroup(view, pos, start) { - var categorize = view.state.charCategorizer(pos); - var cat = categorize(start); - return (next) => { - var nextCat = categorize(next); - if (cat == CharCategory.Space) cat = nextCat; - return cat == nextCat; - }; - } - __name(byGroup, "byGroup"); - function moveVertically(view, start, forward, distance) { - var startPos = start.head, - dir = forward ? 1 : -1; - if (startPos == (forward ? view.state.doc.length : 0)) return EditorSelection.cursor(startPos, start.assoc); - var goal = start.goalColumn, - startY; - var rect = view.contentDOM.getBoundingClientRect(); - var startCoords = view.coordsAtPos(startPos), - docTop = view.documentTop; - if (startCoords) { - if (goal == null) goal = startCoords.left - rect.left; - startY = dir < 0 ? startCoords.top : startCoords.bottom; - } else { - var line = view.viewState.lineBlockAt(startPos); - if (goal == null) goal = Math.min(rect.right - rect.left, view.defaultCharacterWidth * (startPos - line.from)); - startY = (dir < 0 ? line.top : line.bottom) + docTop; - } - var resolvedGoal = rect.left + goal; - var dist = distance !== null && distance !== void 0 ? distance : view.defaultLineHeight >> 1; - for (var extra = 0; ; extra += 10) { - var curY = startY + (dist + extra) * dir; - var pos = posAtCoords( - view, - { - x: resolvedGoal, - y: curY, - }, - false, - dir - ); - if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos)) return EditorSelection.cursor(pos, start.assoc, void 0, goal); + (ref2 = uh(A3.dom, a, c)), (g = ref2.node), (b = ref2.offset), ref2; + } + var F = r.docView.nearest(g); + if (!F) return null; + if (F.isWidget) { + var A4 = F.dom.getBoundingClientRect(); + return e.y < A4.top || (e.y <= A4.bottom && e.x <= (A4.left + A4.right) / 2) ? F.posAtStart : F.posAtEnd; + } else return F.localPosFromDOM(g, b) + F.posAtStart; + } + h(iD, "posAtCoords"); + function ig(r, e, t, i, n) { + var s = Math.round((i - e.left) * r.defaultCharacterWidth); + if (r.lineWrapping && t.height > r.defaultLineHeight * 1.5) { + var u = Math.floor((n - t.top) / r.defaultLineHeight); + s += u * r.viewState.heightOracle.lineLength; + } + var o = r.state.sliceDoc(t.from, t.to); + return t.from + N0(o, s, r.state.tabSize); + } + h(ig, "posAtCoordsImprecise"); + function Kv(r, e, t) { + var i; + if (r.nodeType != 3 || e != (i = r.nodeValue.length)) return !1; + for (var n = r.nextSibling; n; n = n.nextSibling) if (n.nodeType != 1 || n.nodeName != "BR") return !1; + return jr(r, i - 1, i).getBoundingClientRect().left > t; + } + h(Kv, "isSuspiciousSafariCaretResult"); + function Xv(r, e, t) { + if (e != 0) return !1; + for (var n = r; ; ) { + var s = n.parentNode; + if (!s || s.nodeType != 1 || s.firstChild != n) return !1; + if (s.classList.contains("cm-line")) break; + n = s; + } + var i = r.nodeType == 1 ? r.getBoundingClientRect() : jr(r, 0, Math.max(r.nodeValue.length, 1)).getBoundingClientRect(); + return t - i.left > 5; + } + h(Xv, "isSuspiciousChromeCaretResult"); + function Qv(r, e, t, i) { + var n = r.state.doc.lineAt(e.head), + s = !i || !r.lineWrapping ? null : r.coordsAtPos(e.assoc < 0 && e.head > n.from ? e.head - 1 : e.head); + if (s) { + var l = r.dom.getBoundingClientRect(), + a = r.textDirectionAt(n.from), + c = r.posAtCoords({ x: t == (a == _e.LTR) ? l.right - 1 : l.left + 1, y: (s.top + s.bottom) / 2 }); + if (c != null) return z.cursor(c, t ? -1 : 1); + } + var o = Ve.find(r.docView, e.head), + u = o ? (t ? o.posAtEnd : o.posAtStart) : t ? n.to : n.from; + return z.cursor(u, t ? -1 : 1); + } + h(Qv, "moveToLineBoundary"); + function rg(r, e, t, i) { + var n = r.state.doc.lineAt(e.head), + s = r.bidiSpans(n), + o = r.textDirectionAt(n.from); + for (var u = e, l = null; ; ) { + var a = Nv(n, s, o, u, t), + c = Zg; + if (!a) { + if (n.number == (t ? r.state.doc.lines : 1)) return u; + (c = "\n"), (n = r.state.doc.line(n.number + (t ? 1 : -1))), (s = r.bidiSpans(n)), (a = z.cursor(t ? n.from : n.to)); + } + if (l) { + if (!l(c)) return u; + } else { + if (!i) return a; + l = i(c); + } + u = a; } } - __name(moveVertically, "moveVertically"); - function skipAtoms(view, oldPos, pos) { - var atoms = view.state.facet(atomicRanges).map((f) => f(view)); + h(rg, "moveByChar"); + function Jv(r, e, t) { + var i = r.state.charCategorizer(e), + n = i(t); + return (s) => { + var o = i(s); + return n == St.Space && (n = o), n == o; + }; + } + h(Jv, "byGroup"); + function Zv(r, e, t, i) { + var n = e.head, + s = t ? 1 : -1; + if (n == (t ? r.state.doc.length : 0)) return z.cursor(n, e.assoc); + var o = e.goalColumn, + u, + l = r.contentDOM.getBoundingClientRect(), + a = r.coordsAtPos(n), + c = r.documentTop; + if (a) o == null && (o = a.left - l.left), (u = s < 0 ? a.top : a.bottom); + else { + var p = r.viewState.lineBlockAt(n); + o == null && (o = Math.min(l.right - l.left, r.defaultCharacterWidth * (n - p.from))), (u = (s < 0 ? p.top : p.bottom) + c); + } + var f = l.left + o, + d = i !== null && i !== void 0 ? i : r.defaultLineHeight >> 1; + for (var p1 = 0; ; p1 += 10) { + var m = u + (d + p1) * s, + D = iD(r, { x: f, y: m }, !1, s); + if (m < l.top || m > l.bottom || (s < 0 ? D < n : D > n)) return z.cursor(D, e.assoc, void 0, o); + } + } + h(Zv, "moveVertically"); + function Ua(r, e, t) { + var i = r.state.facet(Kg).map((n) => n(r)); for (;;) { - var moved = false; + var n = !1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = atoms[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var set = _step.value; - set.between(pos.from - 1, pos.from + 1, (from, to, value) => { - if (pos.from > from && pos.from < to) { - pos = oldPos.head > pos.from ? EditorSelection.cursor(from, 1) : EditorSelection.cursor(to, -1); - moved = true; - } + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + s.between(t.from - 1, t.from + 1, (o, u, l) => { + t.from > o && t.from < u && ((t = e.head > t.from ? z.cursor(o, 1) : z.cursor(u, -1)), (n = !0)); }); } } catch (err) { @@ -14878,41 +11780,36 @@ var __generator = } } } - if (!moved) return pos; + if (!n) return t; } } - __name(skipAtoms, "skipAtoms"); - var InputState = class InputState { - setSelectionOrigin(origin) { - this.lastSelectionOrigin = origin; - this.lastSelectionTime = Date.now(); + h(Ua, "skipAtoms"); + var Lo = class Lo { + setSelectionOrigin(e) { + (this.lastSelectionOrigin = e), (this.lastSelectionTime = Date.now()); } - ensureHandlers(view, plugins) { - var _a2; - var handlers2; + ensureHandlers(e, t) { + var i; + var n; this.customHandlers = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var plugin = _step.value; - if ((handlers2 = (_a2 = plugin.update(view).spec) === null || _a2 === void 0 ? void 0 : _a2.domEventHandlers)) { + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + if ((n = (i = s.update(e).spec) === null || i === void 0 ? void 0 : i.domEventHandlers)) { var _this = this, - _loop = function (type) { - if (_this.registeredEvents.indexOf(type) < 0 && type != "scroll") { - _this.registeredEvents.push(type); - view.contentDOM.addEventListener(type, (event) => { - if (!eventBelongsToEditor(view, event)) return; - if (_this.runCustomHandlers(type, view, event)) event.preventDefault(); - }); - } + _loop = function (o) { + _this.registeredEvents.indexOf(o) < 0 && + o != "scroll" && + (_this.registeredEvents.push(o), + e.contentDOM.addEventListener(o, (u) => { + ng(e, u) && _this.runCustomHandlers(o, e, u) && u.preventDefault(); + })); }; - this.customHandlers.push({ - plugin: plugin.value, - handlers: handlers2, - }); - for (var type in handlers2) _loop(type); + this.customHandlers.push({ plugin: s.value, handlers: n }); + for (var o in n) _loop(o); } } } catch (err) { @@ -14930,21 +11827,20 @@ var __generator = } } } - runCustomHandlers(type, view, event) { + runCustomHandlers(e, t, i) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.customHandlers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var set = _step.value; - var handler = set.handlers[type]; - if (handler) { + var n = _step.value; + var s = n.handlers[e]; + if (s) try { - if (handler.call(set.plugin, event, view) || event.defaultPrevented) return true; - } catch (e) { - logException(view.state, e); + if (s.call(n.plugin, i, t) || i.defaultPrevented) return !0; + } catch (o) { + Ft(t.state, o); } - } } } catch (err) { _didIteratorError = true; @@ -14960,25 +11856,23 @@ var __generator = } } } - return false; + return !1; } - runScrollHandlers(view, event) { - this.lastScrollTop = view.scrollDOM.scrollTop; - this.lastScrollLeft = view.scrollDOM.scrollLeft; + runScrollHandlers(e, t) { + (this.lastScrollTop = e.scrollDOM.scrollTop), (this.lastScrollLeft = e.scrollDOM.scrollLeft); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.customHandlers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var set = _step.value; - var handler = set.handlers.scroll; - if (handler) { + var i = _step.value; + var n = i.handlers.scroll; + if (n) try { - handler.call(set.plugin, event, view); - } catch (e) { - logException(view.state, e); + n.call(i.plugin, t, e); + } catch (s) { + Ft(e.state, s); } - } } } catch (err) { _didIteratorError = true; @@ -14995,348 +11889,230 @@ var __generator = } } } - keydown(view, event) { - this.lastKeyCode = event.keyCode; - this.lastKeyTime = Date.now(); - if (event.keyCode == 9 && Date.now() < this.lastEscPress + 2e3) return true; - if (browser.android && browser.chrome && !event.synthetic && (event.keyCode == 13 || event.keyCode == 8)) { - view.observer.delayAndroidKey(event.key, event.keyCode); - return true; - } - var pending; - if (browser.ios && !event.synthetic && !event.altKey && !event.metaKey && (((pending = PendingKeys.find((key) => key.keyCode == event.keyCode)) && !event.ctrlKey) || (EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey && !event.shiftKey))) { - this.pendingIOSKey = pending || event; - setTimeout(() => this.flushIOSKey(view), 250); - return true; - } - return false; + keydown(e, t) { + if (((this.lastKeyCode = t.keyCode), (this.lastKeyTime = Date.now()), t.keyCode == 9 && Date.now() < this.lastEscPress + 2e3)) return !0; + if (U.android && U.chrome && !t.synthetic && (t.keyCode == 13 || t.keyCode == 8)) return e.observer.delayAndroidKey(t.key, t.keyCode), !0; + var i; + return U.ios && !t.synthetic && !t.altKey && !t.metaKey && (((i = rD.find((n) => n.keyCode == t.keyCode)) && !t.ctrlKey) || (ek.indexOf(t.key) > -1 && t.ctrlKey && !t.shiftKey)) ? ((this.pendingIOSKey = i || t), setTimeout(() => this.flushIOSKey(e), 250), !0) : !1; } - flushIOSKey(view) { - var key = this.pendingIOSKey; - if (!key) return false; - this.pendingIOSKey = void 0; - return dispatchKey(view.contentDOM, key.key, key.keyCode); + flushIOSKey(e) { + var t = this.pendingIOSKey; + return t ? ((this.pendingIOSKey = void 0), Pr(e.contentDOM, t.key, t.keyCode)) : !1; } - ignoreDuringComposition(event) { - if (!/^key/.test(event.type)) return false; - if (this.composing > 0) return true; - if (browser.safari && !browser.ios && Date.now() - this.compositionEndedAt < 100) { - this.compositionEndedAt = 0; - return true; - } - return false; + ignoreDuringComposition(e) { + return /^key/.test(e.type) ? (this.composing > 0 ? !0 : U.safari && !U.ios && Date.now() - this.compositionEndedAt < 100 ? ((this.compositionEndedAt = 0), !0) : !1) : !1; } - mustFlushObserver(event) { - return event.type == "keydown" && event.keyCode != 229; + mustFlushObserver(e) { + return e.type == "keydown" && e.keyCode != 229; } - startMouseSelection(mouseSelection) { - if (this.mouseSelection) this.mouseSelection.destroy(); - this.mouseSelection = mouseSelection; + startMouseSelection(e) { + this.mouseSelection && this.mouseSelection.destroy(), (this.mouseSelection = e); } - update(update2) { - if (this.mouseSelection) this.mouseSelection.update(update2); - if (update2.transactions.length) this.lastKeyCode = this.lastSelectionTime = 0; + update(e) { + this.mouseSelection && this.mouseSelection.update(e), e.transactions.length && (this.lastKeyCode = this.lastSelectionTime = 0); } destroy() { - if (this.mouseSelection) this.mouseSelection.destroy(); + this.mouseSelection && this.mouseSelection.destroy(); } - constructor(view) { + constructor(e) { var _this = this, - _loop = function (type) { - var handler = handlers[type]; - view.contentDOM.addEventListener( - type, - (event) => { - if (eventBelongsToEditor(view, event)) handleEvent(handler, event); + _loop = function (i) { + var n = Pe[i]; + e.contentDOM.addEventListener( + i, + (s) => { + ng(e, s) && t(n, s); }, - handlerOptions[type] - ); - _this.registeredEvents.push(type); + lh[i] + ), + _this.registeredEvents.push(i); }; - this.lastKeyCode = 0; - this.lastKeyTime = 0; - this.lastTouchTime = 0; - this.lastFocusTime = 0; - this.lastScrollTop = 0; - this.lastScrollLeft = 0; - this.chromeScrollHack = -1; - this.pendingIOSKey = void 0; - this.lastSelectionOrigin = null; - this.lastSelectionTime = 0; - this.lastEscPress = 0; - this.lastContextMenu = 0; - this.scrollHandlers = []; - this.registeredEvents = []; - this.customHandlers = []; - this.composing = -1; - this.compositionFirstChange = null; - this.compositionEndedAt = 0; - this.mouseSelection = null; - var handleEvent = /* @__PURE__ */ __name((handler, event) => { - if (this.ignoreDuringComposition(event)) return; - if (event.type == "keydown" && this.keydown(view, event)) return; - if (this.mustFlushObserver(event)) view.observer.forceFlush(); - if (this.runCustomHandlers(event.type, view, event)) event.preventDefault(); - else handler(view, event); + (this.lastKeyCode = 0), + (this.lastKeyTime = 0), + (this.lastTouchTime = 0), + (this.lastFocusTime = 0), + (this.lastScrollTop = 0), + (this.lastScrollLeft = 0), + (this.chromeScrollHack = -1), + (this.pendingIOSKey = void 0), + (this.lastSelectionOrigin = null), + (this.lastSelectionTime = 0), + (this.lastEscPress = 0), + (this.lastContextMenu = 0), + (this.scrollHandlers = []), + (this.registeredEvents = []), + (this.customHandlers = []), + (this.composing = -1), + (this.compositionFirstChange = null), + (this.compositionEndedAt = 0), + (this.mouseSelection = null); + var t = h((i, n) => { + this.ignoreDuringComposition(n) || (n.type == "keydown" && this.keydown(e, n)) || (this.mustFlushObserver(n) && e.observer.forceFlush(), this.runCustomHandlers(n.type, e, n) ? n.preventDefault() : i(e, n)); }, "handleEvent"); - for (var type in handlers) _loop(type); - view.scrollDOM.addEventListener("mousedown", (event) => { - if (event.target == view.scrollDOM) handleEvent(handlers.mousedown, event); - }); - if (browser.chrome && browser.chrome_version == 102) { - view.scrollDOM.addEventListener( - "wheel", - () => { - if (this.chromeScrollHack < 0) view.contentDOM.style.pointerEvents = "none"; - else window.clearTimeout(this.chromeScrollHack); - this.chromeScrollHack = setTimeout(() => { - this.chromeScrollHack = -1; - view.contentDOM.style.pointerEvents = ""; - }, 100); - }, - { - passive: true, - } - ); - } - this.notifiedFocused = view.hasFocus; - if (browser.safari) view.contentDOM.addEventListener("input", () => null); + for (var i in Pe) _loop(i); + e.scrollDOM.addEventListener("mousedown", (i) => { + i.target == e.scrollDOM && i.clientY > e.contentDOM.getBoundingClientRect().bottom && t(Pe.mousedown, i); + }), + U.chrome && + U.chrome_version == 102 && + e.scrollDOM.addEventListener( + "wheel", + () => { + this.chromeScrollHack < 0 ? (e.contentDOM.style.pointerEvents = "none") : window.clearTimeout(this.chromeScrollHack), + (this.chromeScrollHack = setTimeout(() => { + (this.chromeScrollHack = -1), (e.contentDOM.style.pointerEvents = ""); + }, 100)); + }, + { passive: !0 } + ), + (this.notifiedFocused = e.hasFocus), + U.safari && e.contentDOM.addEventListener("input", () => null); } }; - __name(InputState, "InputState"); - var PendingKeys = [ - { - key: "Backspace", - keyCode: 8, - inputType: "deleteContentBackward", - }, - { - key: "Enter", - keyCode: 13, - inputType: "insertParagraph", - }, - { - key: "Delete", - keyCode: 46, - inputType: "deleteContentForward", - }, - ]; - var EmacsyPendingKeys = "dthko"; - var modifierCodes = [16, 17, 18, 20, 91, 92, 224, 225]; - function dragScrollSpeed(dist) { - return dist * 0.7 + 8; - } - __name(dragScrollSpeed, "dragScrollSpeed"); - var MouseSelection = class MouseSelection { - move(event) { - var _a2; - if (event.buttons == 0) return this.destroy(); - if (this.dragging !== false) return; - this.select((this.lastEvent = event)); - var sx = 0, - sy = 0; - var rect = ((_a2 = this.scrollParent) === null || _a2 === void 0 ? void 0 : _a2.getBoundingClientRect()) || { - left: 0, - top: 0, - right: this.view.win.innerWidth, - bottom: this.view.win.innerHeight, - }; - if (event.clientX <= rect.left) sx = -dragScrollSpeed(rect.left - event.clientX); - else if (event.clientX >= rect.right) sx = dragScrollSpeed(event.clientX - rect.right); - if (event.clientY <= rect.top) sy = -dragScrollSpeed(rect.top - event.clientY); - else if (event.clientY >= rect.bottom) sy = dragScrollSpeed(event.clientY - rect.bottom); - this.setScrollSpeed(sx, sy); + h(Lo, "InputState"); + var rD = [ + { key: "Backspace", keyCode: 8, inputType: "deleteContentBackward" }, + { key: "Enter", keyCode: 13, inputType: "insertParagraph" }, + { key: "Delete", keyCode: 46, inputType: "deleteContentForward" }, + ], + ek = "dthko", + nD = [16, 17, 18, 20, 91, 92, 224, 225]; + function xo(r) { + return r * 0.7 + 8; + } + h(xo, "dragScrollSpeed"); + var qo = class qo { + start(e) { + this.dragging === !1 && (e.preventDefault(), this.select(e)); + } + move(e) { + var t; + if (e.buttons == 0) return this.destroy(); + if (this.dragging !== !1) return; + this.select((this.lastEvent = e)); + var i = 0, + n = 0, + s = ((t = this.scrollParent) === null || t === void 0 ? void 0 : t.getBoundingClientRect()) || { left: 0, top: 0, right: this.view.win.innerWidth, bottom: this.view.win.innerHeight }; + e.clientX <= s.left ? (i = -xo(s.left - e.clientX)) : e.clientX >= s.right && (i = xo(e.clientX - s.right)), e.clientY <= s.top ? (n = -xo(s.top - e.clientY)) : e.clientY >= s.bottom && (n = xo(e.clientY - s.bottom)), this.setScrollSpeed(i, n); } - up(event) { - if (this.dragging == null) this.select(this.lastEvent); - if (!this.dragging) event.preventDefault(); - this.destroy(); + up(e) { + this.dragging == null && this.select(this.lastEvent), this.dragging || e.preventDefault(), this.destroy(); } destroy() { this.setScrollSpeed(0, 0); - var doc2 = this.view.contentDOM.ownerDocument; - doc2.removeEventListener("mousemove", this.move); - doc2.removeEventListener("mouseup", this.up); - this.view.inputState.mouseSelection = null; - } - setScrollSpeed(sx, sy) { - this.scrollSpeed = { - x: sx, - y: sy, - }; - if (sx || sy) { - if (this.scrolling < 0) this.scrolling = setInterval(() => this.scroll(), 50); - } else if (this.scrolling > -1) { - clearInterval(this.scrolling); - this.scrolling = -1; - } + var e = this.view.contentDOM.ownerDocument; + e.removeEventListener("mousemove", this.move), e.removeEventListener("mouseup", this.up), (this.view.inputState.mouseSelection = null); + } + setScrollSpeed(e, t) { + (this.scrollSpeed = { x: e, y: t }), e || t ? this.scrolling < 0 && (this.scrolling = setInterval(() => this.scroll(), 50)) : this.scrolling > -1 && (clearInterval(this.scrolling), (this.scrolling = -1)); } scroll() { - if (this.scrollParent) { - this.scrollParent.scrollLeft += this.scrollSpeed.x; - this.scrollParent.scrollTop += this.scrollSpeed.y; - } else { - this.view.win.scrollBy(this.scrollSpeed.x, this.scrollSpeed.y); - } - if (this.dragging === false) this.select(this.lastEvent); + this.scrollParent ? ((this.scrollParent.scrollLeft += this.scrollSpeed.x), (this.scrollParent.scrollTop += this.scrollSpeed.y)) : this.view.win.scrollBy(this.scrollSpeed.x, this.scrollSpeed.y), this.dragging === !1 && this.select(this.lastEvent); } - select(event) { - var selection = this.style.get(event, this.extend, this.multiple); - if (this.mustSelect || !selection.eq(this.view.state.selection) || selection.main.assoc != this.view.state.selection.main.assoc) - this.view.dispatch({ - selection, - userEvent: "select.pointer", - }); - this.mustSelect = false; - } - update(update2) { - if (update2.docChanged && this.dragging) this.dragging = this.dragging.map(update2.changes); - if (this.style.update(update2)) setTimeout(() => this.select(this.lastEvent), 20); - } - constructor(view, startEvent, style, mustSelect) { - this.view = view; - this.style = style; - this.mustSelect = mustSelect; - this.scrollSpeed = { - x: 0, - y: 0, - }; - this.scrolling = -1; - this.lastEvent = startEvent; - this.scrollParent = scrollableParent(view.contentDOM); - var doc2 = view.contentDOM.ownerDocument; - doc2.addEventListener("mousemove", (this.move = this.move.bind(this))); - doc2.addEventListener("mouseup", (this.up = this.up.bind(this))); - this.extend = startEvent.shiftKey; - this.multiple = view.state.facet(EditorState.allowMultipleSelections) && addsSelectionRange(view, startEvent); - this.dragMove = dragMovesSelection(view, startEvent); - this.dragging = isInPrimarySelection(view, startEvent) && getClickType(startEvent) == 1 ? null : false; - if (this.dragging === false) { - startEvent.preventDefault(); - this.select(startEvent); - } + select(e) { + var t = this.style.get(e, this.extend, this.multiple); + (this.mustSelect || !t.eq(this.view.state.selection) || t.main.assoc != this.view.state.selection.main.assoc) && this.view.dispatch({ selection: t, userEvent: "select.pointer" }), (this.mustSelect = !1); } - }; - __name(MouseSelection, "MouseSelection"); - function addsSelectionRange(view, event) { - var facet = view.state.facet(clickAddsSelectionRange); - return facet.length ? facet[0](event) : browser.mac ? event.metaKey : event.ctrlKey; - } - __name(addsSelectionRange, "addsSelectionRange"); - function dragMovesSelection(view, event) { - var facet = view.state.facet(dragMovesSelection$1); - return facet.length ? facet[0](event) : browser.mac ? !event.altKey : !event.ctrlKey; - } - __name(dragMovesSelection, "dragMovesSelection"); - function isInPrimarySelection(view, event) { - var main = view.state.selection.main; - if (main.empty) return false; - var sel = getSelection(view.root); - if (!sel || sel.rangeCount == 0) return true; - var rects = sel.getRangeAt(0).getClientRects(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (rect.left <= event.clientX && rect.right >= event.clientX && rect.top <= event.clientY && rect.bottom >= event.clientY) return true; - } - return false; - } - __name(isInPrimarySelection, "isInPrimarySelection"); - function eventBelongsToEditor(view, event) { - if (!event.bubbles) return true; - if (event.defaultPrevented) return false; - for (var node = event.target, cView; node != view.contentDOM; node = node.parentNode) if (!node || node.nodeType == 11 || ((cView = ContentView.get(node)) && cView.ignoreEvent(event))) return false; - return true; - } - __name(eventBelongsToEditor, "eventBelongsToEditor"); - var handlers = /* @__PURE__ */ Object.create(null); - var handlerOptions = /* @__PURE__ */ Object.create(null); - var brokenClipboardAPI = (browser.ie && browser.ie_version < 15) || (browser.ios && browser.webkit_version < 604); - function capturePaste(view) { - var parent = view.dom.parentNode; - if (!parent) return; - var target = parent.appendChild(document.createElement("textarea")); - target.style.cssText = "position: fixed; left: -10000px; top: 10px"; - target.focus(); - setTimeout(() => { - view.focus(); - target.remove(); - doPaste(view, target.value); - }, 50); - } - __name(capturePaste, "capturePaste"); - function doPaste(view, input) { - var state = view.state, - changes, - i = 1, - text2 = state.toText(input); - var byLine = text2.lines == state.selection.ranges.length; - var linewise = lastLinewiseCopy != null && state.selection.ranges.every((r) => r.empty) && lastLinewiseCopy == text2.toString(); - if (linewise) { - var lastLine = -1; - changes = state.changeByRange((range) => { - var line = state.doc.lineAt(range.from); - if (line.from == lastLine) - return { - range, - }; - lastLine = line.from; - var insert3 = state.toText((byLine ? text2.line(i++).text : input) + state.lineBreak); - return { - changes: { - from: line.from, - insert: insert3, - }, - range: EditorSelection.cursor(range.from + insert3.length), - }; - }); - } else if (byLine) { - changes = state.changeByRange((range) => { - var line = text2.line(i++); - return { - changes: { - from: range.from, - to: range.to, - insert: line.text, - }, - range: EditorSelection.cursor(range.from + line.length), - }; - }); - } else { - changes = state.replaceSelection(text2); + update(e) { + e.docChanged && this.dragging && (this.dragging = this.dragging.map(e.changes)), this.style.update(e) && setTimeout(() => this.select(this.lastEvent), 20); + } + constructor(e, t, i, n) { + (this.view = e), (this.style = i), (this.mustSelect = n), (this.scrollSpeed = { x: 0, y: 0 }), (this.scrolling = -1), (this.lastEvent = t), (this.scrollParent = wv(e.contentDOM)); + var s = e.contentDOM.ownerDocument; + s.addEventListener("mousemove", (this.move = this.move.bind(this))), s.addEventListener("mouseup", (this.up = this.up.bind(this))), (this.extend = t.shiftKey), (this.multiple = e.state.facet(ae.allowMultipleSelections) && tk(e, t)), (this.dragMove = ik(e, t)), (this.dragging = rk(e, t) && lD(t) == 1 ? null : !1); } - view.dispatch(changes, { - userEvent: "input.paste", - scrollIntoView: true, - }); - } - __name(doPaste, "doPaste"); - handlers.keydown = (view, event) => { - view.inputState.setSelectionOrigin("select"); - if (event.keyCode == 27) view.inputState.lastEscPress = Date.now(); - else if (modifierCodes.indexOf(event.keyCode) < 0) view.inputState.lastEscPress = 0; }; - handlers.touchstart = (view, e) => { - view.inputState.lastTouchTime = Date.now(); - view.inputState.setSelectionOrigin("select.pointer"); + h(qo, "MouseSelection"); + function tk(r, e) { + var t = r.state.facet(Ng); + return t.length ? t[0](e) : U.mac ? e.metaKey : e.ctrlKey; + } + h(tk, "addsSelectionRange"); + function ik(r, e) { + var t = r.state.facet(Vg); + return t.length ? t[0](e) : U.mac ? !e.altKey : !e.ctrlKey; + } + h(ik, "dragMovesSelection"); + function rk(r, e) { + var _r_state_selection = r.state.selection, + t = _r_state_selection.main; + if (t.empty) return !1; + var i = eu(r.root); + if (!i || i.rangeCount == 0) return !0; + var n = i.getRangeAt(0).getClientRects(); + for (var s = 0; s < n.length; s++) { + var o = n[s]; + if (o.left <= e.clientX && o.right >= e.clientX && o.top <= e.clientY && o.bottom >= e.clientY) return !0; + } + return !1; + } + h(rk, "isInPrimarySelection"); + function ng(r, e) { + if (!e.bubbles) return !0; + if (e.defaultPrevented) return !1; + for (var t = e.target, i; t != r.contentDOM; t = t.parentNode) if (!t || t.nodeType == 11 || ((i = De.get(t)) && i.ignoreEvent(e))) return !1; + return !0; + } + h(ng, "eventBelongsToEditor"); + var Pe = Object.create(null), + lh = Object.create(null), + sD = (U.ie && U.ie_version < 15) || (U.ios && U.webkit_version < 604); + function nk(r) { + var e = r.dom.parentNode; + if (!e) return; + var t = e.appendChild(document.createElement("textarea")); + (t.style.cssText = "position: fixed; left: -10000px; top: 10px"), + t.focus(), + setTimeout(() => { + r.focus(), t.remove(), oD(r, t.value); + }, 50); + } + h(nk, "capturePaste"); + function oD(r, e) { + var t = r.state, + i, + n = 1, + s = t.toText(e), + o = s.lines == t.selection.ranges.length; + if (ah != null && t.selection.ranges.every((l) => l.empty) && ah == s.toString()) { + var l = -1; + i = t.changeByRange((a) => { + var c = t.doc.lineAt(a.from); + if (c.from == l) return { range: a }; + l = c.from; + var f = t.toText((o ? s.line(n++).text : e) + t.lineBreak); + return { changes: { from: c.from, insert: f }, range: z.cursor(a.from + f.length) }; + }); + } else + o + ? (i = t.changeByRange((l) => { + var a = s.line(n++); + return { changes: { from: l.from, to: l.to, insert: a.text }, range: z.cursor(l.from + a.length) }; + })) + : (i = t.replaceSelection(s)); + r.dispatch(i, { userEvent: "input.paste", scrollIntoView: !0 }); + } + h(oD, "doPaste"); + Pe.keydown = (r, e) => { + r.inputState.setSelectionOrigin("select"), e.keyCode == 27 ? (r.inputState.lastEscPress = Date.now()) : nD.indexOf(e.keyCode) < 0 && (r.inputState.lastEscPress = 0); }; - handlers.touchmove = (view) => { - view.inputState.setSelectionOrigin("select.pointer"); + Pe.touchstart = (r, e) => { + (r.inputState.lastTouchTime = Date.now()), r.inputState.setSelectionOrigin("select.pointer"); }; - handlerOptions.touchstart = handlerOptions.touchmove = { - passive: true, + Pe.touchmove = (r) => { + r.inputState.setSelectionOrigin("select.pointer"); }; - handlers.mousedown = (view, event) => { - view.observer.flush(); - if (view.inputState.lastTouchTime > Date.now() - 2e3) return; - var style = null; + lh.touchstart = lh.touchmove = { passive: !0 }; + Pe.mousedown = (r, e) => { + if ((r.observer.flush(), r.inputState.lastTouchTime > Date.now() - 2e3)) return; + var t = null; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = view.state.facet(mouseSelectionStyle)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var makeStyle = _step.value; - style = makeStyle(view, event); - if (style) break; + for (var _iterator = r.state.facet(zg)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + if (((t = i(r, e)), t)) break; } } catch (err) { _didIteratorError = true; @@ -15352,213 +12128,152 @@ var __generator = } } } - if (!style && event.button == 0) style = basicMouseSelection(view, event); - if (style) { - var mustFocus = view.root.activeElement != view.contentDOM; - if (mustFocus) view.observer.ignore(() => focusPreventScroll(view.contentDOM)); - view.inputState.startMouseSelection(new MouseSelection(view, event, style, mustFocus)); + if ((!t && e.button == 0 && (t = uk(r, e)), t)) { + var i1 = r.root.activeElement != r.contentDOM; + r.inputState.startMouseSelection(new qo(r, e, t, i1)), i1 && r.observer.ignore(() => Bg(r.contentDOM)), r.inputState.mouseSelection && r.inputState.mouseSelection.start(e); } }; - function rangeForClick(view, pos, bias, type) { - if (type == 1) { - return EditorSelection.cursor(pos, bias); - } else if (type == 2) { - return groupAt(view.state, pos, bias); - } else { - var visual = LineView.find(view.docView, pos), - line = view.state.doc.lineAt(visual ? visual.posAtEnd : pos); - var from = visual ? visual.posAtStart : line.from, - to = visual ? visual.posAtEnd : line.to; - if (to < view.state.doc.length && to == line.to) to++; - return EditorSelection.range(from, to); - } - } - __name(rangeForClick, "rangeForClick"); - var insideY = /* @__PURE__ */ __name((y, rect) => y >= rect.top && y <= rect.bottom, "insideY"); - var inside = /* @__PURE__ */ __name((x, y, rect) => insideY(y, rect) && x >= rect.left && x <= rect.right, "inside"); - function findPositionSide(view, pos, x, y) { - var line = LineView.find(view.docView, pos); - if (!line) return 1; - var off = pos - line.posAtStart; - if (off == 0) return 1; - if (off == line.length) return -1; - var before = line.coordsAt(off, -1); - if (before && inside(x, y, before)) return -1; - var after = line.coordsAt(off, 1); - if (after && inside(x, y, after)) return 1; - return before && insideY(y, before) ? -1 : 1; - } - __name(findPositionSide, "findPositionSide"); - function queryPos(view, event) { - var pos = view.posAtCoords( - { - x: event.clientX, - y: event.clientY, - }, - false - ); - return { - pos, - bias: findPositionSide(view, pos, event.clientX, event.clientY), - }; - } - __name(queryPos, "queryPos"); - var BadMouseDetail = browser.ie && browser.ie_version <= 11; - var lastMouseDown = null; - var lastMouseDownCount = 0; - var lastMouseDownTime = 0; - function getClickType(event) { - if (!BadMouseDetail) return event.detail; - var last = lastMouseDown, - lastTime = lastMouseDownTime; - lastMouseDown = event; - lastMouseDownTime = Date.now(); - return (lastMouseDownCount = !last || (lastTime > Date.now() - 400 && Math.abs(last.clientX - event.clientX) < 2 && Math.abs(last.clientY - event.clientY) < 2) ? (lastMouseDownCount + 1) % 3 : 1); - } - __name(getClickType, "getClickType"); - function basicMouseSelection(view, event) { - var start = queryPos(view, event), - type = getClickType(event); - var startSel = view.state.selection; + function sg(r, e, t, i) { + if (i == 1) return z.cursor(e, t); + if (i == 2) return Uv(r.state, e, t); + { + var n = Ve.find(r.docView, e), + s = r.state.doc.lineAt(n ? n.posAtEnd : e), + o = n ? n.posAtStart : s.from, + u = n ? n.posAtEnd : s.to; + return u < r.state.doc.length && u == s.to && u++, z.range(o, u); + } + } + h(sg, "rangeForClick"); + var uD = h((r, e) => r >= e.top && r <= e.bottom, "insideY"), + og = h((r, e, t) => uD(e, t) && r >= t.left && r <= t.right, "inside"); + function sk(r, e, t, i) { + var n = Ve.find(r.docView, e); + if (!n) return 1; + var s = e - n.posAtStart; + if (s == 0) return 1; + if (s == n.length) return -1; + var o = n.coordsAt(s, -1); + if (o && og(t, i, o)) return -1; + var u = n.coordsAt(s, 1); + return u && og(t, i, u) ? 1 : o && uD(i, o) ? -1 : 1; + } + h(sk, "findPositionSide"); + function ug(r, e) { + var t = r.posAtCoords({ x: e.clientX, y: e.clientY }, !1); + return { pos: t, bias: sk(r, t, e.clientX, e.clientY) }; + } + h(ug, "queryPos"); + var ok = U.ie && U.ie_version <= 11, + lg = null, + ag = 0, + hg = 0; + function lD(r) { + if (!ok) return r.detail; + var e = lg, + t = hg; + return (lg = r), (hg = Date.now()), (ag = !e || (t > Date.now() - 400 && Math.abs(e.clientX - r.clientX) < 2 && Math.abs(e.clientY - r.clientY) < 2) ? (ag + 1) % 3 : 1); + } + h(lD, "getClickType"); + function uk(r, e) { + var t = ug(r, e), + i = lD(e), + n = r.state.selection; return { - update(update2) { - if (update2.docChanged) { - start.pos = update2.changes.mapPos(start.pos); - startSel = startSel.map(update2.changes); - } + update(s) { + s.docChanged && ((t.pos = s.changes.mapPos(t.pos)), (n = n.map(s.changes))); }, - get(event2, extend2, multiple) { - var cur = queryPos(view, event2); - var range = rangeForClick(view, cur.pos, cur.bias, type); - if (start.pos != cur.pos && !extend2) { - var startRange = rangeForClick(view, start.pos, start.bias, type); - var from = Math.min(startRange.from, range.from), - to = Math.max(startRange.to, range.to); - range = from < range.from ? EditorSelection.range(from, to) : EditorSelection.range(to, from); - } - if (extend2) return startSel.replaceRange(startSel.main.extend(range.from, range.to)); - else if (multiple && startSel.ranges.length > 1 && startSel.ranges.some((r) => r.eq(range))) return removeRange(startSel, range); - else if (multiple) return startSel.addRange(range); - else return EditorSelection.create([range]); + get(s, o, u) { + var l = ug(r, s), + a = sg(r, l.pos, l.bias, i); + if (t.pos != l.pos && !o) { + var c = sg(r, t.pos, t.bias, i), + f = Math.min(c.from, a.from), + d = Math.max(c.to, a.to); + a = f < a.from ? z.range(f, d) : z.range(d, f); + } + return o ? n.replaceRange(n.main.extend(a.from, a.to)) : u && n.ranges.length > 1 && n.ranges.some((c) => c.eq(a)) ? lk(n, a) : u ? n.addRange(a) : z.create([a]); }, }; } - __name(basicMouseSelection, "basicMouseSelection"); - function removeRange(sel, range) { - for (var i = 0; ; i++) { - if (sel.ranges[i].eq(range)) return EditorSelection.create(sel.ranges.slice(0, i).concat(sel.ranges.slice(i + 1)), sel.mainIndex == i ? 0 : sel.mainIndex - (sel.mainIndex > i ? 1 : 0)); - } - } - __name(removeRange, "removeRange"); - handlers.dragstart = (view, event) => { - var _view_state = view.state, - main = _view_state.selection.main; - var mouseSelection = view.inputState.mouseSelection; - if (mouseSelection) mouseSelection.dragging = main; - if (event.dataTransfer) { - event.dataTransfer.setData("Text", view.state.sliceDoc(main.from, main.to)); - event.dataTransfer.effectAllowed = "copyMove"; - } + h(uk, "basicMouseSelection"); + function lk(r, e) { + for (var t = 0; ; t++) if (r.ranges[t].eq(e)) return z.create(r.ranges.slice(0, t).concat(r.ranges.slice(t + 1)), r.mainIndex == t ? 0 : r.mainIndex - (r.mainIndex > t ? 1 : 0)); + } + h(lk, "removeRange"); + Pe.dragstart = (r, e) => { + var _r_state = r.state, + _r_state_selection = _r_state.selection, + t = _r_state_selection.main, + _r_inputState = r.inputState, + i = _r_inputState.mouseSelection; + i && (i.dragging = t), e.dataTransfer && (e.dataTransfer.setData("Text", r.state.sliceDoc(t.from, t.to)), (e.dataTransfer.effectAllowed = "copyMove")); }; - function dropText(view, event, text2, direct) { - if (!text2) return; - var dropPos = view.posAtCoords( - { - x: event.clientX, - y: event.clientY, - }, - false - ); - event.preventDefault(); - var mouseSelection = view.inputState.mouseSelection; - var del = - direct && mouseSelection && mouseSelection.dragging && mouseSelection.dragMove - ? { - from: mouseSelection.dragging.from, - to: mouseSelection.dragging.to, - } - : null; - var ins = { - from: dropPos, - insert: text2, - }; - var changes = view.state.changes(del ? [del, ins] : ins); - view.focus(); - view.dispatch({ - changes, - selection: { - anchor: changes.mapPos(dropPos, -1), - head: changes.mapPos(dropPos, 1), - }, - userEvent: del ? "move.drop" : "input.drop", - }); - } - __name(dropText, "dropText"); - handlers.drop = (view, event) => { - if (!event.dataTransfer) return; - if (view.state.readOnly) return event.preventDefault(); - var files = event.dataTransfer.files; - if (files && files.length) { - var _loop = function (i) { - var reader = new FileReader(); - reader.onerror = finishFile; - reader.onload = () => { - if (!/[\x00-\x08\x0e-\x1f]{2}/.test(reader.result)) text2[i] = reader.result; - finishFile(); - }; - reader.readAsText(files[i]); + function cg(r, e, t, i) { + if (!t) return; + var n = r.posAtCoords({ x: e.clientX, y: e.clientY }, !1); + e.preventDefault(); + var _r_inputState = r.inputState, + s = _r_inputState.mouseSelection, + o = i && s && s.dragging && s.dragMove ? { from: s.dragging.from, to: s.dragging.to } : null, + u = { from: n, insert: t }, + l = r.state.changes(o ? [o, u] : u); + r.focus(), r.dispatch({ changes: l, selection: { anchor: l.mapPos(n, -1), head: l.mapPos(n, 1) }, userEvent: o ? "move.drop" : "input.drop" }); + } + h(cg, "dropText"); + Pe.drop = (r, e) => { + if (!e.dataTransfer) return; + if (r.state.readOnly) return e.preventDefault(); + var t = e.dataTransfer.files; + if (t && t.length) { + var _loop = function (o) { + var u = new FileReader(); + (u.onerror = s), + (u.onload = () => { + /[\x00-\x08\x0e-\x1f]{2}/.test(u.result) || (i[o] = u.result), s(); + }), + u.readAsText(t[o]); }; - event.preventDefault(); - var text2 = Array(files.length), - read = 0; - var finishFile = /* @__PURE__ */ __name(() => { - if (++read == files.length) dropText(view, event, text2.filter((s) => s != null).join(view.state.lineBreak), false); - }, "finishFile"); - for (var i = 0; i < files.length; i++) _loop(i); - } else { - dropText(view, event, event.dataTransfer.getData("Text"), true); - } + e.preventDefault(); + var i = Array(t.length), + n = 0, + s = h(() => { + ++n == t.length && cg(r, e, i.filter((o) => o != null).join(r.state.lineBreak), !1); + }, "finishFile"); + for (var o = 0; o < t.length; o++) _loop(o); + } else cg(r, e, e.dataTransfer.getData("Text"), !0); }; - handlers.paste = (view, event) => { - if (view.state.readOnly) return event.preventDefault(); - view.observer.flush(); - var data = brokenClipboardAPI ? null : event.clipboardData; - if (data) { - doPaste(view, data.getData("text/plain")); - event.preventDefault(); - } else { - capturePaste(view); - } + Pe.paste = (r, e) => { + if (r.state.readOnly) return e.preventDefault(); + r.observer.flush(); + var t = sD ? null : e.clipboardData; + t ? (oD(r, t.getData("text/plain")), e.preventDefault()) : nk(r); }; - function captureCopy(view, text2) { - var parent = view.dom.parentNode; - if (!parent) return; - var target = parent.appendChild(document.createElement("textarea")); - target.style.cssText = "position: fixed; left: -10000px; top: 10px"; - target.value = text2; - target.focus(); - target.selectionEnd = text2.length; - target.selectionStart = 0; - setTimeout(() => { - target.remove(); - view.focus(); - }, 50); - } - __name(captureCopy, "captureCopy"); - function copiedRange(state) { - var content2 = [], - ranges = [], - linewise = false; + function ak(r, e) { + var t = r.dom.parentNode; + if (!t) return; + var i = t.appendChild(document.createElement("textarea")); + (i.style.cssText = "position: fixed; left: -10000px; top: 10px"), + (i.value = e), + i.focus(), + (i.selectionEnd = e.length), + (i.selectionStart = 0), + setTimeout(() => { + i.remove(), r.focus(); + }, 50); + } + h(ak, "captureCopy"); + function hk(r) { + var e = [], + t = [], + i = !1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = state.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var range = _step.value; - if (!range.empty) { - content2.push(state.sliceDoc(range.from, range.to)); - ranges.push(range); - } + for (var _iterator = r.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + n.empty || (e.push(r.sliceDoc(n.from, n.to)), t.push(n)); } } catch (err) { _didIteratorError = true; @@ -15574,23 +12289,17 @@ var __generator = } } } - if (!content2.length) { - var upto = -1; + if (!e.length) { + var n1 = -1; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = state.selection.ranges[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var from = _step1.value.from; - var line = state.doc.lineAt(from); - if (line.number > upto) { - content2.push(line.text); - ranges.push({ - from: line.from, - to: Math.min(state.doc.length, line.to + 1), - }); - } - upto = line.number; + for (var _iterator1 = r.selection.ranges[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var _step_value = _step1.value, + s = _step_value.from; + var o = r.doc.lineAt(s); + o.number > n1 && (e.push(o.text), t.push({ from: o.from, to: Math.min(r.doc.length, o.to + 1) })), (n1 = o.number); } } catch (err) { _didIteratorError1 = true; @@ -15606,336 +12315,268 @@ var __generator = } } } - linewise = true; + i = !0; } - return { - text: content2.join(state.lineBreak), - ranges, - linewise, - }; + return { text: e.join(r.lineBreak), ranges: t, linewise: i }; } - __name(copiedRange, "copiedRange"); - var lastLinewiseCopy = null; - handlers.copy = handlers.cut = (view, event) => { - var _copiedRange = copiedRange(view.state), - text2 = _copiedRange.text, - ranges = _copiedRange.ranges, - linewise = _copiedRange.linewise; - if (!text2 && !linewise) return; - lastLinewiseCopy = linewise ? text2 : null; - var data = brokenClipboardAPI ? null : event.clipboardData; - if (data) { - event.preventDefault(); - data.clearData(); - data.setData("text/plain", text2); - } else { - captureCopy(view, text2); - } - if (event.type == "cut" && !view.state.readOnly) - view.dispatch({ - changes: ranges, - scrollIntoView: true, - userEvent: "delete.cut", - }); + h(hk, "copiedRange"); + var ah = null; + Pe.copy = Pe.cut = (r, e) => { + var _hk = hk(r.state), + t = _hk.text, + i = _hk.ranges, + n = _hk.linewise; + if (!t && !n) return; + ah = n ? t : null; + var s = sD ? null : e.clipboardData; + s ? (e.preventDefault(), s.clearData(), s.setData("text/plain", t)) : ak(r, t), e.type == "cut" && !r.state.readOnly && r.dispatch({ changes: i, scrollIntoView: !0, userEvent: "delete.cut" }); }; - function updateForFocusChange(view) { + var aD = ut.define(); + function hD(r, e) { + var t = []; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = r.facet(Hg)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + var n = i(r, e); + n && t.push(n); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + return t ? r.update({ effects: t, annotations: aD.of(!0) }) : null; + } + h(hD, "focusChangeTransaction"); + function cD(r) { setTimeout(() => { - if (view.hasFocus != view.inputState.notifiedFocused) view.update([]); + var e = r.hasFocus; + if (e != r.inputState.notifiedFocused) { + var t = hD(r.state, e); + t ? r.dispatch(t) : r.update([]); + } }, 10); } - __name(updateForFocusChange, "updateForFocusChange"); - handlers.focus = (view) => { - view.inputState.lastFocusTime = Date.now(); - if (!view.scrollDOM.scrollTop && (view.inputState.lastScrollTop || view.inputState.lastScrollLeft)) { - view.scrollDOM.scrollTop = view.inputState.lastScrollTop; - view.scrollDOM.scrollLeft = view.inputState.lastScrollLeft; - } - updateForFocusChange(view); - }; - handlers.blur = (view) => { - view.observer.clearSelectionRange(); - updateForFocusChange(view); + h(cD, "updateForFocusChange"); + Pe.focus = (r) => { + (r.inputState.lastFocusTime = Date.now()), !r.scrollDOM.scrollTop && (r.inputState.lastScrollTop || r.inputState.lastScrollLeft) && ((r.scrollDOM.scrollTop = r.inputState.lastScrollTop), (r.scrollDOM.scrollLeft = r.inputState.lastScrollLeft)), cD(r); }; - handlers.compositionstart = handlers.compositionupdate = (view) => { - if (view.inputState.compositionFirstChange == null) view.inputState.compositionFirstChange = true; - if (view.inputState.composing < 0) { - view.inputState.composing = 0; - } + Pe.blur = (r) => { + r.observer.clearSelectionRange(), cD(r); }; - handlers.compositionend = (view) => { - view.inputState.composing = -1; - view.inputState.compositionEndedAt = Date.now(); - view.inputState.compositionFirstChange = null; - if (browser.chrome && browser.android) view.observer.flushSoon(); - setTimeout(() => { - if (view.inputState.composing < 0 && view.docView.compositionDeco.size) view.update([]); - }, 50); + Pe.compositionstart = Pe.compositionupdate = (r) => { + r.inputState.compositionFirstChange == null && (r.inputState.compositionFirstChange = !0), r.inputState.composing < 0 && (r.inputState.composing = 0); }; - handlers.contextmenu = (view) => { - view.inputState.lastContextMenu = Date.now(); + Pe.compositionend = (r) => { + (r.inputState.composing = -1), + (r.inputState.compositionEndedAt = Date.now()), + (r.inputState.compositionFirstChange = null), + U.chrome && U.android && r.observer.flushSoon(), + setTimeout(() => { + r.inputState.composing < 0 && r.docView.compositionDeco.size && r.update([]); + }, 50); }; - handlers.beforeinput = (view, event) => { - var _a2; - var pending; - if (browser.chrome && browser.android && (pending = PendingKeys.find((key) => key.inputType == event.inputType))) { - view.observer.delayAndroidKey(pending.key, pending.keyCode); - if (pending.key == "Backspace" || pending.key == "Delete") { - var startViewHeight = ((_a2 = window.visualViewport) === null || _a2 === void 0 ? void 0 : _a2.height) || 0; - setTimeout(() => { - var _a3; - if ((((_a3 = window.visualViewport) === null || _a3 === void 0 ? void 0 : _a3.height) || 0) > startViewHeight + 10 && view.hasFocus) { - view.contentDOM.blur(); - view.focus(); - } - }, 100); - } - } + Pe.contextmenu = (r) => { + r.inputState.lastContextMenu = Date.now(); }; - var wrappingWhiteSpace = ["pre-wrap", "normal", "pre-line", "break-spaces"]; - var HeightOracle = class HeightOracle { - heightForGap(from, to) { - var lines = this.doc.lineAt(to).number - this.doc.lineAt(from).number + 1; - if (this.lineWrapping) lines += Math.ceil((to - from - lines * this.lineLength * 0.5) / this.lineLength); - return this.lineHeight * lines; - } - heightForLine(length) { - if (!this.lineWrapping) return this.lineHeight; - var lines = 1 + Math.max(0, Math.ceil((length - this.lineLength) / (this.lineLength - 5))); - return lines * this.lineHeight; - } - setDoc(doc2) { - this.doc = doc2; - return this; - } - mustRefreshForWrapping(whiteSpace) { - return wrappingWhiteSpace.indexOf(whiteSpace) > -1 != this.lineWrapping; - } - mustRefreshForHeights(lineHeights) { - var newHeight = false; - for (var i = 0; i < lineHeights.length; i++) { - var h = lineHeights[i]; - if (h < 0) { - i++; - } else if (!this.heightSamples[Math.floor(h * 10)]) { - newHeight = true; - this.heightSamples[Math.floor(h * 10)] = true; - } - } - return newHeight; - } - refresh(whiteSpace, lineHeight, charWidth, lineLength, knownHeights) { - var lineWrapping = wrappingWhiteSpace.indexOf(whiteSpace) > -1; - var changed = Math.round(lineHeight) != Math.round(this.lineHeight) || this.lineWrapping != lineWrapping; - this.lineWrapping = lineWrapping; - this.lineHeight = lineHeight; - this.charWidth = charWidth; - this.lineLength = lineLength; - if (changed) { - this.heightSamples = {}; - for (var i = 0; i < knownHeights.length; i++) { - var h = knownHeights[i]; - if (h < 0) i++; - else this.heightSamples[Math.floor(h * 10)] = true; - } - } - return changed; - } - constructor(lineWrapping) { - this.lineWrapping = lineWrapping; - this.doc = Text.empty; - this.heightSamples = {}; - this.lineHeight = 14; - this.charWidth = 7; - this.lineLength = 30; - this.heightChanged = false; + Pe.beforeinput = (r, e) => { + var t; + var i; + if (U.chrome && U.android && (i = rD.find((n) => n.inputType == e.inputType)) && (r.observer.delayAndroidKey(i.key, i.keyCode), i.key == "Backspace" || i.key == "Delete")) { + var n = ((t = window.visualViewport) === null || t === void 0 ? void 0 : t.height) || 0; + setTimeout(() => { + var s; + (((s = window.visualViewport) === null || s === void 0 ? void 0 : s.height) || 0) > n + 10 && r.hasFocus && (r.contentDOM.blur(), r.focus()); + }, 100); } }; - __name(HeightOracle, "HeightOracle"); - var MeasuredHeights = class MeasuredHeights { + var fg = ["pre-wrap", "normal", "pre-line", "break-spaces"], + Io = class Io { + heightForGap(e, t) { + var i = this.doc.lineAt(t).number - this.doc.lineAt(e).number + 1; + return this.lineWrapping && (i += Math.max(0, Math.ceil((t - e - i * this.lineLength * 0.5) / this.lineLength))), this.lineHeight * i; + } + heightForLine(e) { + return this.lineWrapping ? (1 + Math.max(0, Math.ceil((e - this.lineLength) / (this.lineLength - 5)))) * this.lineHeight : this.lineHeight; + } + setDoc(e) { + return (this.doc = e), this; + } + mustRefreshForWrapping(e) { + return fg.indexOf(e) > -1 != this.lineWrapping; + } + mustRefreshForHeights(e) { + var t = !1; + for (var i = 0; i < e.length; i++) { + var n = e[i]; + n < 0 ? i++ : this.heightSamples[Math.floor(n * 10)] || ((t = !0), (this.heightSamples[Math.floor(n * 10)] = !0)); + } + return t; + } + refresh(e, t, i, n, s) { + var o = fg.indexOf(e) > -1, + u = Math.round(t) != Math.round(this.lineHeight) || this.lineWrapping != o; + if (((this.lineWrapping = o), (this.lineHeight = t), (this.charWidth = i), (this.lineLength = n), u)) { + this.heightSamples = {}; + for (var l = 0; l < s.length; l++) { + var a = s[l]; + a < 0 ? l++ : (this.heightSamples[Math.floor(a * 10)] = !0); + } + } + return u; + } + constructor(e) { + (this.lineWrapping = e), (this.doc = ce.empty), (this.heightSamples = {}), (this.lineHeight = 14), (this.charWidth = 7), (this.lineLength = 30), (this.heightChanged = !1); + } + }; + h(Io, "HeightOracle"); + var No = class No { get more() { return this.index < this.heights.length; } - constructor(from, heights) { - this.from = from; - this.heights = heights; - this.index = 0; + constructor(e, t) { + (this.from = e), (this.heights = t), (this.index = 0); } }; - __name(MeasuredHeights, "MeasuredHeights"); - var BlockInfo = class BlockInfo1 { + h(No, "MeasuredHeights"); + var bt = class bt1 { get to() { return this.from + this.length; } get bottom() { return this.top + this.height; } - join(other) { - var detail = (Array.isArray(this.type) ? this.type : [this]).concat(Array.isArray(other.type) ? other.type : [other]); - return new BlockInfo(this.from, this.length + other.length, this.top, this.height + other.height, detail); + join(e) { + var t = (Array.isArray(this.type) ? this.type : [this]).concat(Array.isArray(e.type) ? e.type : [e]); + return new bt(this.from, this.length + e.length, this.top, this.height + e.height, t); } - constructor(from, length, top2, height, type) { - this.from = from; - this.length = length; - this.top = top2; - this.height = height; - this.type = type; + constructor(e, t, i, n, s) { + (this.from = e), (this.length = t), (this.top = i), (this.height = n), (this.type = s); } }; - __name(BlockInfo, "BlockInfo"); - var QueryType = /* @__PURE__ */ (function (QueryType2) { - QueryType2[(QueryType2["ByPos"] = 0)] = "ByPos"; - QueryType2[(QueryType2["ByHeight"] = 1)] = "ByHeight"; - QueryType2[(QueryType2["ByPosNoHeight"] = 2)] = "ByPosNoHeight"; - return QueryType2; - })(QueryType || (QueryType = {})); - var Epsilon = 1e-3; - var HeightMap = class HeightMap1 { - get outdated() { - return (this.flags & 2) > 0; - } - set outdated(value) { - this.flags = (value ? 2 : 0) | (this.flags & ~2); - } - setHeight(oracle, height) { - if (this.height != height) { - if (Math.abs(this.height - height) > Epsilon) oracle.heightChanged = true; - this.height = height; - } - } - replace(_from, _to, nodes) { - return HeightMap.of(nodes); - } - decomposeLeft(_to, result) { - result.push(this); - } - decomposeRight(_from, result) { - result.push(this); - } - applyChanges(decorations2, oldDoc, oracle, changes) { - var me = this; - for (var i = changes.length - 1; i >= 0; i--) { - var _changes_i = changes[i], - fromA = _changes_i.fromA, - toA = _changes_i.toA, - fromB = _changes_i.fromB, - toB = _changes_i.toB; - var start = me.lineAt(fromA, QueryType.ByPosNoHeight, oldDoc, 0, 0); - var end = start.to >= toA ? start : me.lineAt(toA, QueryType.ByPosNoHeight, oldDoc, 0, 0); - toB += end.to - toA; - toA = end.to; - while (i > 0 && start.from <= changes[i - 1].toA) { - fromA = changes[i - 1].fromA; - fromB = changes[i - 1].fromB; - i--; - if (fromA < start.from) start = me.lineAt(fromA, QueryType.ByPosNoHeight, oldDoc, 0, 0); - } - fromB += start.from - fromA; - fromA = start.from; - var nodes = NodeBuilder.build(oracle, decorations2, fromB, toB); - me = me.replace(fromA, toA, nodes); - } - return me.updateHeight(oracle, 0); - } - static empty() { - return new HeightMapText(0, 0); - } - static of(nodes) { - if (nodes.length == 1) return nodes[0]; - var i = 0, - j = nodes.length, - before = 0, - after = 0; - for (;;) { - if (i == j) { - if (before > after * 2) { - var split = nodes[i - 1]; - if (split.break) nodes.splice(--i, 1, split.left, null, split.right); - else nodes.splice(--i, 1, split.left, split.right); - j += 1 + split.break; - before -= split.size; - } else if (after > before * 2) { - var split1 = nodes[j]; - if (split1.break) nodes.splice(j, 1, split1.left, null, split1.right); - else nodes.splice(j, 1, split1.left, split1.right); - j += 2 + split1.break; - after -= split1.size; + h(bt, "BlockInfo"); + var Ae = (function (r) { + return (r[(r.ByPos = 0)] = "ByPos"), (r[(r.ByHeight = 1)] = "ByHeight"), (r[(r.ByPosNoHeight = 2)] = "ByPosNoHeight"), r; + })(Ae || (Ae = {})), + Vo = 0.001, + We = class We1 { + get outdated() { + return (this.flags & 2) > 0; + } + set outdated(e) { + this.flags = (e ? 2 : 0) | (this.flags & -3); + } + setHeight(e, t) { + this.height != t && (Math.abs(this.height - t) > Vo && (e.heightChanged = !0), (this.height = t)); + } + replace(e, t, i) { + return We.of(i); + } + decomposeLeft(e, t) { + t.push(this); + } + decomposeRight(e, t) { + t.push(this); + } + applyChanges(e, t, i, n) { + var s = this, + o = i.doc; + for (var u = n.length - 1; u >= 0; u--) { + var _n_u = n[u], + l = _n_u.fromA, + a = _n_u.toA, + c = _n_u.fromB, + f = _n_u.toB, + d = s.lineAt(l, Ae.ByPosNoHeight, i.setDoc(t), 0, 0), + p = d.to >= a ? d : s.lineAt(a, Ae.ByPosNoHeight, i, 0, 0); + for (f += p.to - a, a = p.to; u > 0 && d.from <= n[u - 1].toA; ) (l = n[u - 1].fromA), (c = n[u - 1].fromB), u--, l < d.from && (d = s.lineAt(l, Ae.ByPosNoHeight, i, 0, 0)); + (c += d.from - l), (l = d.from); + var m = Ir.build(i.setDoc(o), e, c, f); + s = s.replace(l, a, m); + } + return s.updateHeight(i, 0); + } + static empty() { + return new Ue(0, 0); + } + static of(e) { + if (e.length == 1) return e[0]; + var t = 0, + i = e.length, + n = 0, + s = 0; + for (;;) + if (t == i) + if (n > s * 2) { + var u = e[t - 1]; + u.break ? e.splice(--t, 1, u.left, null, u.right) : e.splice(--t, 1, u.left, u.right), (i += 1 + u.break), (n -= u.size); + } else if (s > n * 2) { + var u1 = e[i]; + u1.break ? e.splice(i, 1, u1.left, null, u1.right) : e.splice(i, 1, u1.left, u1.right), (i += 2 + u1.break), (s -= u1.size); + } else break; + else if (n < s) { + var u2 = e[t++]; + u2 && (n += u2.size); } else { - break; + var u3 = e[--i]; + u3 && (s += u3.size); } - } else if (before < after) { - var next = nodes[i++]; - if (next) before += next.size; - } else { - var next1 = nodes[--j]; - if (next1) after += next1.size; - } + var o = 0; + return e[t - 1] == null ? ((o = 1), t--) : e[t] == null && ((o = 1), i++), new zo(We.of(e.slice(0, t)), o, We.of(e.slice(i))); } - var brk = 0; - if (nodes[i - 1] == null) { - brk = 1; - i--; - } else if (nodes[i] == null) { - brk = 1; - j++; + constructor(e, t, ref) { + var i = ref === void 0 ? 2 : ref; + (this.length = e), (this.height = t), (this.flags = i); } - return new HeightMapBranch(HeightMap.of(nodes.slice(0, i)), brk, HeightMap.of(nodes.slice(j))); + }; + h(We, "HeightMap"); + We.prototype.size = 1; + var jn = class jn extends We { + blockAt(e, t, i, n) { + return new bt(n, this.length, i, this.height, this.type); } - constructor(length, height, ref) { - var flags = ref === void 0 ? 2 : ref; - this.length = length; - this.height = height; - this.flags = flags; + lineAt(e, t, i, n, s) { + return this.blockAt(0, i, n, s); } - }; - __name(HeightMap, "HeightMap"); - HeightMap.prototype.size = 1; - var HeightMapBlock = class HeightMapBlock extends HeightMap { - blockAt(_height, _doc, top2, offset) { - return new BlockInfo(offset, this.length, top2, this.height, this.type); - } - lineAt(_value, _type, doc2, top2, offset) { - return this.blockAt(0, doc2, top2, offset); - } - forEachLine(from, to, doc2, top2, offset, f) { - if (from <= offset + this.length && to >= offset) f(this.blockAt(0, doc2, top2, offset)); - } - updateHeight(oracle) { - var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, - _force = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, - measured = arguments.length > 3 ? arguments[3] : void 0; - if (measured && measured.from <= offset && measured.more) this.setHeight(oracle, measured.heights[measured.index++]); - this.outdated = false; - return this; + forEachLine(e, t, i, n, s, o) { + e <= s + this.length && t >= s && o(this.blockAt(0, i, n, s)); + } + updateHeight(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, + n = arguments.length > 3 ? arguments[3] : void 0; + return n && n.from <= t && n.more && this.setHeight(e, n.heights[n.index++]), (this.outdated = !1), this; } toString() { return "block(".concat(this.length, ")"); } - constructor(length, height, type) { - super(length, height); - this.type = type; + constructor(e, t, i) { + super(e, t), (this.type = i); } }; - __name(HeightMapBlock, "HeightMapBlock"); - var HeightMapText = class HeightMapText1 extends HeightMapBlock { - replace(_from, _to, nodes) { - var node = nodes[0]; - if (nodes.length == 1 && (node instanceof HeightMapText || (node instanceof HeightMapGap && node.flags & 4)) && Math.abs(this.length - node.length) < 10) { - if (node instanceof HeightMapGap) node = new HeightMapText(node.length, this.height); - else node.height = this.height; - if (!this.outdated) node.outdated = false; - return node; - } else { - return HeightMap.of(nodes); - } - } - updateHeight(oracle) { - var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, - force = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, - measured = arguments.length > 3 ? arguments[3] : void 0; - if (measured && measured.from <= offset && measured.more) this.setHeight(oracle, measured.heights[measured.index++]); - else if (force || this.outdated) this.setHeight(oracle, Math.max(this.widgetHeight, oracle.heightForLine(this.length - this.collapsed))); - this.outdated = false; - return this; + h(jn, "HeightMapBlock"); + var Ue = class Ue1 extends jn { + replace(e, t, i) { + var n = i[0]; + return i.length == 1 && (n instanceof Ue || (n instanceof Te && n.flags & 4)) && Math.abs(this.length - n.length) < 10 ? (n instanceof Te ? (n = new Ue(n.length, this.height)) : (n.height = this.height), this.outdated || (n.outdated = !1), n) : We.of(i); + } + updateHeight(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, + n = arguments.length > 3 ? arguments[3] : void 0; + return n && n.from <= t && n.more ? this.setHeight(e, n.heights[n.index++]) : (i || this.outdated) && this.setHeight(e, Math.max(this.widgetHeight, e.heightForLine(this.length - this.collapsed))), (this.outdated = !1), this; } toString() { return "line(" @@ -15943,168 +12584,167 @@ var __generator = .concat(this.collapsed ? -this.collapsed : "") .concat(this.widgetHeight ? ":" + this.widgetHeight : "", ")"); } - constructor(length, height) { - super(length, height, BlockType.Text); - this.collapsed = 0; - this.widgetHeight = 0; + constructor(e, t) { + super(e, t, be.Text), (this.collapsed = 0), (this.widgetHeight = 0); } }; - __name(HeightMapText, "HeightMapText"); - var HeightMapGap = class HeightMapGap1 extends HeightMap { - lines(doc2, offset) { - var firstLine = doc2.lineAt(offset).number, - lastLine = doc2.lineAt(offset + this.length).number; - return { - firstLine, - lastLine, - lineHeight: this.height / (lastLine - firstLine + 1), - }; - } - blockAt(height, doc2, top2, offset) { - var _this_lines = this.lines(doc2, offset), - firstLine = _this_lines.firstLine, - lastLine = _this_lines.lastLine, - lineHeight = _this_lines.lineHeight; - var line = Math.max(0, Math.min(lastLine - firstLine, Math.floor((height - top2) / lineHeight))); - var _doc2_line = doc2.line(firstLine + line), - from = _doc2_line.from, - length = _doc2_line.length; - return new BlockInfo(from, length, top2 + lineHeight * line, lineHeight, BlockType.Text); - } - lineAt(value, type, doc2, top2, offset) { - if (type == QueryType.ByHeight) return this.blockAt(value, doc2, top2, offset); - if (type == QueryType.ByPosNoHeight) { - var _doc2_lineAt = doc2.lineAt(value), - from2 = _doc2_lineAt.from, - to = _doc2_lineAt.to; - return new BlockInfo(from2, to - from2, 0, 0, BlockType.Text); - } - var _this_lines = this.lines(doc2, offset), - firstLine = _this_lines.firstLine, - lineHeight = _this_lines.lineHeight; - var _doc2_lineAt1 = doc2.lineAt(value), - from = _doc2_lineAt1.from, - length = _doc2_lineAt1.length, - number2 = _doc2_lineAt1.number; - return new BlockInfo(from, length, top2 + lineHeight * (number2 - firstLine), lineHeight, BlockType.Text); - } - forEachLine(from, to, doc2, top2, offset, f) { - var _this_lines = this.lines(doc2, offset), - firstLine = _this_lines.firstLine, - lineHeight = _this_lines.lineHeight; - for (var pos = Math.max(from, offset), end = Math.min(offset + this.length, to); pos <= end; ) { - var line = doc2.lineAt(pos); - if (pos == from) top2 += lineHeight * (line.number - firstLine); - f(new BlockInfo(line.from, line.length, top2, lineHeight, BlockType.Text)); - top2 += lineHeight; - pos = line.to + 1; - } - } - replace(from, to, nodes) { - var after = this.length - to; - if (after > 0) { - var last = nodes[nodes.length - 1]; - if (last instanceof HeightMapGap) nodes[nodes.length - 1] = new HeightMapGap(last.length + after); - else nodes.push(null, new HeightMapGap(after - 1)); - } - if (from > 0) { - var first = nodes[0]; - if (first instanceof HeightMapGap) nodes[0] = new HeightMapGap(from + first.length); - else nodes.unshift(new HeightMapGap(from - 1), null); - } - return HeightMap.of(nodes); - } - decomposeLeft(to, result) { - result.push(new HeightMapGap(to - 1), null); - } - decomposeRight(from, result) { - result.push(null, new HeightMapGap(this.length - from - 1)); - } - updateHeight(oracle) { - var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, - force = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, - measured = arguments.length > 3 ? arguments[3] : void 0; - var end = offset + this.length; - if (measured && measured.from <= offset + this.length && measured.more) { - var nodes = [], - pos = Math.max(offset, measured.from), - singleHeight = -1; - var wasChanged = oracle.heightChanged; - if (measured.from > offset) nodes.push(new HeightMapGap(measured.from - offset - 1).updateHeight(oracle, offset)); - while (pos <= end && measured.more) { - var len = oracle.doc.lineAt(pos).length; - if (nodes.length) nodes.push(null); - var height = measured.heights[measured.index++]; - if (singleHeight == -1) singleHeight = height; - else if (Math.abs(height - singleHeight) >= Epsilon) singleHeight = -2; - var line = new HeightMapText(len, height); - line.outdated = false; - nodes.push(line); - pos += len + 1; - } - if (pos <= end) nodes.push(null, new HeightMapGap(end - pos).updateHeight(oracle, pos)); - var result = HeightMap.of(nodes); - oracle.heightChanged = wasChanged || singleHeight < 0 || Math.abs(result.height - this.height) >= Epsilon || Math.abs(singleHeight - this.lines(oracle.doc, offset).lineHeight) >= Epsilon; - return result; - } else if (force || this.outdated) { - this.setHeight(oracle, oracle.heightForGap(offset, offset + this.length)); - this.outdated = false; - } + h(Ue, "HeightMapText"); + var Te = class Te1 extends We { + heightMetrics(e, t) { + var i = e.doc.lineAt(t).number, + n = e.doc.lineAt(t + this.length).number, + s = n - i + 1, + o, + u = 0; + if (e.lineWrapping) { + var l = Math.min(this.height, e.lineHeight * s); + (o = l / s), (u = (this.height - l) / (this.length - s - 1)); + } else o = this.height / s; + return { firstLine: i, lastLine: n, perLine: o, perChar: u }; + } + blockAt(e, t, i, n) { + var _this_heightMetrics = this.heightMetrics(t, n), + s = _this_heightMetrics.firstLine, + o = _this_heightMetrics.lastLine, + u = _this_heightMetrics.perLine, + l = _this_heightMetrics.perChar; + if (t.lineWrapping) { + var a = n + Math.round(Math.max(0, Math.min(1, (e - i) / this.height)) * this.length), + c = t.doc.lineAt(a), + f = u + c.length * l, + d = Math.max(i, e - f / 2); + return new bt(c.from, c.length, d, f, be.Text); + } else { + var a1 = Math.max(0, Math.min(o - s, Math.floor((e - i) / u))), + _t_doc_line = t.doc.line(s + a1), + c1 = _t_doc_line.from, + f1 = _t_doc_line.length; + return new bt(c1, f1, i + u * a1, u, be.Text); + } + } + lineAt(e, t, i, n, s) { + if (t == Ae.ByHeight) return this.blockAt(e, i, n, s); + if (t == Ae.ByPosNoHeight) { + var _i_doc_lineAt = i.doc.lineAt(e), + p = _i_doc_lineAt.from, + m = _i_doc_lineAt.to; + return new bt(p, m - p, 0, 0, be.Text); + } + var _this_heightMetrics = this.heightMetrics(i, s), + o = _this_heightMetrics.firstLine, + u = _this_heightMetrics.perLine, + l = _this_heightMetrics.perChar, + a = i.doc.lineAt(e), + c = u + a.length * l, + f = a.number - o, + d = n + u * f + l * (a.from - s - f); + return new bt(a.from, a.length, Math.max(n, Math.min(d, n + this.height - c)), c, be.Text); + } + forEachLine(e, t, i, n, s, o) { + (e = Math.max(e, s)), (t = Math.min(t, s + this.length)); + var _this_heightMetrics = this.heightMetrics(i, s), + u = _this_heightMetrics.firstLine, + l = _this_heightMetrics.perLine, + a = _this_heightMetrics.perChar; + for (var c = e, f = n; c <= t; ) { + var d = i.doc.lineAt(c); + if (c == e) { + var m = d.number - u; + f += l * m + a * (e - s - m); + } + var p = l + a * d.length; + o(new bt(d.from, d.length, f, p, be.Text)), (f += p), (c = d.to + 1); + } + } + replace(e, t, i) { + var n = this.length - t; + if (n > 0) { + var s = i[i.length - 1]; + s instanceof Te ? (i[i.length - 1] = new Te(s.length + n)) : i.push(null, new Te(n - 1)); + } + if (e > 0) { + var s1 = i[0]; + s1 instanceof Te ? (i[0] = new Te(e + s1.length)) : i.unshift(new Te(e - 1), null); + } + return We.of(i); + } + decomposeLeft(e, t) { + t.push(new Te(e - 1), null); + } + decomposeRight(e, t) { + t.push(null, new Te(this.length - e - 1)); + } + updateHeight(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, + n = arguments.length > 3 ? arguments[3] : void 0; + var s = t + this.length; + if (n && n.from <= t + this.length && n.more) { + var o = [], + u = Math.max(t, n.from), + l = -1; + for (n.from > t && o.push(new Te(n.from - t - 1).updateHeight(e, t)); u <= s && n.more; ) { + var c = e.doc.lineAt(u).length; + o.length && o.push(null); + var f = n.heights[n.index++]; + l == -1 ? (l = f) : Math.abs(f - l) >= Vo && (l = -2); + var d = new Ue(c, f); + (d.outdated = !1), o.push(d), (u += c + 1); + } + u <= s && o.push(null, new Te(s - u).updateHeight(e, u)); + var a = We.of(o); + return (l < 0 || Math.abs(a.height - this.height) >= Vo || Math.abs(l - this.heightMetrics(e, t).perLine) >= Vo) && (e.heightChanged = !0), a; + } else (i || this.outdated) && (this.setHeight(e, e.heightForGap(t, t + this.length)), (this.outdated = !1)); return this; } toString() { return "gap(".concat(this.length, ")"); } - constructor(length) { - super(length, 0); + constructor(e) { + super(e, 0); } }; - __name(HeightMapGap, "HeightMapGap"); - var HeightMapBranch = class HeightMapBranch extends HeightMap { + h(Te, "HeightMapGap"); + var zo = class zo extends We { get break() { return this.flags & 1; } - blockAt(height, doc2, top2, offset) { - var mid = top2 + this.left.height; - return height < mid ? this.left.blockAt(height, doc2, top2, offset) : this.right.blockAt(height, doc2, mid, offset + this.left.length + this.break); - } - lineAt(value, type, doc2, top2, offset) { - var rightTop = top2 + this.left.height, - rightOffset = offset + this.left.length + this.break; - var left = type == QueryType.ByHeight ? value < rightTop : value < rightOffset; - var base2 = left ? this.left.lineAt(value, type, doc2, top2, offset) : this.right.lineAt(value, type, doc2, rightTop, rightOffset); - if (this.break || (left ? base2.to < rightOffset : base2.from > rightOffset)) return base2; - var subQuery = type == QueryType.ByPosNoHeight ? QueryType.ByPosNoHeight : QueryType.ByPos; - if (left) return base2.join(this.right.lineAt(rightOffset, subQuery, doc2, rightTop, rightOffset)); - else return this.left.lineAt(rightOffset, subQuery, doc2, top2, offset).join(base2); - } - forEachLine(from, to, doc2, top2, offset, f) { - var rightTop = top2 + this.left.height, - rightOffset = offset + this.left.length + this.break; - if (this.break) { - if (from < rightOffset) this.left.forEachLine(from, to, doc2, top2, offset, f); - if (to >= rightOffset) this.right.forEachLine(from, to, doc2, rightTop, rightOffset, f); - } else { - var mid = this.lineAt(rightOffset, QueryType.ByPos, doc2, top2, offset); - if (from < mid.from) this.left.forEachLine(from, mid.from - 1, doc2, top2, offset, f); - if (mid.to >= from && mid.from <= to) f(mid); - if (to > mid.to) this.right.forEachLine(mid.to + 1, to, doc2, rightTop, rightOffset, f); - } - } - replace(from, to, nodes) { - var rightStart = this.left.length + this.break; - if (to < rightStart) return this.balanced(this.left.replace(from, to, nodes), this.right); - if (from > this.left.length) return this.balanced(this.left, this.right.replace(from - rightStart, to - rightStart, nodes)); - var result = []; - if (from > 0) this.decomposeLeft(from, result); - var left = result.length; + blockAt(e, t, i, n) { + var s = i + this.left.height; + return e < s ? this.left.blockAt(e, t, i, n) : this.right.blockAt(e, t, s, n + this.left.length + this.break); + } + lineAt(e, t, i, n, s) { + var o = n + this.left.height, + u = s + this.left.length + this.break, + l = t == Ae.ByHeight ? e < o : e < u, + a = l ? this.left.lineAt(e, t, i, n, s) : this.right.lineAt(e, t, i, o, u); + if (this.break || (l ? a.to < u : a.from > u)) return a; + var c = t == Ae.ByPosNoHeight ? Ae.ByPosNoHeight : Ae.ByPos; + return l ? a.join(this.right.lineAt(u, c, i, o, u)) : this.left.lineAt(u, c, i, n, s).join(a); + } + forEachLine(e, t, i, n, s, o) { + var u = n + this.left.height, + l = s + this.left.length + this.break; + if (this.break) e < l && this.left.forEachLine(e, t, i, n, s, o), t >= l && this.right.forEachLine(e, t, i, u, l, o); + else { + var a = this.lineAt(l, Ae.ByPos, i, n, s); + e < a.from && this.left.forEachLine(e, a.from - 1, i, n, s, o), a.to >= e && a.from <= t && o(a), t > a.to && this.right.forEachLine(a.to + 1, t, i, u, l, o); + } + } + replace(e, t, i) { + var n = this.left.length + this.break; + if (t < n) return this.balanced(this.left.replace(e, t, i), this.right); + if (e > this.left.length) return this.balanced(this.left, this.right.replace(e - n, t - n, i)); + var s = []; + e > 0 && this.decomposeLeft(e, s); + var o = s.length; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var node = _step.value; - result.push(node); + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var u = _step.value; + s.push(u); } } catch (err) { _didIteratorError = true; @@ -16120,420 +12760,299 @@ var __generator = } } } - if (from > 0) mergeGaps(result, left - 1); - if (to < this.length) { - var right = result.length; - this.decomposeRight(to, result); - mergeGaps(result, right); - } - return HeightMap.of(result); - } - decomposeLeft(to, result) { - var left = this.left.length; - if (to <= left) return this.left.decomposeLeft(to, result); - result.push(this.left); - if (this.break) { - left++; - if (to >= left) result.push(null); - } - if (to > left) this.right.decomposeLeft(to - left, result); - } - decomposeRight(from, result) { - var left = this.left.length, - right = left + this.break; - if (from >= right) return this.right.decomposeRight(from - right, result); - if (from < left) this.left.decomposeRight(from, result); - if (this.break && from < right) result.push(null); - result.push(this.right); - } - balanced(left, right) { - if (left.size > 2 * right.size || right.size > 2 * left.size) return HeightMap.of(this.break ? [left, null, right] : [left, right]); - this.left = left; - this.right = right; - this.height = left.height + right.height; - this.outdated = left.outdated || right.outdated; - this.size = left.size + right.size; - this.length = left.length + this.break + right.length; - return this; + if ((e > 0 && dg(s, o - 1), t < this.length)) { + var u1 = s.length; + this.decomposeRight(t, s), dg(s, u1); + } + return We.of(s); + } + decomposeLeft(e, t) { + var i = this.left.length; + if (e <= i) return this.left.decomposeLeft(e, t); + t.push(this.left), this.break && (i++, e >= i && t.push(null)), e > i && this.right.decomposeLeft(e - i, t); } - updateHeight(oracle) { - var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, - force = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, - measured = arguments.length > 3 ? arguments[3] : void 0; + decomposeRight(e, t) { + var i = this.left.length, + n = i + this.break; + if (e >= n) return this.right.decomposeRight(e - n, t); + e < i && this.left.decomposeRight(e, t), this.break && e < n && t.push(null), t.push(this.right); + } + balanced(e, t) { + return e.size > 2 * t.size || t.size > 2 * e.size ? We.of(this.break ? [e, null, t] : [e, t]) : ((this.left = e), (this.right = t), (this.height = e.height + t.height), (this.outdated = e.outdated || t.outdated), (this.size = e.size + t.size), (this.length = e.length + this.break + t.length), this); + } + updateHeight(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, + n = arguments.length > 3 ? arguments[3] : void 0; var _this = this, - left = _this.left, - right = _this.right, - rightStart = offset + left.length + this.break, - rebalance = null; - if (measured && measured.from <= offset + left.length && measured.more) rebalance = left = left.updateHeight(oracle, offset, force, measured); - else left.updateHeight(oracle, offset, force); - if (measured && measured.from <= rightStart + right.length && measured.more) rebalance = right = right.updateHeight(oracle, rightStart, force, measured); - else right.updateHeight(oracle, rightStart, force); - if (rebalance) return this.balanced(left, right); - this.height = this.left.height + this.right.height; - this.outdated = false; - return this; + s = _this.left, + o = _this.right, + u = t + s.length + this.break, + l = null; + return n && n.from <= t + s.length && n.more ? (l = s = s.updateHeight(e, t, i, n)) : s.updateHeight(e, t, i), n && n.from <= u + o.length && n.more ? (l = o = o.updateHeight(e, u, i, n)) : o.updateHeight(e, u, i), l ? this.balanced(s, o) : ((this.height = this.left.height + this.right.height), (this.outdated = !1), this); } toString() { return this.left + (this.break ? " " : "-") + this.right; } - constructor(left, brk, right) { - super(left.length + brk + right.length, left.height + right.height, brk | (left.outdated || right.outdated ? 2 : 0)); - this.left = left; - this.right = right; - this.size = left.size + right.size; + constructor(e, t, i) { + super(e.length + t + i.length, e.height + i.height, t | (e.outdated || i.outdated ? 2 : 0)), (this.left = e), (this.right = i), (this.size = e.size + i.size); } }; - __name(HeightMapBranch, "HeightMapBranch"); - function mergeGaps(nodes, around) { - var before, after; - if (nodes[around] == null && (before = nodes[around - 1]) instanceof HeightMapGap && (after = nodes[around + 1]) instanceof HeightMapGap) nodes.splice(around - 1, 3, new HeightMapGap(before.length + 1 + after.length)); - } - __name(mergeGaps, "mergeGaps"); - var relevantWidgetHeight = 5; - var NodeBuilder = class NodeBuilder1 { - get isCovered() { - return this.covering && this.nodes[this.nodes.length - 1] == this.covering; - } - span(_from, to) { - if (this.lineStart > -1) { - var end = Math.min(to, this.lineEnd), - last = this.nodes[this.nodes.length - 1]; - if (last instanceof HeightMapText) last.length += end - this.pos; - else if (end > this.pos || !this.isCovered) this.nodes.push(new HeightMapText(end - this.pos, -1)); - this.writtenTo = end; - if (to > end) { - this.nodes.push(null); - this.writtenTo++; - this.lineStart = -1; - } - } - this.pos = to; - } - point(from, to, deco) { - if (from < to || deco.heightRelevant) { - var height = deco.widget ? deco.widget.estimatedHeight : 0; - if (height < 0) height = this.oracle.lineHeight; - var len = to - from; - if (deco.block) { - this.addBlock(new HeightMapBlock(len, height, deco.type)); - } else if (len || height >= relevantWidgetHeight) { - this.addLineDeco(height, len); - } - } else if (to > from) { - this.span(from, to); - } - if (this.lineEnd > -1 && this.lineEnd < this.pos) this.lineEnd = this.oracle.doc.lineAt(this.pos).to; - } - enterLine() { - if (this.lineStart > -1) return; - var _this_oracle_doc_lineAt = this.oracle.doc.lineAt(this.pos), - from = _this_oracle_doc_lineAt.from, - to = _this_oracle_doc_lineAt.to; - this.lineStart = from; - this.lineEnd = to; - if (this.writtenTo < from) { - if (this.writtenTo < from - 1 || this.nodes[this.nodes.length - 1] == null) this.nodes.push(this.blankContent(this.writtenTo, from - 1)); - this.nodes.push(null); - } - if (this.pos > from) this.nodes.push(new HeightMapText(this.pos - from, -1)); - this.writtenTo = this.pos; - } - blankContent(from, to) { - var gap = new HeightMapGap(to - from); - if (this.oracle.doc.lineAt(from).to == to) gap.flags |= 4; - return gap; - } - ensureLine() { - this.enterLine(); - var last = this.nodes.length ? this.nodes[this.nodes.length - 1] : null; - if (last instanceof HeightMapText) return last; - var line = new HeightMapText(0, -1); - this.nodes.push(line); - return line; - } - addBlock(block) { - this.enterLine(); - if (block.type == BlockType.WidgetAfter && !this.isCovered) this.ensureLine(); - this.nodes.push(block); - this.writtenTo = this.pos = this.pos + block.length; - if (block.type != BlockType.WidgetBefore) this.covering = block; - } - addLineDeco(height, length) { - var line = this.ensureLine(); - line.length += length; - line.collapsed += length; - line.widgetHeight = Math.max(line.widgetHeight, height); - this.writtenTo = this.pos = this.pos + length; - } - finish(from) { - var last = this.nodes.length == 0 ? null : this.nodes[this.nodes.length - 1]; - if (this.lineStart > -1 && !(last instanceof HeightMapText) && !this.isCovered) this.nodes.push(new HeightMapText(0, -1)); - else if (this.writtenTo < this.pos || last == null) this.nodes.push(this.blankContent(this.writtenTo, this.pos)); - var pos = from; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var node = _step.value; - if (node instanceof HeightMapText) node.updateHeight(this.oracle, pos); - pos += node ? node.length : 1; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(zo, "HeightMapBranch"); + function dg(r, e) { + var t, i; + r[e] == null && (t = r[e - 1]) instanceof Te && (i = r[e + 1]) instanceof Te && r.splice(e - 1, 3, new Te(t.length + 1 + i.length)); + } + h(dg, "mergeGaps"); + var ck = 5, + Ir = class Ir1 { + get isCovered() { + return this.covering && this.nodes[this.nodes.length - 1] == this.covering; + } + span(e, t) { + if (this.lineStart > -1) { + var i = Math.min(t, this.lineEnd), + n = this.nodes[this.nodes.length - 1]; + n instanceof Ue ? (n.length += i - this.pos) : (i > this.pos || !this.isCovered) && this.nodes.push(new Ue(i - this.pos, -1)), (this.writtenTo = i), t > i && (this.nodes.push(null), this.writtenTo++, (this.lineStart = -1)); + } + this.pos = t; + } + point(e, t, i) { + if (e < t || i.heightRelevant) { + var n = i.widget ? i.widget.estimatedHeight : 0; + n < 0 && (n = this.oracle.lineHeight); + var s = t - e; + i.block ? this.addBlock(new jn(s, n, i.type)) : (s || n >= ck) && this.addLineDeco(n, s); + } else t > e && this.span(e, t); + this.lineEnd > -1 && this.lineEnd < this.pos && (this.lineEnd = this.oracle.doc.lineAt(this.pos).to); + } + enterLine() { + if (this.lineStart > -1) return; + var _this_oracle_doc_lineAt = this.oracle.doc.lineAt(this.pos), + e = _this_oracle_doc_lineAt.from, + t = _this_oracle_doc_lineAt.to; + (this.lineStart = e), (this.lineEnd = t), this.writtenTo < e && ((this.writtenTo < e - 1 || this.nodes[this.nodes.length - 1] == null) && this.nodes.push(this.blankContent(this.writtenTo, e - 1)), this.nodes.push(null)), this.pos > e && this.nodes.push(new Ue(this.pos - e, -1)), (this.writtenTo = this.pos); + } + blankContent(e, t) { + var i = new Te(t - e); + return this.oracle.doc.lineAt(e).to == t && (i.flags |= 4), i; + } + ensureLine() { + this.enterLine(); + var e = this.nodes.length ? this.nodes[this.nodes.length - 1] : null; + if (e instanceof Ue) return e; + var t = new Ue(0, -1); + return this.nodes.push(t), t; + } + addBlock(e) { + this.enterLine(), e.type == be.WidgetAfter && !this.isCovered && this.ensureLine(), this.nodes.push(e), (this.writtenTo = this.pos = this.pos + e.length), e.type != be.WidgetBefore && (this.covering = e); + } + addLineDeco(e, t) { + var i = this.ensureLine(); + (i.length += t), (i.collapsed += t), (i.widgetHeight = Math.max(i.widgetHeight, e)), (this.writtenTo = this.pos = this.pos + t); + } + finish(e) { + var t = this.nodes.length == 0 ? null : this.nodes[this.nodes.length - 1]; + this.lineStart > -1 && !(t instanceof Ue) && !this.isCovered ? this.nodes.push(new Ue(0, -1)) : (this.writtenTo < this.pos || t == null) && this.nodes.push(this.blankContent(this.writtenTo, this.pos)); + var i = e; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + n instanceof Ue && n.updateHeight(this.oracle, i), (i += n ? n.length : 1); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + return this.nodes; } - return this.nodes; - } - static build(oracle, decorations2, from, to) { - var builder = new NodeBuilder(from, oracle); - RangeSet.spans(decorations2, from, to, builder, 0); - return builder.finish(from); - } - constructor(pos, oracle) { - this.pos = pos; - this.oracle = oracle; - this.nodes = []; - this.lineStart = -1; - this.lineEnd = -1; - this.covering = null; - this.writtenTo = pos; - } - }; - __name(NodeBuilder, "NodeBuilder"); - function heightRelevantDecoChanges(a, b, diff) { - var comp = new DecorationComparator(); - RangeSet.compare(a, b, diff, comp, 0); - return comp.changes; - } - __name(heightRelevantDecoChanges, "heightRelevantDecoChanges"); - var DecorationComparator = class DecorationComparator { + static build(e, t, i, n) { + var s = new Ir(i, e); + return pe.spans(t, i, n, s, 0), s.finish(i); + } + constructor(e, t) { + (this.pos = e), (this.oracle = t), (this.nodes = []), (this.lineStart = -1), (this.lineEnd = -1), (this.covering = null), (this.writtenTo = e); + } + }; + h(Ir, "NodeBuilder"); + function fk(r, e, t) { + var i = new Wo(); + return pe.compare(r, e, t, i, 0), i.changes; + } + h(fk, "heightRelevantDecoChanges"); + var Wo = class Wo { compareRange() {} - comparePoint(from, to, a, b) { - if (from < to || (a && a.heightRelevant) || (b && b.heightRelevant)) addRange(from, to, this.changes, 5); + comparePoint(e, t, i, n) { + (e < t || (i && i.heightRelevant) || (n && n.heightRelevant)) && rh(e, t, this.changes, 5); } constructor() { this.changes = []; } }; - __name(DecorationComparator, "DecorationComparator"); - function visiblePixelRange(dom, paddingTop) { - var rect = dom.getBoundingClientRect(); - var doc2 = dom.ownerDocument, - win = doc2.defaultView || window; - var left = Math.max(0, rect.left), - right = Math.min(win.innerWidth, rect.right); - var top2 = Math.max(0, rect.top), - bottom = Math.min(win.innerHeight, rect.bottom); - for (var parent = dom.parentNode; parent && parent != doc2.body; ) { - if (parent.nodeType == 1) { - var elt = parent; - var style = window.getComputedStyle(elt); - if ((elt.scrollHeight > elt.clientHeight || elt.scrollWidth > elt.clientWidth) && style.overflow != "visible") { - var parentRect = elt.getBoundingClientRect(); - left = Math.max(left, parentRect.left); - right = Math.min(right, parentRect.right); - top2 = Math.max(top2, parentRect.top); - bottom = parent == dom.parentNode ? parentRect.bottom : Math.min(bottom, parentRect.bottom); - } - parent = style.position == "absolute" || style.position == "fixed" ? elt.offsetParent : elt.parentNode; - } else if (parent.nodeType == 11) { - parent = parent.host; - } else { - break; - } - } - return { - left: left - rect.left, - right: Math.max(left, right) - rect.left, - top: top2 - (rect.top + paddingTop), - bottom: Math.max(top2, bottom) - (rect.top + paddingTop), - }; - } - __name(visiblePixelRange, "visiblePixelRange"); - function fullPixelRange(dom, paddingTop) { - var rect = dom.getBoundingClientRect(); - return { - left: 0, - right: rect.right - rect.left, - top: paddingTop, - bottom: rect.bottom - (rect.top + paddingTop), - }; - } - __name(fullPixelRange, "fullPixelRange"); - var LineGap = class LineGap { - static same(a, b) { - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) { - var gA = a[i], - gB = b[i]; - if (gA.from != gB.from || gA.to != gB.to || gA.size != gB.size) return false; - } - return true; - } - draw(wrapping) { - return Decoration.replace({ - widget: new LineGapWidget(this.size, wrapping), - }).range(this.from, this.to); - } - constructor(from, to, size) { - this.from = from; - this.to = to; - this.size = size; + h(Wo, "DecorationComparator"); + function dk(r, e) { + var t = r.getBoundingClientRect(), + i = r.ownerDocument, + n = i.defaultView || window, + s = Math.max(0, t.left), + o = Math.min(n.innerWidth, t.right), + u = Math.max(0, t.top), + l = Math.min(n.innerHeight, t.bottom); + for (var a = r.parentNode; a && a != i.body; ) + if (a.nodeType == 1) { + var c = a, + f = window.getComputedStyle(c); + if ((c.scrollHeight > c.clientHeight || c.scrollWidth > c.clientWidth) && f.overflow != "visible") { + var d = c.getBoundingClientRect(); + (s = Math.max(s, d.left)), (o = Math.min(o, d.right)), (u = Math.max(u, d.top)), (l = a == r.parentNode ? d.bottom : Math.min(l, d.bottom)); + } + a = f.position == "absolute" || f.position == "fixed" ? c.offsetParent : c.parentNode; + } else if (a.nodeType == 11) a = a.host; + else break; + return { left: s - t.left, right: Math.max(s, o) - t.left, top: u - (t.top + e), bottom: Math.max(u, l) - (t.top + e) }; + } + h(dk, "visiblePixelRange"); + function pk(r, e) { + var t = r.getBoundingClientRect(); + return { left: 0, right: t.right - t.left, top: e, bottom: t.bottom - (t.top + e) }; + } + h(pk, "fullPixelRange"); + var Nr = class Nr { + static same(e, t) { + if (e.length != t.length) return !1; + for (var i = 0; i < e.length; i++) { + var n = e[i], + s = t[i]; + if (n.from != s.from || n.to != s.to || n.size != s.size) return !1; + } + return !0; + } + draw(e) { + return he.replace({ widget: new jo(this.size, e) }).range(this.from, this.to); + } + constructor(e, t, i) { + (this.from = e), (this.to = t), (this.size = i); } }; - __name(LineGap, "LineGap"); - var LineGapWidget = class LineGapWidget extends WidgetType { - eq(other) { - return other.size == this.size && other.vertical == this.vertical; + h(Nr, "LineGap"); + var jo = class jo extends Ht { + eq(e) { + return e.size == this.size && e.vertical == this.vertical; } toDOM() { - var elt = document.createElement("div"); - if (this.vertical) { - elt.style.height = this.size + "px"; - } else { - elt.style.width = this.size + "px"; - elt.style.height = "2px"; - elt.style.display = "inline-block"; - } - return elt; + var e = document.createElement("div"); + return this.vertical ? (e.style.height = this.size + "px") : ((e.style.width = this.size + "px"), (e.style.height = "2px"), (e.style.display = "inline-block")), e; } get estimatedHeight() { return this.vertical ? this.size : -1; } - constructor(size, vertical) { - super(); - this.size = size; - this.vertical = vertical; + constructor(e, t) { + super(), (this.size = e), (this.vertical = t); } }; - __name(LineGapWidget, "LineGapWidget"); - var ViewState = class ViewState { + h(jo, "LineGapWidget"); + var Hn = class Hn { updateForViewport() { var _this = this, _loop = function (i) { - var pos = i ? main.head : main.anchor; + var n = i ? t.head : t.anchor; if ( - !viewports.some((param) => { - var from = param.from, - to = param.to; - return pos >= from && pos <= to; + !e.some((param) => { + var s = param.from, + o = param.to; + return n >= s && n <= o; }) ) { - var _this_lineBlockAt = _this.lineBlockAt(pos), - from = _this_lineBlockAt.from, - to = _this_lineBlockAt.to; - viewports.push(new Viewport(from, to)); + var _this_lineBlockAt = _this.lineBlockAt(n), + s = _this_lineBlockAt.from, + o = _this_lineBlockAt.to; + e.push(new Ki(s, o)); } }; - var viewports = [this.viewport], - main = this.state.selection.main; + var e = [this.viewport], + _this_state_selection = this.state.selection, + t = _this_state_selection.main; for (var i = 0; i <= 1; i++) _loop(i); - this.viewports = viewports.sort((a, b) => a.from - b.from); - this.scaler = this.heightMap.height <= 7e6 ? IdScaler : new BigScaler(this.heightOracle.doc, this.heightMap, this.viewports); + (this.viewports = e.sort((i, n) => i.from - n.from)), (this.scaler = this.heightMap.height <= 7e6 ? pg : new Ho(this.heightOracle, this.heightMap, this.viewports)); } updateViewportLines() { - this.viewportLines = []; - this.heightMap.forEachLine(this.viewport.from, this.viewport.to, this.state.doc, 0, 0, (block) => { - this.viewportLines.push(this.scaler.scale == 1 ? block : scaleBlock(block, this.scaler)); - }); + (this.viewportLines = []), + this.heightMap.forEachLine(this.viewport.from, this.viewport.to, this.heightOracle.setDoc(this.state.doc), 0, 0, (e) => { + this.viewportLines.push(this.scaler.scale == 1 ? e : Mn(e, this.scaler)); + }); } - update(update2) { - var scrollTarget = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - this.state = update2.state; - var prevDeco = this.stateDeco; - this.stateDeco = this.state.facet(decorations).filter((d) => typeof d != "function"); - var contentChanges = update2.changedRanges; - var heightChanges = ChangedRange.extendWithRanges(contentChanges, heightRelevantDecoChanges(prevDeco, this.stateDeco, update2 ? update2.changes : ChangeSet.empty(this.state.doc.length))); - var prevHeight = this.heightMap.height; - this.heightMap = this.heightMap.applyChanges(this.stateDeco, update2.startState.doc, this.heightOracle.setDoc(this.state.doc), heightChanges); - if (this.heightMap.height != prevHeight) update2.flags |= 2; - var viewport = heightChanges.length ? this.mapViewport(this.viewport, update2.changes) : this.viewport; - if ((scrollTarget && (scrollTarget.range.head < viewport.from || scrollTarget.range.head > viewport.to)) || !this.viewportIsAppropriate(viewport)) viewport = this.getViewport(0, scrollTarget); - var updateLines = !update2.changes.empty || update2.flags & 2 || viewport.from != this.viewport.from || viewport.to != this.viewport.to; - this.viewport = viewport; - this.updateForViewport(); - if (updateLines) this.updateViewportLines(); - if (this.lineGaps.length || this.viewport.to - this.viewport.from > 2e3 << 1) this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps, update2.changes))); - update2.flags |= this.computeVisibleRanges(); - if (scrollTarget) this.scrollTarget = scrollTarget; - if (!this.mustEnforceCursorAssoc && update2.selectionSet && update2.view.lineWrapping && update2.state.selection.main.empty && update2.state.selection.main.assoc && !update2.state.facet(nativeSelectionHidden)) this.mustEnforceCursorAssoc = true; - } - measure(view) { - var dom = view.contentDOM, - style = window.getComputedStyle(dom); - var oracle = this.heightOracle; - var whiteSpace = style.whiteSpace; - this.defaultTextDirection = style.direction == "rtl" ? Direction.RTL : Direction.LTR; - var refresh = this.heightOracle.mustRefreshForWrapping(whiteSpace); - var measureContent = refresh || this.mustMeasureContent || this.contentDOMHeight != dom.clientHeight; - this.contentDOMHeight = dom.clientHeight; - this.mustMeasureContent = false; - var result = 0, - bias = 0; - var paddingTop = parseInt(style.paddingTop) || 0, - paddingBottom = parseInt(style.paddingBottom) || 0; - if (this.paddingTop != paddingTop || this.paddingBottom != paddingBottom) { - this.paddingTop = paddingTop; - this.paddingBottom = paddingBottom; - result |= 8 | 2; - } - if (this.editorWidth != view.scrollDOM.clientWidth) { - if (oracle.lineWrapping) measureContent = true; - this.editorWidth = view.scrollDOM.clientWidth; - result |= 8; - } - var pixelViewport = (this.printing ? fullPixelRange : visiblePixelRange)(dom, this.paddingTop); - var dTop = pixelViewport.top - this.pixelViewport.top, - dBottom = pixelViewport.bottom - this.pixelViewport.bottom; - this.pixelViewport = pixelViewport; - var inView = this.pixelViewport.bottom > this.pixelViewport.top && this.pixelViewport.right > this.pixelViewport.left; - if (inView != this.inView) { - this.inView = inView; - if (inView) measureContent = true; - } - if (!this.inView && !this.scrollTarget) return 0; - var contentWidth = dom.clientWidth; - if (this.contentDOMWidth != contentWidth || this.editorHeight != view.scrollDOM.clientHeight) { - this.contentDOMWidth = contentWidth; - this.editorHeight = view.scrollDOM.clientHeight; - result |= 8; - } - if (measureContent) { - var lineHeights = view.docView.measureVisibleLineHeights(this.viewport); - if (oracle.mustRefreshForHeights(lineHeights)) refresh = true; - if (refresh || (oracle.lineWrapping && Math.abs(contentWidth - this.contentDOMWidth) > oracle.charWidth)) { - var _view_docView_measureTextSize = view.docView.measureTextSize(), - lineHeight = _view_docView_measureTextSize.lineHeight, - charWidth = _view_docView_measureTextSize.charWidth; - refresh = lineHeight > 0 && oracle.refresh(whiteSpace, lineHeight, charWidth, contentWidth / charWidth, lineHeights); - if (refresh) { - view.docView.minWidth = 0; - result |= 8; - } - } - if (dTop > 0 && dBottom > 0) bias = Math.max(dTop, dBottom); - else if (dTop < 0 && dBottom < 0) bias = Math.min(dTop, dBottom); - oracle.heightChanged = false; + update(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + this.state = e.state; + var i = this.stateDeco; + this.stateDeco = this.state.facet(Qn).filter((a) => typeof a != "function"); + var n = e.changedRanges, + s = ct.extendWithRanges(n, fk(i, this.stateDeco, e ? e.changes : ke.empty(this.state.doc.length))), + o = this.heightMap.height; + (this.heightMap = this.heightMap.applyChanges(this.stateDeco, e.startState.doc, this.heightOracle.setDoc(this.state.doc), s)), this.heightMap.height != o && (e.flags |= 2); + var u = s.length ? this.mapViewport(this.viewport, e.changes) : this.viewport; + ((t && (t.range.head < u.from || t.range.head > u.to)) || !this.viewportIsAppropriate(u)) && (u = this.getViewport(0, t)); + var l = !e.changes.empty || e.flags & 2 || u.from != this.viewport.from || u.to != this.viewport.to; + (this.viewport = u), + this.updateForViewport(), + l && this.updateViewportLines(), + (this.lineGaps.length || this.viewport.to - this.viewport.from > 2e3 << 1) && this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps, e.changes))), + (e.flags |= this.computeVisibleRanges()), + t && (this.scrollTarget = t), + !this.mustEnforceCursorAssoc && e.selectionSet && e.view.lineWrapping && e.state.selection.main.empty && e.state.selection.main.assoc && !e.state.facet(Yg) && (this.mustEnforceCursorAssoc = !0); + } + measure(e) { + var t = e.contentDOM, + i = window.getComputedStyle(t), + n = this.heightOracle, + s = i.whiteSpace; + this.defaultTextDirection = i.direction == "rtl" ? _e.RTL : _e.LTR; + var o = this.heightOracle.mustRefreshForWrapping(s), + u = t.getBoundingClientRect(), + l = o || this.mustMeasureContent || this.contentDOMHeight != u.height; + (this.contentDOMHeight = u.height), (this.mustMeasureContent = !1); + var a = 0, + c = 0, + f = parseInt(i.paddingTop) || 0, + d = parseInt(i.paddingBottom) || 0; + (this.paddingTop != f || this.paddingBottom != d) && ((this.paddingTop = f), (this.paddingBottom = d), (a |= 10)), this.editorWidth != e.scrollDOM.clientWidth && (n.lineWrapping && (l = !0), (this.editorWidth = e.scrollDOM.clientWidth), (a |= 8)); + var p = (this.printing ? pk : dk)(t, this.paddingTop), + m = p.top - this.pixelViewport.top, + D = p.bottom - this.pixelViewport.bottom; + this.pixelViewport = p; + var g = this.pixelViewport.bottom > this.pixelViewport.top && this.pixelViewport.right > this.pixelViewport.left; + if ((g != this.inView && ((this.inView = g), g && (l = !0)), !this.inView && !this.scrollTarget)) return 0; + var b = u.width; + if (((this.contentDOMWidth != b || this.editorHeight != e.scrollDOM.clientHeight) && ((this.contentDOMWidth = u.width), (this.editorHeight = e.scrollDOM.clientHeight), (a |= 8)), l)) { + var A = e.docView.measureVisibleLineHeights(this.viewport); + if ((n.mustRefreshForHeights(A) && (o = !0), o || (n.lineWrapping && Math.abs(b - this.contentDOMWidth) > n.charWidth))) { + var _e_docView_measureTextSize = e.docView.measureTextSize(), + E = _e_docView_measureTextSize.lineHeight, + O = _e_docView_measureTextSize.charWidth; + (o = E > 0 && n.refresh(s, E, O, b / O, A)), o && ((e.docView.minWidth = 0), (a |= 8)); + } + m > 0 && D > 0 ? (c = Math.max(m, D)) : m < 0 && D < 0 && (c = Math.min(m, D)), (n.heightChanged = !1); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.viewports[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var vp = _step.value; - var heights = vp.from == this.viewport.from ? lineHeights : view.docView.measureVisibleLineHeights(vp); - this.heightMap = (refresh ? HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle, [new ChangedRange(0, 0, 0, view.state.doc.length)]) : this.heightMap).updateHeight(oracle, 0, refresh, new MeasuredHeights(vp.from, heights)); + var E1 = _step.value; + var O1 = E1.from == this.viewport.from ? A : e.docView.measureVisibleLineHeights(E1); + this.heightMap = (o ? We.empty().applyChanges(this.stateDeco, ce.empty, this.heightOracle, [new ct(0, 0, 0, e.state.doc.length)]) : this.heightMap).updateHeight(n, 0, o, new No(E1.from, O1)); } } catch (err) { _didIteratorError = true; @@ -16549,19 +13068,18 @@ var __generator = } } } - if (oracle.heightChanged) result |= 2; - } - var viewportChange = !this.viewportIsAppropriate(this.viewport, bias) || (this.scrollTarget && (this.scrollTarget.range.head < this.viewport.from || this.scrollTarget.range.head > this.viewport.to)); - if (viewportChange) this.viewport = this.getViewport(bias, this.scrollTarget); - this.updateForViewport(); - if (result & 2 || viewportChange) this.updateViewportLines(); - if (this.lineGaps.length || this.viewport.to - this.viewport.from > 2e3 << 1) this.updateLineGaps(this.ensureLineGaps(refresh ? [] : this.lineGaps, view)); - result |= this.computeVisibleRanges(); - if (this.mustEnforceCursorAssoc) { - this.mustEnforceCursorAssoc = false; - view.docView.enforceCursorAssoc(); + n.heightChanged && (a |= 2); } - return result; + var F = !this.viewportIsAppropriate(this.viewport, c) || (this.scrollTarget && (this.scrollTarget.range.head < this.viewport.from || this.scrollTarget.range.head > this.viewport.to)); + return ( + F && (this.viewport = this.getViewport(c, this.scrollTarget)), + this.updateForViewport(), + (a & 2 || F) && this.updateViewportLines(), + (this.lineGaps.length || this.viewport.to - this.viewport.from > 2e3 << 1) && this.updateLineGaps(this.ensureLineGaps(o ? [] : this.lineGaps, e)), + (a |= this.computeVisibleRanges()), + this.mustEnforceCursorAssoc && ((this.mustEnforceCursorAssoc = !1), e.docView.enforceCursorAssoc()), + a + ); } get visibleTop() { return this.scaler.fromDOM(this.pixelViewport.top); @@ -16569,56 +13087,55 @@ var __generator = get visibleBottom() { return this.scaler.fromDOM(this.pixelViewport.bottom); } - getViewport(bias, scrollTarget) { - var marginTop = 0.5 - Math.max(-0.5, Math.min(0.5, bias / 1e3 / 2)); - var map = this.heightMap, - doc2 = this.state.doc, + getViewport(e, t) { + var i = 0.5 - Math.max(-0.5, Math.min(0.5, e / 1e3 / 2)), + n = this.heightMap, + s = this.heightOracle, _this = this, - visibleTop = _this.visibleTop, - visibleBottom = _this.visibleBottom; - var viewport = new Viewport(map.lineAt(visibleTop - marginTop * 1e3, QueryType.ByHeight, doc2, 0, 0).from, map.lineAt(visibleBottom + (1 - marginTop) * 1e3, QueryType.ByHeight, doc2, 0, 0).to); - if (scrollTarget) { - var head = scrollTarget.range.head; - if (head < viewport.from || head > viewport.to) { - var viewHeight = Math.min(this.editorHeight, this.pixelViewport.bottom - this.pixelViewport.top); - var block = map.lineAt(head, QueryType.ByPos, doc2, 0, 0), - topPos; - if (scrollTarget.y == "center") topPos = (block.top + block.bottom) / 2 - viewHeight / 2; - else if (scrollTarget.y == "start" || (scrollTarget.y == "nearest" && head < viewport.from)) topPos = block.top; - else topPos = block.bottom - viewHeight; - viewport = new Viewport(map.lineAt(topPos - 1e3 / 2, QueryType.ByHeight, doc2, 0, 0).from, map.lineAt(topPos + viewHeight + 1e3 / 2, QueryType.ByHeight, doc2, 0, 0).to); - } - } - return viewport; - } - mapViewport(viewport, changes) { - var from = changes.mapPos(viewport.from, -1), - to = changes.mapPos(viewport.to, 1); - return new Viewport(this.heightMap.lineAt(from, QueryType.ByPos, this.state.doc, 0, 0).from, this.heightMap.lineAt(to, QueryType.ByPos, this.state.doc, 0, 0).to); + o = _this.visibleTop, + u = _this.visibleBottom, + l = new Ki(n.lineAt(o - i * 1e3, Ae.ByHeight, s, 0, 0).from, n.lineAt(u + (1 - i) * 1e3, Ae.ByHeight, s, 0, 0).to); + if (t) { + var _t_range = t.range, + a = _t_range.head; + if (a < l.from || a > l.to) { + var c = Math.min(this.editorHeight, this.pixelViewport.bottom - this.pixelViewport.top), + f = n.lineAt(a, Ae.ByPos, s, 0, 0), + d; + t.y == "center" ? (d = (f.top + f.bottom) / 2 - c / 2) : t.y == "start" || (t.y == "nearest" && a < l.from) ? (d = f.top) : (d = f.bottom - c), (l = new Ki(n.lineAt(d - 1e3 / 2, Ae.ByHeight, s, 0, 0).from, n.lineAt(d + c + 1e3 / 2, Ae.ByHeight, s, 0, 0).to)); + } + } + return l; + } + mapViewport(e, t) { + var i = t.mapPos(e.from, -1), + n = t.mapPos(e.to, 1); + return new Ki(this.heightMap.lineAt(i, Ae.ByPos, this.heightOracle, 0, 0).from, this.heightMap.lineAt(n, Ae.ByPos, this.heightOracle, 0, 0).to); } viewportIsAppropriate(param) { - var from = param.from, - to = param.to, - bias = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - if (!this.inView) return true; - var _this_heightMap_lineAt = this.heightMap.lineAt(from, QueryType.ByPos, this.state.doc, 0, 0), - top2 = _this_heightMap_lineAt.top; - var bottom = this.heightMap.lineAt(to, QueryType.ByPos, this.state.doc, 0, 0).bottom; - var _this = this, - visibleTop = _this.visibleTop, - visibleBottom = _this.visibleBottom; - return (from == 0 || top2 <= visibleTop - Math.max(10, Math.min(-bias, 250))) && (to == this.state.doc.length || bottom >= visibleBottom + Math.max(10, Math.min(bias, 250))) && top2 > visibleTop - 2 * 1e3 && bottom < visibleBottom + 2 * 1e3; + var e = param.from, + t = param.to, + i = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + if (!this.inView) return !0; + var _this_heightMap_lineAt = this.heightMap.lineAt(e, Ae.ByPos, this.heightOracle, 0, 0), + n = _this_heightMap_lineAt.top, + _this_heightMap_lineAt1 = this.heightMap.lineAt(t, Ae.ByPos, this.heightOracle, 0, 0), + s = _this_heightMap_lineAt1.bottom, + _this = this, + o = _this.visibleTop, + u = _this.visibleBottom; + return (e == 0 || n <= o - Math.max(10, Math.min(-i, 250))) && (t == this.state.doc.length || s >= u + Math.max(10, Math.min(i, 250))) && n > o - 2 * 1e3 && s < u + 2 * 1e3; } - mapLineGaps(gaps, changes) { - if (!gaps.length || changes.empty) return gaps; - var mapped = []; + mapLineGaps(e, t) { + if (!e.length || t.empty) return e; + var i = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = gaps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var gap = _step.value; - if (!changes.touchesRange(gap.from, gap.to)) mapped.push(new LineGap(changes.mapPos(gap.from), changes.mapPos(gap.to), gap.size)); + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + t.touchesRange(n.from, n.to) || i.push(new Nr(t.mapPos(n.from), t.mapPos(n.to), n.size)); } } catch (err) { _didIteratorError = true; @@ -16634,102 +13151,90 @@ var __generator = } } } - return mapped; + return i; } - ensureLineGaps(current, mayMeasure) { - var wrapping = this.heightOracle.lineWrapping; - var margin = wrapping ? 1e4 : 2e3, - halfMargin = margin >> 1, - doubleMargin = margin << 1; - if (this.defaultTextDirection != Direction.LTR && !wrapping) return []; - var gaps = []; - var addGap = /* @__PURE__ */ __name((from, to, line, structure) => { - if (to - from < halfMargin) return; - var sel = this.state.selection.main, - avoid = [sel.from]; - if (!sel.empty) avoid.push(sel.to); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = avoid[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var pos = _step.value; - if (pos > from && pos < to) { - addGap(from, pos - 10, line, structure); - addGap(pos + 10, to, line, structure); - return; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + ensureLineGaps(e, t) { + var i = this.heightOracle.lineWrapping, + n = i ? 1e4 : 2e3, + s = n >> 1, + o = n << 1; + if (this.defaultTextDirection != _e.LTR && !i) return []; + var u = [], + l = h((a, c, f, d) => { + if (c - a < s) return; + var p = this.state.selection.main, + m = [p.from]; + p.empty || m.push(p.to); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = m[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var g = _step.value; + if (g > a && g < c) { + l(a, g - 10, f, d), l(g + 10, c, f, d); + return; + } } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - var gap = find(current, (gap2) => gap2.from >= line.from && gap2.to <= line.to && Math.abs(gap2.from - from) < halfMargin && Math.abs(gap2.to - to) < halfMargin && !avoid.some((pos) => gap2.from < pos && gap2.to > pos)); - if (!gap) { - if (to < line.to && mayMeasure && wrapping && mayMeasure.visibleRanges.some((r) => r.from <= to && r.to >= to)) { - var lineStart = mayMeasure.moveToLineBoundary(EditorSelection.cursor(to), false, true).head; - if (lineStart > from) to = lineStart; + var D = gk(e, (g) => g.from >= f.from && g.to <= f.to && Math.abs(g.from - a) < s && Math.abs(g.to - c) < s && !m.some((b) => g.from < b && g.to > b)); + if (!D) { + if (c < f.to && t && i && t.visibleRanges.some((g) => g.from <= c && g.to >= c)) { + var g1 = t.moveToLineBoundary(z.cursor(c), !1, !0).head; + g1 > a && (c = g1); + } + D = new Nr(a, c, this.gapSize(f, a, c, d)); } - gap = new LineGap(from, to, this.gapSize(line, from, to, structure)); - } - gaps.push(gap); - }, "addGap"); + u.push(D); + }, "addGap"); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.viewportLines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var line = _step.value; - if (line.length < doubleMargin) continue; - var structure = lineStructure(line.from, line.to, this.stateDeco); - if (structure.total < doubleMargin) continue; - var target = this.scrollTarget ? this.scrollTarget.range.head : null; - var viewFrom = void 0, - viewTo = void 0; - if (wrapping) { - var marginHeight = (margin / this.heightOracle.lineLength) * this.heightOracle.lineHeight; - var top2 = void 0, - bot = void 0; - if (target != null) { - var targetFrac = findFraction(structure, target); - var spaceFrac = ((this.visibleBottom - this.visibleTop) / 2 + marginHeight) / line.height; - top2 = targetFrac - spaceFrac; - bot = targetFrac + spaceFrac; - } else { - top2 = (this.visibleTop - line.top - marginHeight) / line.height; - bot = (this.visibleBottom - line.top + marginHeight) / line.height; - } - viewFrom = findPosition(structure, top2); - viewTo = findPosition(structure, bot); + var a = _step.value; + if (a.length < o) continue; + var c = mk(a.from, a.to, this.stateDeco); + if (c.total < o) continue; + var f = this.scrollTarget ? this.scrollTarget.range.head : null, + d = void 0, + p = void 0; + if (i) { + var m = (n / this.heightOracle.lineLength) * this.heightOracle.lineHeight, + D = void 0, + g = void 0; + if (f != null) { + var b = Bo(c, f), + F = ((this.visibleBottom - this.visibleTop) / 2 + m) / a.height; + (D = b - F), (g = b + F); + } else (D = (this.visibleTop - a.top - m) / a.height), (g = (this.visibleBottom - a.top + m) / a.height); + (d = So(c, D)), (p = So(c, g)); } else { - var totalWidth = structure.total * this.heightOracle.charWidth; - var marginWidth = margin * this.heightOracle.charWidth; - var left = void 0, - right = void 0; - if (target != null) { - var targetFrac1 = findFraction(structure, target); - var spaceFrac1 = ((this.pixelViewport.right - this.pixelViewport.left) / 2 + marginWidth) / totalWidth; - left = targetFrac1 - spaceFrac1; - right = targetFrac1 + spaceFrac1; - } else { - left = (this.pixelViewport.left - marginWidth) / totalWidth; - right = (this.pixelViewport.right + marginWidth) / totalWidth; - } - viewFrom = findPosition(structure, left); - viewTo = findPosition(structure, right); - } - if (viewFrom > line.from) addGap(line.from, viewFrom, line, structure); - if (viewTo < line.to) addGap(viewTo, line.to, line, structure); + var m1 = c.total * this.heightOracle.charWidth, + D1 = n * this.heightOracle.charWidth, + g1 = void 0, + b1 = void 0; + if (f != null) { + var F1 = Bo(c, f), + A = ((this.pixelViewport.right - this.pixelViewport.left) / 2 + D1) / m1; + (g1 = F1 - A), (b1 = F1 + A); + } else (g1 = (this.pixelViewport.left - D1) / m1), (b1 = (this.pixelViewport.right + D1) / m1); + (d = So(c, g1)), (p = So(c, b1)); + } + d > a.from && l(a.from, d, a, c), p < a.to && l(p, a.to, a, c); } } catch (err) { _didIteratorError = true; @@ -16745,53 +13250,42 @@ var __generator = } } } - return gaps; + return u; } - gapSize(line, from, to, structure) { - var fraction = findFraction(structure, to) - findFraction(structure, from); - if (this.heightOracle.lineWrapping) { - return line.height * fraction; - } else { - return structure.total * this.heightOracle.charWidth * fraction; - } + gapSize(e, t, i, n) { + var s = Bo(n, i) - Bo(n, t); + return this.heightOracle.lineWrapping ? e.height * s : n.total * this.heightOracle.charWidth * s; } - updateLineGaps(gaps) { - if (!LineGap.same(gaps, this.lineGaps)) { - this.lineGaps = gaps; - this.lineGapDeco = Decoration.set(gaps.map((gap) => gap.draw(this.heightOracle.lineWrapping))); - } + updateLineGaps(e) { + Nr.same(e, this.lineGaps) || ((this.lineGaps = e), (this.lineGapDeco = he.set(e.map((t) => t.draw(this.heightOracle.lineWrapping))))); } computeVisibleRanges() { - var deco = this.stateDeco; - if (this.lineGaps.length) deco = deco.concat(this.lineGapDeco); - var ranges = []; - RangeSet.spans( - deco, + var e = this.stateDeco; + this.lineGaps.length && (e = e.concat(this.lineGapDeco)); + var t = []; + pe.spans( + e, this.viewport.from, this.viewport.to, { - span(from, to) { - ranges.push({ - from, - to, - }); + span(n, s) { + t.push({ from: n, to: s }); }, point() {}, }, 20 ); - var changed = ranges.length != this.visibleRanges.length || this.visibleRanges.some((r, i) => r.from != ranges[i].from || r.to != ranges[i].to); - this.visibleRanges = ranges; - return changed ? 4 : 0; + var i = t.length != this.visibleRanges.length || this.visibleRanges.some((n, s) => n.from != t[s].from || n.to != t[s].to); + return (this.visibleRanges = t), i ? 4 : 0; } - lineBlockAt(pos) { - return (pos >= this.viewport.from && pos <= this.viewport.to && this.viewportLines.find((b) => b.from <= pos && b.to >= pos)) || scaleBlock(this.heightMap.lineAt(pos, QueryType.ByPos, this.state.doc, 0, 0), this.scaler); + lineBlockAt(e) { + return (e >= this.viewport.from && e <= this.viewport.to && this.viewportLines.find((t) => t.from <= e && t.to >= e)) || Mn(this.heightMap.lineAt(e, Ae.ByPos, this.heightOracle, 0, 0), this.scaler); } - lineBlockAtHeight(height) { - return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(height), QueryType.ByHeight, this.state.doc, 0, 0), this.scaler); + lineBlockAtHeight(e) { + return Mn(this.heightMap.lineAt(this.scaler.fromDOM(e), Ae.ByHeight, this.heightOracle, 0, 0), this.scaler); } - elementAtHeight(height) { - return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(height), this.state.doc, 0, 0), this.scaler); + elementAtHeight(e) { + return Mn(this.heightMap.blockAt(this.scaler.fromDOM(e), this.heightOracle, 0, 0), this.scaler); } get docHeight() { return this.scaler.toDOM(this.heightMap.height); @@ -16799,115 +13293,95 @@ var __generator = get contentHeight() { return this.docHeight + this.paddingTop + this.paddingBottom; } - constructor(state) { - this.state = state; - this.pixelViewport = { - left: 0, - right: window.innerWidth, - top: 0, - bottom: 0, - }; - this.inView = true; - this.paddingTop = 0; - this.paddingBottom = 0; - this.contentDOMWidth = 0; - this.contentDOMHeight = 0; - this.editorHeight = 0; - this.editorWidth = 0; - this.scaler = IdScaler; - this.scrollTarget = null; - this.printing = false; - this.mustMeasureContent = true; - this.defaultTextDirection = Direction.LTR; - this.visibleRanges = []; - this.mustEnforceCursorAssoc = false; - var guessWrapping = state.facet(contentAttributes).some((v) => typeof v != "function" && v.class == "cm-lineWrapping"); - this.heightOracle = new HeightOracle(guessWrapping); - this.stateDeco = state.facet(decorations).filter((d) => typeof d != "function"); - this.heightMap = HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle.setDoc(state.doc), [new ChangedRange(0, 0, 0, state.doc.length)]); - this.viewport = this.getViewport(0, null); - this.updateViewportLines(); - this.updateForViewport(); - this.lineGaps = this.ensureLineGaps([]); - this.lineGapDeco = Decoration.set(this.lineGaps.map((gap) => gap.draw(false))); - this.computeVisibleRanges(); + constructor(e) { + (this.state = e), + (this.pixelViewport = { left: 0, right: window.innerWidth, top: 0, bottom: 0 }), + (this.inView = !0), + (this.paddingTop = 0), + (this.paddingBottom = 0), + (this.contentDOMWidth = 0), + (this.contentDOMHeight = 0), + (this.editorHeight = 0), + (this.editorWidth = 0), + (this.scaler = pg), + (this.scrollTarget = null), + (this.printing = !1), + (this.mustMeasureContent = !0), + (this.defaultTextDirection = _e.LTR), + (this.visibleRanges = []), + (this.mustEnforceCursorAssoc = !1); + var t = e.facet(Dh).some((i) => typeof i != "function" && i.class == "cm-lineWrapping"); + (this.heightOracle = new Io(t)), + (this.stateDeco = e.facet(Qn).filter((i) => typeof i != "function")), + (this.heightMap = We.empty().applyChanges(this.stateDeco, ce.empty, this.heightOracle.setDoc(e.doc), [new ct(0, 0, 0, e.doc.length)])), + (this.viewport = this.getViewport(0, null)), + this.updateViewportLines(), + this.updateForViewport(), + (this.lineGaps = this.ensureLineGaps([])), + (this.lineGapDeco = he.set(this.lineGaps.map((i) => i.draw(!1)))), + this.computeVisibleRanges(); } }; - __name(ViewState, "ViewState"); - var Viewport = class Viewport { - constructor(from, to) { - this.from = from; - this.to = to; + h(Hn, "ViewState"); + var Ki = class Ki { + constructor(e, t) { + (this.from = e), (this.to = t); } }; - __name(Viewport, "Viewport"); - function lineStructure(from, to, stateDeco) { - var ranges = [], - pos = from, - total = 0; - RangeSet.spans( - stateDeco, - from, - to, - { - span() {}, - point(from2, to2) { - if (from2 > pos) { - ranges.push({ - from: pos, - to: from2, - }); - total += from2 - pos; - } - pos = to2; + h(Ki, "Viewport"); + function mk(r, e, t) { + var i = [], + n = r, + s = 0; + return ( + pe.spans( + t, + r, + e, + { + span() {}, + point(o, u) { + o > n && (i.push({ from: n, to: o }), (s += o - n)), (n = u); + }, }, - }, - 20 + 20 + ), + n < e && (i.push({ from: n, to: e }), (s += e - n)), + { total: s, ranges: i } ); - if (pos < to) { - ranges.push({ - from: pos, - to, - }); - total += to - pos; - } - return { - total, - ranges, - }; } - __name(lineStructure, "lineStructure"); - function findPosition(param, ratio) { - var total = param.total, - ranges = param.ranges; - if (ratio <= 0) return ranges[0].from; - if (ratio >= 1) return ranges[ranges.length - 1].to; - var dist = Math.floor(total * ratio); - for (var i = 0; ; i++) { - var _ranges_i = ranges[i], - from = _ranges_i.from, - to = _ranges_i.to, - size = to - from; - if (dist <= size) return from + dist; - dist -= size; - } - } - __name(findPosition, "findPosition"); - function findFraction(structure, pos) { - var counted = 0; + h(mk, "lineStructure"); + function So(param, t) { + var r = param.total, + e = param.ranges; + if (t <= 0) return e[0].from; + if (t >= 1) return e[e.length - 1].to; + var i = Math.floor(r * t); + for (var n = 0; ; n++) { + var _e_n = e[n], + s = _e_n.from, + o = _e_n.to, + u = o - s; + if (i <= u) return s + i; + i -= u; + } + } + h(So, "findPosition"); + function Bo(r, e) { + var t = 0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = structure.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = r.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step_value = _step.value, - from = _step_value.from, - to = _step_value.to; - if (pos <= to) { - counted += pos - from; + i = _step_value.from, + n = _step_value.to; + if (e <= n) { + t += e - i; break; } - counted += to - from; + t += n - i; } } catch (err) { _didIteratorError = true; @@ -16923,17 +13397,17 @@ var __generator = } } } - return counted / structure.total; + return t / r.total; } - __name(findFraction, "findFraction"); - function find(array, f) { + h(Bo, "findFraction"); + function gk(r, e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var val = _step.value; - if (f(val)) return val; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + if (e(t)) return t; } } catch (err) { _didIteratorError = true; @@ -16949,705 +13423,459 @@ var __generator = } } } - return void 0; } - __name(find, "find"); - var IdScaler = { - toDOM(n) { - return n; - }, - fromDOM(n) { - return n; + h(gk, "find"); + var pg = { + toDOM(r) { + return r; + }, + fromDOM(r) { + return r; + }, + scale: 1, }, - scale: 1, - }; - var BigScaler = class BigScaler { - toDOM(n) { - for (var i = 0, base2 = 0, domBase = 0; ; i++) { - var vp = i < this.viewports.length ? this.viewports[i] : null; - if (!vp || n < vp.top) return domBase + (n - base2) * this.scale; - if (n <= vp.bottom) return vp.domTop + (n - vp.top); - base2 = vp.bottom; - domBase = vp.domBottom; - } - } - fromDOM(n) { - for (var i = 0, base2 = 0, domBase = 0; ; i++) { - var vp = i < this.viewports.length ? this.viewports[i] : null; - if (!vp || n < vp.domTop) return base2 + (n - domBase) / this.scale; - if (n <= vp.domBottom) return vp.top + (n - vp.domTop); - base2 = vp.bottom; - domBase = vp.domBottom; - } - } - constructor(doc2, heightMap, viewports) { - var vpHeight = 0, - base2 = 0, - domBase = 0; - this.viewports = viewports.map((param) => { - var from = param.from, - to = param.to; - var top2 = heightMap.lineAt(from, QueryType.ByPos, doc2, 0, 0).top; - var bottom = heightMap.lineAt(to, QueryType.ByPos, doc2, 0, 0).bottom; - vpHeight += bottom - top2; - return { - from, - to, - top: top2, - bottom, - domTop: 0, - domBottom: 0, - }; - }); - this.scale = (7e6 - vpHeight) / (heightMap.height - vpHeight); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.viewports[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var obj = _step.value; - obj.domTop = domBase + (obj.top - base2) * this.scale; - domBase = obj.domBottom = obj.domTop + (obj.bottom - obj.top); - base2 = obj.bottom; + Ho = class Ho { + toDOM(e) { + for (var t = 0, i = 0, n = 0; ; t++) { + var s = t < this.viewports.length ? this.viewports[t] : null; + if (!s || e < s.top) return n + (e - i) * this.scale; + if (e <= s.bottom) return s.domTop + (e - s.top); + (i = s.bottom), (n = s.domBottom); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + } + fromDOM(e) { + for (var t = 0, i = 0, n = 0; ; t++) { + var s = t < this.viewports.length ? this.viewports[t] : null; + if (!s || e < s.domTop) return i + (e - n) / this.scale; + if (e <= s.domBottom) return s.top + (e - s.domTop); + (i = s.bottom), (n = s.domBottom); + } + } + constructor(e, t, i) { + var n = 0, + s = 0, + o = 0; + (this.viewports = i.map((param) => { + var u = param.from, + l = param.to; + var a = t.lineAt(u, Ae.ByPos, e, 0, 0).top, + c = t.lineAt(l, Ae.ByPos, e, 0, 0).bottom; + return (n += c - a), { from: u, to: l, top: a, bottom: c, domTop: 0, domBottom: 0 }; + })), + (this.scale = (7e6 - n) / (t.height - n)); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.viewports[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var u = _step.value; + (u.domTop = o + (u.top - s) * this.scale), (o = u.domBottom = u.domTop + (u.bottom - u.top)), (s = u.bottom); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } } - } - }; - __name(BigScaler, "BigScaler"); - function scaleBlock(block, scaler) { - if (scaler.scale == 1) return block; - var bTop = scaler.toDOM(block.top), - bBottom = scaler.toDOM(block.bottom); - return new BlockInfo(block.from, block.length, bTop, bBottom - bTop, Array.isArray(block.type) ? block.type.map((b) => scaleBlock(b, scaler)) : block.type); - } - __name(scaleBlock, "scaleBlock"); - var theme = /* @__PURE__ */ Facet.define({ - combine: (strs) => strs.join(" "), - }); - var darkTheme = /* @__PURE__ */ Facet.define({ - combine: (values) => values.indexOf(true) > -1, - }); - var baseThemeID = /* @__PURE__ */ StyleModule.newName(); - var baseLightID = /* @__PURE__ */ StyleModule.newName(); - var baseDarkID = /* @__PURE__ */ StyleModule.newName(); - var lightDarkIDs = { - "&light": "." + baseLightID, - "&dark": "." + baseDarkID, - }; - function buildTheme(main, spec, scopes) { - return new StyleModule(spec, { - finish(sel) { - return /&/.test(sel) - ? sel.replace(/&\w*/, (m) => { - if (m == "&") return main; - if (!scopes || !scopes[m]) throw new RangeError("Unsupported selector: ".concat(m)); - return scopes[m]; + }; + h(Ho, "BigScaler"); + function Mn(r, e) { + if (e.scale == 1) return r; + var t = e.toDOM(r.top), + i = e.toDOM(r.bottom); + return new bt(r.from, r.length, t, i - t, Array.isArray(r.type) ? r.type.map((n) => Mn(n, e)) : r.type); + } + h(Mn, "scaleBlock"); + var _o = H.define({ combine: (r) => r.join(" ") }), + hh = H.define({ combine: (r) => r.indexOf(!0) > -1 }), + ch = lt.newName(), + fD = lt.newName(), + dD = lt.newName(), + pD = { "&light": "." + fD, "&dark": "." + dD }; + function fh(r, e, t) { + return new lt(e, { + finish(i) { + return /&/.test(i) + ? i.replace(/&\w*/, (n) => { + if (n == "&") return r; + if (!t || !t[n]) throw new RangeError("Unsupported selector: ".concat(n)); + return t[n]; }) - : main + " " + sel; + : r + " " + i; }, }); } - __name(buildTheme, "buildTheme"); - var baseTheme$1 = /* @__PURE__ */ buildTheme( - "." + baseThemeID, - { - "&.cm-editor": { - position: "relative !important", - boxSizing: "border-box", - "&.cm-focused": { - outline: "1px dotted #212121", - }, - display: "flex !important", - flexDirection: "column", - }, - ".cm-scroller": { - display: "flex !important", - alignItems: "flex-start !important", - fontFamily: "monospace", - lineHeight: 1.4, - height: "100%", - overflowX: "auto", - position: "relative", - zIndex: 0, - }, - ".cm-content": { - margin: 0, - flexGrow: 2, - flexShrink: 0, - display: "block", - whiteSpace: "pre", - wordWrap: "normal", - boxSizing: "border-box", - padding: "4px 0", - outline: "none", - "&[contenteditable=true]": { - WebkitUserModify: "read-write-plaintext-only", - }, - }, - ".cm-lineWrapping": { - whiteSpace_fallback: "pre-wrap", - whiteSpace: "break-spaces", - wordBreak: "break-word", - overflowWrap: "anywhere", - flexShrink: 1, - }, - "&light .cm-content": { - caretColor: "black", - }, - "&dark .cm-content": { - caretColor: "white", - }, - ".cm-line": { - display: "block", - padding: "0 2px 0 6px", - }, - ".cm-layer": { - contain: "size style", - "& > *": { - position: "absolute", - }, - }, - "&light .cm-selectionBackground": { - background: "#d9d9d9", - }, - "&dark .cm-selectionBackground": { - background: "#222", - }, - "&light.cm-focused .cm-selectionBackground": { - background: "#d7d4f0", - }, - "&dark.cm-focused .cm-selectionBackground": { - background: "#233", - }, - ".cm-cursorLayer": { - pointerEvents: "none", - }, - "&.cm-focused .cm-cursorLayer": { - animation: "steps(1) cm-blink 1.2s infinite", - }, - "@keyframes cm-blink": { - "0%": {}, - "50%": { - opacity: 0, - }, - "100%": {}, - }, - "@keyframes cm-blink2": { - "0%": {}, - "50%": { - opacity: 0, - }, - "100%": {}, - }, - ".cm-cursor, .cm-dropCursor": { - borderLeft: "1.2px solid black", - marginLeft: "-0.6px", - pointerEvents: "none", - }, - ".cm-cursor": { - display: "none", - }, - "&dark .cm-cursor": { - borderLeftColor: "#444", - }, - "&.cm-focused .cm-cursor": { - display: "block", - }, - "&light .cm-activeLine": { - backgroundColor: "#cceeff44", - }, - "&dark .cm-activeLine": { - backgroundColor: "#99eeff33", - }, - "&light .cm-specialChar": { - color: "red", - }, - "&dark .cm-specialChar": { - color: "#f78", - }, - ".cm-gutters": { - flexShrink: 0, - display: "flex", - height: "100%", - boxSizing: "border-box", - left: 0, - zIndex: 200, - }, - "&light .cm-gutters": { - backgroundColor: "#f5f5f5", - color: "#6c6c6c", - borderRight: "1px solid #ddd", - }, - "&dark .cm-gutters": { - backgroundColor: "#333338", - color: "#ccc", - }, - ".cm-gutter": { - display: "flex !important", - flexDirection: "column", - flexShrink: 0, - boxSizing: "border-box", - minHeight: "100%", - overflow: "hidden", - }, - ".cm-gutterElement": { - boxSizing: "border-box", - }, - ".cm-lineNumbers .cm-gutterElement": { - padding: "0 3px 0 5px", - minWidth: "20px", - textAlign: "right", - whiteSpace: "nowrap", - }, - "&light .cm-activeLineGutter": { - backgroundColor: "#e2f2ff", - }, - "&dark .cm-activeLineGutter": { - backgroundColor: "#222227", - }, - ".cm-panels": { - boxSizing: "border-box", - position: "sticky", - left: 0, - right: 0, - }, - "&light .cm-panels": { - backgroundColor: "#f5f5f5", - color: "black", - }, - "&light .cm-panels-top": { - borderBottom: "1px solid #ddd", - }, - "&light .cm-panels-bottom": { - borderTop: "1px solid #ddd", - }, - "&dark .cm-panels": { - backgroundColor: "#333338", - color: "white", - }, - ".cm-tab": { - display: "inline-block", - overflow: "hidden", - verticalAlign: "bottom", - }, - ".cm-widgetBuffer": { - verticalAlign: "text-top", - height: "1em", - width: 0, - display: "inline", - }, - ".cm-placeholder": { - color: "#888", - display: "inline-block", - verticalAlign: "top", - }, - ".cm-highlightSpace:before": { - content: "attr(data-display)", - position: "absolute", - pointerEvents: "none", - color: "#888", - }, - ".cm-highlightTab": { - backgroundImage: 'url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>\')', - backgroundSize: "auto 100%", - backgroundPosition: "right 90%", - backgroundRepeat: "no-repeat", - }, - ".cm-trailingSpace": { - backgroundColor: "#ff332255", - }, - ".cm-button": { - verticalAlign: "middle", - color: "inherit", - fontSize: "70%", - padding: ".2em 1em", - borderRadius: "1px", - }, - "&light .cm-button": { - backgroundImage: "linear-gradient(#eff1f5, #d9d9df)", - border: "1px solid #888", - "&:active": { - backgroundImage: "linear-gradient(#b4b4b4, #d0d3d6)", - }, - }, - "&dark .cm-button": { - backgroundImage: "linear-gradient(#393939, #111)", - border: "1px solid #888", - "&:active": { - backgroundImage: "linear-gradient(#111, #333)", - }, - }, - ".cm-textfield": { - verticalAlign: "middle", - color: "inherit", - fontSize: "70%", - border: "1px solid silver", - padding: ".2em .5em", - }, - "&light .cm-textfield": { - backgroundColor: "white", - }, - "&dark .cm-textfield": { - border: "1px solid #555", - backgroundColor: "inherit", - }, - }, - lightDarkIDs - ); - var DOMChange = class DOMChange { - constructor(view, start, end, typeOver) { - this.typeOver = typeOver; - this.bounds = null; - this.text = ""; - var _view_docView = view.docView, - iHead = _view_docView.impreciseHead, - iAnchor = _view_docView.impreciseAnchor; - if (view.state.readOnly && start > -1) { - this.newSel = null; - } else if (start > -1 && (this.bounds = view.docView.domBoundsAround(start, end, 0))) { - var selPoints = iHead || iAnchor ? [] : selectionPoints(view); - var reader = new DOMReader(selPoints, view.state); - reader.readRange(this.bounds.startDOM, this.bounds.endDOM); - this.text = reader.text; - this.newSel = selectionFromPoints(selPoints, this.bounds.from); - } else { - var domSel = view.observer.selectionRange; - var head = (iHead && iHead.node == domSel.focusNode && iHead.offset == domSel.focusOffset) || !contains(view.contentDOM, domSel.focusNode) ? view.state.selection.main.head : view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset); - var anchor = (iAnchor && iAnchor.node == domSel.anchorNode && iAnchor.offset == domSel.anchorOffset) || !contains(view.contentDOM, domSel.anchorNode) ? view.state.selection.main.anchor : view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset); - this.newSel = EditorSelection.single(anchor, head); - } - } - }; - __name(DOMChange, "DOMChange"); - function applyDOMChange(view, domChange) { - var change; - var newSel = domChange.newSel, - sel = view.state.selection.main; - if (domChange.bounds) { - var _domChange_bounds = domChange.bounds, - from = _domChange_bounds.from, - to = _domChange_bounds.to; - var preferredPos = sel.from, - preferredSide = null; - if ((view.inputState.lastKeyCode === 8 && view.inputState.lastKeyTime > Date.now() - 100) || (browser.android && domChange.text.length < to - from)) { - preferredPos = sel.to; - preferredSide = "end"; - } - var diff = findDiff(view.state.doc.sliceString(from, to, LineBreakPlaceholder), domChange.text, preferredPos - from, preferredSide); - if (diff) { - if (browser.chrome && view.inputState.lastKeyCode == 13 && diff.toB == diff.from + 2 && domChange.text.slice(diff.from, diff.toB) == LineBreakPlaceholder + LineBreakPlaceholder) diff.toB--; - change = { - from: from + diff.from, - to: from + diff.toA, - insert: Text.of(domChange.text.slice(diff.from, diff.toB).split(LineBreakPlaceholder)), - }; + h(fh, "buildTheme"); + var Dk = fh( + "." + ch, + { + "&": { position: "relative !important", boxSizing: "border-box", "&.cm-focused": { outline: "1px dotted #212121" }, display: "flex !important", flexDirection: "column" }, + ".cm-scroller": { display: "flex !important", alignItems: "flex-start !important", fontFamily: "monospace", lineHeight: 1.4, height: "100%", overflowX: "auto", position: "relative", zIndex: 0 }, + ".cm-content": { margin: 0, flexGrow: 2, flexShrink: 0, display: "block", whiteSpace: "pre", wordWrap: "normal", boxSizing: "border-box", padding: "4px 0", outline: "none", "&[contenteditable=true]": { WebkitUserModify: "read-write-plaintext-only" } }, + ".cm-lineWrapping": { whiteSpace_fallback: "pre-wrap", whiteSpace: "break-spaces", wordBreak: "break-word", overflowWrap: "anywhere", flexShrink: 1 }, + "&light .cm-content": { caretColor: "black" }, + "&dark .cm-content": { caretColor: "white" }, + ".cm-line": { display: "block", padding: "0 2px 0 6px" }, + ".cm-layer": { contain: "size style", "& > *": { position: "absolute" } }, + "&light .cm-selectionBackground": { background: "#d9d9d9" }, + "&dark .cm-selectionBackground": { background: "#222" }, + "&light.cm-focused .cm-selectionBackground": { background: "#d7d4f0" }, + "&dark.cm-focused .cm-selectionBackground": { background: "#233" }, + ".cm-cursorLayer": { pointerEvents: "none" }, + "&.cm-focused .cm-cursorLayer": { animation: "steps(1) cm-blink 1.2s infinite" }, + "@keyframes cm-blink": { "0%": {}, "50%": { opacity: 0 }, "100%": {} }, + "@keyframes cm-blink2": { "0%": {}, "50%": { opacity: 0 }, "100%": {} }, + ".cm-cursor, .cm-dropCursor": { borderLeft: "1.2px solid black", marginLeft: "-0.6px", pointerEvents: "none" }, + ".cm-cursor": { display: "none" }, + "&dark .cm-cursor": { borderLeftColor: "#444" }, + ".cm-dropCursor": { position: "absolute" }, + "&.cm-focused .cm-cursor": { display: "block" }, + "&light .cm-activeLine": { backgroundColor: "#cceeff44" }, + "&dark .cm-activeLine": { backgroundColor: "#99eeff33" }, + "&light .cm-specialChar": { color: "red" }, + "&dark .cm-specialChar": { color: "#f78" }, + ".cm-gutters": { flexShrink: 0, display: "flex", height: "100%", boxSizing: "border-box", left: 0, zIndex: 200 }, + "&light .cm-gutters": { backgroundColor: "#f5f5f5", color: "#6c6c6c", borderRight: "1px solid #ddd" }, + "&dark .cm-gutters": { backgroundColor: "#333338", color: "#ccc" }, + ".cm-gutter": { display: "flex !important", flexDirection: "column", flexShrink: 0, boxSizing: "border-box", minHeight: "100%", overflow: "hidden" }, + ".cm-gutterElement": { boxSizing: "border-box" }, + ".cm-lineNumbers .cm-gutterElement": { padding: "0 3px 0 5px", minWidth: "20px", textAlign: "right", whiteSpace: "nowrap" }, + "&light .cm-activeLineGutter": { backgroundColor: "#e2f2ff" }, + "&dark .cm-activeLineGutter": { backgroundColor: "#222227" }, + ".cm-panels": { boxSizing: "border-box", position: "sticky", left: 0, right: 0 }, + "&light .cm-panels": { backgroundColor: "#f5f5f5", color: "black" }, + "&light .cm-panels-top": { borderBottom: "1px solid #ddd" }, + "&light .cm-panels-bottom": { borderTop: "1px solid #ddd" }, + "&dark .cm-panels": { backgroundColor: "#333338", color: "white" }, + ".cm-tab": { display: "inline-block", overflow: "hidden", verticalAlign: "bottom" }, + ".cm-widgetBuffer": { verticalAlign: "text-top", height: "1em", width: 0, display: "inline" }, + ".cm-placeholder": { color: "#888", display: "inline-block", verticalAlign: "top" }, + ".cm-highlightSpace:before": { content: "attr(data-display)", position: "absolute", pointerEvents: "none", color: "#888" }, + ".cm-highlightTab": { backgroundImage: 'url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>\')', backgroundSize: "auto 100%", backgroundPosition: "right 90%", backgroundRepeat: "no-repeat" }, + ".cm-trailingSpace": { backgroundColor: "#ff332255" }, + ".cm-button": { verticalAlign: "middle", color: "inherit", fontSize: "70%", padding: ".2em 1em", borderRadius: "1px" }, + "&light .cm-button": { backgroundImage: "linear-gradient(#eff1f5, #d9d9df)", border: "1px solid #888", "&:active": { backgroundImage: "linear-gradient(#b4b4b4, #d0d3d6)" } }, + "&dark .cm-button": { backgroundImage: "linear-gradient(#393939, #111)", border: "1px solid #888", "&:active": { backgroundImage: "linear-gradient(#111, #333)" } }, + ".cm-textfield": { verticalAlign: "middle", color: "inherit", fontSize: "70%", border: "1px solid silver", padding: ".2em .5em" }, + "&light .cm-textfield": { backgroundColor: "white" }, + "&dark .cm-textfield": { border: "1px solid #555", backgroundColor: "inherit" }, + }, + pD + ), + Uo = class Uo { + constructor(e, t, i, n) { + (this.typeOver = n), (this.bounds = null), (this.text = ""); + var _e_docView = e.docView, + s = _e_docView.impreciseHead, + o = _e_docView.impreciseAnchor; + if (e.state.readOnly && t > -1) this.newSel = null; + else if (t > -1 && (this.bounds = e.docView.domBoundsAround(t, i, 0))) { + var u = s || o ? [] : Fk(e), + l = new Nn(u, e.state); + l.readRange(this.bounds.startDOM, this.bounds.endDOM), (this.text = l.text), (this.newSel = yk(u, this.bounds.from)); + } else { + var u1 = e.observer.selectionRange, + l1 = (s && s.node == u1.focusNode && s.offset == u1.focusOffset) || !Wr(e.contentDOM, u1.focusNode) ? e.state.selection.main.head : e.docView.posFromDOM(u1.focusNode, u1.focusOffset), + a = (o && o.node == u1.anchorNode && o.offset == u1.anchorOffset) || !Wr(e.contentDOM, u1.anchorNode) ? e.state.selection.main.anchor : e.docView.posFromDOM(u1.anchorNode, u1.anchorOffset); + this.newSel = z.single(a, l1); + } } - } else if (newSel && (!view.hasFocus || !view.state.facet(editable) || newSel.main.eq(sel))) { - newSel = null; - } - if (!change && !newSel) return false; - if (!change && domChange.typeOver && !sel.empty && newSel && newSel.main.empty) { - change = { - from: sel.from, - to: sel.to, - insert: view.state.doc.slice(sel.from, sel.to), - }; - } else if (change && change.from >= sel.from && change.to <= sel.to && (change.from != sel.from || change.to != sel.to) && sel.to - sel.from - (change.to - change.from) <= 4) { - change = { - from: sel.from, - to: sel.to, - insert: view.state.doc.slice(sel.from, change.from).append(change.insert).append(view.state.doc.slice(change.to, sel.to)), - }; - } else if ((browser.mac || browser.android) && change && change.from == change.to && change.from == sel.head - 1 && /^\. ?$/.test(change.insert.toString())) { - if (newSel && change.insert.length == 2) newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1); - change = { - from: sel.from, - to: sel.to, - insert: Text.of([" "]), - }; - } else if (browser.chrome && change && change.from == change.to && change.from == sel.head && change.insert.toString() == "\n " && view.lineWrapping) { - if (newSel) newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1); - change = { - from: sel.from, - to: sel.to, - insert: Text.of([" "]), - }; - } - if (change) { - var startState = view.state; - if (browser.ios && view.inputState.flushIOSKey(view)) return true; - if ( - browser.android && - ((change.from == sel.from && change.to == sel.to && change.insert.length == 1 && change.insert.lines == 2 && dispatchKey(view.contentDOM, "Enter", 13)) || - (change.from == sel.from - 1 && change.to == sel.to && change.insert.length == 0 && dispatchKey(view.contentDOM, "Backspace", 8)) || - (change.from == sel.from && change.to == sel.to + 1 && change.insert.length == 0 && dispatchKey(view.contentDOM, "Delete", 46))) - ) - return true; - var text2 = change.insert.toString(); - if (view.state.facet(inputHandler).some((h) => h(view, change.from, change.to, text2))) return true; - if (view.inputState.composing >= 0) view.inputState.composing++; - var tr; - if (change.from >= sel.from && change.to <= sel.to && change.to - change.from >= (sel.to - sel.from) / 3 && (!newSel || (newSel.main.empty && newSel.main.from == change.from + change.insert.length)) && view.inputState.composing < 0) { - var before = sel.from < change.from ? startState.sliceDoc(sel.from, change.from) : ""; - var after = sel.to > change.to ? startState.sliceDoc(change.to, sel.to) : ""; - tr = startState.replaceSelection(view.state.toText(before + change.insert.sliceString(0, void 0, view.state.lineBreak) + after)); + }; + h(Uo, "DOMChange"); + function mD(r, e) { + var t, + i = e.newSel, + n = r.state.selection.main; + if (e.bounds) { + var _e_bounds = e.bounds, + s = _e_bounds.from, + o = _e_bounds.to, + u = n.from, + l = null; + ((r.inputState.lastKeyCode === 8 && r.inputState.lastKeyTime > Date.now() - 100) || (U.android && e.text.length < o - s)) && ((u = n.to), (l = "end")); + var a = bk(r.state.doc.sliceString(s, o, Si), e.text, u - s, l); + a && (U.chrome && r.inputState.lastKeyCode == 13 && a.toB == a.from + 2 && e.text.slice(a.from, a.toB) == Si + Si && a.toB--, (t = { from: s + a.from, to: s + a.toA, insert: ce.of(e.text.slice(a.from, a.toB).split(Si)) })); + } else i && ((!r.hasFocus && r.state.facet(ou)) || i.main.eq(n)) && (i = null); + if (!t && !i) return !1; + if ( + (!t && e.typeOver && !n.empty && i && i.main.empty + ? (t = { from: n.from, to: n.to, insert: r.state.doc.slice(n.from, n.to) }) + : t && t.from >= n.from && t.to <= n.to && (t.from != n.from || t.to != n.to) && n.to - n.from - (t.to - t.from) <= 4 + ? (t = { from: n.from, to: n.to, insert: r.state.doc.slice(n.from, t.from).append(t.insert).append(r.state.doc.slice(t.to, n.to)) }) + : (U.mac || U.android) && t && t.from == t.to && t.from == n.head - 1 && /^\. ?$/.test(t.insert.toString()) && r.contentDOM.getAttribute("autocorrect") == "off" + ? (i && t.insert.length == 2 && (i = z.single(i.main.anchor - 1, i.main.head - 1)), (t = { from: n.from, to: n.to, insert: ce.of([" "]) })) + : U.chrome && t && t.from == t.to && t.from == n.head && t.insert.toString() == "\n " && r.lineWrapping && (i && (i = z.single(i.main.anchor - 1, i.main.head - 1)), (t = { from: n.from, to: n.to, insert: ce.of([" "]) })), + t) + ) { + var s1 = r.state; + if ((U.ios && r.inputState.flushIOSKey(r)) || (U.android && ((t.from == n.from && t.to == n.to && t.insert.length == 1 && t.insert.lines == 2 && Pr(r.contentDOM, "Enter", 13)) || (t.from == n.from - 1 && t.to == n.to && t.insert.length == 0 && Pr(r.contentDOM, "Backspace", 8)) || (t.from == n.from && t.to == n.to + 1 && t.insert.length == 0 && Pr(r.contentDOM, "Delete", 46))))) return !0; + var o1 = t.insert.toString(); + if (r.state.facet(jg).some((a) => a(r, t.from, t.to, o1))) return !0; + r.inputState.composing >= 0 && r.inputState.composing++; + var u1; + if (t.from >= n.from && t.to <= n.to && t.to - t.from >= (n.to - n.from) / 3 && (!i || (i.main.empty && i.main.from == t.from + t.insert.length)) && r.inputState.composing < 0) { + var a1 = n.from < t.from ? s1.sliceDoc(n.from, t.from) : "", + c = n.to > t.to ? s1.sliceDoc(t.to, n.to) : ""; + u1 = s1.replaceSelection(r.state.toText(a1 + t.insert.sliceString(0, void 0, r.state.lineBreak) + c)); } else { - var changes = startState.changes(change); - var mainSel = newSel && !startState.selection.main.eq(newSel.main) && newSel.main.to <= changes.newLength ? newSel.main : void 0; - if (startState.selection.ranges.length > 1 && view.inputState.composing >= 0 && change.to <= sel.to && change.to >= sel.to - 10) { - var replaced = view.state.sliceDoc(change.from, change.to); - var compositionRange = compositionSurroundingNode(view) || view.state.doc.lineAt(sel.head); - var offset = sel.to - change.to, - size = sel.to - sel.from; - tr = startState.changeByRange((range) => { - if (range.from == sel.from && range.to == sel.to) - return { - changes, - range: mainSel || range.map(changes), - }; - var to = range.to - offset, - from = to - replaced.length; - if (range.to - range.from != size || view.state.sliceDoc(from, to) != replaced || (compositionRange && range.to >= compositionRange.from && range.from <= compositionRange.to)) - return { - range, - }; - var rangeChanges = startState.changes({ - from, - to, - insert: change.insert, - }), - selOff = range.to - sel.to; - return { - changes: rangeChanges, - range: !mainSel ? range.map(rangeChanges) : EditorSelection.range(Math.max(0, mainSel.anchor + selOff), Math.max(0, mainSel.head + selOff)), - }; + var a2 = s1.changes(t), + c1 = i && !s1.selection.main.eq(i.main) && i.main.to <= a2.newLength ? i.main : void 0; + if (s1.selection.ranges.length > 1 && r.inputState.composing >= 0 && t.to <= n.to && t.to >= n.to - 10) { + var f = r.state.sliceDoc(t.from, t.to), + d = eD(r) || r.state.doc.lineAt(n.head), + p = n.to - t.to, + m = n.to - n.from; + u1 = s1.changeByRange((D) => { + if (D.from == n.from && D.to == n.to) return { changes: a2, range: c1 || D.map(a2) }; + var g = D.to - p, + b = g - f.length; + if (D.to - D.from != m || r.state.sliceDoc(b, g) != f || (d && D.to >= d.from && D.from <= d.to)) return { range: D }; + var F = s1.changes({ from: b, to: g, insert: t.insert }), + A = D.to - n.to; + return { changes: F, range: c1 ? z.range(Math.max(0, c1.anchor + A), Math.max(0, c1.head + A)) : D.map(F) }; }); - } else { - tr = { - changes, - selection: mainSel && startState.selection.replaceRange(mainSel), - }; + } else u1 = { changes: a2, selection: c1 && s1.selection.replaceRange(c1) }; + } + var l1 = "input.type"; + return r.composing && ((l1 += ".compose"), r.inputState.compositionFirstChange && ((l1 += ".start"), (r.inputState.compositionFirstChange = !1))), r.dispatch(u1, { scrollIntoView: !0, userEvent: l1 }), !0; + } else if (i && !i.main.eq(n)) { + var s2 = !1, + o2 = "select"; + return r.inputState.lastSelectionTime > Date.now() - 50 && (r.inputState.lastSelectionOrigin == "select" && (s2 = !0), (o2 = r.inputState.lastSelectionOrigin)), r.dispatch({ selection: i, scrollIntoView: s2, userEvent: o2 }), !0; + } else return !1; + } + h(mD, "applyDOMChange"); + function bk(r, e, t, i) { + var n = Math.min(r.length, e.length), + s = 0; + for (; s < n && r.charCodeAt(s) == e.charCodeAt(s); ) s++; + if (s == n && r.length == e.length) return null; + var o = r.length, + u = e.length; + for (; o > 0 && u > 0 && r.charCodeAt(o - 1) == e.charCodeAt(u - 1); ) o--, u--; + if (i == "end") { + var l = Math.max(0, s - Math.min(o, u)); + t -= o + l - s; + } + if (o < s && r.length < e.length) { + var l1 = t <= s && t >= o ? s - t : 0; + (s -= l1), (u = s + (u - o)), (o = s); + } else if (u < s) { + var l2 = t <= s && t >= u ? s - t : 0; + (s -= l2), (o = s + (o - u)), (u = s); + } + return { from: s, toA: o, toB: u }; + } + h(bk, "findDiff"); + function Fk(r) { + var e = []; + if (r.root.activeElement != r.contentDOM) return e; + var _r_observer_selectionRange = r.observer.selectionRange, + t = _r_observer_selectionRange.anchorNode, + i = _r_observer_selectionRange.anchorOffset, + n = _r_observer_selectionRange.focusNode, + s = _r_observer_selectionRange.focusOffset; + return t && (e.push(new Vn(t, i)), (n != t || s != i) && e.push(new Vn(n, s))), e; + } + h(Fk, "selectionPoints"); + function yk(r, e) { + if (r.length == 0) return null; + var t = r[0].pos, + i = r.length == 2 ? r[1].pos : t; + return t > -1 && i > -1 ? z.single(t + e, i + e) : null; + } + h(yk, "selectionFromPoints"); + var Ck = { childList: !0, characterData: !0, subtree: !0, attributes: !0, characterDataOldValue: !0 }, + Ya = U.ie && U.ie_version <= 11, + Yo = class Yo { + onScrollChanged(e) { + this.view.inputState.runScrollHandlers(this.view, e), this.intersecting && this.view.measure(); + } + onScroll(e) { + this.intersecting && this.flush(!1), this.onScrollChanged(e); + } + onResize() { + this.resizeTimeout < 0 && + (this.resizeTimeout = setTimeout(() => { + (this.resizeTimeout = -1), this.view.requestMeasure(); + }, 50)); + } + onPrint() { + (this.view.viewState.printing = !0), + this.view.measure(), + setTimeout(() => { + (this.view.viewState.printing = !1), this.view.requestMeasure(); + }, 500); + } + updateGaps(e) { + if (this.gapIntersection && (e.length != this.gaps.length || this.gaps.some((t, i) => t != e[i]))) { + this.gapIntersection.disconnect(); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + this.gapIntersection.observe(t); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + this.gaps = e; } } - var userEvent = "input.type"; - if (view.composing) { - userEvent += ".compose"; - if (view.inputState.compositionFirstChange) { - userEvent += ".start"; - view.inputState.compositionFirstChange = false; + onSelectionChange(e) { + var t = this.selectionChanged; + if (!this.readSelectionRange() || this.delayedAndroidKey) return; + var _this = this, + i = _this.view, + n = this.selectionRange; + if (i.state.facet(ou) ? i.root.activeElement != this.dom : !Ro(i.dom, n)) return; + var s = n.anchorNode && i.docView.nearest(n.anchorNode); + if (s && s.ignoreEvent(e)) { + t || (this.selectionChanged = !1); + return; } + ((U.ie && U.ie_version <= 11) || (U.android && U.chrome)) && !i.state.selection.main.empty && n.focusNode && tu(n.focusNode, n.focusOffset, n.anchorNode, n.anchorOffset) ? this.flushSoon() : this.flush(!1); } - view.dispatch(tr, { - scrollIntoView: true, - userEvent, - }); - return true; - } else if (newSel && !newSel.main.eq(sel)) { - var scrollIntoView2 = false, - userEvent1 = "select"; - if (view.inputState.lastSelectionTime > Date.now() - 50) { - if (view.inputState.lastSelectionOrigin == "select") scrollIntoView2 = true; - userEvent1 = view.inputState.lastSelectionOrigin; - } - view.dispatch({ - selection: newSel, - scrollIntoView: scrollIntoView2, - userEvent: userEvent1, - }); - return true; - } else { - return false; - } - } - __name(applyDOMChange, "applyDOMChange"); - function findDiff(a, b, preferredPos, preferredSide) { - var minLen = Math.min(a.length, b.length); - var from = 0; - while (from < minLen && a.charCodeAt(from) == b.charCodeAt(from)) from++; - if (from == minLen && a.length == b.length) return null; - var toA = a.length, - toB = b.length; - while (toA > 0 && toB > 0 && a.charCodeAt(toA - 1) == b.charCodeAt(toB - 1)) { - toA--; - toB--; - } - if (preferredSide == "end") { - var adjust = Math.max(0, from - Math.min(toA, toB)); - preferredPos -= toA + adjust - from; - } - if (toA < from && a.length < b.length) { - var move = preferredPos <= from && preferredPos >= toA ? from - preferredPos : 0; - from -= move; - toB = from + (toB - toA); - toA = from; - } else if (toB < from) { - var move1 = preferredPos <= from && preferredPos >= toB ? from - preferredPos : 0; - from -= move1; - toA = from + (toA - toB); - toB = from; - } - return { - from, - toA, - toB, - }; - } - __name(findDiff, "findDiff"); - function selectionPoints(view) { - var result = []; - if (view.root.activeElement != view.contentDOM) return result; - var _view_observer_selectionRange = view.observer.selectionRange, - anchorNode = _view_observer_selectionRange.anchorNode, - anchorOffset = _view_observer_selectionRange.anchorOffset, - focusNode = _view_observer_selectionRange.focusNode, - focusOffset = _view_observer_selectionRange.focusOffset; - if (anchorNode) { - result.push(new DOMPoint(anchorNode, anchorOffset)); - if (focusNode != anchorNode || focusOffset != anchorOffset) result.push(new DOMPoint(focusNode, focusOffset)); - } - return result; - } - __name(selectionPoints, "selectionPoints"); - function selectionFromPoints(points, base2) { - if (points.length == 0) return null; - var anchor = points[0].pos, - head = points.length == 2 ? points[1].pos : anchor; - return anchor > -1 && head > -1 ? EditorSelection.single(anchor + base2, head + base2) : null; - } - __name(selectionFromPoints, "selectionFromPoints"); - var observeOptions = { - childList: true, - characterData: true, - subtree: true, - attributes: true, - characterDataOldValue: true, - }; - var useCharData = browser.ie && browser.ie_version <= 11; - var DOMObserver = class DOMObserver { - onScrollChanged(e) { - this.view.inputState.runScrollHandlers(this.view, e); - if (this.intersecting) this.view.measure(); - } - onScroll(e) { - if (this.intersecting) this.flush(false); - this.onScrollChanged(e); - } - onResize() { - if (this.resizeTimeout < 0) - this.resizeTimeout = setTimeout(() => { - this.resizeTimeout = -1; - this.view.requestMeasure(); - }, 50); - } - onPrint() { - this.view.viewState.printing = true; - this.view.measure(); - setTimeout(() => { - this.view.viewState.printing = false; - this.view.requestMeasure(); - }, 500); - } - updateGaps(gaps) { - if (this.gapIntersection && (gaps.length != this.gaps.length || this.gaps.some((g, i) => g != gaps[i]))) { - this.gapIntersection.disconnect(); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = gaps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var gap = _step.value; - this.gapIntersection.observe(gap); + readSelectionRange() { + var _this = this, + e = _this.view, + t = (U.safari && e.root.nodeType == 11 && Ev(this.dom.ownerDocument) == this.dom && Ak(this.view)) || eu(e.root); + if (!t || this.selectionRange.eq(t)) return !1; + var i = Ro(this.dom, t); + return i && !this.selectionChanged && e.inputState.lastFocusTime > Date.now() - 200 && e.inputState.lastTouchTime < Date.now() - 300 && Sv(this.dom, t) ? ((this.view.inputState.lastFocusTime = 0), e.docView.updateSelection(), !1) : (this.selectionRange.setRange(t), i && (this.selectionChanged = !0), !0); + } + setSelectionRange(e, t) { + this.selectionRange.set(e.node, e.offset, t.node, t.offset), (this.selectionChanged = !1); + } + clearSelectionRange() { + this.selectionRange.set(null, 0, null, 0); + } + listenForScroll() { + this.parentCheck = -1; + var e = 0, + t = null; + for (var i = this.dom; i; ) + if (i.nodeType == 1) !t && e < this.scrollTargets.length && this.scrollTargets[e] == i ? e++ : t || (t = this.scrollTargets.slice(0, e)), t && t.push(i), (i = i.assignedSlot || i.parentNode); + else if (i.nodeType == 11) i = i.host; + else break; + if ((e < this.scrollTargets.length && !t && (t = this.scrollTargets.slice(0, e)), t)) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = this.scrollTargets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i1 = _step.value; + i1.removeEventListener("scroll", this.onScroll); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator1 = (this.scrollTargets = t)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var i2 = _step1.value; + i2.addEventListener("scroll", this.onScroll); } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } } } } - this.gaps = gaps; } - } - onSelectionChange(event) { - var wasChanged = this.selectionChanged; - if (!this.readSelectionRange() || this.delayedAndroidKey) return; - var view = this.view, - sel = this.selectionRange; - if (view.state.facet(editable) ? view.root.activeElement != this.dom : !hasSelection(view.dom, sel)) return; - var context = sel.anchorNode && view.docView.nearest(sel.anchorNode); - if (context && context.ignoreEvent(event)) { - if (!wasChanged) this.selectionChanged = false; - return; + ignore(e) { + if (!this.active) return e(); + try { + return this.stop(), e(); + } finally { + this.start(), this.clear(); + } } - if (((browser.ie && browser.ie_version <= 11) || (browser.android && browser.chrome)) && !view.state.selection.main.empty && sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset)) this.flushSoon(); - else this.flush(false); - } - readSelectionRange() { - var view = this.view; - var range = (browser.safari && view.root.nodeType == 11 && deepActiveElement(this.dom.ownerDocument) == this.dom && safariSelectionRangeHack(this.view)) || getSelection(view.root); - if (!range || this.selectionRange.eq(range)) return false; - var local = hasSelection(this.dom, range); - if (local && !this.selectionChanged && view.inputState.lastFocusTime > Date.now() - 200 && view.inputState.lastTouchTime < Date.now() - 300 && atElementStart(this.dom, range)) { - this.view.inputState.lastFocusTime = 0; - view.docView.updateSelection(); - return false; + start() { + this.active || (this.observer.observe(this.dom, Ck), Ya && this.dom.addEventListener("DOMCharacterDataModified", this.onCharData), (this.active = !0)); } - this.selectionRange.setRange(range); - if (local) this.selectionChanged = true; - return true; - } - setSelectionRange(anchor, head) { - this.selectionRange.set(anchor.node, anchor.offset, head.node, head.offset); - this.selectionChanged = false; - } - clearSelectionRange() { - this.selectionRange.set(null, 0, null, 0); - } - listenForScroll() { - this.parentCheck = -1; - var i = 0, - changed = null; - for (var dom = this.dom; dom; ) { - if (dom.nodeType == 1) { - if (!changed && i < this.scrollTargets.length && this.scrollTargets[i] == dom) i++; - else if (!changed) changed = this.scrollTargets.slice(0, i); - if (changed) changed.push(dom); - dom = dom.assignedSlot || dom.parentNode; - } else if (dom.nodeType == 11) { - dom = dom.host; - } else { - break; + stop() { + this.active && ((this.active = !1), this.observer.disconnect(), Ya && this.dom.removeEventListener("DOMCharacterDataModified", this.onCharData)); + } + clear() { + this.processRecords(), (this.queue.length = 0), (this.selectionChanged = !1); + } + delayAndroidKey(e, t) { + var i; + if (!this.delayedAndroidKey) { + var n = h(() => { + var s = this.delayedAndroidKey; + s && (this.clearDelayedAndroidKey(), !this.flush() && s.force && Pr(this.dom, s.key, s.keyCode)); + }, "flush"); + this.flushingAndroidKey = this.view.win.requestAnimationFrame(n); } + (!this.delayedAndroidKey || e == "Enter") && (this.delayedAndroidKey = { key: e, keyCode: t, force: this.lastChange < Date.now() - 50 || !!(!((i = this.delayedAndroidKey) === null || i === void 0) && i.force) }); } - if (i < this.scrollTargets.length && !changed) changed = this.scrollTargets.slice(0, i); - if (changed) { + clearDelayedAndroidKey() { + this.win.cancelAnimationFrame(this.flushingAndroidKey), (this.delayedAndroidKey = null), (this.flushingAndroidKey = -1); + } + flushSoon() { + this.delayedFlush < 0 && + (this.delayedFlush = this.view.win.requestAnimationFrame(() => { + (this.delayedFlush = -1), this.flush(); + })); + } + forceFlush() { + this.delayedFlush >= 0 && (this.view.win.cancelAnimationFrame(this.delayedFlush), (this.delayedFlush = -1)), this.flush(); + } + processRecords() { + var e = this.queue; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = this.scrollTargets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var dom1 = _step.value; - dom1.removeEventListener("scroll", this.onScroll); + for (var _iterator = this.observer.takeRecords()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + e.push(s); } } catch (err) { _didIteratorError = true; @@ -17663,13 +13891,19 @@ var __generator = } } } + e.length && (this.queue = []); + var t = -1, + i = -1, + n = !1; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = (this.scrollTargets = changed)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var dom2 = _step1.value; - dom2.addEventListener("scroll", this.onScroll); + for (var _iterator1 = e[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var s1 = _step1.value; + var o = this.readMutation(s1); + var ref; + o && (o.typeOver && (n = !0), t == -1 ? ((ref = o), (t = ref.from), (i = ref.to), ref) : ((t = Math.min(o.from, t)), (i = Math.max(o.to, i)))); } } catch (err) { _didIteratorError1 = true; @@ -17685,408 +13919,217 @@ var __generator = } } } + return { from: t, to: i, typeOver: n }; + } + readChange() { + var _this_processRecords = this.processRecords(), + e = _this_processRecords.from, + t = _this_processRecords.to, + i = _this_processRecords.typeOver, + n = this.selectionChanged && Ro(this.dom, this.selectionRange); + return e < 0 && !n ? null : (e > -1 && (this.lastChange = Date.now()), (this.view.inputState.lastFocusTime = 0), (this.selectionChanged = !1), new Uo(this.view, e, t, i)); + } + flush() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0; + if (this.delayedFlush >= 0 || this.delayedAndroidKey) return !1; + e && this.readSelectionRange(); + var t = this.readChange(); + if (!t) return !1; + var i = this.view.state, + n = mD(this.view, t); + return this.view.state == i && this.view.update([]), n; + } + readMutation(e) { + var t = this.view.docView.nearest(e.target); + if (!t || t.ignoreMutation(e)) return null; + if ((t.markDirty(e.type == "attributes"), e.type == "attributes" && (t.dirty |= 4), e.type == "childList")) { + var i = mg(t, e.previousSibling || e.target.previousSibling, -1), + n = mg(t, e.nextSibling || e.target.nextSibling, 1); + return { from: i ? t.posAfter(i) : t.posAtStart, to: n ? t.posBefore(n) : t.posAtEnd, typeOver: !1 }; + } else return e.type == "characterData" ? { from: t.posAtStart, to: t.posAtEnd, typeOver: e.target.nodeValue == e.oldValue } : null; + } + setWindow(e) { + e != this.win && (this.removeWindowListeners(this.win), (this.win = e), this.addWindowListeners(this.win)); + } + addWindowListeners(e) { + e.addEventListener("resize", this.onResize), e.addEventListener("beforeprint", this.onPrint), e.addEventListener("scroll", this.onScroll), e.document.addEventListener("selectionchange", this.onSelectionChange); + } + removeWindowListeners(e) { + e.removeEventListener("scroll", this.onScroll), e.removeEventListener("resize", this.onResize), e.removeEventListener("beforeprint", this.onPrint), e.document.removeEventListener("selectionchange", this.onSelectionChange); + } + destroy() { + var e, t, i, n; + this.stop(), (e = this.intersection) === null || e === void 0 || e.disconnect(), (t = this.gapIntersection) === null || t === void 0 || t.disconnect(), (i = this.resizeScroll) === null || i === void 0 || i.disconnect(), (n = this.resizeContent) === null || n === void 0 || n.disconnect(); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = this.scrollTargets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + s.removeEventListener("scroll", this.onScroll); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + this.removeWindowListeners(this.win), clearTimeout(this.parentCheck), clearTimeout(this.resizeTimeout), this.win.cancelAnimationFrame(this.delayedFlush), this.win.cancelAnimationFrame(this.flushingAndroidKey); + } + constructor(e) { + (this.view = e), + (this.active = !1), + (this.selectionRange = new $o()), + (this.selectionChanged = !1), + (this.delayedFlush = -1), + (this.resizeTimeout = -1), + (this.queue = []), + (this.delayedAndroidKey = null), + (this.flushingAndroidKey = -1), + (this.lastChange = 0), + (this.scrollTargets = []), + (this.intersection = null), + (this.resizeScroll = null), + (this.resizeContent = null), + (this.intersecting = !1), + (this.gapIntersection = null), + (this.gaps = []), + (this.parentCheck = -1), + (this.dom = e.contentDOM), + (this.observer = new MutationObserver((t) => { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + this.queue.push(i); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + ((U.ie && U.ie_version <= 11) || (U.ios && e.composing)) && t.some((i) => (i.type == "childList" && i.removedNodes.length) || (i.type == "characterData" && i.oldValue.length > i.target.nodeValue.length)) ? this.flushSoon() : this.flush(); + })), + Ya && + (this.onCharData = (t) => { + this.queue.push({ target: t.target, type: "characterData", oldValue: t.prevValue }), this.flushSoon(); + }), + (this.onSelectionChange = this.onSelectionChange.bind(this)), + (this.onResize = this.onResize.bind(this)), + (this.onPrint = this.onPrint.bind(this)), + (this.onScroll = this.onScroll.bind(this)), + typeof ResizeObserver == "function" && + ((this.resizeScroll = new ResizeObserver(() => { + var t; + ((t = this.view.docView) === null || t === void 0 ? void 0 : t.lastUpdate) < Date.now() - 75 && this.onResize(); + })), + this.resizeScroll.observe(e.scrollDOM), + (this.resizeContent = new ResizeObserver(() => this.view.requestMeasure())), + this.resizeContent.observe(e.contentDOM)), + this.addWindowListeners((this.win = e.win)), + this.start(), + typeof IntersectionObserver == "function" && + ((this.intersection = new IntersectionObserver((t) => { + this.parentCheck < 0 && (this.parentCheck = setTimeout(this.listenForScroll.bind(this), 1e3)), t.length > 0 && t[t.length - 1].intersectionRatio > 0 != this.intersecting && ((this.intersecting = !this.intersecting), this.intersecting != this.view.inView && this.onScrollChanged(document.createEvent("Event"))); + }, {})), + this.intersection.observe(this.dom), + (this.gapIntersection = new IntersectionObserver((t) => { + t.length > 0 && t[t.length - 1].intersectionRatio > 0 && this.onScrollChanged(document.createEvent("Event")); + }, {}))), + this.listenForScroll(), + this.readSelectionRange(); } + }; + h(Yo, "DOMObserver"); + function mg(r, e, t) { + for (; e; ) { + var i = De.get(e); + if (i && i.parent == r) return i; + var n = e.parentNode; + e = n != r.dom ? n : t > 0 ? e.nextSibling : e.previousSibling; } - ignore(f) { - if (!this.active) return f(); - try { - this.stop(); - return f(); - } finally { - this.start(); - this.clear(); - } - } - start() { - if (this.active) return; - this.observer.observe(this.dom, observeOptions); - if (useCharData) this.dom.addEventListener("DOMCharacterDataModified", this.onCharData); - this.active = true; - } - stop() { - if (!this.active) return; - this.active = false; - this.observer.disconnect(); - if (useCharData) this.dom.removeEventListener("DOMCharacterDataModified", this.onCharData); - } - clear() { - this.processRecords(); - this.queue.length = 0; - this.selectionChanged = false; - } - delayAndroidKey(key, keyCode) { - var _a2; - if (!this.delayedAndroidKey) { - var flush2 = /* @__PURE__ */ __name(() => { - var key2 = this.delayedAndroidKey; - if (key2) { - this.clearDelayedAndroidKey(); - if (!this.flush() && key2.force) dispatchKey(this.dom, key2.key, key2.keyCode); - } - }, "flush"); - this.flushingAndroidKey = this.view.win.requestAnimationFrame(flush2); - } - if (!this.delayedAndroidKey || key == "Enter") - this.delayedAndroidKey = { - key, - keyCode, - force: this.lastChange < Date.now() - 50 || !!((_a2 = this.delayedAndroidKey) === null || _a2 === void 0 ? void 0 : _a2.force), - }; + return null; + } + h(mg, "findChild"); + function Ak(r) { + var e = null; + function t(l) { + l.preventDefault(), l.stopImmediatePropagation(), (e = l.getTargetRanges()[0]); + } + if ((h(t, "read"), r.contentDOM.addEventListener("beforeinput", t, !0), r.dom.ownerDocument.execCommand("indent"), r.contentDOM.removeEventListener("beforeinput", t, !0), !e)) return null; + var i = e.startContainer, + n = e.startOffset, + s = e.endContainer, + o = e.endOffset, + u = r.docView.domAtPos(r.state.selection.main.anchor); + var ref; + return tu(u.node, u.offset, s, o) && ((ref = [s, o, i, n]), (i = ref[0]), (n = ref[1]), (s = ref[2]), (o = ref[3]), ref), { anchorNode: i, anchorOffset: n, focusNode: s, focusOffset: o }; + } + h(Ak, "safariSelectionRangeHack"); + var te = class te1 { + get state() { + return this.viewState.state; } - clearDelayedAndroidKey() { - this.win.cancelAnimationFrame(this.flushingAndroidKey); - this.delayedAndroidKey = null; - this.flushingAndroidKey = -1; + get viewport() { + return this.viewState.viewport; } - flushSoon() { - if (this.delayedFlush < 0) - this.delayedFlush = this.view.win.requestAnimationFrame(() => { - this.delayedFlush = -1; - this.flush(); - }); + get visibleRanges() { + return this.viewState.visibleRanges; + } + get inView() { + return this.viewState.inView; + } + get composing() { + return this.inputState.composing > 0; } - forceFlush() { - if (this.delayedFlush >= 0) { - this.view.win.cancelAnimationFrame(this.delayedFlush); - this.delayedFlush = -1; + get compositionStarted() { + return this.inputState.composing >= 0; + } + get root() { + return this._root; + } + get win() { + return this.dom.ownerDocument.defaultView || window; + } + dispatch() { + for (var _len = arguments.length, e = new Array(_len), _key = 0; _key < _len; _key++) { + e[_key] = arguments[_key]; } - this.flush(); + this._dispatch(e.length == 1 && e[0] instanceof we ? e[0] : this.state.update(...e)); } - processRecords() { - var records = this.queue; + update(e) { + if (this.updateState != 0) throw new Error("Calls to EditorView.update are not allowed while an update is in progress"); + var t = !1, + i = !1, + n, + s = this.state; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = this.observer.takeRecords()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var mut = _step.value; - records.push(mut); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - if (records.length) this.queue = []; - var from = -1, - to = -1, - typeOver = false; - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - try { - for (var _iterator1 = records[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var record = _step1.value; - var range = this.readMutation(record); - if (!range) continue; - if (range.typeOver) typeOver = true; - if (from == -1) { - var ref; - (ref = range), (from = ref.from), (to = ref.to), ref; - } else { - from = Math.min(range.from, from); - to = Math.max(range.to, to); - } - } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { - try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); - } - } finally { - if (_didIteratorError1) { - throw _iteratorError1; - } - } - } - return { - from, - to, - typeOver, - }; - } - readChange() { - var _this_processRecords = this.processRecords(), - from = _this_processRecords.from, - to = _this_processRecords.to, - typeOver = _this_processRecords.typeOver; - var newSel = this.selectionChanged && hasSelection(this.dom, this.selectionRange); - if (from < 0 && !newSel) return null; - if (from > -1) this.lastChange = Date.now(); - this.view.inputState.lastFocusTime = 0; - this.selectionChanged = false; - return new DOMChange(this.view, from, to, typeOver); - } - flush() { - var readSelection = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - if (this.delayedFlush >= 0 || this.delayedAndroidKey) return false; - if (readSelection) this.readSelectionRange(); - var domChange = this.readChange(); - if (!domChange) return false; - var startState = this.view.state; - var handled = applyDOMChange(this.view, domChange); - if (this.view.state == startState) this.view.update([]); - return handled; - } - readMutation(rec) { - var cView = this.view.docView.nearest(rec.target); - if (!cView || cView.ignoreMutation(rec)) return null; - cView.markDirty(rec.type == "attributes"); - if (rec.type == "attributes") cView.dirty |= 4; - if (rec.type == "childList") { - var childBefore = findChild(cView, rec.previousSibling || rec.target.previousSibling, -1); - var childAfter = findChild(cView, rec.nextSibling || rec.target.nextSibling, 1); - return { - from: childBefore ? cView.posAfter(childBefore) : cView.posAtStart, - to: childAfter ? cView.posBefore(childAfter) : cView.posAtEnd, - typeOver: false, - }; - } else if (rec.type == "characterData") { - return { - from: cView.posAtStart, - to: cView.posAtEnd, - typeOver: rec.target.nodeValue == rec.oldValue, - }; - } else { - return null; - } - } - setWindow(win) { - if (win != this.win) { - this.removeWindowListeners(this.win); - this.win = win; - this.addWindowListeners(this.win); - } - } - addWindowListeners(win) { - win.addEventListener("resize", this.onResize); - win.addEventListener("beforeprint", this.onPrint); - win.addEventListener("scroll", this.onScroll); - win.document.addEventListener("selectionchange", this.onSelectionChange); - } - removeWindowListeners(win) { - win.removeEventListener("scroll", this.onScroll); - win.removeEventListener("resize", this.onResize); - win.removeEventListener("beforeprint", this.onPrint); - win.document.removeEventListener("selectionchange", this.onSelectionChange); - } - destroy() { - var _a2, _b, _c, _d; - this.stop(); - (_a2 = this.intersection) === null || _a2 === void 0 ? void 0 : _a2.disconnect(); - (_b = this.gapIntersection) === null || _b === void 0 ? void 0 : _b.disconnect(); - (_c = this.resizeScroll) === null || _c === void 0 ? void 0 : _c.disconnect(); - (_d = this.resizeContent) === null || _d === void 0 ? void 0 : _d.disconnect(); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.scrollTargets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var dom = _step.value; - dom.removeEventListener("scroll", this.onScroll); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - this.removeWindowListeners(this.win); - clearTimeout(this.parentCheck); - clearTimeout(this.resizeTimeout); - this.win.cancelAnimationFrame(this.delayedFlush); - this.win.cancelAnimationFrame(this.flushingAndroidKey); - } - constructor(view) { - this.view = view; - this.active = false; - this.selectionRange = new DOMSelectionState(); - this.selectionChanged = false; - this.delayedFlush = -1; - this.resizeTimeout = -1; - this.queue = []; - this.delayedAndroidKey = null; - this.flushingAndroidKey = -1; - this.lastChange = 0; - this.scrollTargets = []; - this.intersection = null; - this.resizeScroll = null; - this.resizeContent = null; - this.intersecting = false; - this.gapIntersection = null; - this.gaps = []; - this.parentCheck = -1; - this.dom = view.contentDOM; - this.observer = new MutationObserver((mutations) => { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = mutations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var mut = _step.value; - this.queue.push(mut); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - if (((browser.ie && browser.ie_version <= 11) || (browser.ios && view.composing)) && mutations.some((m) => (m.type == "childList" && m.removedNodes.length) || (m.type == "characterData" && m.oldValue.length > m.target.nodeValue.length))) this.flushSoon(); - else this.flush(); - }); - if (useCharData) - this.onCharData = (event) => { - this.queue.push({ - target: event.target, - type: "characterData", - oldValue: event.prevValue, - }); - this.flushSoon(); - }; - this.onSelectionChange = this.onSelectionChange.bind(this); - this.onResize = this.onResize.bind(this); - this.onPrint = this.onPrint.bind(this); - this.onScroll = this.onScroll.bind(this); - if (typeof ResizeObserver == "function") { - this.resizeScroll = new ResizeObserver(() => { - var _a2; - if (((_a2 = this.view.docView) === null || _a2 === void 0 ? void 0 : _a2.lastUpdate) < Date.now() - 75) this.onResize(); - }); - this.resizeScroll.observe(view.scrollDOM); - this.resizeContent = new ResizeObserver(() => this.view.requestMeasure()); - this.resizeContent.observe(view.contentDOM); - } - this.addWindowListeners((this.win = view.win)); - this.start(); - if (typeof IntersectionObserver == "function") { - this.intersection = new IntersectionObserver((entries) => { - if (this.parentCheck < 0) this.parentCheck = setTimeout(this.listenForScroll.bind(this), 1e3); - if (entries.length > 0 && entries[entries.length - 1].intersectionRatio > 0 != this.intersecting) { - this.intersecting = !this.intersecting; - if (this.intersecting != this.view.inView) this.onScrollChanged(document.createEvent("Event")); - } - }, {}); - this.intersection.observe(this.dom); - this.gapIntersection = new IntersectionObserver((entries) => { - if (entries.length > 0 && entries[entries.length - 1].intersectionRatio > 0) this.onScrollChanged(document.createEvent("Event")); - }, {}); - } - this.listenForScroll(); - this.readSelectionRange(); - } - }; - __name(DOMObserver, "DOMObserver"); - function findChild(cView, dom, dir) { - while (dom) { - var curView = ContentView.get(dom); - if (curView && curView.parent == cView) return curView; - var parent = dom.parentNode; - dom = parent != cView.dom ? parent : dir > 0 ? dom.nextSibling : dom.previousSibling; - } - return null; - } - __name(findChild, "findChild"); - function safariSelectionRangeHack(view) { - var found = null; - function read(event) { - event.preventDefault(); - event.stopImmediatePropagation(); - found = event.getTargetRanges()[0]; - } - __name(read, "read"); - view.contentDOM.addEventListener("beforeinput", read, true); - view.dom.ownerDocument.execCommand("indent"); - view.contentDOM.removeEventListener("beforeinput", read, true); - if (!found) return null; - var anchorNode = found.startContainer, - anchorOffset = found.startOffset; - var focusNode = found.endContainer, - focusOffset = found.endOffset; - var curAnchor = view.docView.domAtPos(view.state.selection.main.anchor); - var ref; - if (isEquivalentPosition(curAnchor.node, curAnchor.offset, focusNode, focusOffset)) (ref = [focusNode, focusOffset, anchorNode, anchorOffset]), (anchorNode = ref[0]), (anchorOffset = ref[1]), (focusNode = ref[2]), (focusOffset = ref[3]), ref; - return { - anchorNode, - anchorOffset, - focusNode, - focusOffset, - }; - } - __name(safariSelectionRangeHack, "safariSelectionRangeHack"); - var EditorView = class EditorView1 { - get state() { - return this.viewState.state; - } - get viewport() { - return this.viewState.viewport; - } - get visibleRanges() { - return this.viewState.visibleRanges; - } - get inView() { - return this.viewState.inView; - } - get composing() { - return this.inputState.composing > 0; - } - get compositionStarted() { - return this.inputState.composing >= 0; - } - get root() { - return this._root; - } - get win() { - return this.dom.ownerDocument.defaultView || window; - } - dispatch() { - for (var _len = arguments.length, input = new Array(_len), _key = 0; _key < _len; _key++) { - input[_key] = arguments[_key]; - } - this._dispatch(input.length == 1 && input[0] instanceof Transaction ? input[0] : this.state.update(...input)); - } - update(transactions) { - if (this.updateState != 0) throw new Error("Calls to EditorView.update are not allowed while an update is in progress"); - var redrawn = false, - attrsChanged = false, - update2; - var state = this.state; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = transactions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tr = _step.value; - if (tr.startState != state) throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state."); - state = tr.state; + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var d = _step.value; + if (d.startState != s) throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state."); + s = d.state; } } catch (err) { _didIteratorError = true; @@ -18103,41 +14146,38 @@ var __generator = } } if (this.destroyed) { - this.viewState.state = state; + this.viewState.state = s; return; } - var pendingKey = this.observer.delayedAndroidKey, - domChange = null; - if (pendingKey) { - this.observer.clearDelayedAndroidKey(); - domChange = this.observer.readChange(); - if ((domChange && !this.state.doc.eq(state.doc)) || !this.state.selection.eq(state.selection)) domChange = null; - } else { - this.observer.clear(); - } - if (state.facet(EditorState.phrases) != this.state.facet(EditorState.phrases)) return this.setState(state); - update2 = ViewUpdate.create(this, state, transactions); - var scrollTarget = this.viewState.scrollTarget; + var o = this.hasFocus, + u = 0, + l = null; + e.some((d) => d.annotation(aD)) ? ((this.inputState.notifiedFocused = o), (u = 1)) : o != this.inputState.notifiedFocused && ((this.inputState.notifiedFocused = o), (l = hD(s, o)), l || (u = 1)); + var a = this.observer.delayedAndroidKey, + c = null; + if ((a ? (this.observer.clearDelayedAndroidKey(), (c = this.observer.readChange()), ((c && !this.state.doc.eq(s.doc)) || !this.state.selection.eq(s.selection)) && (c = null)) : this.observer.clear(), s.facet(ae.phrases) != this.state.facet(ae.phrases))) return this.setState(s); + (n = Zi.create(this, s, e)), (n.flags |= u); + var f = this.viewState.scrollTarget; try { this.updateState = 2; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = transactions[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var tr1 = _step1.value; - if (scrollTarget) scrollTarget = scrollTarget.map(tr1.changes); - if (tr1.scrollIntoView) { - var main = tr1.state.selection.main; - scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1)); + for (var _iterator1 = e[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var d1 = _step1.value; + if ((f && (f = f.map(d1.changes)), d1.scrollIntoView)) { + var _d_state_selection = d1.state.selection, + p = _d_state_selection.main; + f = new Ji(p.empty ? p : z.cursor(p.head, p.head > p.anchor ? -1 : 1)); } var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined; try { - for (var _iterator2 = tr1.effects[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var e = _step2.value; - if (e.is(scrollIntoView)) scrollTarget = e.value; + for (var _iterator2 = d1.effects[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var p1 = _step2.value; + p1.is(Q0) && (f = p1.value); } } catch (err) { _didIteratorError2 = true; @@ -18168,33 +14208,28 @@ var __generator = } } } - this.viewState.update(update2, scrollTarget); - this.bidiCache = CachedOrder.update(this.bidiCache, update2.changes); - if (!update2.empty) { - this.updatePlugins(update2); - this.inputState.update(update2); - } - redrawn = this.docView.update(update2); - if (this.state.facet(styleModule) != this.styleModules) this.mountStyles(); - attrsChanged = this.updateAttrs(); - this.showAnnouncements(transactions); - this.docView.updateSelection( - redrawn, - transactions.some((tr) => tr.isUserEvent("select.pointer")) - ); + this.viewState.update(n, f), + (this.bidiCache = er.update(this.bidiCache, n.changes)), + n.empty || (this.updatePlugins(n), this.inputState.update(n)), + (t = this.docView.update(n)), + this.state.facet($n) != this.styleModules && this.mountStyles(), + (i = this.updateAttrs()), + this.showAnnouncements(e), + this.docView.updateSelection( + t, + e.some((d) => d.isUserEvent("select.pointer")) + ); } finally { this.updateState = 0; } - if (update2.startState.facet(theme) != update2.state.facet(theme)) this.viewState.mustMeasureContent = true; - if (redrawn || attrsChanged || scrollTarget || this.viewState.mustEnforceCursorAssoc || this.viewState.mustMeasureContent) this.requestMeasure(); var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined; - if (!update2.empty) + if ((n.startState.facet(_o) != n.state.facet(_o) && (this.viewState.mustMeasureContent = !0), (t || i || f || this.viewState.mustEnforceCursorAssoc || this.viewState.mustMeasureContent) && this.requestMeasure(), !n.empty)) try { - for (var _iterator3 = this.state.facet(updateListener)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var listener = _step3.value; - listener(update2); + for (var _iterator3 = this.state.facet(nh)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var d2 = _step3.value; + d2(n); } } catch (err) { _didIteratorError3 = true; @@ -18210,26 +14245,27 @@ var __generator = } } } - if (domChange) { - if (!applyDOMChange(this, domChange) && pendingKey.force) dispatchKey(this.contentDOM, pendingKey.key, pendingKey.keyCode); - } + (l || c) && + Promise.resolve().then(() => { + l && this.state == l.startState && this.dispatch(l), c && !mD(this, c) && a.force && Pr(this.contentDOM, a.key, a.keyCode); + }); } - setState(newState) { + setState(e) { if (this.updateState != 0) throw new Error("Calls to EditorView.setState are not allowed while an update is in progress"); if (this.destroyed) { - this.viewState.state = newState; + this.viewState.state = e; return; } this.updateState = 2; - var hadFocus = this.hasFocus; + var t = this.hasFocus; try { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var plugin = _step.value; - plugin.destroy(this); + var i = _step.value; + i.destroy(this); } } catch (err) { _didIteratorError = true; @@ -18245,16 +14281,14 @@ var __generator = } } } - this.viewState = new ViewState(newState); - this.plugins = newState.facet(viewPlugin).map((spec) => new PluginInstance(spec)); - this.pluginMap.clear(); + (this.viewState = new Hn(e)), (this.plugins = e.facet(Rn).map((i) => new qr(i))), this.pluginMap.clear(); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { for (var _iterator1 = this.plugins[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var plugin1 = _step1.value; - plugin1.update(this); + var i1 = _step1.value; + i1.update(this); } } catch (err) { _didIteratorError1 = true; @@ -18270,66 +14304,40 @@ var __generator = } } } - this.docView = new DocView(this); - this.inputState.ensureHandlers(this, this.plugins); - this.mountStyles(); - this.updateAttrs(); - this.bidiCache = []; + (this.docView = new zn(this)), this.inputState.ensureHandlers(this, this.plugins), this.mountStyles(), this.updateAttrs(), (this.bidiCache = []); } finally { this.updateState = 0; } - if (hadFocus) this.focus(); - this.requestMeasure(); + t && this.focus(), this.requestMeasure(); } - updatePlugins(update2) { - var prevSpecs = update2.startState.facet(viewPlugin), - specs = update2.state.facet(viewPlugin); - if (prevSpecs != specs) { - var newPlugins = []; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = specs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var spec = _step.value; - var found = prevSpecs.indexOf(spec); - if (found < 0) { - newPlugins.push(new PluginInstance(spec)); - } else { - var plugin = this.plugins[found]; - plugin.mustUpdate = update2; - newPlugins.push(plugin); - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } + updatePlugins(e) { + var t = e.startState.facet(Rn), + i = e.state.facet(Rn); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (t != i) { + var n = []; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = this.plugins[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var plugin1 = _step1.value; - if (plugin1.mustUpdate != update2) plugin1.destroy(this); + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var s = _step.value; + var o = t.indexOf(s); + if (o < 0) n.push(new qr(s)); + else { + var u = this.plugins[o]; + (u.mustUpdate = e), n.push(u); + } } } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; } finally { try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); + if (!_iteratorNormalCompletion1 && _iterator.return != null) { + _iterator.return(); } } finally { if (_didIteratorError1) { @@ -18337,25 +14345,21 @@ var __generator = } } } - this.plugins = newPlugins; - this.pluginMap.clear(); - this.inputState.ensureHandlers(this, this.plugins); - } else { var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined; try { - for (var _iterator2 = this.plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var p = _step2.value; - p.mustUpdate = update2; + for (var _iterator1 = this.plugins[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true) { + var s1 = _step1.value; + s1.mustUpdate != e && s1.destroy(this); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); + if (!_iteratorNormalCompletion2 && _iterator1.return != null) { + _iterator1.return(); } } finally { if (_didIteratorError2) { @@ -18363,98 +14367,96 @@ var __generator = } } } - } - for (var i = 0; i < this.plugins.length; i++) this.plugins[i].update(this); + (this.plugins = n), this.pluginMap.clear(), this.inputState.ensureHandlers(this, this.plugins); + } else + try { + for (var _iterator2 = this.plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion = true) { + var n1 = _step2.value; + n1.mustUpdate = e; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator2.return != null) { + _iterator2.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + for (var n2 = 0; n2 < this.plugins.length; n2++) this.plugins[n2].update(this); } measure() { - var flush2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0; if (this.destroyed) return; - if (this.measureScheduled > -1) cancelAnimationFrame(this.measureScheduled); - this.measureScheduled = 0; - if (flush2) this.observer.forceFlush(); - var updated = null; - var _this_scrollDOM = this.scrollDOM, - scrollHeight = _this_scrollDOM.scrollHeight, - scrollTop = _this_scrollDOM.scrollTop, - clientHeight = _this_scrollDOM.clientHeight; - var refHeight = scrollTop > scrollHeight - clientHeight - 4 ? scrollHeight : scrollTop; + this.measureScheduled > -1 && cancelAnimationFrame(this.measureScheduled), (this.measureScheduled = 0), e && this.observer.forceFlush(); + var t = null, + _this_scrollDOM = this.scrollDOM, + i = _this_scrollDOM.scrollHeight, + n = _this_scrollDOM.scrollTop, + s = _this_scrollDOM.clientHeight, + o = n > i - s - 4 ? i : n; try { var _this = this, - _loop = function (i) { + _loop = function (u) { _this.updateState = 1; - var oldViewport = _this.viewport; - var refBlock = _this.viewState.lineBlockAtHeight(refHeight); - var changed = _this.viewState.measure(_this); - if (!changed && !_this.measureRequests.length && _this.viewState.scrollTarget == null) return "break"; - if (i > 5) { + var l = _this.viewport, + a = _this.viewState.lineBlockAtHeight(o), + c = _this.viewState.measure(_this); + if (!c && !_this.measureRequests.length && _this.viewState.scrollTarget == null) return "break"; + if (u > 5) { console.warn(_this.measureRequests.length ? "Measure loop restarted more than 5 times" : "Viewport failed to stabilize"); return "break"; } - var measuring = []; + var f = []; var ref; - if (!(changed & 4)) (ref = [measuring, _this.measureRequests]), (_this.measureRequests = ref[0]), (measuring = ref[1]), ref; - var measured = measuring.map((m) => { - try { - return m.read(_this); - } catch (e) { - logException(_this.state, e); - return BadMeasure; - } - }); - var update2 = ViewUpdate.create(_this, _this.state, []), - redrawn = false, - scrolled = false; - update2.flags |= changed; - if (!updated) updated = update2; - else updated.flags |= changed; - _this.updateState = 2; - if (!update2.empty) { - _this.updatePlugins(update2); - _this.inputState.update(update2); - _this.updateAttrs(); - redrawn = _this.docView.update(update2); - } - for (var i2 = 0; i2 < measuring.length; i2++) - if (measured[i2] != BadMeasure) { + c & 4 || ((ref = [f, _this.measureRequests]), (_this.measureRequests = ref[0]), (f = ref[1]), ref); + var d = f.map((g) => { try { - var m = measuring[i2]; - if (m.write) m.write(measured[i2], _this); - } catch (e) { - logException(_this.state, e); + return g.read(_this); + } catch (b) { + return Ft(_this.state, b), gg; } - } - if (_this.viewState.editorHeight) { - if (_this.viewState.scrollTarget) { - _this.docView.scrollIntoView(_this.viewState.scrollTarget); - _this.viewState.scrollTarget = null; - scrolled = true; - } else { - var diff = _this.viewState.lineBlockAt(refBlock.from).top - refBlock.top; - if (diff > 1 || diff < -1) { - _this.scrollDOM.scrollTop += diff; - scrolled = true; + }), + p = Zi.create(_this, _this.state, []), + m = !1, + D = !1; + (p.flags |= c), t ? (t.flags |= c) : (t = p), (_this.updateState = 2), p.empty || (_this.updatePlugins(p), _this.inputState.update(p), _this.updateAttrs(), (m = _this.docView.update(p))); + for (var g = 0; g < f.length; g++) + if (d[g] != gg) + try { + var _$b = f[g]; + _$b.write && _$b.write(d[g], _this); + } catch (b) { + Ft(_this.state, b); } + if (_this.viewState.editorHeight) + if (_this.viewState.scrollTarget) _this.docView.scrollIntoView(_this.viewState.scrollTarget), (_this.viewState.scrollTarget = null), (D = !0); + else { + var g1 = _this.viewState.lineBlockAt(a.from).top - a.top; + (g1 > 1 || g1 < -1) && ((_this.scrollDOM.scrollTop += g1), (D = !0)); } - } - if (redrawn) _this.docView.updateSelection(true); - if (_this.viewport.from == oldViewport.from && _this.viewport.to == oldViewport.to && !scrolled && _this.measureRequests.length == 0) return "break"; + if ((m && _this.docView.updateSelection(!0), _this.viewport.from == l.from && _this.viewport.to == l.to && !D && _this.measureRequests.length == 0)) return "break"; }; - for (var i = 0; ; i++) { - var _ret = _loop(i); + for (var u = 0; ; u++) { + var _ret = _loop(u); if (_ret === "break") break; } } finally { - this.updateState = 0; - this.measureScheduled = -1; + (this.updateState = 0), (this.measureScheduled = -1); } var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - if (updated && !updated.empty) + if (t && !t.empty) try { - for (var _iterator = this.state.facet(updateListener)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var listener = _step.value; - listener(updated); + for (var _iterator = this.state.facet(nh)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var u1 = _step.value; + u1(t); } } catch (err) { _didIteratorError = true; @@ -18472,36 +14474,21 @@ var __generator = } } get themeClasses() { - return baseThemeID + " " + (this.state.facet(darkTheme) ? baseDarkID : baseLightID) + " " + this.state.facet(theme); + return ch + " " + (this.state.facet(hh) ? dD : fD) + " " + this.state.facet(_o); } updateAttrs() { - var editorAttrs = attrsFromFacet(this, editorAttributes, { - class: "cm-editor" + (this.hasFocus ? " cm-focused " : " ") + this.themeClasses, + var e = Dg(this, Gg, { class: "cm-editor" + (this.hasFocus ? " cm-focused " : " ") + this.themeClasses }), + t = { spellcheck: "false", autocorrect: "off", autocapitalize: "off", translate: "no", contenteditable: this.state.facet(ou) ? "true" : "false", class: "cm-content", style: "".concat(U.tabSize, ": ").concat(this.state.tabSize), role: "textbox", "aria-multiline": "true" }; + this.state.readOnly && (t["aria-readonly"] = "true"), Dg(this, Dh, t); + var i = this.observer.ignore(() => { + var n = ih(this.contentDOM, this.contentAttrs, t), + s = ih(this.dom, this.editorAttrs, e); + return n || s; }); - var contentAttrs = { - spellcheck: "false", - autocorrect: "off", - autocapitalize: "off", - translate: "no", - contenteditable: !this.state.facet(editable) ? "false" : "true", - class: "cm-content", - style: "".concat(browser.tabSize, ": ").concat(this.state.tabSize), - role: "textbox", - "aria-multiline": "true", - }; - if (this.state.readOnly) contentAttrs["aria-readonly"] = "true"; - attrsFromFacet(this, contentAttributes, contentAttrs); - var changed = this.observer.ignore(() => { - var changedContent = updateAttrs(this.contentDOM, this.contentAttrs, contentAttrs); - var changedEditor = updateAttrs(this.dom, this.editorAttrs, editorAttrs); - return changedContent || changedEditor; - }); - this.editorAttrs = editorAttrs; - this.contentAttrs = contentAttrs; - return changed; + return (this.editorAttrs = e), (this.contentAttrs = t), i; } - showAnnouncements(trs) { - var first = true; + showAnnouncements(e) { + var t = !0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined, @@ -18509,16 +14496,15 @@ var __generator = _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator = trs[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { - var tr = _step.value; + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var i = _step.value; try { - for (var _iterator1 = tr.effects[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { - var effect = _step1.value; - if (effect.is(EditorView.announce)) { - if (first) this.announceDOM.textContent = ""; - first = false; - var div = this.announceDOM.appendChild(document.createElement("div")); - div.textContent = effect.value; + for (var _iterator1 = i.effects[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { + var n = _step1.value; + if (n.is(te.announce)) { + t && (this.announceDOM.textContent = ""), (t = !1); + var s = this.announceDOM.appendChild(document.createElement("div")); + s.textContent = n.value; } } } catch (err) { @@ -18552,95 +14538,87 @@ var __generator = } } mountStyles() { - this.styleModules = this.state.facet(styleModule); - StyleModule.mount(this.root, this.styleModules.concat(baseTheme$1).reverse()); + (this.styleModules = this.state.facet($n)), lt.mount(this.root, this.styleModules.concat(Dk).reverse()); } readMeasured() { if (this.updateState == 2) throw new Error("Reading the editor layout isn't allowed during an update"); - if (this.updateState == 0 && this.measureScheduled > -1) this.measure(false); - } - requestMeasure(request) { - if (this.measureScheduled < 0) this.measureScheduled = this.win.requestAnimationFrame(() => this.measure()); - if (request) { - if (request.key != null) - for (var i = 0; i < this.measureRequests.length; i++) { - if (this.measureRequests[i].key === request.key) { - this.measureRequests[i] = request; + this.updateState == 0 && this.measureScheduled > -1 && this.measure(!1); + } + requestMeasure(e) { + if ((this.measureScheduled < 0 && (this.measureScheduled = this.win.requestAnimationFrame(() => this.measure())), e)) { + if (this.measureRequests.indexOf(e) > -1) return; + if (e.key != null) { + for (var t = 0; t < this.measureRequests.length; t++) + if (this.measureRequests[t].key === e.key) { + this.measureRequests[t] = e; return; } - } - this.measureRequests.push(request); + } + this.measureRequests.push(e); } } - plugin(plugin) { - var known = this.pluginMap.get(plugin); - if (known === void 0 || (known && known.spec != plugin)) this.pluginMap.set(plugin, (known = this.plugins.find((p) => p.spec == plugin) || null)); - return known && known.update(this).value; + plugin(e) { + var t = this.pluginMap.get(e); + return (t === void 0 || (t && t.spec != e)) && this.pluginMap.set(e, (t = this.plugins.find((i) => i.spec == e) || null)), t && t.update(this).value; } get documentTop() { return this.contentDOM.getBoundingClientRect().top + this.viewState.paddingTop; } get documentPadding() { - return { - top: this.viewState.paddingTop, - bottom: this.viewState.paddingBottom, - }; + return { top: this.viewState.paddingTop, bottom: this.viewState.paddingBottom }; } - elementAtHeight(height) { - this.readMeasured(); - return this.viewState.elementAtHeight(height); + elementAtHeight(e) { + return this.readMeasured(), this.viewState.elementAtHeight(e); } - lineBlockAtHeight(height) { - this.readMeasured(); - return this.viewState.lineBlockAtHeight(height); + lineBlockAtHeight(e) { + return this.readMeasured(), this.viewState.lineBlockAtHeight(e); } get viewportLineBlocks() { return this.viewState.viewportLines; } - lineBlockAt(pos) { - return this.viewState.lineBlockAt(pos); + lineBlockAt(e) { + return this.viewState.lineBlockAt(e); } get contentHeight() { return this.viewState.contentHeight; } - moveByChar(start, forward, by) { - return skipAtoms(this, start, moveByChar(this, start, forward, by)); + moveByChar(e, t, i) { + return Ua(this, e, rg(this, e, t, i)); } - moveByGroup(start, forward) { - return skipAtoms( + moveByGroup(e, t) { + return Ua( this, - start, - moveByChar(this, start, forward, (initial) => byGroup(this, start.head, initial)) + e, + rg(this, e, t, (i) => Jv(this, e.head, i)) ); } - moveToLineBoundary(start, forward) { - var includeWrap = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - return moveToLineBoundary(this, start, forward, includeWrap); + moveToLineBoundary(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0; + return Qv(this, e, t, i); } - moveVertically(start, forward, distance) { - return skipAtoms(this, start, moveVertically(this, start, forward, distance)); + moveVertically(e, t, i) { + return Ua(this, e, Zv(this, e, t, i)); } - domAtPos(pos) { - return this.docView.domAtPos(pos); + domAtPos(e) { + return this.docView.domAtPos(e); } - posAtDOM(node) { - var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - return this.docView.posFromDOM(node, offset); + posAtDOM(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return this.docView.posFromDOM(e, t); } - posAtCoords(coords) { - var precise = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - this.readMeasured(); - return posAtCoords(this, coords, precise); + posAtCoords(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0; + return this.readMeasured(), iD(this, e, t); } - coordsAtPos(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; + coordsAtPos(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; this.readMeasured(); - var rect = this.docView.coordsAt(pos, side); - if (!rect || rect.left == rect.right) return rect; - var line = this.state.doc.lineAt(pos), - order = this.bidiSpans(line); - var span = order[BidiSpan.find(order, pos - line.from, -1, side)]; - return flattenRect(rect, (span.dir == Direction.LTR) == side > 0); + var i = this.docView.coordsAt(e, t); + if (!i || i.left == i.right) return i; + var n = this.state.doc.lineAt(e), + s = this.bidiSpans(n), + o = s[hi.find(s, e - n.from, -1, t)]; + return ph(i, (o.dir == _e.LTR) == t > 0); } get defaultCharacterWidth() { return this.viewState.heightOracle.charWidth; @@ -18651,25 +14629,22 @@ var __generator = get textDirection() { return this.viewState.defaultTextDirection; } - textDirectionAt(pos) { - var perLine = this.state.facet(perLineTextDirection); - if (!perLine || pos < this.viewport.from || pos > this.viewport.to) return this.textDirection; - this.readMeasured(); - return this.docView.textDirectionAt(pos); + textDirectionAt(e) { + return !this.state.facet(Ug) || e < this.viewport.from || e > this.viewport.to ? this.textDirection : (this.readMeasured(), this.docView.textDirectionAt(e)); } get lineWrapping() { return this.viewState.heightOracle.lineWrapping; } - bidiSpans(line) { - if (line.length > MaxBidiLine) return trivialOrder(line.length); - var dir = this.textDirectionAt(line.from); + bidiSpans(e) { + if (e.length > Ek) return Jg(e.length); + var t = this.textDirectionAt(e.from); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.bidiCache[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var entry = _step.value; - if (entry.from == line.from && entry.dir == dir) return entry.order; + var n = _step.value; + if (n.from == e.from && n.dir == t) return n.order; } } catch (err) { _didIteratorError = true; @@ -18685,26 +14660,20 @@ var __generator = } } } - var order = computeOrder(line.text, dir); - this.bidiCache.push(new CachedOrder(line.from, line.to, dir, order)); - return order; + var i = Iv(e.text, t); + return this.bidiCache.push(new er(e.from, e.to, t, i)), i; } get hasFocus() { - var _a2; - return (this.dom.ownerDocument.hasFocus() || (browser.safari && ((_a2 = this.inputState) === null || _a2 === void 0 ? void 0 : _a2.lastContextMenu) > Date.now() - 3e4)) && this.root.activeElement == this.contentDOM; + var e; + return (this.dom.ownerDocument.hasFocus() || (U.safari && ((e = this.inputState) === null || e === void 0 ? void 0 : e.lastContextMenu) > Date.now() - 3e4)) && this.root.activeElement == this.contentDOM; } focus() { this.observer.ignore(() => { - focusPreventScroll(this.contentDOM); - this.docView.updateSelection(); + Bg(this.contentDOM), this.docView.updateSelection(); }); } - setRoot(root) { - if (this._root != root) { - this._root = root; - this.observer.setWindow((root.nodeType == 9 ? root : root.ownerDocument).defaultView || window); - this.mountStyles(); - } + setRoot(e) { + this._root != e && ((this._root = e), this.observer.setWindow((e.nodeType == 9 ? e : e.ownerDocument).defaultView || window), this.mountStyles()); } destroy() { var _iteratorNormalCompletion = true, @@ -18712,8 +14681,8 @@ var __generator = _iteratorError = undefined; try { for (var _iterator = this.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var plugin = _step.value; - plugin.destroy(this); + var e = _step.value; + e.destroy(this); } } catch (err) { _didIteratorError = true; @@ -18729,71 +14698,63 @@ var __generator = } } } - this.plugins = []; - this.inputState.destroy(); - this.dom.remove(); - this.observer.destroy(); - if (this.measureScheduled > -1) cancelAnimationFrame(this.measureScheduled); - this.destroyed = true; + (this.plugins = []), this.inputState.destroy(), this.dom.remove(), this.observer.destroy(), this.measureScheduled > -1 && cancelAnimationFrame(this.measureScheduled), (this.destroyed = !0); } - static scrollIntoView(pos) { - var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - return scrollIntoView.of(new ScrollTarget(typeof pos == "number" ? EditorSelection.cursor(pos) : pos, options.y, options.x, options.yMargin, options.xMargin)); + static scrollIntoView(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + return Q0.of(new Ji(typeof e == "number" ? z.cursor(e) : e, t.y, t.x, t.yMargin, t.xMargin)); } - static domEventHandlers(handlers2) { - return ViewPlugin.define(() => ({}), { - eventHandlers: handlers2, - }); + static domEventHandlers(e) { + return ze.define(() => ({}), { eventHandlers: e }); } - static theme(spec, options) { - var prefix = StyleModule.newName(); - var result = [theme.of(prefix), styleModule.of(buildTheme(".".concat(prefix), spec))]; - if (options && options.dark) result.push(darkTheme.of(true)); - return result; + static theme(e, t) { + var i = lt.newName(), + n = [_o.of(i), $n.of(fh(".".concat(i), e))]; + return t && t.dark && n.push(hh.of(!0)), n; } - static baseTheme(spec) { - return Prec.lowest(styleModule.of(buildTheme("." + baseThemeID, spec, lightDarkIDs))); + static baseTheme(e) { + return Tr.lowest($n.of(fh("." + ch, e, pD))); } - static findFromDOM(dom) { - var _a2; - var content2 = dom.querySelector(".cm-content"); - var cView = (content2 && ContentView.get(content2)) || ContentView.get(dom); - return ((_a2 = cView === null || cView === void 0 ? void 0 : cView.rootView) === null || _a2 === void 0 ? void 0 : _a2.view) || null; + static findFromDOM(e) { + var t; + var i = e.querySelector(".cm-content"), + n = (i && De.get(i)) || De.get(e); + return ((t = n === null || n === void 0 ? void 0 : n.rootView) === null || t === void 0 ? void 0 : t.view) || null; } constructor(ref) { - var config = ref === void 0 ? {} : ref; - this.plugins = []; - this.pluginMap = /* @__PURE__ */ new Map(); - this.editorAttrs = {}; - this.contentAttrs = {}; - this.bidiCache = []; - this.destroyed = false; - this.updateState = 2; - this.measureScheduled = -1; - this.measureRequests = []; - this.contentDOM = document.createElement("div"); - this.scrollDOM = document.createElement("div"); - this.scrollDOM.tabIndex = -1; - this.scrollDOM.className = "cm-scroller"; - this.scrollDOM.appendChild(this.contentDOM); - this.announceDOM = document.createElement("div"); - this.announceDOM.style.cssText = "position: fixed; top: -10000px"; - this.announceDOM.setAttribute("aria-live", "polite"); - this.dom = document.createElement("div"); - this.dom.appendChild(this.announceDOM); - this.dom.appendChild(this.scrollDOM); - this._dispatch = config.dispatch || ((tr) => this.update([tr])); - this.dispatch = this.dispatch.bind(this); - this._root = config.root || getRoot(config.parent) || document; - this.viewState = new ViewState(config.state || EditorState.create(config)); - this.plugins = this.state.facet(viewPlugin).map((spec) => new PluginInstance(spec)); + var e = ref === void 0 ? {} : ref; + (this.plugins = []), + (this.pluginMap = new Map()), + (this.editorAttrs = {}), + (this.contentAttrs = {}), + (this.bidiCache = []), + (this.destroyed = !1), + (this.updateState = 2), + (this.measureScheduled = -1), + (this.measureRequests = []), + (this.contentDOM = document.createElement("div")), + (this.scrollDOM = document.createElement("div")), + (this.scrollDOM.tabIndex = -1), + (this.scrollDOM.className = "cm-scroller"), + this.scrollDOM.appendChild(this.contentDOM), + (this.announceDOM = document.createElement("div")), + (this.announceDOM.style.cssText = "position: fixed; top: -10000px"), + this.announceDOM.setAttribute("aria-live", "polite"), + (this.dom = document.createElement("div")), + this.dom.appendChild(this.announceDOM), + this.dom.appendChild(this.scrollDOM), + (this._dispatch = e.dispatch || ((t) => this.update([t]))), + (this.dispatch = this.dispatch.bind(this)), + (this._root = e.root || xv(e.parent) || document), + (this.viewState = new Hn(e.state || ae.create(e))), + (this.plugins = this.state.facet(Rn).map((t) => new qr(t))); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var plugin = _step.value; - plugin.update(this); + var t = _step.value; + t.update(this); } } catch (err) { _didIteratorError = true; @@ -18809,186 +14770,149 @@ var __generator = } } } - this.observer = new DOMObserver(this); - this.inputState = new InputState(this); - this.inputState.ensureHandlers(this, this.plugins); - this.docView = new DocView(this); - this.mountStyles(); - this.updateAttrs(); - this.updateState = 0; - this.requestMeasure(); - if (config.parent) config.parent.appendChild(this.dom); - } - }; - __name(EditorView, "EditorView"); - EditorView.styleModule = styleModule; - EditorView.inputHandler = inputHandler; - EditorView.perLineTextDirection = perLineTextDirection; - EditorView.exceptionSink = exceptionSink; - EditorView.updateListener = updateListener; - EditorView.editable = editable; - EditorView.mouseSelectionStyle = mouseSelectionStyle; - EditorView.dragMovesSelection = dragMovesSelection$1; - EditorView.clickAddsSelectionRange = clickAddsSelectionRange; - EditorView.decorations = decorations; - EditorView.atomicRanges = atomicRanges; - EditorView.scrollMargins = scrollMargins; - EditorView.darkTheme = darkTheme; - EditorView.contentAttributes = contentAttributes; - EditorView.editorAttributes = editorAttributes; - EditorView.lineWrapping = /* @__PURE__ */ EditorView.contentAttributes.of({ - class: "cm-lineWrapping", - }); - EditorView.announce = /* @__PURE__ */ StateEffect.define(); - var MaxBidiLine = 4096; - var BadMeasure = {}; - var CachedOrder = class CachedOrder1 { - static update(cache, changes) { - if (changes.empty) return cache; - var result = [], - lastDir = cache.length ? cache[cache.length - 1].dir : Direction.LTR; - for (var i = Math.max(0, cache.length - 10); i < cache.length; i++) { - var entry = cache[i]; - if (entry.dir == lastDir && !changes.touchesRange(entry.from, entry.to)) result.push(new CachedOrder(changes.mapPos(entry.from, 1), changes.mapPos(entry.to, -1), entry.dir, entry.order)); - } - return result; - } - constructor(from, to, dir, order) { - this.from = from; - this.to = to; - this.dir = dir; - this.order = order; + (this.observer = new Yo(this)), (this.inputState = new Lo(this)), this.inputState.ensureHandlers(this, this.plugins), (this.docView = new zn(this)), this.mountStyles(), this.updateAttrs(), (this.updateState = 0), this.requestMeasure(), e.parent && e.parent.appendChild(this.dom); } }; - __name(CachedOrder, "CachedOrder"); - function attrsFromFacet(view, facet, base2) { - for (var sources = view.state.facet(facet), i = sources.length - 1; i >= 0; i--) { - var source = sources[i], - value = typeof source == "function" ? source(view) : source; - if (value) combineAttrs(value, base2); - } - return base2; - } - __name(attrsFromFacet, "attrsFromFacet"); - var currentPlatform = browser.mac ? "mac" : browser.windows ? "win" : browser.linux ? "linux" : "key"; - function normalizeKeyName(name2, platform) { - var parts = name2.split(/-(?!$)/); - var result = parts[parts.length - 1]; - if (result == "Space") result = " "; - var alt, ctrl, shift2, meta2; - for (var i = 0; i < parts.length - 1; ++i) { - var mod = parts[i]; - if (/^(cmd|meta|m)$/i.test(mod)) meta2 = true; - else if (/^a(lt)?$/i.test(mod)) alt = true; - else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true; - else if (/^s(hift)?$/i.test(mod)) shift2 = true; - else if (/^mod$/i.test(mod)) { - if (platform == "mac") meta2 = true; - else ctrl = true; - } else throw new Error("Unrecognized modifier name: " + mod); - } - if (alt) result = "Alt-" + result; - if (ctrl) result = "Ctrl-" + result; - if (meta2) result = "Meta-" + result; - if (shift2) result = "Shift-" + result; - return result; - } - __name(normalizeKeyName, "normalizeKeyName"); - function modifiers(name2, event, shift2) { - if (event.altKey) name2 = "Alt-" + name2; - if (event.ctrlKey) name2 = "Ctrl-" + name2; - if (event.metaKey) name2 = "Meta-" + name2; - if (shift2 !== false && event.shiftKey) name2 = "Shift-" + name2; - return name2; - } - __name(modifiers, "modifiers"); - var handleKeyEvents = /* @__PURE__ */ Prec.default( - /* @__PURE__ */ EditorView.domEventHandlers({ - keydown(event, view) { - return runHandlers(getKeymap(view.state), event, view, "editor"); - }, - }) - ); - var keymap = /* @__PURE__ */ Facet.define({ - enables: handleKeyEvents, - }); - var Keymaps = /* @__PURE__ */ new WeakMap(); - function getKeymap(state) { - var bindings = state.facet(keymap); - var map = Keymaps.get(bindings); - if (!map) Keymaps.set(bindings, (map = buildKeymap(bindings.reduce((a, b) => a.concat(b), [])))); - return map; - } - __name(getKeymap, "getKeymap"); - var storedPrefix = null; - var PrefixTimeout = 4e3; - function buildKeymap(bindings) { - var platform = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : currentPlatform; - var bound = /* @__PURE__ */ Object.create(null); - var isPrefix = /* @__PURE__ */ Object.create(null); - var checkPrefix = /* @__PURE__ */ __name((name2, is) => { - var current = isPrefix[name2]; - if (current == null) isPrefix[name2] = is; - else if (current != is) throw new Error("Key binding " + name2 + " is used both as a regular binding and as a multi-stroke prefix"); - }, "checkPrefix"); - var add2 = /* @__PURE__ */ __name((scope, key, command, preventDefault) => { - var _loop = function (i) { - var prefix = parts.slice(0, i).join(" "); - checkPrefix(prefix, true); - if (!scopeObj[prefix]) - scopeObj[prefix] = { - preventDefault: true, - run: [ - (view) => { - var ourObj = (storedPrefix = { - view, - prefix, - scope, - }); - setTimeout(() => { - if (storedPrefix == ourObj) storedPrefix = null; - }, PrefixTimeout); - return true; - }, - ], - }; - }; - var _a2, _b; - var scopeObj = bound[scope] || (bound[scope] = /* @__PURE__ */ Object.create(null)); - var parts = key.split(/ (?!$)/).map((k) => normalizeKeyName(k, platform)); - for (var i = 1; i < parts.length; i++) _loop(i); - var full = parts.join(" "); - checkPrefix(full, false); - var binding = - scopeObj[full] || - (scopeObj[full] = { - preventDefault: false, - run: ((_b = (_a2 = scopeObj._any) === null || _a2 === void 0 ? void 0 : _a2.run) === null || _b === void 0 ? void 0 : _b.slice()) || [], - }); - if (command) binding.run.push(command); - if (preventDefault) binding.preventDefault = true; - }, "add"); + h(te, "EditorView"); + te.styleModule = $n; + te.inputHandler = jg; + te.focusChangeEffect = Hg; + te.perLineTextDirection = Ug; + te.exceptionSink = Wg; + te.updateListener = nh; + te.editable = ou; + te.mouseSelectionStyle = zg; + te.dragMovesSelection = Vg; + te.clickAddsSelectionRange = Ng; + te.decorations = Qn; + te.atomicRanges = Kg; + te.scrollMargins = Xg; + te.darkTheme = hh; + te.contentAttributes = Dh; + te.editorAttributes = Gg; + te.lineWrapping = te.contentAttributes.of({ class: "cm-lineWrapping" }); + te.announce = de.define(); + var Ek = 4096, + gg = {}, + er = class er1 { + static update(e, t) { + if (t.empty) return e; + var i = [], + n = e.length ? e[e.length - 1].dir : _e.LTR; + for (var s = Math.max(0, e.length - 10); s < e.length; s++) { + var o = e[s]; + o.dir == n && !t.touchesRange(o.from, o.to) && i.push(new er(t.mapPos(o.from, 1), t.mapPos(o.to, -1), o.dir, o.order)); + } + return i; + } + constructor(e, t, i, n) { + (this.from = e), (this.to = t), (this.dir = i), (this.order = n); + } + }; + h(er, "CachedOrder"); + function Dg(r, e, t) { + for (var i = r.state.facet(e), n = i.length - 1; n >= 0; n--) { + var s = i[n], + o = typeof s == "function" ? s(r) : s; + o && th(o, t); + } + return t; + } + h(Dg, "attrsFromFacet"); + var vk = U.mac ? "mac" : U.windows ? "win" : U.linux ? "linux" : "key"; + function kk(r, e) { + var t = r.split(/-(?!$)/), + i = t[t.length - 1]; + i == "Space" && (i = " "); + var n, s, o, u; + for (var l = 0; l < t.length - 1; ++l) { + var a = t[l]; + if (/^(cmd|meta|m)$/i.test(a)) u = !0; + else if (/^a(lt)?$/i.test(a)) n = !0; + else if (/^(c|ctrl|control)$/i.test(a)) s = !0; + else if (/^s(hift)?$/i.test(a)) o = !0; + else if (/^mod$/i.test(a)) e == "mac" ? (u = !0) : (s = !0); + else throw new Error("Unrecognized modifier name: " + a); + } + return n && (i = "Alt-" + i), s && (i = "Ctrl-" + i), u && (i = "Meta-" + i), o && (i = "Shift-" + i), i; + } + h(kk, "normalizeKeyName"); + function Oo(r, e, t) { + return e.altKey && (r = "Alt-" + r), e.ctrlKey && (r = "Ctrl-" + r), e.metaKey && (r = "Meta-" + r), t !== !1 && e.shiftKey && (r = "Shift-" + r), r; + } + h(Oo, "modifiers"); + var wk = Tr.default( + te.domEventHandlers({ + keydown(r, e) { + return _k(xk(e.state), r, e, "editor"); + }, + }) + ), + bh = H.define({ enables: wk }), + bg = new WeakMap(); + function xk(r) { + var e = r.facet(bh), + t = bg.get(e); + return t || bg.set(e, (t = Bk(e.reduce((i, n) => i.concat(n), [])))), t; + } + h(xk, "getKeymap"); + var xi = null, + Sk = 4e3; + function Bk(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : vk; + var t = Object.create(null), + i = Object.create(null), + n = h((o, u) => { + var l = i[o]; + if (l == null) i[o] = u; + else if (l != u) throw new Error("Key binding " + o + " is used both as a regular binding and as a multi-stroke prefix"); + }, "checkPrefix"), + s = h((o, u, l, a) => { + var _loop = function (g) { + var b = p.slice(0, g).join(" "); + n(b, !0), + d[b] || + (d[b] = { + preventDefault: !0, + run: [ + (F) => { + var A = (xi = { view: F, prefix: b, scope: o }); + return ( + setTimeout(() => { + xi == A && (xi = null); + }, Sk), + !0 + ); + }, + ], + }); + }; + var c, f; + var d = t[o] || (t[o] = Object.create(null)), + p = u.split(/ (?!$)/).map((g) => kk(g, e)); + for (var g = 1; g < p.length; g++) _loop(g); + var m = p.join(" "); + n(m, !1); + var D = d[m] || (d[m] = { preventDefault: !1, run: ((f = (c = d._any) === null || c === void 0 ? void 0 : c.run) === null || f === void 0 ? void 0 : f.slice()) || [] }); + l && D.run.push(l), a && (D.preventDefault = !0); + }, "add"); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = bindings[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var b = _step.value; - var scopes = b.scope ? b.scope.split(" ") : ["editor"]; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var o = _step.value; + var u = o.scope ? o.scope.split(" ") : ["editor"]; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; - if (b.any) + if (o.any) try { - for (var _iterator1 = scopes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var scope = _step1.value; - var scopeObj = bound[scope] || (bound[scope] = /* @__PURE__ */ Object.create(null)); - if (!scopeObj._any) - scopeObj._any = { - preventDefault: false, - run: [], - }; - for (var key in scopeObj) scopeObj[key].run.push(b.any); + for (var _iterator1 = u[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var a = _step1.value; + var c = t[a] || (t[a] = Object.create(null)); + c._any || (c._any = { preventDefault: !1, run: [] }); + for (var f in c) c[f].run.push(o.any); } } catch (err) { _didIteratorError1 = true; @@ -19004,31 +14928,30 @@ var __generator = } } } - var name2 = b[platform] || b.key; - if (!name2) continue; + var l = o[e] || o.key; var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined; - try { - for (var _iterator2 = scopes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var scope1 = _step2.value; - add2(scope1, name2, b.run, b.preventDefault); - if (b.shift) add2(scope1, "Shift-" + name2, b.shift, b.preventDefault); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { + if (l) try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); + for (var _iterator2 = u[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var a1 = _step2.value; + s(a1, l, o.run, o.preventDefault), o.shift && s(a1, "Shift-" + l, o.shift, o.preventDefault); } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; } finally { - if (_didIteratorError2) { - throw _iteratorError2; + try { + if (!_iteratorNormalCompletion2 && _iterator2.return != null) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } } } - } } } catch (err) { _didIteratorError = true; @@ -19044,135 +14967,106 @@ var __generator = } } } - return bound; + return t; } - __name(buildKeymap, "buildKeymap"); - function runHandlers(map, event, view, scope) { - var name2 = keyName(event); - var charCode = codePointAt(name2, 0), - isChar = codePointSize(charCode) == name2.length && name2 != " "; - var prefix = "", - fallthrough = false; - if (storedPrefix && storedPrefix.view == view && storedPrefix.scope == scope) { - prefix = storedPrefix.prefix + " "; - if ((fallthrough = modifierCodes.indexOf(event.keyCode) < 0)) storedPrefix = null; - } - var ran = /* @__PURE__ */ new Set(); - var runFor = /* @__PURE__ */ __name((binding) => { - if (binding) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = binding.run[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var cmd2 = _step.value; - if (!ran.has(cmd2)) { - ran.add(cmd2); - if (cmd2(view, event)) return true; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(Bk, "buildKeymap"); + function _k(r, e, t, i) { + var n = j0(e), + s = Bn(n, 0), + o = yo(s) == n.length && n != " ", + u = "", + l = !1; + xi && xi.view == t && xi.scope == i && ((u = xi.prefix + " "), (l = nD.indexOf(e.keyCode) < 0) && (xi = null)); + var a = new Set(), + c = h((m) => { + if (m) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = m.run[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var D = _step.value; + if (!a.has(D) && (a.add(D), D(t, e))) return !0; } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - if (binding.preventDefault) fallthrough = true; - } - return false; - }, "runFor"); - var scopeObj = map[scope], - baseName, - shiftName; - if (scopeObj) { - if (runFor(scopeObj[prefix + modifiers(name2, event, !isChar)])) return true; - if (isChar && (event.altKey || event.metaKey || event.ctrlKey) && (baseName = base[event.keyCode]) && baseName != name2) { - if (runFor(scopeObj[prefix + modifiers(baseName, event, true)])) return true; - else if (event.shiftKey && (shiftName = shift[event.keyCode]) != name2 && shiftName != baseName && runFor(scopeObj[prefix + modifiers(shiftName, event, false)])) return true; - } else if (isChar && event.shiftKey) { - if (runFor(scopeObj[prefix + modifiers(name2, event, true)])) return true; - } - if (runFor(scopeObj._any)) return true; - } - return fallthrough; - } - __name(runHandlers, "runHandlers"); - var RectangleMarker = class RectangleMarker1 { + m.preventDefault && (l = !0); + } + return !1; + }, "runFor"), + f = r[i], + d, + p; + if (f) { + if (c(f[u + Oo(n, e, !o)])) return !0; + if (o && (e.altKey || e.metaKey || e.ctrlKey) && !(U.windows && e.ctrlKey && e.altKey) && (d = li[e.keyCode]) && d != n) { + if (c(f[u + Oo(d, e, !0)])) return !0; + if (e.shiftKey && (p = Rr[e.keyCode]) != n && p != d && c(f[u + Oo(p, e, !1)])) return !0; + } else if (o && e.shiftKey && c(f[u + Oo(n, e, !0)])) return !0; + if (c(f._any)) return !0; + } + return l; + } + h(_k, "runHandlers"); + var _i1 = class _i { draw() { - var elt = document.createElement("div"); - elt.className = this.className; - this.adjust(elt); - return elt; - } - update(elt, prev) { - if (prev.className != this.className) return false; - this.adjust(elt); - return true; - } - adjust(elt) { - elt.style.left = this.left + "px"; - elt.style.top = this.top + "px"; - if (this.width != null) elt.style.width = this.width + "px"; - elt.style.height = this.height + "px"; - } - eq(p) { - return this.left == p.left && this.top == p.top && this.width == p.width && this.height == p.height && this.className == p.className; - } - static forRange(view, className, range) { - if (range.empty) { - var pos = view.coordsAtPos(range.head, range.assoc || 1); - if (!pos) return []; - var base2 = getBase(view); - return [new RectangleMarker(className, pos.left - base2.left, pos.top - base2.top, null, pos.bottom - pos.top)]; - } else { - return rectanglesForRange(view, className, range); - } + var e = document.createElement("div"); + return (e.className = this.className), this.adjust(e), e; + } + update(e, t) { + return t.className != this.className ? !1 : (this.adjust(e), !0); + } + adjust(e) { + (e.style.left = this.left + "px"), (e.style.top = this.top + "px"), this.width != null && (e.style.width = this.width + "px"), (e.style.height = this.height + "px"); } - constructor(className, left, top2, width, height) { - this.className = className; - this.left = left; - this.top = top2; - this.width = width; - this.height = height; + eq(e) { + return this.left == e.left && this.top == e.top && this.width == e.width && this.height == e.height && this.className == e.className; + } + static forRange(e, t, i) { + if (i.empty) { + var n = e.coordsAtPos(i.head, i.assoc || 1); + if (!n) return []; + var s = gD(e); + return [new _i1(t, n.left - s.left, n.top - s.top, null, n.bottom - n.top)]; + } else return Ok(e, t, i); + } + constructor(e, t, i, n, s) { + (this.className = e), (this.left = t), (this.top = i), (this.width = n), (this.height = s); } }; - __name(RectangleMarker, "RectangleMarker"); - function getBase(view) { - var rect = view.scrollDOM.getBoundingClientRect(); - var left = view.textDirection == Direction.LTR ? rect.left : rect.right - view.scrollDOM.clientWidth; - return { - left: left - view.scrollDOM.scrollLeft, - top: rect.top - view.scrollDOM.scrollTop, - }; - } - __name(getBase, "getBase"); - function wrappedLine(view, pos, inside2) { - var range = EditorSelection.cursor(pos); - return { - from: Math.max(inside2.from, view.moveToLineBoundary(range, false, true).from), - to: Math.min(inside2.to, view.moveToLineBoundary(range, true, true).from), - type: BlockType.Text, - }; - } - __name(wrappedLine, "wrappedLine"); - function blockAt(view, pos) { - var line = view.lineBlockAt(pos); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - if (Array.isArray(line.type)) + h(_i1, "RectangleMarker"); + function gD(r) { + var e = r.scrollDOM.getBoundingClientRect(); + return { left: (r.textDirection == _e.LTR ? e.left : e.right - r.scrollDOM.clientWidth) - r.scrollDOM.scrollLeft, top: e.top - r.scrollDOM.scrollTop }; + } + h(gD, "getBase"); + function Fg(r, e, t) { + var i = z.cursor(e); + return { from: Math.max(t.from, r.moveToLineBoundary(i, !1, !0).from), to: Math.min(t.to, r.moveToLineBoundary(i, !0, !0).from), type: be.Text }; + } + h(Fg, "wrappedLine"); + function yg(r, e) { + var t = r.lineBlockAt(e); + if (Array.isArray(t.type)) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - for (var _iterator = line.type[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var l = _step.value; - if (l.to > pos || (l.to == pos && (l.to == line.to || l.type == BlockType.Text))) return l; + for (var _iterator = t.type[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + if (i.to > e || (i.to == e && (i.to == t.to || i.type == be.Text))) return i; } } catch (err) { _didIteratorError = true; @@ -19188,85 +15082,76 @@ var __generator = } } } - return line; - } - __name(blockAt, "blockAt"); - function rectanglesForRange(view, className, range) { - if (range.to <= view.viewport.from || range.from >= view.viewport.to) return []; - var from = Math.max(range.from, view.viewport.from), - to = Math.min(range.to, view.viewport.to); - var ltr = view.textDirection == Direction.LTR; - var content2 = view.contentDOM, - contentRect = content2.getBoundingClientRect(), - base2 = getBase(view); - var lineStyle = window.getComputedStyle(content2.firstChild); - var leftSide = contentRect.left + parseInt(lineStyle.paddingLeft) + Math.min(0, parseInt(lineStyle.textIndent)); - var rightSide = contentRect.right - parseInt(lineStyle.paddingRight); - var startBlock = blockAt(view, from), - endBlock = blockAt(view, to); - var visualStart = startBlock.type == BlockType.Text ? startBlock : null; - var visualEnd = endBlock.type == BlockType.Text ? endBlock : null; - if (view.lineWrapping) { - if (visualStart) visualStart = wrappedLine(view, from, visualStart); - if (visualEnd) visualEnd = wrappedLine(view, to, visualEnd); - } - if (visualStart && visualEnd && visualStart.from == visualEnd.from) { - return pieces(drawForLine(range.from, range.to, visualStart)); - } else { - var top2 = visualStart ? drawForLine(range.from, null, visualStart) : drawForWidget(startBlock, false); - var bottom = visualEnd ? drawForLine(null, range.to, visualEnd) : drawForWidget(endBlock, true); - var between = []; - if ((visualStart || startBlock).to < (visualEnd || endBlock).from - 1) between.push(piece(leftSide, top2.bottom, rightSide, bottom.top)); - else if (top2.bottom < bottom.top && view.elementAtHeight((top2.bottom + bottom.top) / 2).type == BlockType.Text) top2.bottom = bottom.top = (top2.bottom + bottom.top) / 2; - return pieces(top2).concat(between).concat(pieces(bottom)); - } - function piece(left, top2, right, bottom) { - return new RectangleMarker(className, left - base2.left, top2 - base2.top - 0.01, right - left, bottom - top2 + 0.01); - } - __name(piece, "piece"); - function pieces(param) { - var top2 = param.top, - bottom = param.bottom, - horizontal = param.horizontal; - var pieces2 = []; - for (var i = 0; i < horizontal.length; i += 2) pieces2.push(piece(horizontal[i], top2, horizontal[i + 1], bottom)); - return pieces2; - } - __name(pieces, "pieces"); - function drawForLine(from2, to2, line) { - var top2 = 1e9, - bottom = -1e9, - horizontal = []; - function addSpan(from3, fromOpen, to3, toOpen, dir) { - var fromCoords = view.coordsAtPos(from3, from3 == line.to ? -2 : 2); - var toCoords = view.coordsAtPos(to3, to3 == line.from ? 2 : -2); - top2 = Math.min(fromCoords.top, toCoords.top, top2); - bottom = Math.max(fromCoords.bottom, toCoords.bottom, bottom); - if (dir == Direction.LTR) horizontal.push(ltr && fromOpen ? leftSide : fromCoords.left, ltr && toOpen ? rightSide : toCoords.right); - else horizontal.push(!ltr && toOpen ? leftSide : toCoords.left, !ltr && fromOpen ? rightSide : fromCoords.right); - } - __name(addSpan, "addSpan"); - var start = from2 !== null && from2 !== void 0 ? from2 : line.from, - end = to2 !== null && to2 !== void 0 ? to2 : line.to; + } + return t; + } + h(yg, "blockAt"); + function Ok(r, e, t) { + if (t.to <= r.viewport.from || t.from >= r.viewport.to) return []; + var i = Math.max(t.from, r.viewport.from), + n = Math.min(t.to, r.viewport.to), + s = r.textDirection == _e.LTR, + o = r.contentDOM, + u = o.getBoundingClientRect(), + l = gD(r), + a = window.getComputedStyle(o.firstChild), + c = u.left + parseInt(a.paddingLeft) + Math.min(0, parseInt(a.textIndent)), + f = u.right - parseInt(a.paddingRight), + d = yg(r, i), + p = yg(r, n), + m = d.type == be.Text ? d : null, + D = p.type == be.Text ? p : null; + if ((r.lineWrapping && (m && (m = Fg(r, i, m)), D && (D = Fg(r, n, D))), m && D && m.from == D.from)) return b(F(t.from, t.to, m)); + { + var E = m ? F(t.from, null, m) : A(d, !1), + O = D ? F(null, t.to, D) : A(p, !0), + _ = []; + return (m || d).to < (D || p).from - 1 ? _.push(g(c, E.bottom, f, O.top)) : E.bottom < O.top && r.elementAtHeight((E.bottom + O.top) / 2).type == be.Text && (E.bottom = O.top = (E.bottom + O.top) / 2), b(E).concat(_).concat(b(O)); + } + function g(E, O, _, W) { + return new _i1(e, E - l.left, O - l.top - 0.01, _ - E, W - O + 0.01); + } + h(g, "piece"); + function b(param) { + var E = param.top, + O = param.bottom, + _ = param.horizontal; + var W = []; + for (var Q = 0; Q < _.length; Q += 2) W.push(g(_[Q], E, _[Q + 1], O)); + return W; + } + h(b, "pieces"); + function F(E, O, _) { + var W = 1e9, + Q = -1e9, + j = []; + function Y(le, G, R, ee, Fe) { + var ge = r.coordsAtPos(le, le == _.to ? -2 : 2), + fe = r.coordsAtPos(R, R == _.from ? 2 : -2); + (W = Math.min(ge.top, fe.top, W)), (Q = Math.max(ge.bottom, fe.bottom, Q)), Fe == _e.LTR ? j.push(s && G ? c : ge.left, s && ee ? f : fe.right) : j.push(!s && ee ? c : fe.left, !s && G ? f : ge.right); + } + h(Y, "addSpan"); + var I = E !== null && E !== void 0 ? E : _.from, + oe = O !== null && O !== void 0 ? O : _.to; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = view.visibleRanges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - if (r.to > start && r.from < end) { - for (var pos = Math.max(r.from, start), endPos = Math.min(r.to, end); ; ) { - var docLine = view.state.doc.lineAt(pos); + for (var _iterator = r.visibleRanges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var le = _step.value; + if (le.to > I && le.from < oe) + for (var G = Math.max(le.from, I), R = Math.min(le.to, oe); ; ) { + var ee = r.state.doc.lineAt(G); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = view.bidiSpans(docLine)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var span = _step1.value; - var spanFrom = span.from + docLine.from, - spanTo = span.to + docLine.from; - if (spanFrom >= endPos) break; - if (spanTo > pos) addSpan(Math.max(spanFrom, pos), from2 == null && spanFrom <= start, Math.min(spanTo, endPos), to2 == null && spanTo >= end, span.dir); + for (var _iterator1 = r.bidiSpans(ee)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var Fe = _step1.value; + var ge = Fe.from + ee.from, + fe = Fe.to + ee.from; + if (ge >= R) break; + fe > G && Y(Math.max(ge, G), E == null && ge <= I, Math.min(fe, R), O == null && fe >= oe, Fe.dir); } } catch (err) { _didIteratorError1 = true; @@ -19282,10 +15167,8 @@ var __generator = } } } - pos = docLine.to + 1; - if (pos >= endPos) break; + if (((G = ee.to + 1), G >= R)) break; } - } } } catch (err) { _didIteratorError = true; @@ -19301,59 +15184,44 @@ var __generator = } } } - if (horizontal.length == 0) addSpan(start, from2 == null, end, to2 == null, view.textDirection); - return { - top: top2, - bottom, - horizontal, - }; + return j.length == 0 && Y(I, E == null, oe, O == null, r.textDirection), { top: W, bottom: Q, horizontal: j }; } - __name(drawForLine, "drawForLine"); - function drawForWidget(block, top2) { - var y = contentRect.top + (top2 ? block.top : block.bottom); - return { - top: y, - bottom: y, - horizontal: [], - }; + h(F, "drawForLine"); + function A(E, O) { + var _ = u.top + (O ? E.top : E.bottom); + return { top: _, bottom: _, horizontal: [] }; } - __name(drawForWidget, "drawForWidget"); + h(A, "drawForWidget"); } - __name(rectanglesForRange, "rectanglesForRange"); - function sameMarker(a, b) { - return a.constructor == b.constructor && a.eq(b); + h(Ok, "rectanglesForRange"); + function Tk(r, e) { + return r.constructor == e.constructor && r.eq(e); } - __name(sameMarker, "sameMarker"); - var LayerView = class LayerView { - update(update2) { - if (update2.startState.facet(layerOrder) != update2.state.facet(layerOrder)) this.setOrder(update2.state); - if (this.layer.update(update2, this.dom) || update2.geometryChanged) update2.view.requestMeasure(this.measureReq); + h(Tk, "sameMarker"); + var Go = class Go { + update(e) { + e.startState.facet(Ko) != e.state.facet(Ko) && this.setOrder(e.state), (this.layer.update(e, this.dom) || e.geometryChanged) && e.view.requestMeasure(this.measureReq); } - setOrder(state) { - var pos = 0, - order = state.facet(layerOrder); - while (pos < order.length && order[pos] != this.layer) pos++; - this.dom.style.zIndex = String((this.layer.above ? 150 : -1) - pos); + setOrder(e) { + var t = 0, + i = e.facet(Ko); + for (; t < i.length && i[t] != this.layer; ) t++; + this.dom.style.zIndex = String((this.layer.above ? 150 : -1) - t); } measure() { return this.layer.markers(this.view); } - draw(markers) { - if (markers.length != this.drawn.length || markers.some((p, i) => !sameMarker(p, this.drawn[i]))) { - var old = this.dom.firstChild, - oldI = 0; + draw(e) { + if (e.length != this.drawn.length || e.some((t, i) => !Tk(t, this.drawn[i]))) { + var t = this.dom.firstChild, + i = 0; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = markers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var marker = _step.value; - if (marker.update && old && marker.constructor && this.drawn[oldI].constructor && marker.update(old, this.drawn[oldI])) { - old = old.nextSibling; - oldI++; - } else { - this.dom.insertBefore(marker.draw(), old); - } + for (var _iterator = e[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + n.update && t && n.constructor && this.drawn[i].constructor && n.update(t, this.drawn[i]) ? ((t = t.nextSibling), i++) : this.dom.insertBefore(n.draw(), t); } } catch (err) { _didIteratorError = true; @@ -19369,90 +15237,75 @@ var __generator = } } } - while (old) { - var next = old.nextSibling; - old.remove(); - old = next; + for (; t; ) { + var n1 = t.nextSibling; + t.remove(), (t = n1); } - this.drawn = markers; + this.drawn = e; } } destroy() { - if (this.layer.destroy) this.layer.destroy(this.dom, this.view); - this.dom.remove(); - } - constructor(view, layer2) { - this.view = view; - this.layer = layer2; - this.drawn = []; - this.measureReq = { - read: this.measure.bind(this), - write: this.draw.bind(this), - }; - this.dom = view.scrollDOM.appendChild(document.createElement("div")); - this.dom.classList.add("cm-layer"); - if (layer2.above) this.dom.classList.add("cm-layer-above"); - if (layer2.class) this.dom.classList.add(layer2.class); - this.dom.setAttribute("aria-hidden", "true"); - this.setOrder(view.state); - view.requestMeasure(this.measureReq); - if (layer2.mount) layer2.mount(this.dom, view); + this.layer.destroy && this.layer.destroy(this.dom, this.view), this.dom.remove(); + } + constructor(e, t) { + (this.view = e), + (this.layer = t), + (this.drawn = []), + (this.measureReq = { read: this.measure.bind(this), write: this.draw.bind(this) }), + (this.dom = e.scrollDOM.appendChild(document.createElement("div"))), + this.dom.classList.add("cm-layer"), + t.above && this.dom.classList.add("cm-layer-above"), + t.class && this.dom.classList.add(t.class), + this.dom.setAttribute("aria-hidden", "true"), + this.setOrder(e.state), + e.requestMeasure(this.measureReq), + t.mount && t.mount(this.dom, e); } }; - __name(LayerView, "LayerView"); - var layerOrder = /* @__PURE__ */ Facet.define(); - function layer(config) { - return [ViewPlugin.define((v) => new LayerView(v, config)), layerOrder.of(config)]; - } - __name(layer, "layer"); - var CanHidePrimary = !browser.ios; - var selectionConfig = /* @__PURE__ */ Facet.define({ - combine(configs) { - return combineConfig( - configs, - { - cursorBlinkRate: 1200, - drawRangeCursor: true, - }, - { - cursorBlinkRate: (a, b) => Math.min(a, b), - drawRangeCursor: (a, b) => a || b, - } - ); - }, - }); - function drawSelection() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - return [selectionConfig.of(config), cursorLayer, selectionLayer, hideNativeSelection, nativeSelectionHidden.of(true)]; - } - __name(drawSelection, "drawSelection"); - function configChanged(update2) { - return update2.startState.facet(selectionConfig) != update2.startState.facet(selectionConfig); - } - __name(configChanged, "configChanged"); - var cursorLayer = /* @__PURE__ */ layer({ - above: true, - markers(view) { - var state = view.state, - conf = state.facet(selectionConfig); - var cursors = []; + h(Go, "LayerView"); + var Ko = H.define(); + function DD(r) { + return [ze.define((e) => new Go(e, r)), Ko.of(r)]; + } + h(DD, "layer"); + var bD = !U.ios, + Jn = H.define({ + combine(r) { + return ui(r, { cursorBlinkRate: 1200, drawRangeCursor: !0 }, { cursorBlinkRate: (e, t) => Math.min(e, t), drawRangeCursor: (e, t) => e || t }); + }, + }); + function FD() { + var r = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return [Jn.of(r), Rk, $k, Mk, Yg.of(!0)]; + } + h(FD, "drawSelection"); + function yD(r) { + return r.startState.facet(Jn) != r.state.facet(Jn); + } + h(yD, "configChanged"); + var Rk = DD({ + above: !0, + markers(r) { + var e = r.state, + t = e.facet(Jn), + i = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = state.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - var prim = r == state.selection.main; - if (r.empty ? !prim || CanHidePrimary : conf.drawRangeCursor) { - var className = prim ? "cm-cursor cm-cursor-primary" : "cm-cursor cm-cursor-secondary"; - var cursor = r.empty ? r : EditorSelection.cursor(r.head, r.head > r.anchor ? -1 : 1); + for (var _iterator = e.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + var s = n == e.selection.main; + if (n.empty ? !s || bD : t.drawRangeCursor) { + var o = s ? "cm-cursor cm-cursor-primary" : "cm-cursor cm-cursor-secondary", + u = n.empty ? n : z.cursor(n.head, n.head > n.anchor ? -1 : 1); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = RectangleMarker.forRange(view, className, cursor)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var piece = _step1.value; - cursors.push(piece); + for (var _iterator1 = _i1.forRange(r, o, u)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var l = _step1.value; + i.push(l); } } catch (err) { _didIteratorError1 = true; @@ -19484,311 +15337,111 @@ var __generator = } } } - return cursors; + return i; }, - update(update2, dom) { - if (update2.transactions.some((tr) => tr.scrollIntoView)) dom.style.animationName = dom.style.animationName == "cm-blink" ? "cm-blink2" : "cm-blink"; - var confChange = configChanged(update2); - if (confChange) setBlinkRate(update2.state, dom); - return update2.docChanged || update2.selectionSet || confChange; + update(r, e) { + r.transactions.some((i) => i.selection) && (e.style.animationName = e.style.animationName == "cm-blink" ? "cm-blink2" : "cm-blink"); + var t = yD(r); + return t && Cg(r.state, e), r.docChanged || r.selectionSet || t; }, - mount(dom, view) { - setBlinkRate(view.state, dom); + mount(r, e) { + Cg(e.state, r); }, class: "cm-cursorLayer", }); - function setBlinkRate(state, dom) { - dom.style.animationDuration = state.facet(selectionConfig).cursorBlinkRate + "ms"; - } - __name(setBlinkRate, "setBlinkRate"); - var selectionLayer = /* @__PURE__ */ layer({ - above: false, - markers(view) { - return view.state.selection.ranges.map((r) => (r.empty ? [] : RectangleMarker.forRange(view, "cm-selectionBackground", r))).reduce((a, b) => a.concat(b)); - }, - update(update2, dom) { - return update2.docChanged || update2.selectionSet || update2.viewportChanged || configChanged(update2); - }, - class: "cm-selectionLayer", - }); - var themeSpec = { - ".cm-line": { - "& ::selection": { - backgroundColor: "transparent !important", + function Cg(r, e) { + e.style.animationDuration = r.facet(Jn).cursorBlinkRate + "ms"; + } + h(Cg, "setBlinkRate"); + var $k = DD({ + above: !1, + markers(r) { + return r.state.selection.ranges.map((e) => (e.empty ? [] : _i1.forRange(r, "cm-selectionBackground", e))).reduce((e, t) => e.concat(t)); }, - "&::selection": { - backgroundColor: "transparent !important", + update(r, e) { + return r.docChanged || r.selectionSet || r.viewportChanged || yD(r); }, - }, - }; - if (CanHidePrimary) themeSpec[".cm-line"].caretColor = "transparent !important"; - var hideNativeSelection = /* @__PURE__ */ Prec.highest(/* @__PURE__ */ EditorView.theme(themeSpec)); - var setDropCursorPos = /* @__PURE__ */ StateEffect.define({ - map(pos, mapping) { - return pos == null ? null : mapping.mapPos(pos); - }, - }); - var dropCursorPos = /* @__PURE__ */ StateField.define({ - create() { - return null; - }, - update(pos, tr) { - if (pos != null) pos = tr.changes.mapPos(pos); - return tr.effects.reduce((pos2, e) => (e.is(setDropCursorPos) ? e.value : pos2), pos); - }, - }); - var drawDropCursor = /* @__PURE__ */ ViewPlugin.fromClass( - class { - update(update2) { - var _a2; - var cursorPos = update2.state.field(dropCursorPos); - if (cursorPos == null) { - if (this.cursor != null) { - (_a2 = this.cursor) === null || _a2 === void 0 ? void 0 : _a2.remove(); - this.cursor = null; - } - } else { - if (!this.cursor) { - this.cursor = this.view.scrollDOM.appendChild(document.createElement("div")); - this.cursor.className = "cm-dropCursor"; - } - if (update2.startState.field(dropCursorPos) != cursorPos || update2.docChanged || update2.geometryChanged) this.view.requestMeasure(this.measureReq); - } - } - readPos() { - var pos = this.view.state.field(dropCursorPos); - var rect = pos != null && this.view.coordsAtPos(pos); - if (!rect) return null; - var outer = this.view.scrollDOM.getBoundingClientRect(); - return { - left: rect.left - outer.left + this.view.scrollDOM.scrollLeft, - top: rect.top - outer.top + this.view.scrollDOM.scrollTop, - height: rect.bottom - rect.top, - }; - } - drawCursor(pos) { - if (this.cursor) { - if (pos) { - this.cursor.style.left = pos.left + "px"; - this.cursor.style.top = pos.top + "px"; - this.cursor.style.height = pos.height + "px"; - } else { - this.cursor.style.left = "-100000px"; - } - } - } - destroy() { - if (this.cursor) this.cursor.remove(); - } - setDropPos(pos) { - if (this.view.state.field(dropCursorPos) != pos) - this.view.dispatch({ - effects: setDropCursorPos.of(pos), - }); - } - constructor(view) { - this.view = view; - this.cursor = null; - this.measureReq = { - read: this.readPos.bind(this), - write: this.drawCursor.bind(this), - }; - } - }, - { - eventHandlers: { - dragover(event) { - this.setDropPos( - this.view.posAtCoords({ - x: event.clientX, - y: event.clientY, - }) - ); - }, - dragleave(event) { - if (event.target == this.view.contentDOM || !this.view.contentDOM.contains(event.relatedTarget)) this.setDropPos(null); - }, - dragend() { - this.setDropPos(null); - }, - drop() { - this.setDropPos(null); - }, + class: "cm-selectionLayer", + }), + CD = { ".cm-line": { "& ::selection": { backgroundColor: "transparent !important" }, "&::selection": { backgroundColor: "transparent !important" } } }; + bD && (CD[".cm-line"].caretColor = "transparent !important"); + var Mk = Tr.highest(te.theme(CD)), + AD = de.define({ + map(r, e) { + return r == null ? null : e.mapPos(r); }, - } - ); - function dropCursor() { - return [dropCursorPos, drawDropCursor]; - } - __name(dropCursor, "dropCursor"); - var UnicodeRegexpSupport = /x/.unicode != null ? "gu" : "g"; - var Outside = "-10000px"; - var TooltipViewManager = class TooltipViewManager { - update(update2) { - var _a2; - var input = update2.state.facet(this.facet); - var tooltips = input.filter((x) => x); - if (input === this.input) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var t2 = _step.value; - if (t2.update) t2.update(update2); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - return false; - } - var tooltipViews = []; - for (var i = 0; i < tooltips.length; i++) { - var tip = tooltips[i], - known = -1; - if (!tip) continue; - for (var i2 = 0; i2 < this.tooltips.length; i2++) { - var other = this.tooltips[i2]; - if (other && other.create == tip.create) known = i2; - } - if (known < 0) { - tooltipViews[i] = this.createTooltipView(tip); - } else { - var tooltipView = (tooltipViews[i] = this.tooltipViews[known]); - if (tooltipView.update) tooltipView.update(update2); - } - } - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - try { - for (var _iterator1 = this.tooltipViews[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var t21 = _step1.value; - if (tooltipViews.indexOf(t21) < 0) { - t21.dom.remove(); - (_a2 = t21.destroy) === null || _a2 === void 0 ? void 0 : _a2.call(t21); - } + }), + Pn = $e.define({ + create() { + return null; + }, + update(r, e) { + return r != null && (r = e.changes.mapPos(r)), e.effects.reduce((t, i) => (i.is(AD) ? i.value : t), r); + }, + }), + Pk = ze.fromClass( + class { + update(r) { + var e; + var t = r.state.field(Pn); + t == null ? this.cursor != null && ((e = this.cursor) === null || e === void 0 || e.remove(), (this.cursor = null)) : (this.cursor || ((this.cursor = this.view.scrollDOM.appendChild(document.createElement("div"))), (this.cursor.className = "cm-dropCursor")), (r.startState.field(Pn) != t || r.docChanged || r.geometryChanged) && this.view.requestMeasure(this.measureReq)); + } + readPos() { + var r = this.view.state.field(Pn), + e = r != null && this.view.coordsAtPos(r); + if (!e) return null; + var t = this.view.scrollDOM.getBoundingClientRect(); + return { left: e.left - t.left + this.view.scrollDOM.scrollLeft, top: e.top - t.top + this.view.scrollDOM.scrollTop, height: e.bottom - e.top }; + } + drawCursor(r) { + this.cursor && (r ? ((this.cursor.style.left = r.left + "px"), (this.cursor.style.top = r.top + "px"), (this.cursor.style.height = r.height + "px")) : (this.cursor.style.left = "-100000px")); } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { - try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); - } - } finally { - if (_didIteratorError1) { - throw _iteratorError1; - } + destroy() { + this.cursor && this.cursor.remove(); } - } - this.input = input; - this.tooltips = tooltips; - this.tooltipViews = tooltipViews; - return true; - } - constructor(view, facet, createTooltipView) { - this.facet = facet; - this.createTooltipView = createTooltipView; - this.input = view.state.facet(facet); - this.tooltips = this.input.filter((t2) => t2); - this.tooltipViews = this.tooltips.map(createTooltipView); - } - }; - __name(TooltipViewManager, "TooltipViewManager"); - function windowSpace(view) { - var win = view.win; - return { - top: 0, - left: 0, - bottom: win.innerHeight, - right: win.innerWidth, - }; - } - __name(windowSpace, "windowSpace"); - var tooltipConfig = /* @__PURE__ */ Facet.define({ - combine: (values) => { - var _a2, _b, _c; - return { - position: browser.ios ? "absolute" : ((_a2 = values.find((conf) => conf.position)) === null || _a2 === void 0 ? void 0 : _a2.position) || "fixed", - parent: ((_b = values.find((conf) => conf.parent)) === null || _b === void 0 ? void 0 : _b.parent) || null, - tooltipSpace: ((_c = values.find((conf) => conf.tooltipSpace)) === null || _c === void 0 ? void 0 : _c.tooltipSpace) || windowSpace, - }; - }, - }); - var tooltipPlugin = /* @__PURE__ */ ViewPlugin.fromClass( - class { - createContainer() { - if (this.parent) { - this.container = document.createElement("div"); - this.container.style.position = "relative"; - this.container.className = this.view.themeClasses; - this.parent.appendChild(this.container); - } else { - this.container = this.view.dom; + setDropPos(r) { + this.view.state.field(Pn) != r && this.view.dispatch({ effects: AD.of(r) }); } - } - observeIntersection() { - if (this.intersectionObserver) { - this.intersectionObserver.disconnect(); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tooltip = _step.value; - this.intersectionObserver.observe(tooltip.dom); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } + constructor(r) { + (this.view = r), (this.cursor = null), (this.measureReq = { read: this.readPos.bind(this), write: this.drawCursor.bind(this) }); } + }, + { + eventHandlers: { + dragover(r) { + this.setDropPos(this.view.posAtCoords({ x: r.clientX, y: r.clientY })); + }, + dragleave(r) { + (r.target == this.view.contentDOM || !this.view.contentDOM.contains(r.relatedTarget)) && this.setDropPos(null); + }, + dragend() { + this.setDropPos(null); + }, + drop() { + this.setDropPos(null); + }, + }, } - measureSoon() { - if (this.measureTimeout < 0) - this.measureTimeout = setTimeout(() => { - this.measureTimeout = -1; - this.maybeMeasure(); - }, 50); - } - update(update2) { - if (update2.transactions.length) this.lastTransaction = Date.now(); - var updated = this.manager.update(update2); - if (updated) this.observeIntersection(); - var shouldMeasure = updated || update2.geometryChanged; - var newConfig = update2.state.facet(tooltipConfig); - if (newConfig.position != this.position) { - this.position = newConfig.position; + ); + function ED() { + return [Pn, Pk]; + } + h(ED, "dropCursor"); + var fB = /x/.unicode != null ? "gu" : "g"; + var To = "-10000px", + Un = class Un { + update(e) { + var t; + var i = e.state.facet(this.facet), + n = i.filter((o) => o); + if (i === this.input) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var t2 = _step.value; - t2.dom.style.position = this.position; + for (var _iterator = this.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var o = _step.value; + o.update && o.update(e); } } catch (err) { _didIteratorError = true; @@ -19804,142 +15457,80 @@ var __generator = } } } - shouldMeasure = true; + return !1; } - if (newConfig.parent != this.parent) { - if (this.parent) this.container.remove(); - this.parent = newConfig.parent; - this.createContainer(); - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - try { - for (var _iterator1 = this.manager.tooltipViews[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var t21 = _step1.value; - this.container.appendChild(t21.dom); + var s = []; + for (var o1 = 0; o1 < n.length; o1++) { + var u = n[o1], + l = -1; + if (u) { + for (var a = 0; a < this.tooltips.length; a++) { + var c = this.tooltips[a]; + c && c.create == u.create && (l = a); } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { - try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); - } - } finally { - if (_didIteratorError1) { - throw _iteratorError1; - } + if (l < 0) s[o1] = this.createTooltipView(u); + else { + var a1 = (s[o1] = this.tooltipViews[l]); + a1.update && a1.update(e); } } - shouldMeasure = true; - } else if (this.parent && this.view.themeClasses != this.classes) { - this.classes = this.container.className = this.view.themeClasses; - } - if (shouldMeasure) this.maybeMeasure(); - } - createTooltip(tooltip) { - var tooltipView = tooltip.create(this.view); - tooltipView.dom.classList.add("cm-tooltip"); - if (tooltip.arrow && !tooltipView.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")) { - var arrow = document.createElement("div"); - arrow.className = "cm-tooltip-arrow"; - tooltipView.dom.appendChild(arrow); } - tooltipView.dom.style.position = this.position; - tooltipView.dom.style.top = Outside; - this.container.appendChild(tooltipView.dom); - if (tooltipView.mount) tooltipView.mount(this.view); - return tooltipView; - } - destroy() { - var _a2, _b; - this.view.win.removeEventListener("resize", this.measureSoon); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; try { - for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tooltipView = _step.value; - tooltipView.dom.remove(); - (_a2 = tooltipView.destroy) === null || _a2 === void 0 ? void 0 : _a2.call(tooltipView); + for (var _iterator1 = this.tooltipViews[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var o2 = _step1.value; + s.indexOf(o2) < 0 && (o2.dom.remove(), (t = o2.destroy) === null || t === void 0 || t.call(o2)); } } catch (err) { - _didIteratorError = true; - _iteratorError = err; + _didIteratorError1 = true; + _iteratorError1 = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + _iterator1.return(); } } finally { - if (_didIteratorError) { - throw _iteratorError; + if (_didIteratorError1) { + throw _iteratorError1; } } } - (_b = this.intersectionObserver) === null || _b === void 0 ? void 0 : _b.disconnect(); - clearTimeout(this.measureTimeout); + return (this.input = i), (this.tooltips = n), (this.tooltipViews = s), !0; } - readMeasure() { - var editor = this.view.dom.getBoundingClientRect(); - return { - editor, - parent: this.parent ? this.container.getBoundingClientRect() : editor, - pos: this.manager.tooltips.map((t2, i) => { - var tv = this.manager.tooltipViews[i]; - return tv.getCoords ? tv.getCoords(t2.pos) : this.view.coordsAtPos(t2.pos); - }), - size: this.manager.tooltipViews.map((param) => { - var dom = param.dom; - return dom.getBoundingClientRect(); - }), - space: this.view.state.facet(tooltipConfig).tooltipSpace(this.view), - }; + constructor(e, t, i) { + (this.facet = t), (this.createTooltipView = i), (this.input = e.state.facet(t)), (this.tooltips = this.input.filter((n) => n)), (this.tooltipViews = this.tooltips.map(i)); } - writeMeasure(measured) { - var editor = measured.editor, - space2 = measured.space; - var others = []; - for (var i = 0; i < this.manager.tooltips.length; i++) { - var tooltip = this.manager.tooltips[i], - tView = this.manager.tooltipViews[i], - dom = tView.dom; - var pos = measured.pos[i], - size = measured.size[i]; - if (!pos || pos.bottom <= Math.max(editor.top, space2.top) || pos.top >= Math.min(editor.bottom, space2.bottom) || pos.right < Math.max(editor.left, space2.left) - 0.1 || pos.left > Math.min(editor.right, space2.right) + 0.1) { - dom.style.top = Outside; - continue; - } - var arrow = tooltip.arrow ? tView.dom.querySelector(".cm-tooltip-arrow") : null; - var arrowHeight = arrow ? 7 : 0; - var width = size.right - size.left, - height = size.bottom - size.top; - var offset = tView.offset || noOffset, - ltr = this.view.textDirection == Direction.LTR; - var left = size.width > space2.right - space2.left ? (ltr ? space2.left : space2.right - size.width) : ltr ? Math.min(pos.left - (arrow ? 14 : 0) + offset.x, space2.right - width) : Math.max(space2.left, pos.left - width + (arrow ? 14 : 0) - offset.x); - var above = !!tooltip.above; - if (!tooltip.strictSide && (above ? pos.top - (size.bottom - size.top) - offset.y < space2.top : pos.bottom + (size.bottom - size.top) + offset.y > space2.bottom) && above == space2.bottom - pos.bottom > pos.top - space2.top) above = !above; - var spaceVert = (above ? pos.top - space2.top : space2.bottom - pos.bottom) - arrowHeight; - if (spaceVert < height && tView.resize !== false) { - if (spaceVert < this.view.defaultLineHeight) { - dom.style.top = Outside; - continue; - } - dom.style.height = (height = spaceVert) + "px"; - } else if (dom.style.height) { - dom.style.height = ""; - } - var top2 = above ? pos.top - height - arrowHeight - offset.y : pos.bottom + arrowHeight + offset.y; - var right = left + width; - if (tView.overlap !== true) { + }; + h(Un, "TooltipViewManager"); + function Lk(r) { + var e = r.win; + return { top: 0, left: 0, bottom: e.innerHeight, right: e.innerWidth }; + } + h(Lk, "windowSpace"); + var Ga = H.define({ + combine: (r) => { + var e, t, i; + return { position: U.ios ? "absolute" : ((e = r.find((n) => n.position)) === null || e === void 0 ? void 0 : e.position) || "fixed", parent: ((t = r.find((n) => n.parent)) === null || t === void 0 ? void 0 : t.parent) || null, tooltipSpace: ((i = r.find((n) => n.tooltipSpace)) === null || i === void 0 ? void 0 : i.tooltipSpace) || Lk }; + }, + }), + Ag = new WeakMap(), + qk = ze.fromClass( + class { + createContainer() { + this.parent ? ((this.container = document.createElement("div")), (this.container.style.position = "relative"), (this.container.className = this.view.themeClasses), this.parent.appendChild(this.container)) : (this.container = this.view.dom); + } + observeIntersection() { + if (this.intersectionObserver) { + this.intersectionObserver.disconnect(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = others[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var r = _step.value; - if (r.left < right && r.right > left && r.top < top2 + height && r.bottom > top2) top2 = above ? r.top - height - 2 - arrowHeight : r.bottom + arrowHeight + 2; + this.intersectionObserver.observe(r.dom); } } catch (err) { _didIteratorError = true; @@ -19956,39 +15547,166 @@ var __generator = } } } - if (this.position == "absolute") { - dom.style.top = top2 - measured.parent.top + "px"; - dom.style.left = left - measured.parent.left + "px"; - } else { - dom.style.top = top2 + "px"; - dom.style.left = left + "px"; - } - if (arrow) arrow.style.left = "".concat(pos.left + (ltr ? offset.x : -offset.x) - (left + 14 - 7), "px"); - if (tView.overlap !== true) - others.push({ - left, - top: top2, - right, - bottom: top2 + height, - }); - dom.classList.toggle("cm-tooltip-above", above); - dom.classList.toggle("cm-tooltip-below", !above); - if (tView.positioned) tView.positioned(measured.space); } - } - maybeMeasure() { - if (this.manager.tooltips.length) { - if (this.view.inView) this.view.requestMeasure(this.measureReq); - if (this.inView != this.view.inView) { - this.inView = this.view.inView; + measureSoon() { + this.measureTimeout < 0 && + (this.measureTimeout = setTimeout(() => { + (this.measureTimeout = -1), this.maybeMeasure(); + }, 50)); + } + update(r) { + r.transactions.length && (this.lastTransaction = Date.now()); + var e = this.manager.update(r); + e && this.observeIntersection(); + var t = e || r.geometryChanged, + i = r.state.facet(Ga); + if (i.position != this.position) { + this.position = i.position; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + n.dom.style.position = this.position; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + t = !0; + } + if (i.parent != this.parent) { + this.parent && this.container.remove(), (this.parent = i.parent), this.createContainer(); + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; + try { + for (var _iterator1 = this.manager.tooltipViews[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var n1 = _step1.value; + this.container.appendChild(n1.dom); + } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; + } finally { + try { + if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } + } + } + t = !0; + } else this.parent && this.view.themeClasses != this.classes && (this.classes = this.container.className = this.view.themeClasses); + t && this.maybeMeasure(); + } + createTooltip(r) { + var e = r.create(this.view); + if ((e.dom.classList.add("cm-tooltip"), r.arrow && !e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow"))) { + var t = document.createElement("div"); + (t.className = "cm-tooltip-arrow"), e.dom.appendChild(t); + } + return (e.dom.style.position = this.position), (e.dom.style.top = To), this.container.appendChild(e.dom), e.mount && e.mount(this.view), e; + } + destroy() { + var r, e; + this.view.win.removeEventListener("resize", this.measureSoon); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + t.dom.remove(), (r = t.destroy) === null || r === void 0 || r.call(t); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + (e = this.intersectionObserver) === null || e === void 0 || e.disconnect(), clearTimeout(this.measureTimeout); + } + readMeasure() { + var r = this.view.dom.getBoundingClientRect(); + return { + editor: r, + parent: this.parent ? this.container.getBoundingClientRect() : r, + pos: this.manager.tooltips.map((e, t) => { + var i = this.manager.tooltipViews[t]; + return i.getCoords ? i.getCoords(e.pos) : this.view.coordsAtPos(e.pos); + }), + size: this.manager.tooltipViews.map((param) => { + var e = param.dom; + return e.getBoundingClientRect(); + }), + space: this.view.state.facet(Ga).tooltipSpace(this.view), + }; + } + writeMeasure(r) { + var e; + var t = r.editor, + i = r.space, + n = []; + for (var s = 0; s < this.manager.tooltips.length; s++) { + var o = this.manager.tooltips[s], + u = this.manager.tooltipViews[s], + l = u.dom, + a = r.pos[s], + c = r.size[s]; + if (!a || a.bottom <= Math.max(t.top, i.top) || a.top >= Math.min(t.bottom, i.bottom) || a.right < Math.max(t.left, i.left) - 0.1 || a.left > Math.min(t.right, i.right) + 0.1) { + l.style.top = To; + continue; + } + var f = o.arrow ? u.dom.querySelector(".cm-tooltip-arrow") : null, + d = f ? 7 : 0, + p = c.right - c.left, + m = (e = Ag.get(u)) !== null && e !== void 0 ? e : c.bottom - c.top, + D = u.offset || Nk, + g = this.view.textDirection == _e.LTR, + b = c.width > i.right - i.left ? (g ? i.left : i.right - c.width) : g ? Math.min(a.left - (f ? 14 : 0) + D.x, i.right - p) : Math.max(i.left, a.left - p + (f ? 14 : 0) - D.x), + F = !!o.above; + !o.strictSide && (F ? a.top - (c.bottom - c.top) - D.y < i.top : a.bottom + (c.bottom - c.top) + D.y > i.bottom) && F == i.bottom - a.bottom > a.top - i.top && (F = !F); + var A = (F ? a.top - i.top : i.bottom - a.bottom) - d; + if (A < m && u.resize !== !1) { + if (A < this.view.defaultLineHeight) { + l.style.top = To; + continue; + } + Ag.set(u, m), (l.style.height = (m = A) + "px"); + } else l.style.height && (l.style.height = ""); + var E = F ? a.top - m - d - D.y : a.bottom + d + D.y, + O = b + p; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - if (!this.inView) + if (u.overlap !== !0) try { - for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tv = _step.value; - tv.dom.style.top = Outside; + for (var _iterator = n[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _ = _step.value; + _.left < O && _.right > b && _.top < E + m && _.bottom > E && (E = F ? _.top - m - 2 - d : _.bottom + d + 2); } } catch (err) { _didIteratorError = true; @@ -20004,353 +15722,131 @@ var __generator = } } } + this.position == "absolute" ? ((l.style.top = E - r.parent.top + "px"), (l.style.left = b - r.parent.left + "px")) : ((l.style.top = E + "px"), (l.style.left = b + "px")), + f && (f.style.left = "".concat(a.left + (g ? D.x : -D.x) - (b + 14 - 7), "px")), + u.overlap !== !0 && n.push({ left: b, top: E, right: O, bottom: E + m }), + l.classList.toggle("cm-tooltip-above", F), + l.classList.toggle("cm-tooltip-below", !F), + u.positioned && u.positioned(r.space); } } - } - constructor(view) { - this.view = view; - this.inView = true; - this.lastTransaction = 0; - this.measureTimeout = -1; - var config = view.state.facet(tooltipConfig); - this.position = config.position; - this.parent = config.parent; - this.classes = view.themeClasses; - this.createContainer(); - this.measureReq = { - read: this.readMeasure.bind(this), - write: this.writeMeasure.bind(this), - key: this, - }; - this.manager = new TooltipViewManager(view, showTooltip, (t2) => this.createTooltip(t2)); - this.intersectionObserver = - typeof IntersectionObserver == "function" - ? new IntersectionObserver( - (entries) => { - if (Date.now() > this.lastTransaction - 50 && entries.length > 0 && entries[entries.length - 1].intersectionRatio < 1) this.measureSoon(); - }, - { - threshold: [1], + maybeMeasure() { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (this.manager.tooltips.length && (this.view.inView && this.view.requestMeasure(this.measureReq), this.inView != this.view.inView && ((this.inView = this.view.inView), !this.inView))) + try { + for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var r = _step.value; + r.dom.style.top = To; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); } - ) - : null; - this.observeIntersection(); - view.win.addEventListener("resize", (this.measureSoon = this.measureSoon.bind(this))); - this.maybeMeasure(); - } - }, - { - eventHandlers: { - scroll() { - this.maybeMeasure(); - }, - }, - } - ); - var baseTheme = /* @__PURE__ */ EditorView.baseTheme({ - ".cm-tooltip": { - zIndex: 100, - boxSizing: "border-box", - }, - "&light .cm-tooltip": { - border: "1px solid #bbb", - backgroundColor: "#f5f5f5", - }, - "&light .cm-tooltip-section:not(:first-child)": { - borderTop: "1px solid #bbb", - }, - "&dark .cm-tooltip": { - backgroundColor: "#333338", - color: "white", - }, - ".cm-tooltip-arrow": { - height: "".concat(7, "px"), - width: "".concat(7 * 2, "px"), - position: "absolute", - zIndex: -1, - overflow: "hidden", - "&:before, &:after": { - content: "''", - position: "absolute", - width: 0, - height: 0, - borderLeft: "".concat(7, "px solid transparent"), - borderRight: "".concat(7, "px solid transparent"), - }, - ".cm-tooltip-above &": { - bottom: "-".concat(7, "px"), - "&:before": { - borderTop: "".concat(7, "px solid #bbb"), - }, - "&:after": { - borderTop: "".concat(7, "px solid #f5f5f5"), - bottom: "1px", - }, - }, - ".cm-tooltip-below &": { - top: "-".concat(7, "px"), - "&:before": { - borderBottom: "".concat(7, "px solid #bbb"), - }, - "&:after": { - borderBottom: "".concat(7, "px solid #f5f5f5"), - top: "1px", - }, - }, - }, - "&dark .cm-tooltip .cm-tooltip-arrow": { - "&:before": { - borderTopColor: "#333338", - borderBottomColor: "#333338", - }, - "&:after": { - borderTopColor: "transparent", - borderBottomColor: "transparent", - }, - }, - }); - var noOffset = { - x: 0, - y: 0, - }; - var showTooltip = /* @__PURE__ */ Facet.define({ - enables: [tooltipPlugin, baseTheme], - }); - var showHoverTooltip = /* @__PURE__ */ Facet.define(); - var HoverTooltipHost = class HoverTooltipHost1 { - static create(view) { - return new HoverTooltipHost(view); - } - createHostedView(tooltip) { - var hostedView = tooltip.create(this.view); - hostedView.dom.classList.add("cm-tooltip-section"); - this.dom.appendChild(hostedView.dom); - if (this.mounted && hostedView.mount) hostedView.mount(this.view); - return hostedView; - } - mount(view) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var hostedView = _step.value; - if (hostedView.mount) hostedView.mount(view); + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } + constructor(r) { + (this.view = r), (this.inView = !0), (this.lastTransaction = 0), (this.measureTimeout = -1); + var e = r.state.facet(Ga); + (this.position = e.position), + (this.parent = e.parent), + (this.classes = r.themeClasses), + this.createContainer(), + (this.measureReq = { read: this.readMeasure.bind(this), write: this.writeMeasure.bind(this), key: this }), + (this.manager = new Un(r, Fh, (t) => this.createTooltip(t))), + (this.intersectionObserver = + typeof IntersectionObserver == "function" + ? new IntersectionObserver( + (t) => { + Date.now() > this.lastTransaction - 50 && t.length > 0 && t[t.length - 1].intersectionRatio < 1 && this.measureSoon(); + }, + { threshold: [1] } + ) + : null), + this.observeIntersection(), + r.win.addEventListener("resize", (this.measureSoon = this.measureSoon.bind(this))), + this.maybeMeasure(); } + }, + { + eventHandlers: { + scroll() { + this.maybeMeasure(); + }, + }, } - this.mounted = true; - } - positioned(space2) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var hostedView = _step.value; - if (hostedView.positioned) hostedView.positioned(space2); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + ), + Ik = te.baseTheme({ + ".cm-tooltip": { zIndex: 100, boxSizing: "border-box" }, + "&light .cm-tooltip": { border: "1px solid #bbb", backgroundColor: "#f5f5f5" }, + "&light .cm-tooltip-section:not(:first-child)": { borderTop: "1px solid #bbb" }, + "&dark .cm-tooltip": { backgroundColor: "#333338", color: "white" }, + ".cm-tooltip-arrow": { + height: "7px", + width: "".concat(7 * 2, "px"), + position: "absolute", + zIndex: -1, + overflow: "hidden", + "&:before, &:after": { content: "''", position: "absolute", width: 0, height: 0, borderLeft: "7px solid transparent", borderRight: "7px solid transparent" }, + ".cm-tooltip-above &": { bottom: "-7px", "&:before": { borderTop: "7px solid #bbb" }, "&:after": { borderTop: "7px solid #f5f5f5", bottom: "1px" } }, + ".cm-tooltip-below &": { top: "-7px", "&:before": { borderBottom: "7px solid #bbb" }, "&:after": { borderBottom: "7px solid #f5f5f5", top: "1px" } }, + }, + "&dark .cm-tooltip .cm-tooltip-arrow": { "&:before": { borderTopColor: "#333338", borderBottomColor: "#333338" }, "&:after": { borderTopColor: "transparent", borderBottomColor: "transparent" } }, + }), + Nk = { x: 0, y: 0 }, + Fh = H.define({ enables: [qk, Ik] }), + ru = H.define(), + Vr = class Vr1 { + static create(e) { + return new Vr(e); + } + createHostedView(e) { + var t = e.create(this.view); + return t.dom.classList.add("cm-tooltip-section"), this.dom.appendChild(t.dom), this.mounted && t.mount && t.mount(this.view), t; + } + mount(e) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + t.mount && t.mount(e); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - update(update2) { - this.manager.update(update2); - } - constructor(view) { - this.view = view; - this.mounted = false; - this.dom = document.createElement("div"); - this.dom.classList.add("cm-tooltip-hover"); - this.manager = new TooltipViewManager(view, showHoverTooltip, (t2) => this.createHostedView(t2)); - } - }; - __name(HoverTooltipHost, "HoverTooltipHost"); - var showHoverTooltipHost = /* @__PURE__ */ showTooltip.compute([showHoverTooltip], (state) => { - var tooltips = state.facet(showHoverTooltip).filter((t2) => t2); - if (tooltips.length === 0) return null; - return { - pos: Math.min(...tooltips.map((t2) => t2.pos)), - end: Math.max(...tooltips.filter((t2) => t2.end != null).map((t2) => t2.end)), - create: HoverTooltipHost.create, - above: tooltips[0].above, - arrow: tooltips.some((t2) => t2.arrow), - }; - }); - var HoverPlugin = class HoverPlugin { - update() { - if (this.pending) { - this.pending = null; - clearTimeout(this.restartTimeout); - this.restartTimeout = setTimeout(() => this.startHover(), 20); - } - } - get active() { - return this.view.state.field(this.field); - } - checkHover() { - this.hoverTimeout = -1; - if (this.active) return; - var hovered = Date.now() - this.lastMove.time; - if (hovered < this.hoverTime) this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime - hovered); - else this.startHover(); - } - startHover() { - clearTimeout(this.restartTimeout); - var lastMove = this.lastMove; - var pos = this.view.contentDOM.contains(lastMove.target) ? this.view.posAtCoords(lastMove) : null; - if (pos == null) return; - var posCoords = this.view.coordsAtPos(pos); - if (posCoords == null || lastMove.y < posCoords.top || lastMove.y > posCoords.bottom || lastMove.x < posCoords.left - this.view.defaultCharacterWidth || lastMove.x > posCoords.right + this.view.defaultCharacterWidth) return; - var bidi = this.view.bidiSpans(this.view.state.doc.lineAt(pos)).find((s) => s.from <= pos && s.to >= pos); - var rtl = bidi && bidi.dir == Direction.RTL ? -1 : 1; - var open = this.source(this.view, pos, lastMove.x < posCoords.left ? -rtl : rtl); - if (open === null || open === void 0 ? void 0 : open.then) { - var pending = (this.pending = { - pos, - }); - open.then( - (result) => { - if (this.pending == pending) { - this.pending = null; - if (result) - this.view.dispatch({ - effects: this.setHover.of(result), - }); + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); } - }, - (e) => logException(this.view.state, e, "hover tooltip") - ); - } else if (open) { - this.view.dispatch({ - effects: this.setHover.of(open), - }); - } - } - mousemove(event) { - var _a2; - this.lastMove = { - x: event.clientX, - y: event.clientY, - target: event.target, - time: Date.now(), - }; - if (this.hoverTimeout < 0) this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime); - var tooltip = this.active; - if ((tooltip && !isInTooltip(this.lastMove.target)) || this.pending) { - var pos = (tooltip || this.pending).pos, - end = (_a2 = tooltip === null || tooltip === void 0 ? void 0 : tooltip.end) !== null && _a2 !== void 0 ? _a2 : pos; - if (pos == end ? this.view.posAtCoords(this.lastMove) != pos : !isOverRange(this.view, pos, end, event.clientX, event.clientY, 6)) { - this.view.dispatch({ - effects: this.setHover.of(null), - }); - this.pending = null; + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } } + this.mounted = !0; } - } - mouseleave(e) { - clearTimeout(this.hoverTimeout); - this.hoverTimeout = -1; - if (this.active && !isInTooltip(e.relatedTarget)) - this.view.dispatch({ - effects: this.setHover.of(null), - }); - } - destroy() { - clearTimeout(this.hoverTimeout); - this.view.dom.removeEventListener("mouseleave", this.mouseleave); - this.view.dom.removeEventListener("mousemove", this.mousemove); - } - constructor(view, source, field, setHover, hoverTime) { - this.view = view; - this.source = source; - this.field = field; - this.setHover = setHover; - this.hoverTime = hoverTime; - this.hoverTimeout = -1; - this.restartTimeout = -1; - this.pending = null; - this.lastMove = { - x: 0, - y: 0, - target: view.dom, - time: 0, - }; - this.checkHover = this.checkHover.bind(this); - view.dom.addEventListener("mouseleave", (this.mouseleave = this.mouseleave.bind(this))); - view.dom.addEventListener("mousemove", (this.mousemove = this.mousemove.bind(this))); - } - }; - __name(HoverPlugin, "HoverPlugin"); - function isInTooltip(elt) { - for (var cur = elt; cur; cur = cur.parentNode) if (cur.nodeType == 1 && cur.classList.contains("cm-tooltip")) return true; - return false; - } - __name(isInTooltip, "isInTooltip"); - function isOverRange(view, from, to, x, y, margin) { - var range = document.createRange(); - var fromDOM = view.domAtPos(from), - toDOM = view.domAtPos(to); - range.setEnd(toDOM.node, toDOM.offset); - range.setStart(fromDOM.node, fromDOM.offset); - var rects = range.getClientRects(); - range.detach(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - var dist = Math.max(rect.top - y, y - rect.bottom, rect.left - x, x - rect.right); - if (dist <= margin) return true; - } - return false; - } - __name(isOverRange, "isOverRange"); - function hoverTooltip(source) { - var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var setHover = StateEffect.define(); - var hoverState = StateField.define({ - create() { - return null; - }, - update(value, tr) { - if (value && ((options.hideOnChange && (tr.docChanged || tr.selection)) || (options.hideOn && options.hideOn(tr, value)))) return null; - if (value && tr.docChanged) { - var newPos = tr.changes.mapPos(value.pos, -1, MapMode.TrackDel); - if (newPos == null) return null; - var copy = Object.assign(/* @__PURE__ */ Object.create(null), value); - copy.pos = newPos; - if (value.end != null) copy.end = tr.changes.mapPos(value.end); - value = copy; - } + positioned(e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = tr.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var effect = _step.value; - if (effect.is(setHover)) value = effect.value; - if (effect.is(closeHoverTooltipEffect)) value = null; + for (var _iterator = this.manager.tooltipViews[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + t.positioned && t.positioned(e); } } catch (err) { _didIteratorError = true; @@ -20366,25 +15862,159 @@ var __generator = } } } - return value; - }, - provide: (f) => showHoverTooltip.from(f), - }); - return [hoverState, ViewPlugin.define((view) => new HoverPlugin(view, source, hoverState, setHover, options.hoverTime || 300)), showHoverTooltipHost]; + } + update(e) { + this.manager.update(e); + } + constructor(e) { + (this.view = e), (this.mounted = !1), (this.dom = document.createElement("div")), this.dom.classList.add("cm-tooltip-hover"), (this.manager = new Un(e, ru, (t) => this.createHostedView(t))); + } + }; + h(Vr, "HoverTooltipHost"); + var Vk = Fh.compute([ru], (r) => { + var e = r.facet(ru).filter((t) => t); + return e.length === 0 ? null : { pos: Math.min(...e.map((t) => t.pos)), end: Math.max(...e.filter((t) => t.end != null).map((t) => t.end)), create: Vr.create, above: e[0].above, arrow: e.some((t) => t.arrow) }; + }), + Xo = class Xo { + update() { + this.pending && ((this.pending = null), clearTimeout(this.restartTimeout), (this.restartTimeout = setTimeout(() => this.startHover(), 20))); + } + get active() { + return this.view.state.field(this.field); + } + checkHover() { + if (((this.hoverTimeout = -1), this.active)) return; + var e = Date.now() - this.lastMove.time; + e < this.hoverTime ? (this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime - e)) : this.startHover(); + } + startHover() { + clearTimeout(this.restartTimeout); + var _this = this, + e = _this.lastMove, + t = this.view.contentDOM.contains(e.target) ? this.view.posAtCoords(e) : null; + if (t == null) return; + var i = this.view.coordsAtPos(t); + if (i == null || e.y < i.top || e.y > i.bottom || e.x < i.left - this.view.defaultCharacterWidth || e.x > i.right + this.view.defaultCharacterWidth) return; + var n = this.view.bidiSpans(this.view.state.doc.lineAt(t)).find((u) => u.from <= t && u.to >= t), + s = n && n.dir == _e.RTL ? -1 : 1, + o = this.source(this.view, t, e.x < i.left ? -s : s); + if (o === null || o === void 0 ? void 0 : o.then) { + var u = (this.pending = { pos: t }); + o.then( + (l) => { + this.pending == u && ((this.pending = null), l && this.view.dispatch({ effects: this.setHover.of(l) })); + }, + (l) => Ft(this.view.state, l, "hover tooltip") + ); + } else o && this.view.dispatch({ effects: this.setHover.of(o) }); + } + mousemove(e) { + var t; + (this.lastMove = { x: e.clientX, y: e.clientY, target: e.target, time: Date.now() }), this.hoverTimeout < 0 && (this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime)); + var i = this.active; + if ((i && !Eg(this.lastMove.target)) || this.pending) { + var _ref = i || this.pending, + n = _ref.pos, + s = (t = i === null || i === void 0 ? void 0 : i.end) !== null && t !== void 0 ? t : n; + (n == s ? this.view.posAtCoords(this.lastMove) != n : !zk(this.view, n, s, e.clientX, e.clientY, 6)) && (this.view.dispatch({ effects: this.setHover.of(null) }), (this.pending = null)); + } + } + mouseleave(e) { + clearTimeout(this.hoverTimeout), (this.hoverTimeout = -1), this.active && !Eg(e.relatedTarget) && this.view.dispatch({ effects: this.setHover.of(null) }); + } + destroy() { + clearTimeout(this.hoverTimeout), this.view.dom.removeEventListener("mouseleave", this.mouseleave), this.view.dom.removeEventListener("mousemove", this.mousemove); + } + constructor(e, t, i, n, s) { + (this.view = e), + (this.source = t), + (this.field = i), + (this.setHover = n), + (this.hoverTime = s), + (this.hoverTimeout = -1), + (this.restartTimeout = -1), + (this.pending = null), + (this.lastMove = { x: 0, y: 0, target: e.dom, time: 0 }), + (this.checkHover = this.checkHover.bind(this)), + e.dom.addEventListener("mouseleave", (this.mouseleave = this.mouseleave.bind(this))), + e.dom.addEventListener("mousemove", (this.mousemove = this.mousemove.bind(this))); + } + }; + h(Xo, "HoverPlugin"); + function Eg(r) { + for (var e = r; e; e = e.parentNode) if (e.nodeType == 1 && e.classList.contains("cm-tooltip")) return !0; + return !1; + } + h(Eg, "isInTooltip"); + function zk(r, e, t, i, n, s) { + var o = document.createRange(), + u = r.domAtPos(e), + l = r.domAtPos(t); + o.setEnd(l.node, l.offset), o.setStart(u.node, u.offset); + var a = o.getClientRects(); + o.detach(); + for (var c = 0; c < a.length; c++) { + var f = a[c]; + if (Math.max(f.top - n, n - f.bottom, f.left - i, i - f.right) <= s) return !0; + } + return !1; + } + h(zk, "isOverRange"); + function vD(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var t = de.define(), + i = $e.define({ + create() { + return null; + }, + update(n, s) { + if (n && ((e.hideOnChange && (s.docChanged || s.selection)) || (e.hideOn && e.hideOn(s, n)))) return null; + if (n && s.docChanged) { + var o = s.changes.mapPos(n.pos, -1, Xe.TrackDel); + if (o == null) return null; + var u = Object.assign(Object.create(null), n); + (u.pos = o), n.end != null && (u.end = s.changes.mapPos(n.end)), (n = u); + } + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = s.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var o1 = _step.value; + o1.is(t) && (n = o1.value), o1.is(Wk) && (n = null); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + return n; + }, + provide: (n) => ru.from(n), + }); + return [i, ze.define((n) => new Xo(n, r, i, t, e.hoverTime || 300)), Vk]; } - __name(hoverTooltip, "hoverTooltip"); - var closeHoverTooltipEffect = /* @__PURE__ */ StateEffect.define(); - var panelConfig = /* @__PURE__ */ Facet.define({ - combine(configs) { - var topContainer, bottomContainer; + h(vD, "hoverTooltip"); + var Wk = de.define(); + var vg = H.define({ + combine(r) { + var e, t; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = configs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var c = _step.value; - topContainer = topContainer || c.topContainer; - bottomContainer = bottomContainer || c.bottomContainer; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + (e = e || i.topContainer), (t = t || i.bottomContainer); } } catch (err) { _didIteratorError = true; @@ -20400,138 +16030,140 @@ var __generator = } } } - return { - topContainer, - bottomContainer, - }; + return { topContainer: e, bottomContainer: t }; }, }); - var panelPlugin = /* @__PURE__ */ ViewPlugin.fromClass( - class { - update(update2) { - var conf = update2.state.facet(panelConfig); - if (this.top.container != conf.topContainer) { - this.top.sync([]); - this.top = new PanelGroup(update2.view, true, conf.topContainer); - } - if (this.bottom.container != conf.bottomContainer) { - this.bottom.sync([]); - this.bottom = new PanelGroup(update2.view, false, conf.bottomContainer); - } - this.top.syncClasses(); - this.bottom.syncClasses(); - var input = update2.state.facet(showPanel); - if (input != this.input) { - var specs = input.filter((x) => x); - var panels = [], - top2 = [], - bottom = [], - mount = []; + var jk = ze.fromClass( + class { + update(r) { + var e = r.state.facet(vg); + this.top.container != e.topContainer && (this.top.sync([]), (this.top = new Xi(r.view, !0, e.topContainer))), this.bottom.container != e.bottomContainer && (this.bottom.sync([]), (this.bottom = new Xi(r.view, !1, e.bottomContainer))), this.top.syncClasses(), this.bottom.syncClasses(); + var t = r.state.facet(nu); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - try { - for (var _iterator = specs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var spec = _step.value; - var known = this.specs.indexOf(spec), - panel = void 0; - if (known < 0) { - panel = spec(update2.view); - mount.push(panel); - } else { - panel = this.panels[known]; - if (panel.update) panel.update(update2); + if (t != this.input) { + var i = t.filter((l) => l), + n = [], + s = [], + o = [], + u = []; + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; + try { + for (var _iterator = i[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var l = _step.value; + var a = this.specs.indexOf(l), + c = void 0; + a < 0 ? ((c = l(r.view)), u.push(c)) : ((c = this.panels[a]), c.update && c.update(r)), n.push(c), (c.top ? s : o).push(c); + } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; + } finally { + try { + if (!_iteratorNormalCompletion1 && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } } - panels.push(panel); - (panel.top ? top2 : bottom).push(panel); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + (this.specs = i), (this.panels = n), this.top.sync(s), this.bottom.sync(o); + var _iteratorNormalCompletion2 = true, + _didIteratorError2 = false, + _iteratorError2 = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator1 = u[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true) { + var l1 = _step1.value; + l1.dom.classList.add("cm-panel"), l1.mount && l1.mount(); } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion2 && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } } } - } - this.specs = specs; - this.panels = panels; - this.top.sync(top2); - this.bottom.sync(bottom); - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - try { - for (var _iterator1 = mount[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var p = _step1.value; - p.dom.classList.add("cm-panel"); - if (p.mount) p.mount(); - } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { + } else try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); + for (var _iterator2 = this.panels[Symbol.iterator](), _step2; !(_iteratorNormalCompletion = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion = true) { + var i1 = _step2.value; + i1.update && i1.update(r); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError1) { - throw _iteratorError1; + try { + if (!_iteratorNormalCompletion && _iterator2.return != null) { + _iterator2.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - } else { - var _iteratorNormalCompletion2 = true, - _didIteratorError2 = false, - _iteratorError2 = undefined; + } + destroy() { + this.top.sync([]), this.bottom.sync([]); + } + constructor(r) { + (this.input = r.state.facet(nu)), (this.specs = this.input.filter((t) => t)), (this.panels = this.specs.map((t) => t(r))); + var e = r.state.facet(vg); + (this.top = new Xi(r, !0, e.topContainer)), (this.bottom = new Xi(r, !1, e.bottomContainer)), this.top.sync(this.panels.filter((t) => t.top)), this.bottom.sync(this.panels.filter((t) => !t.top)); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - for (var _iterator2 = this.panels[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var p1 = _step2.value; - if (p1.update) p1.update(update2); + for (var _iterator = this.panels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + t.dom.classList.add("cm-panel"), t.mount && t.mount(); } } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; + _didIteratorError = true; + _iteratorError = err; } finally { try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); } } finally { - if (_didIteratorError2) { - throw _iteratorError2; + if (_didIteratorError) { + throw _iteratorError; } } } } + }, + { + provide: (r) => + te.scrollMargins.of((e) => { + var t = e.plugin(r); + return t && { top: t.top.scrollMargin(), bottom: t.bottom.scrollMargin() }; + }), } - destroy() { - this.top.sync([]); - this.bottom.sync([]); - } - constructor(view) { - this.input = view.state.facet(showPanel); - this.specs = this.input.filter((s) => s); - this.panels = this.specs.map((spec) => spec(view)); - var conf = view.state.facet(panelConfig); - this.top = new PanelGroup(view, true, conf.topContainer); - this.bottom = new PanelGroup(view, false, conf.bottomContainer); - this.top.sync(this.panels.filter((p) => p.top)); - this.bottom.sync(this.panels.filter((p) => !p.top)); + ), + Xi = class Xi { + sync(e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.panels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var p = _step.value; - p.dom.classList.add("cm-panel"); - if (p.mount) p.mount(); + var t = _step.value; + t.destroy && e.indexOf(t) < 0 && t.destroy(); } } catch (err) { _didIteratorError = true; @@ -20547,227 +16179,164 @@ var __generator = } } } + (this.panels = e), this.syncDOM(); } - }, - { - provide: (plugin) => - EditorView.scrollMargins.of((view) => { - var value = view.plugin(plugin); - return ( - value && { - top: value.top.scrollMargin(), - bottom: value.bottom.scrollMargin(), - } - ); - }), - } - ); - var PanelGroup = class PanelGroup { - sync(panels) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.panels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var p = _step.value; - if (p.destroy && panels.indexOf(p) < 0) p.destroy(); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - this.panels = panels; - this.syncDOM(); - } - syncDOM() { - if (this.panels.length == 0) { - if (this.dom) { - this.dom.remove(); - this.dom = void 0; + syncDOM() { + if (this.panels.length == 0) { + this.dom && (this.dom.remove(), (this.dom = void 0)); + return; } - return; - } - if (!this.dom) { - this.dom = document.createElement("div"); - this.dom.className = this.top ? "cm-panels cm-panels-top" : "cm-panels cm-panels-bottom"; - this.dom.style[this.top ? "top" : "bottom"] = "0"; - var parent = this.container || this.view.dom; - parent.insertBefore(this.dom, this.top ? parent.firstChild : null); - } - var curDOM = this.dom.firstChild; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.panels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var panel = _step.value; - if (panel.dom.parentNode == this.dom) { - while (curDOM != panel.dom) curDOM = rm(curDOM); - curDOM = curDOM.nextSibling; - } else { - this.dom.insertBefore(panel.dom, curDOM); - } + if (!this.dom) { + (this.dom = document.createElement("div")), (this.dom.className = this.top ? "cm-panels cm-panels-top" : "cm-panels cm-panels-bottom"), (this.dom.style[this.top ? "top" : "bottom"] = "0"); + var t = this.container || this.view.dom; + t.insertBefore(this.dom, this.top ? t.firstChild : null); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + var e = this.dom.firstChild; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.panels[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t1 = _step.value; + if (t1.dom.parentNode == this.dom) { + for (; e != t1.dom; ) e = kg(e); + e = e.nextSibling; + } else this.dom.insertBefore(t1.dom, e); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + for (; e; ) e = kg(e); } - while (curDOM) curDOM = rm(curDOM); - } - scrollMargin() { - return !this.dom || this.container ? 0 : Math.max(0, this.top ? this.dom.getBoundingClientRect().bottom - Math.max(0, this.view.scrollDOM.getBoundingClientRect().top) : Math.min(innerHeight, this.view.scrollDOM.getBoundingClientRect().bottom) - this.dom.getBoundingClientRect().top); - } - syncClasses() { - if (!this.container || this.classes == this.view.themeClasses) return; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.classes.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var cls = _step.value; - if (cls) this.container.classList.remove(cls); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } + scrollMargin() { + return !this.dom || this.container ? 0 : Math.max(0, this.top ? this.dom.getBoundingClientRect().bottom - Math.max(0, this.view.scrollDOM.getBoundingClientRect().top) : Math.min(innerHeight, this.view.scrollDOM.getBoundingClientRect().bottom) - this.dom.getBoundingClientRect().top); } - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - try { - for (var _iterator1 = (this.classes = this.view.themeClasses).split(" ")[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var cls1 = _step1.value; - if (cls1) this.container.classList.add(cls1); - } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { - try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { - _iterator1.return(); + syncClasses() { + if (!(!this.container || this.classes == this.view.themeClasses)) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = this.classes.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var e = _step.value; + e && this.container.classList.remove(e); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } } - } finally { - if (_didIteratorError1) { - throw _iteratorError1; + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; + try { + for (var _iterator1 = (this.classes = this.view.themeClasses).split(" ")[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var e1 = _step1.value; + e1 && this.container.classList.add(e1); + } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; + } finally { + try { + if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } + } } } } - } - constructor(view, top2, container) { - this.view = view; - this.top = top2; - this.container = container; - this.dom = void 0; - this.classes = ""; - this.panels = []; - this.syncClasses(); - } - }; - __name(PanelGroup, "PanelGroup"); - function rm(node) { - var next = node.nextSibling; - node.remove(); - return next; - } - __name(rm, "rm"); - var showPanel = /* @__PURE__ */ Facet.define({ - enables: panelPlugin, - }); - var GutterMarker = class GutterMarker extends RangeValue { - compare(other) { - return this == other || (this.constructor == other.constructor && this.eq(other)); - } - eq(other) { - return false; - } - destroy(dom) {} - }; - __name(GutterMarker, "GutterMarker"); - GutterMarker.prototype.elementClass = ""; - GutterMarker.prototype.toDOM = void 0; - GutterMarker.prototype.mapMode = MapMode.TrackBefore; - GutterMarker.prototype.startSide = GutterMarker.prototype.endSide = -1; - GutterMarker.prototype.point = true; - var gutterLineClass = /* @__PURE__ */ Facet.define(); - var activeGutters = /* @__PURE__ */ Facet.define(); - var unfixGutters = /* @__PURE__ */ Facet.define({ - combine: (values) => values.some((x) => x), - }); - function gutters(config) { - var result = [gutterView]; - if (config && config.fixed === false) result.push(unfixGutters.of(true)); - return result; + constructor(e, t, i) { + (this.view = e), (this.top = t), (this.container = i), (this.dom = void 0), (this.classes = ""), (this.panels = []), this.syncClasses(); + } + }; + h(Xi, "PanelGroup"); + function kg(r) { + var e = r.nextSibling; + return r.remove(), e; } - __name(gutters, "gutters"); - var gutterView = /* @__PURE__ */ ViewPlugin.fromClass( + h(kg, "rm"); + var nu = H.define({ enables: jk }), + ft = class ft extends zt { + compare(e) { + return this == e || (this.constructor == e.constructor && this.eq(e)); + } + eq(e) { + return !1; + } + destroy(e) {} + }; + h(ft, "GutterMarker"); + ft.prototype.elementClass = ""; + ft.prototype.toDOM = void 0; + ft.prototype.mapMode = Xe.TrackBefore; + ft.prototype.startSide = ft.prototype.endSide = -1; + ft.prototype.point = !0; + var Qo = H.define(); + var Jo = H.define(); + var dh = H.define({ combine: (r) => r.some((e) => e) }); + function Hk(r) { + var e = [Uk]; + return r && r.fixed === !1 && e.push(dh.of(!0)), e; + } + h(Hk, "gutters"); + var Uk = ze.fromClass( class { - update(update2) { - if (this.updateGutters(update2)) { - var vpA = this.prevViewport, - vpB = update2.view.viewport; - var vpOverlap = Math.min(vpA.to, vpB.to) - Math.max(vpA.from, vpB.from); - this.syncGutters(vpOverlap < (vpB.to - vpB.from) * 0.8); - } - if (update2.geometryChanged) this.dom.style.minHeight = this.view.contentHeight + "px"; - if (this.view.state.facet(unfixGutters) != !this.fixed) { - this.fixed = !this.fixed; - this.dom.style.position = this.fixed ? "sticky" : ""; - } - this.prevViewport = update2.view.viewport; - } - syncGutters(detach2) { - var after = this.dom.nextSibling; - if (detach2) this.dom.remove(); - var lineClasses = RangeSet.iter(this.view.state.facet(gutterLineClass), this.view.viewport.from); - var classSet = []; - var contexts = this.gutters.map((gutter2) => new UpdateContext(gutter2, this.view.viewport, -this.view.documentPadding.top)); + update(r) { + if (this.updateGutters(r)) { + var e = this.prevViewport, + t = r.view.viewport, + i = Math.min(e.to, t.to) - Math.max(e.from, t.from); + this.syncGutters(i < (t.to - t.from) * 0.8); + } + r.geometryChanged && (this.dom.style.minHeight = this.view.contentHeight + "px"), this.view.state.facet(dh) != !this.fixed && ((this.fixed = !this.fixed), (this.dom.style.position = this.fixed ? "sticky" : "")), (this.prevViewport = r.view.viewport); + } + syncGutters(r) { + var e = this.dom.nextSibling; + r && this.dom.remove(); + var t = pe.iter(this.view.state.facet(Qo), this.view.viewport.from), + i = [], + n = this.gutters.map((s) => new Zo(s, this.view.viewport, -this.view.documentPadding.top)); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.view.viewportLineBlocks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var line = _step.value; - var text2 = void 0; - if (Array.isArray(line.type)) { + var s = _step.value; + var o = void 0; + if (Array.isArray(s.type)) { var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = line.type[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var b = _step1.value; - if (b.type == BlockType.Text) { - text2 = b; + for (var _iterator1 = s.type[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var u = _step1.value; + if (u.type == be.Text) { + o = u; break; } } @@ -20785,31 +16354,29 @@ var __generator = } } } - } else { - text2 = line.type == BlockType.Text ? line : void 0; - } - if (!text2) continue; - if (classSet.length) classSet = []; - advanceCursor(lineClasses, classSet, line.from); - var _iteratorNormalCompletion2 = true, - _didIteratorError2 = false, - _iteratorError2 = undefined; - try { - for (var _iterator2 = contexts[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var cx = _step2.value; - cx.line(this.view, text2, classSet); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { + } else o = s.type == be.Text ? s : void 0; + if (o) { + i.length && (i = []), kD(t, i, s.from); + var _iteratorNormalCompletion2 = true, + _didIteratorError2 = false, + _iteratorError2 = undefined; try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); + for (var _iterator2 = n[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var u1 = _step2.value; + u1.line(this.view, o, i); } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; } finally { - if (_didIteratorError2) { - throw _iteratorError2; + try { + if (!_iteratorNormalCompletion2 && _iterator2.return != null) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } } } } @@ -20832,9 +16399,9 @@ var __generator = _didIteratorError3 = false, _iteratorError3 = undefined; try { - for (var _iterator3 = contexts[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var cx1 = _step3.value; - cx1.finish(); + for (var _iterator3 = n[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var s1 = _step3.value; + s1.finish(); } } catch (err) { _didIteratorError3 = true; @@ -20850,20 +16417,20 @@ var __generator = } } } - if (detach2) this.view.scrollDOM.insertBefore(this.dom, after); + r && this.view.scrollDOM.insertBefore(this.dom, e); } - updateGutters(update2) { - var prev = update2.startState.facet(activeGutters), - cur = update2.state.facet(activeGutters); - var change = update2.docChanged || update2.heightChanged || update2.viewportChanged || !RangeSet.eq(update2.startState.facet(gutterLineClass), update2.state.facet(gutterLineClass), update2.view.viewport.from, update2.view.viewport.to); - if (prev == cur) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; + updateGutters(r) { + var e = r.startState.facet(Jo), + t = r.state.facet(Jo), + i = r.docChanged || r.heightChanged || r.viewportChanged || !pe.eq(r.startState.facet(Qo), r.state.facet(Qo), r.view.viewport.from, r.view.viewport.to); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (e == t) try { for (var _iterator = this.gutters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var gutter2 = _step.value; - if (gutter2.update(update2)) change = true; + var n = _step.value; + n.update(r) && (i = !0); } } catch (err) { _didIteratorError = true; @@ -20879,22 +16446,17 @@ var __generator = } } } - } else { - change = true; - var gutters2 = []; + else { + i = !0; + var n1 = []; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = cur[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var conf = _step1.value; - var known = prev.indexOf(conf); - if (known < 0) { - gutters2.push(new SingleGutterView(this.view, conf)); - } else { - this.gutters[known].update(update2); - gutters2.push(this.gutters[known]); - } + for (var _iterator1 = t[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var s = _step1.value; + var o = e.indexOf(s); + o < 0 ? n1.push(new Yn(this.view, s)) : (this.gutters[o].update(r), n1.push(this.gutters[o])); } } catch (err) { _didIteratorError1 = true; @@ -20915,9 +16477,8 @@ var __generator = _iteratorError2 = undefined; try { for (var _iterator2 = this.gutters[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var g = _step2.value; - g.dom.remove(); - if (gutters2.indexOf(g) < 0) g.destroy(); + var s1 = _step2.value; + s1.dom.remove(), n1.indexOf(s1) < 0 && s1.destroy(); } } catch (err) { _didIteratorError2 = true; @@ -20937,9 +16498,9 @@ var __generator = _didIteratorError3 = false, _iteratorError3 = undefined; try { - for (var _iterator3 = gutters2[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var g1 = _step3.value; - this.dom.appendChild(g1.dom); + for (var _iterator3 = n1[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var s2 = _step3.value; + this.dom.appendChild(s2.dom); } } catch (err) { _didIteratorError3 = true; @@ -20955,9 +16516,9 @@ var __generator = } } } - this.gutters = gutters2; + this.gutters = n1; } - return change; + return i; } destroy() { var _iteratorNormalCompletion = true, @@ -20965,8 +16526,8 @@ var __generator = _iteratorError = undefined; try { for (var _iterator = this.gutters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var view = _step.value; - view.destroy(); + var r = _step.value; + r.destroy(); } } catch (err) { _didIteratorError = true; @@ -20984,21 +16545,15 @@ var __generator = } this.dom.remove(); } - constructor(view) { - this.view = view; - this.prevViewport = view.viewport; - this.dom = document.createElement("div"); - this.dom.className = "cm-gutters"; - this.dom.setAttribute("aria-hidden", "true"); - this.dom.style.minHeight = this.view.contentHeight + "px"; - this.gutters = view.state.facet(activeGutters).map((conf) => new SingleGutterView(view, conf)); + constructor(r) { + (this.view = r), (this.prevViewport = r.viewport), (this.dom = document.createElement("div")), (this.dom.className = "cm-gutters"), this.dom.setAttribute("aria-hidden", "true"), (this.dom.style.minHeight = this.view.contentHeight + "px"), (this.gutters = r.state.facet(Jo).map((e) => new Yn(r, e))); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.gutters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var gutter2 = _step.value; - this.dom.appendChild(gutter2.dom); + var e = _step.value; + this.dom.appendChild(e.dom); } } catch (err) { _didIteratorError = true; @@ -21014,87 +16569,61 @@ var __generator = } } } - this.fixed = !view.state.facet(unfixGutters); - if (this.fixed) { - this.dom.style.position = "sticky"; - } - this.syncGutters(false); - view.scrollDOM.insertBefore(this.dom, view.contentDOM); + (this.fixed = !r.state.facet(dh)), this.fixed && (this.dom.style.position = "sticky"), this.syncGutters(!1), r.scrollDOM.insertBefore(this.dom, r.contentDOM); } }, { - provide: (plugin) => - EditorView.scrollMargins.of((view) => { - var value = view.plugin(plugin); - if (!value || value.gutters.length == 0 || !value.fixed) return null; - return view.textDirection == Direction.LTR - ? { - left: value.dom.offsetWidth, - } - : { - right: value.dom.offsetWidth, - }; + provide: (r) => + te.scrollMargins.of((e) => { + var t = e.plugin(r); + return !t || t.gutters.length == 0 || !t.fixed ? null : e.textDirection == _e.LTR ? { left: t.dom.offsetWidth } : { right: t.dom.offsetWidth }; }), } ); - function asArray2(val) { - return Array.isArray(val) ? val : [val]; - } - __name(asArray2, "asArray"); - function advanceCursor(cursor, collect, pos) { - while (cursor.value && cursor.from <= pos) { - if (cursor.from == pos) collect.push(cursor.value); - cursor.next(); - } - } - __name(advanceCursor, "advanceCursor"); - var UpdateContext = class UpdateContext { - line(view, line, extraMarkers) { - if (this.localMarkers.length) this.localMarkers = []; - advanceCursor(this.cursor, this.localMarkers, line.from); - var localMarkers = extraMarkers.length ? this.localMarkers.concat(extraMarkers) : this.localMarkers; - var forLine = this.gutter.config.lineMarker(view, line, localMarkers); - if (forLine) localMarkers.unshift(forLine); - var gutter2 = this.gutter; - if (localMarkers.length == 0 && !gutter2.config.renderEmptyElements) return; - var above = line.top - this.height; - if (this.i == gutter2.elements.length) { - var newElt = new GutterElement(view, line.height, above, localMarkers); - gutter2.elements.push(newElt); - gutter2.dom.appendChild(newElt.dom); - } else { - gutter2.elements[this.i].update(view, line.height, above, localMarkers); - } - this.height = line.bottom; - this.i++; + function wg(r) { + return Array.isArray(r) ? r : [r]; + } + h(wg, "asArray"); + function kD(r, e, t) { + for (; r.value && r.from <= t; ) r.from == t && e.push(r.value), r.next(); + } + h(kD, "advanceCursor"); + var Zo = class Zo { + line(e, t, i) { + var n = []; + kD(this.cursor, n, t.from), i.length && (n = n.concat(i)); + var s = this.gutter.config.lineMarker(e, t, n); + s && n.unshift(s); + var o = this.gutter; + if (n.length == 0 && !o.config.renderEmptyElements) return; + var u = t.top - this.height; + if (this.i == o.elements.length) { + var l = new Gn(e, t.height, u, n); + o.elements.push(l), o.dom.appendChild(l.dom); + } else o.elements[this.i].update(e, t.height, u, n); + (this.height = t.bottom), this.i++; } finish() { - var gutter2 = this.gutter; - while (gutter2.elements.length > this.i) { - var last = gutter2.elements.pop(); - gutter2.dom.removeChild(last.dom); - last.destroy(); + var e = this.gutter; + for (; e.elements.length > this.i; ) { + var t = e.elements.pop(); + e.dom.removeChild(t.dom), t.destroy(); } } - constructor(gutter2, viewport, height) { - this.gutter = gutter2; - this.height = height; - this.localMarkers = []; - this.i = 0; - this.cursor = RangeSet.iter(gutter2.markers, viewport.from); + constructor(e, t, i) { + (this.gutter = e), (this.height = i), (this.i = 0), (this.cursor = pe.iter(e.markers, t.from)); } }; - __name(UpdateContext, "UpdateContext"); - var SingleGutterView = class SingleGutterView { - update(update2) { - var prevMarkers = this.markers; - this.markers = asArray2(this.config.markers(update2.view)); - if (this.spacer && this.config.updateSpacer) { - var updated = this.config.updateSpacer(this.spacer.markers[0], update2); - if (updated != this.spacer.markers[0]) this.spacer.update(update2.view, 0, 0, [updated]); - } - var vp = update2.view.viewport; - return !RangeSet.eq(this.markers, prevMarkers, vp.from, vp.to) || (this.config.lineMarkerChange ? this.config.lineMarkerChange(update2) : false); + h(Zo, "UpdateContext"); + var Yn = class Yn { + update(e) { + var t = this.markers; + if (((this.markers = wg(this.config.markers(e.view))), this.spacer && this.config.updateSpacer)) { + var n = this.config.updateSpacer(this.spacer.markers[0], e); + n != this.spacer.markers[0] && this.spacer.update(e.view, 0, 0, [n]); + } + var i = e.view.viewport; + return !pe.eq(this.markers, t, i.from, i.to) || (this.config.lineMarkerChange ? this.config.lineMarkerChange(e) : !1); } destroy() { var _iteratorNormalCompletion = true, @@ -21102,8 +16631,8 @@ var __generator = _iteratorError = undefined; try { for (var _iterator = this.elements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var elt = _step.value; - elt.destroy(); + var e = _step.value; + e.destroy(); } } catch (err) { _didIteratorError = true; @@ -21120,379 +16649,332 @@ var __generator = } } } - constructor(view, config) { + constructor(e, t) { var _this = this, - _loop = function (prop) { - _this.dom.addEventListener(prop, (event) => { - var line = view.lineBlockAtHeight(event.clientY - view.documentTop); - if (config.domEventHandlers[prop](view, line, event)) event.preventDefault(); + _loop = function (i) { + _this.dom.addEventListener(i, (n) => { + var s = n.target, + o; + if (s != _this.dom && _this.dom.contains(s)) { + for (; s.parentNode != _this.dom; ) s = s.parentNode; + var l = s.getBoundingClientRect(); + o = (l.top + l.bottom) / 2; + } else o = n.clientY; + var u = e.lineBlockAtHeight(o - e.documentTop); + t.domEventHandlers[i](e, u, n) && n.preventDefault(); }); }; - this.view = view; - this.config = config; - this.elements = []; - this.spacer = null; - this.dom = document.createElement("div"); - this.dom.className = "cm-gutter" + (this.config.class ? " " + this.config.class : ""); - for (var prop in config.domEventHandlers) _loop(prop); - this.markers = asArray2(config.markers(view)); - if (config.initialSpacer) { - this.spacer = new GutterElement(view, 0, 0, [config.initialSpacer(view)]); - this.dom.appendChild(this.spacer.dom); - this.spacer.dom.style.cssText += "visibility: hidden; pointer-events: none"; - } + (this.view = e), (this.config = t), (this.elements = []), (this.spacer = null), (this.dom = document.createElement("div")), (this.dom.className = "cm-gutter" + (this.config.class ? " " + this.config.class : "")); + for (var i in t.domEventHandlers) _loop(i); + (this.markers = wg(t.markers(e))), t.initialSpacer && ((this.spacer = new Gn(e, 0, 0, [t.initialSpacer(e)])), this.dom.appendChild(this.spacer.dom), (this.spacer.dom.style.cssText += "visibility: hidden; pointer-events: none")); } }; - __name(SingleGutterView, "SingleGutterView"); - var GutterElement = class GutterElement { - update(view, height, above, markers) { - if (this.height != height) this.dom.style.height = (this.height = height) + "px"; - if (this.above != above) this.dom.style.marginTop = (this.above = above) ? above + "px" : ""; - if (!sameMarkers(this.markers, markers)) this.setMarkers(view, markers); - } - setMarkers(view, markers) { - var cls = "cm-gutterElement", - domPos = this.dom.firstChild; - for (var iNew = 0, iOld = 0; ; ) { - var skipTo = iOld, - marker = iNew < markers.length ? markers[iNew++] : null, - matched = false; - if (marker) { - var c = marker.elementClass; - if (c) cls += " " + c; - for (var i = iOld; i < this.markers.length; i++) - if (this.markers[i].compare(marker)) { - skipTo = i; - matched = true; + h(Yn, "SingleGutterView"); + var Gn = class Gn { + update(e, t, i, n) { + this.height != t && (this.dom.style.height = (this.height = t) + "px"), this.above != i && (this.dom.style.marginTop = (this.above = i) ? i + "px" : ""), Yk(this.markers, n) || this.setMarkers(e, n); + } + setMarkers(e, t) { + var i = "cm-gutterElement", + n = this.dom.firstChild; + for (var s = 0, o = 0; ; ) { + var u = o, + l = s < t.length ? t[s++] : null, + a = !1; + if (l) { + var c = l.elementClass; + c && (i += " " + c); + for (var f = o; f < this.markers.length; f++) + if (this.markers[f].compare(l)) { + (u = f), (a = !0); break; } - } else { - skipTo = this.markers.length; - } - while (iOld < skipTo) { - var next = this.markers[iOld++]; - if (next.toDOM) { - next.destroy(domPos); - var after = domPos.nextSibling; - domPos.remove(); - domPos = after; + } else u = this.markers.length; + for (; o < u; ) { + var c1 = this.markers[o++]; + if (c1.toDOM) { + c1.destroy(n); + var f1 = n.nextSibling; + n.remove(), (n = f1); } } - if (!marker) break; - if (marker.toDOM) { - if (matched) domPos = domPos.nextSibling; - else this.dom.insertBefore(marker.toDOM(view), domPos); - } - if (matched) iOld++; + if (!l) break; + l.toDOM && (a ? (n = n.nextSibling) : this.dom.insertBefore(l.toDOM(e), n)), a && o++; } - this.dom.className = cls; - this.markers = markers; + (this.dom.className = i), (this.markers = t); } destroy() { this.setMarkers(null, []); } - constructor(view, height, above, markers) { - this.height = -1; - this.above = 0; - this.markers = []; - this.dom = document.createElement("div"); - this.dom.className = "cm-gutterElement"; - this.update(view, height, above, markers); - } - }; - __name(GutterElement, "GutterElement"); - function sameMarkers(a, b) { - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) if (!a[i].compare(b[i])) return false; - return true; - } - __name(sameMarkers, "sameMarkers"); - var lineNumberMarkers = /* @__PURE__ */ Facet.define(); - var lineNumberConfig = /* @__PURE__ */ Facet.define({ - combine(values) { - return combineConfig( - values, - { - formatNumber: String, - domEventHandlers: {}, - }, - { - domEventHandlers(a, b) { - var _loop = function (event) { - var exists = result[event], - add2 = b[event]; - result[event] = exists ? (view, line, event2) => exists(view, line, event2) || add2(view, line, event2) : add2; - }; - var result = Object.assign({}, a); - for (var event in b) _loop(event); - return result; - }, - } - ); - }, - }); - var NumberMarker = class NumberMarker extends GutterMarker { - eq(other) { - return this.number == other.number; - } - toDOM() { - return document.createTextNode(this.number); - } - constructor(number2) { - super(); - this.number = number2; + constructor(e, t, i, n) { + (this.height = -1), (this.above = 0), (this.markers = []), (this.dom = document.createElement("div")), (this.dom.className = "cm-gutterElement"), this.update(e, t, i, n); } }; - __name(NumberMarker, "NumberMarker"); - function formatNumber(view, number2) { - return view.state.facet(lineNumberConfig).formatNumber(number2, view.state); + h(Gn, "GutterElement"); + function Yk(r, e) { + if (r.length != e.length) return !1; + for (var t = 0; t < r.length; t++) if (!r[t].compare(e[t])) return !1; + return !0; + } + h(Yk, "sameMarkers"); + var Gk = H.define(), + Mr = H.define({ + combine(r) { + return ui( + r, + { formatNumber: String, domEventHandlers: {} }, + { + domEventHandlers(e, t) { + var _loop = function (n) { + var s = i[n], + o = t[n]; + i[n] = s ? (u, l, a) => s(u, l, a) || o(u, l, a) : o; + }; + var i = Object.assign({}, e); + for (var n in t) _loop(n); + return i; + }, + } + ); + }, + }), + zr = class zr extends ft { + eq(e) { + return this.number == e.number; + } + toDOM() { + return document.createTextNode(this.number); + } + constructor(e) { + super(), (this.number = e); + } + }; + h(zr, "NumberMarker"); + function Ka(r, e) { + return r.state.facet(Mr).formatNumber(e, r.state); } - __name(formatNumber, "formatNumber"); - var lineNumberGutter = /* @__PURE__ */ activeGutters.compute([lineNumberConfig], (state) => ({ + h(Ka, "formatNumber"); + var Kk = Jo.compute([Mr], (r) => ({ class: "cm-lineNumbers", - renderEmptyElements: false, - markers(view) { - return view.state.facet(lineNumberMarkers); + renderEmptyElements: !1, + markers(e) { + return e.state.facet(Gk); }, - lineMarker(view, line, others) { - if (others.some((m) => m.toDOM)) return null; - return new NumberMarker(formatNumber(view, view.state.doc.lineAt(line.from).number)); + lineMarker(e, t, i) { + return i.some((n) => n.toDOM) ? null : new zr(Ka(e, e.state.doc.lineAt(t.from).number)); }, - lineMarkerChange: (update2) => update2.startState.facet(lineNumberConfig) != update2.state.facet(lineNumberConfig), - initialSpacer(view) { - return new NumberMarker(formatNumber(view, maxLineNumber(view.state.doc.lines))); + lineMarkerChange: (e) => e.startState.facet(Mr) != e.state.facet(Mr), + initialSpacer(e) { + return new zr(Ka(e, xg(e.state.doc.lines))); }, - updateSpacer(spacer, update2) { - var max = formatNumber(update2.view, maxLineNumber(update2.view.state.doc.lines)); - return max == spacer.number ? spacer : new NumberMarker(max); + updateSpacer(e, t) { + var i = Ka(t.view, xg(t.view.state.doc.lines)); + return i == e.number ? e : new zr(i); }, - domEventHandlers: state.facet(lineNumberConfig).domEventHandlers, + domEventHandlers: r.facet(Mr).domEventHandlers, })); - function lineNumbers() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - return [lineNumberConfig.of(config), gutters(), lineNumberGutter]; - } - __name(lineNumbers, "lineNumbers"); - function maxLineNumber(lines) { - var last = 9; - while (last < lines) last = last * 10 + 9; - return last; - } - __name(maxLineNumber, "maxLineNumber"); - var activeLineGutterMarker = /* @__PURE__ */ new (class extends GutterMarker { - constructor() { - super(...arguments); - this.elementClass = "cm-activeLineGutter"; - } - })(); - var activeLineGutterHighlighter = /* @__PURE__ */ gutterLineClass.compute(["selection"], (state) => { - var marks = [], - last = -1; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = state.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var range = _step.value; - var linePos = state.doc.lineAt(range.head).from; - if (linePos > last) { - last = linePos; - marks.push(activeLineGutterMarker.range(linePos)); - } + function wD() { + var r = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return [Mr.of(r), Hk(), Kk]; + } + h(wD, "lineNumbers"); + function xg(r) { + var e = 9; + for (; e < r; ) e = e * 10 + 9; + return e; + } + h(xg, "maxLineNumber"); + var Xk = new (class extends ft { + constructor() { + super(...arguments), (this.elementClass = "cm-activeLineGutter"); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + })(), + Qk = Qo.compute(["selection"], (r) => { + var e = [], + t = -1; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = r.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + var n = r.doc.lineAt(i.head).from; + n > t && ((t = n), e.push(Xk.range(n))); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - return RangeSet.of(marks); - }); - function highlightActiveLineGutter() { - return activeLineGutterHighlighter; - } - __name(highlightActiveLineGutter, "highlightActiveLineGutter"); - // node_modules/@lezer/common/dist/index.js - var DefaultBufferLength = 1024; - var nextPropID = 0; - var Range2 = class Range2 { - constructor(from, to) { - this.from = from; - this.to = to; - } - }; - __name(Range2, "Range"); - var NodeProp = class NodeProp { - add(match) { + return pe.of(e); + }); + function xD() { + return Qk; + } + h(xD, "highlightActiveLineGutter"); + var Jk = 0, + Hr = class Hr { + constructor(e, t) { + (this.from = e), (this.to = t); + } + }; + h(Hr, "Range"); + var ue = class ue { + add(e) { if (this.perNode) throw new RangeError("Can't add per-node props to node types"); - if (typeof match != "function") match = NodeType.match(match); - return (type) => { - var result = match(type); - return result === void 0 ? null : [this, result]; - }; + return ( + typeof e != "function" && (e = qe.match(e)), + (t) => { + var i = e(t); + return i === void 0 ? null : [this, i]; + } + ); } constructor(ref) { - var config = ref === void 0 ? {} : ref; - this.id = nextPropID++; - this.perNode = !!config.perNode; - this.deserialize = - config.deserialize || - (() => { - throw new Error("This node type doesn't define a deserialize function"); - }); + var e = ref === void 0 ? {} : ref; + (this.id = Jk++), + (this.perNode = !!e.perNode), + (this.deserialize = + e.deserialize || + (() => { + throw new Error("This node type doesn't define a deserialize function"); + })); } }; - __name(NodeProp, "NodeProp"); - NodeProp.closedBy = new NodeProp({ - deserialize: (str) => str.split(" "), - }); - NodeProp.openedBy = new NodeProp({ - deserialize: (str) => str.split(" "), - }); - NodeProp.group = new NodeProp({ - deserialize: (str) => str.split(" "), - }); - NodeProp.contextHash = new NodeProp({ - perNode: true, - }); - NodeProp.lookAhead = new NodeProp({ - perNode: true, - }); - NodeProp.mounted = new NodeProp({ - perNode: true, - }); - var noProps = /* @__PURE__ */ Object.create(null); - var NodeType = class NodeType1 { - static define(spec) { - var props = spec.props && spec.props.length ? /* @__PURE__ */ Object.create(null) : noProps; - var flags = (spec.top ? 1 : 0) | (spec.skipped ? 2 : 0) | (spec.error ? 4 : 0) | (spec.name == null ? 8 : 0); - var type = new NodeType(spec.name || "", props, spec.id, flags); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - if (spec.props) - try { - for (var _iterator = spec.props[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var src = _step.value; - if (!Array.isArray(src)) src = src(type); - if (src) { - if (src[0].perNode) throw new RangeError("Can't store a per-node prop on a node type"); - props[src[0].id] = src[1]; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(ue, "NodeProp"); + ue.closedBy = new ue({ deserialize: (r) => r.split(" ") }); + ue.openedBy = new ue({ deserialize: (r) => r.split(" ") }); + ue.group = new ue({ deserialize: (r) => r.split(" ") }); + ue.contextHash = new ue({ perNode: !0 }); + ue.lookAhead = new ue({ perNode: !0 }); + ue.mounted = new ue({ perNode: !0 }); + var Zk = Object.create(null), + qe = class qe1 { + static define(e) { + var t = e.props && e.props.length ? Object.create(null) : Zk, + i = (e.top ? 1 : 0) | (e.skipped ? 2 : 0) | (e.error ? 4 : 0) | (e.name == null ? 8 : 0), + n = new qe(e.name || "", t, e.id, i); + if (e.props) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = e.props[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + if ((Array.isArray(s) || (s = s(n)), s)) { + if (s[0].perNode) throw new RangeError("Can't store a per-node prop on a node type"); + t[s[0].id] = s[1]; + } } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } } - return type; - } - prop(prop) { - return this.props[prop.id]; - } - get isTop() { - return (this.flags & 1) > 0; - } - get isSkipped() { - return (this.flags & 2) > 0; - } - get isError() { - return (this.flags & 4) > 0; - } - get isAnonymous() { - return (this.flags & 8) > 0; - } - is(name2) { - if (typeof name2 == "string") { - if (this.name == name2) return true; - var group = this.prop(NodeProp.group); - return group ? group.indexOf(name2) > -1 : false; + return n; } - return this.id == name2; - } - static match(map) { - var direct = /* @__PURE__ */ Object.create(null); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - for (var prop in map) - try { - for (var _iterator = prop.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var name2 = _step.value; - direct[name2] = map[prop]; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + prop(e) { + return this.props[e.id]; + } + get isTop() { + return (this.flags & 1) > 0; + } + get isSkipped() { + return (this.flags & 2) > 0; + } + get isError() { + return (this.flags & 4) > 0; + } + get isAnonymous() { + return (this.flags & 8) > 0; + } + is(e) { + if (typeof e == "string") { + if (this.name == e) return !0; + var t = this.prop(ue.group); + return t ? t.indexOf(e) > -1 : !1; + } + return this.id == e; + } + static match(e) { + var t = Object.create(null); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + for (var i in e) try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = i.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + t[n] = e[i]; } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - return (node) => { - for (var groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) { - var found = direct[i < 0 ? node.name : groups[i]]; - if (found) return found; - } - }; - } - constructor(name2, props, id, ref) { - var flags = ref === void 0 ? 0 : ref; - this.name = name2; - this.props = props; - this.id = id; - this.flags = flags; - } - }; - __name(NodeType, "NodeType"); - NodeType.none = new NodeType("", /* @__PURE__ */ Object.create(null), 0, 8); - var NodeSet = class NodeSet1 { + return (i) => { + for (var n = i.prop(ue.group), s = -1; s < (n ? n.length : 0); s++) { + var o = t[s < 0 ? i.name : n[s]]; + if (o) return o; + } + }; + } + constructor(e, t, i, ref) { + var n = ref === void 0 ? 0 : ref; + (this.name = e), (this.props = t), (this.id = i), (this.flags = n); + } + }; + h(qe, "NodeType"); + qe.none = new qe("", Object.create(null), 0, 8); + var Oi = class Oi1 { extend() { - for (var _len = arguments.length, props = new Array(_len), _key = 0; _key < _len; _key++) { - props[_key] = arguments[_key]; + for (var _len = arguments.length, e = new Array(_len), _key = 0; _key < _len; _key++) { + e[_key] = arguments[_key]; } - var newTypes = []; + var t = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.types[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var type = _step.value; - var newProps = null; + var i = _step.value; + var n = null; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined; try { - for (var _iterator1 = props[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var source = _step1.value; - var add2 = source(type); - if (add2) { - if (!newProps) newProps = Object.assign({}, type.props); - newProps[add2[0].id] = add2[1]; - } + for (var _iterator1 = e[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { + var s = _step1.value; + var o = s(i); + o && (n || (n = Object.assign({}, i.props)), (n[o[0].id] = o[1])); } } catch (err) { _didIteratorError1 = true; @@ -21508,7 +16990,7 @@ var __generator = } } } - newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type); + t.push(n ? new qe(i.name, n, i.id, i.flags) : i); } } catch (err) { _didIteratorError = true; @@ -21524,39 +17006,33 @@ var __generator = } } } - return new NodeSet(newTypes); + return new Oi(t); } - constructor(types2) { - this.types = types2; - for (var i = 0; i < types2.length; i++) if (types2[i].id != i) throw new RangeError("Node type ids should correspond to array positions when creating a node set"); + constructor(e) { + this.types = e; + for (var t = 0; t < e.length; t++) if (e[t].id != t) throw new RangeError("Node type ids should correspond to array positions when creating a node set"); } }; - __name(NodeSet, "NodeSet"); - var CachedNode = /* @__PURE__ */ new WeakMap(); - var CachedInnerNode = /* @__PURE__ */ new WeakMap(); - var IterMode; - (function (IterMode2) { - IterMode2[(IterMode2["ExcludeBuffers"] = 1)] = "ExcludeBuffers"; - IterMode2[(IterMode2["IncludeAnonymous"] = 2)] = "IncludeAnonymous"; - IterMode2[(IterMode2["IgnoreMounts"] = 4)] = "IgnoreMounts"; - IterMode2[(IterMode2["IgnoreOverlays"] = 8)] = "IgnoreOverlays"; - })(IterMode || (IterMode = {})); - var Tree = class Tree1 { + h(Oi, "NodeSet"); + var uu = new WeakMap(), + SD = new WeakMap(), + Le; + (function (r) { + (r[(r.ExcludeBuffers = 1)] = "ExcludeBuffers"), (r[(r.IncludeAnonymous = 2)] = "IncludeAnonymous"), (r[(r.IgnoreMounts = 4)] = "IgnoreMounts"), (r[(r.IgnoreOverlays = 8)] = "IgnoreOverlays"); + })(Le || (Le = {})); + var Ee = class Ee1 { toString() { - var mounted = this.prop(NodeProp.mounted); - if (mounted && !mounted.overlay) return mounted.tree.toString(); - var children2 = ""; + var e = this.prop(ue.mounted); + if (e && !e.overlay) return e.tree.toString(); + var t = ""; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var ch = _step.value; - var str = ch.toString(); - if (str) { - if (children2) children2 += ","; - children2 += str; - } + var i = _step.value; + var n = i.toString(); + n && (t && (t += ","), (t += n)); } } catch (err) { _didIteratorError = true; @@ -21572,89 +17048,78 @@ var __generator = } } } - return !this.type.name ? children2 : (/\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) + (children2.length ? "(" + children2 + ")" : ""); + return this.type.name ? (/\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) + (t.length ? "(" + t + ")" : "") : t; } cursor() { - var mode = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - return new TreeCursor(this.topNode, mode); - } - cursorAt(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, - mode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - var scope = CachedNode.get(this) || this.topNode; - var cursor = new TreeCursor(scope); - cursor.moveTo(pos, side); - CachedNode.set(this, cursor._tree); - return cursor; + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + return new tr(this.topNode, e); + } + cursorAt(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + var n = uu.get(this) || this.topNode, + s = new tr(n); + return s.moveTo(e, t), uu.set(this, s._tree), s; } get topNode() { - return new TreeNode(this, 0, 0, null); - } - resolve(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false); - CachedNode.set(this, node); - return node; - } - resolveInner(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true); - CachedInnerNode.set(this, node); - return node; - } - iterate(spec) { - var enter = spec.enter, - leave = spec.leave, - _spec_from = spec.from, - from = _spec_from === void 0 ? 0 : _spec_from, - _spec_to = spec.to, - to = _spec_to === void 0 ? this.length : _spec_to; - for (var c = this.cursor((spec.mode || 0) | IterMode.IncludeAnonymous); ; ) { - var entered = false; - if (c.from <= to && c.to >= from && (c.type.isAnonymous || enter(c) !== false)) { - if (c.firstChild()) continue; - entered = true; + return new yt(this, 0, 0, null); + } + resolve(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var i = Yr(uu.get(this) || this.topNode, e, t, !1); + return uu.set(this, i), i; + } + resolveInner(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var i = Yr(SD.get(this) || this.topNode, e, t, !0); + return SD.set(this, i), i; + } + iterate(e) { + var t = e.enter, + i = e.leave, + tmp = e.from, + n = tmp === void 0 ? 0 : tmp, + tmp1 = e.to, + s = tmp1 === void 0 ? this.length : tmp1; + for (var o = this.cursor((e.mode || 0) | Le.IncludeAnonymous); ; ) { + var u = !1; + if (o.from <= s && o.to >= n && (o.type.isAnonymous || t(o) !== !1)) { + if (o.firstChild()) continue; + u = !0; } - for (;;) { - if (entered && leave && !c.type.isAnonymous) leave(c); - if (c.nextSibling()) break; - if (!c.parent()) return; - entered = true; + for (; u && i && !o.type.isAnonymous && i(o), !o.nextSibling(); ) { + if (!o.parent()) return; + u = !0; } } } - prop(prop) { - return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : void 0; + prop(e) { + return e.perNode ? (this.props ? this.props[e.id] : void 0) : this.type.prop(e); } get propValues() { - var result = []; - if (this.props) for (var id in this.props) result.push([+id, this.props[id]]); - return result; + var e = []; + if (this.props) for (var t in this.props) e.push([+t, this.props[t]]); + return e; } balance() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - return this.children.length <= 8 ? this : balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children2, positions, length) => new Tree(this.type, children2, positions, length, this.propValues), config.makeTree || ((children2, positions, length) => new Tree(NodeType.none, children2, positions, length))); - } - static build(data) { - return buildTree(data); - } - constructor(type, children2, positions, length, props) { - this.type = type; - this.children = children2; - this.positions = positions; - this.length = length; - this.props = null; - if (props && props.length) { - this.props = /* @__PURE__ */ Object.create(null); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return this.children.length <= 8 ? this : Ch(qe.none, this.children, this.positions, 0, this.children.length, 0, this.length, (t, i, n) => new Ee(this.type, t, i, n, this.propValues), e.makeTree || ((t, i, n) => new Ee(qe.none, t, i, n))); + } + static build(e) { + return ew(e); + } + constructor(e, t, i, n, s) { + if (((this.type = e), (this.children = t), (this.positions = i), (this.length = n), (this.props = null), s && s.length)) { + this.props = Object.create(null); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = props[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = s[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step_value = _slicedToArray(_step.value, 2), - prop = _step_value[0], - value = _step_value[1]; - this.props[typeof prop == "number" ? prop : prop.id] = value; + o = _step_value[0], + u = _step_value[1]; + this.props[typeof o == "number" ? o : o.id] = u; } } catch (err) { _didIteratorError = true; @@ -21673,9 +17138,9 @@ var __generator = } } }; - __name(Tree, "Tree"); - Tree.empty = new Tree(NodeType.none, [], [], 0); - var FlatBufferCursor = class FlatBufferCursor1 { + h(Ee, "Tree"); + Ee.empty = new Ee(qe.none, [], [], 0); + var Ur = class Ur1 { get id() { return this.buffer[this.index - 4]; } @@ -21695,124 +17160,98 @@ var __generator = this.index -= 4; } fork() { - return new FlatBufferCursor(this.buffer, this.index); + return new Ur(this.buffer, this.index); } - constructor(buffer, index) { - this.buffer = buffer; - this.index = index; + constructor(e, t) { + (this.buffer = e), (this.index = t); } }; - __name(FlatBufferCursor, "FlatBufferCursor"); - var TreeBuffer = class TreeBuffer1 { + h(Ur, "FlatBufferCursor"); + var Gt = class Gt1 { get type() { - return NodeType.none; + return qe.none; } toString() { - var result = []; - for (var index = 0; index < this.buffer.length; ) { - result.push(this.childString(index)); - index = this.buffer[index + 3]; - } - return result.join(","); - } - childString(index) { - var id = this.buffer[index], - endIndex = this.buffer[index + 3]; - var type = this.set.types[id], - result = type.name; - if (/\W/.test(result) && !type.isError) result = JSON.stringify(result); - index += 4; - if (endIndex == index) return result; - var children2 = []; - while (index < endIndex) { - children2.push(this.childString(index)); - index = this.buffer[index + 3]; - } - return result + "(" + children2.join(",") + ")"; - } - findChild(startIndex, endIndex, dir, pos, side) { - var buffer = this.buffer, - pick = -1; - for (var i = startIndex; i != endIndex; i = buffer[i + 3]) { - if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) { - pick = i; - if (dir > 0) break; - } - } - return pick; - } - slice(startI, endI, from) { - var b = this.buffer; - var copy = new Uint16Array(endI - startI), - len = 0; - for (var i = startI, j = 0; i < endI; ) { - copy[j++] = b[i++]; - copy[j++] = b[i++] - from; - var to = (copy[j++] = b[i++] - from); - copy[j++] = b[i++] - startI; - len = Math.max(len, to); - } - return new TreeBuffer(copy, len, this.set); - } - constructor(buffer, length, set) { - this.buffer = buffer; - this.length = length; - this.set = set; + var e = []; + for (var t = 0; t < this.buffer.length; ) e.push(this.childString(t)), (t = this.buffer[t + 3]); + return e.join(","); + } + childString(e) { + var t = this.buffer[e], + i = this.buffer[e + 3], + n = this.set.types[t], + s = n.name; + if ((/\W/.test(s) && !n.isError && (s = JSON.stringify(s)), (e += 4), i == e)) return s; + var o = []; + for (; e < i; ) o.push(this.childString(e)), (e = this.buffer[e + 3]); + return s + "(" + o.join(",") + ")"; + } + findChild(e, t, i, n, s) { + var _this = this, + o = _this.buffer, + u = -1; + for (var l = e; l != t && !(_D(s, n, o[l + 1], o[l + 2]) && ((u = l), i > 0)); l = o[l + 3]); + return u; + } + slice(e, t, i) { + var n = this.buffer, + s = new Uint16Array(t - e), + o = 0; + for (var u = e, l = 0; u < t; ) { + (s[l++] = n[u++]), (s[l++] = n[u++] - i); + var a = (s[l++] = n[u++] - i); + (s[l++] = n[u++] - e), (o = Math.max(o, a)); + } + return new Gt(s, o, this.set); + } + constructor(e, t, i) { + (this.buffer = e), (this.length = t), (this.set = i); } }; - __name(TreeBuffer, "TreeBuffer"); - function checkSide(side, pos, from, to) { - switch (side) { + h(Gt, "TreeBuffer"); + function _D(r, e, t, i) { + switch (r) { case -2: - return from < pos; + return t < e; case -1: - return to >= pos && from < pos; + return i >= e && t < e; case 0: - return from < pos && to > pos; + return t < e && i > e; case 1: - return from <= pos && to > pos; + return t <= e && i > e; case 2: - return to > pos; + return i > e; case 4: - return true; - } - } - __name(checkSide, "checkSide"); - function enterUnfinishedNodesBefore(node, pos) { - var scan = node.childBefore(pos); - while (scan) { - var last = scan.lastChild; - if (!last || last.to != scan.to) break; - if (last.type.isError && last.from == last.to) { - node = scan; - scan = last.prevSibling; - } else { - scan = last; - } + return !0; } - return node; } - __name(enterUnfinishedNodesBefore, "enterUnfinishedNodesBefore"); - function resolveNode(node, pos, side, overlays) { - var _a2; - while (node.from == node.to || (side < 1 ? node.from >= pos : node.from > pos) || (side > -1 ? node.to <= pos : node.to < pos)) { - var parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent; - if (!parent) return node; - node = parent; + h(_D, "checkSide"); + function OD(r, e) { + var t = r.childBefore(e); + for (; t; ) { + var i = t.lastChild; + if (!i || i.to != t.to) break; + i.type.isError && i.from == i.to ? ((r = t), (t = i.prevSibling)) : (t = i); } - var mode = overlays ? 0 : IterMode.IgnoreOverlays; - if (overlays) - for (var scan = node, parent1 = scan.parent; parent1; scan = parent1, parent1 = scan.parent) { - if (scan instanceof TreeNode && scan.index < 0 && ((_a2 = parent1.enter(pos, side, mode)) === null || _a2 === void 0 ? void 0 : _a2.from) != scan.from) node = parent1; - } + return r; + } + h(OD, "enterUnfinishedNodesBefore"); + function Yr(r, e, t, i) { + for (var n; r.from == r.to || (t < 1 ? r.from >= e : r.from > e) || (t > -1 ? r.to <= e : r.to < e); ) { + var o = !i && r instanceof yt && r.index < 0 ? null : r.parent; + if (!o) return r; + r = o; + } + var s = i ? 0 : Le.IgnoreOverlays; + if (i) for (var o1 = r, u = o1.parent; u; o1 = u, u = o1.parent) o1 instanceof yt && o1.index < 0 && ((n = u.enter(e, t, s)) === null || n === void 0 ? void 0 : n.from) != o1.from && (r = u); for (;;) { - var inner = node.enter(pos, side, mode); - if (!inner) return node; - node = inner; + var o2 = r.enter(e, t, s); + if (!o2) return r; + r = o2; } } - __name(resolveNode, "resolveNode"); - var TreeNode = class TreeNode1 { + h(Yr, "resolveNode"); + var yt = class yt1 { get type() { return this._tree.type; } @@ -21822,29 +17261,26 @@ var __generator = get to() { return this.from + this._tree.length; } - nextChild(i, dir, pos, side) { - var mode = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0; - for (var parent = this; ; ) { - for (var _parent__tree = parent._tree, children2 = _parent__tree.children, positions = _parent__tree.positions, e = dir > 0 ? children2.length : -1; i != e; i += dir) { - var next = children2[i], - start = positions[i] + parent.from; - if (!checkSide(side, pos, start, start + next.length)) continue; - if (next instanceof TreeBuffer) { - if (mode & IterMode.ExcludeBuffers) continue; - var index = next.findChild(0, next.buffer.length, dir, pos - start, side); - if (index > -1) return new BufferNode(new BufferContext(parent, next, i, start), null, index); - } else if (mode & IterMode.IncludeAnonymous || !next.type.isAnonymous || hasChild(next)) { - var mounted = void 0; - if (!(mode & IterMode.IgnoreMounts) && next.props && (mounted = next.prop(NodeProp.mounted)) && !mounted.overlay) return new TreeNode(mounted.tree, start, i, parent); - var inner = new TreeNode(next, start, i, parent); - return mode & IterMode.IncludeAnonymous || !inner.type.isAnonymous ? inner : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side); - } - } - if (mode & IterMode.IncludeAnonymous || !parent.type.isAnonymous) return null; - if (parent.index >= 0) i = parent.index + dir; - else i = dir < 0 ? -1 : parent._parent._tree.children.length; - parent = parent._parent; - if (!parent) return null; + nextChild(e, t, i, n) { + var s = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0; + for (var o = this; ; ) { + for (var _o__tree = o._tree, u = _o__tree.children, l = _o__tree.positions, a = t > 0 ? u.length : -1; e != a; e += t) { + var c = u[e], + f = l[e] + o.from; + if (_D(n, i, f, f + c.length)) { + if (c instanceof Gt) { + if (s & Le.ExcludeBuffers) continue; + var d = c.findChild(0, c.buffer.length, t, i - f, n); + if (d > -1) return new Tt(new lu(o, c, e, f), null, d); + } else if (s & Le.IncludeAnonymous || !c.type.isAnonymous || yh(c)) { + var d1 = void 0; + if (!(s & Le.IgnoreMounts) && c.props && (d1 = c.prop(ue.mounted)) && !d1.overlay) return new yt(d1.tree, f, e, o); + var p = new yt(c, f, e, o); + return s & Le.IncludeAnonymous || !p.type.isAnonymous ? p : p.nextChild(t < 0 ? c.children.length - 1 : 0, t, i, n); + } + } + } + if (s & Le.IncludeAnonymous || !o.type.isAnonymous || (o.index >= 0 ? (e = o.index + t) : (e = t < 0 ? -1 : o._parent._tree.children.length), (o = o._parent), !o)) return null; } } get firstChild() { @@ -21853,26 +17289,26 @@ var __generator = get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4); } - childAfter(pos) { - return this.nextChild(0, 1, pos, 2); + childAfter(e) { + return this.nextChild(0, 1, e, 2); } - childBefore(pos) { - return this.nextChild(this._tree.children.length - 1, -1, pos, -2); + childBefore(e) { + return this.nextChild(this._tree.children.length - 1, -1, e, -2); } - enter(pos, side) { - var mode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - var mounted; - if (!(mode & IterMode.IgnoreOverlays) && (mounted = this._tree.prop(NodeProp.mounted)) && mounted.overlay) { - var rPos = pos - this.from; + enter(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + var n; + if (!(i & Le.IgnoreOverlays) && (n = this._tree.prop(ue.mounted)) && n.overlay) { + var s = e - this.from; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = mounted.overlay[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = n.overlay[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step_value = _step.value, - from = _step_value.from, - to = _step_value.to; - if ((side > 0 ? from <= rPos : from < rPos) && (side < 0 ? to >= rPos : to > rPos)) return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this); + o = _step_value.from, + u = _step_value.to; + if ((t > 0 ? o <= s : o < s) && (t < 0 ? u >= s : u > s)) return new yt(n.tree, n.overlay[0].from + this.from, -1, this); } } catch (err) { _didIteratorError = true; @@ -21889,12 +17325,12 @@ var __generator = } } } - return this.nextChild(0, 1, pos, side, mode); + return this.nextChild(0, 1, e, t, i); } nextSignificantParent() { - var val = this; - while (val.type.isAnonymous && val._parent) val = val._parent; - return val; + var e = this; + for (; e.type.isAnonymous && e._parent; ) e = e._parent; + return e; } get parent() { return this._parent ? this._parent.nextSignificantParent() : null; @@ -21906,8 +17342,8 @@ var __generator = return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4) : null; } cursor() { - var mode = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - return new TreeCursor(this, mode); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + return new tr(this, e); } get tree() { return this._tree; @@ -21915,27 +17351,27 @@ var __generator = toTree() { return this._tree; } - resolve(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - return resolveNode(this, pos, side, false); + resolve(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return Yr(this, e, t, !1); } - resolveInner(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - return resolveNode(this, pos, side, true); + resolveInner(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return Yr(this, e, t, !0); } - enterUnfinishedNodesBefore(pos) { - return enterUnfinishedNodesBefore(this, pos); + enterUnfinishedNodesBefore(e) { + return OD(this, e); } - getChild(type) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, - after = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; - var r = getChildren(this, type, before, after); - return r.length ? r[0] : null; + getChild(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + var n = cu(this, e, t, i); + return n.length ? n[0] : null; } - getChildren(type) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, - after = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; - return getChildren(this, type, before, after); + getChildren(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + return cu(this, e, t, i); } toString() { return this._tree.toString(); @@ -21943,53 +17379,46 @@ var __generator = get node() { return this; } - matchContext(context) { - return matchNodeContext(this, context); + matchContext(e) { + return fu(this, e); } - constructor(_tree, from, index, _parent) { - this._tree = _tree; - this.from = from; - this.index = index; - this._parent = _parent; + constructor(e, t, i, n) { + (this._tree = e), (this.from = t), (this.index = i), (this._parent = n); } }; - __name(TreeNode, "TreeNode"); - function getChildren(node, type, before, after) { - var cur = node.cursor(), - result = []; - if (!cur.firstChild()) return result; - if (before != null) { - while (!cur.type.is(before)) if (!cur.nextSibling()) return result; + h(yt, "TreeNode"); + function cu(r, e, t, i) { + var n = r.cursor(), + s = []; + if (!n.firstChild()) return s; + if (t != null) { + for (; !n.type.is(t); ) if (!n.nextSibling()) return s; } for (;;) { - if (after != null && cur.type.is(after)) return result; - if (cur.type.is(type)) result.push(cur.node); - if (!cur.nextSibling()) return after == null ? result : []; + if (i != null && n.type.is(i)) return s; + if ((n.type.is(e) && s.push(n.node), !n.nextSibling())) return i == null ? s : []; } } - __name(getChildren, "getChildren"); - function matchNodeContext(node, context) { - var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : context.length - 1; - for (var p = node.parent; i >= 0; p = p.parent) { - if (!p) return false; - if (!p.type.isAnonymous) { - if (context[i] && context[i] != p.name) return false; - i--; + h(cu, "getChildren"); + function fu(r, e) { + var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length - 1; + for (var i = r.parent; t >= 0; i = i.parent) { + if (!i) return !1; + if (!i.type.isAnonymous) { + if (e[t] && e[t] != i.name) return !1; + t--; } } - return true; + return !0; } - __name(matchNodeContext, "matchNodeContext"); - var BufferContext = class BufferContext { - constructor(parent, buffer, index, start) { - this.parent = parent; - this.buffer = buffer; - this.index = index; - this.start = start; + h(fu, "matchNodeContext"); + var lu = class lu { + constructor(e, t, i, n) { + (this.parent = e), (this.buffer = t), (this.index = i), (this.start = n); } }; - __name(BufferContext, "BufferContext"); - var BufferNode = class BufferNode1 { + h(lu, "BufferContext"); + var Tt = class Tt1 { get name() { return this.type.name; } @@ -21999,10 +17428,11 @@ var __generator = get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; } - child(dir, pos, side) { - var buffer = this.context.buffer; - var index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side); - return index < 0 ? null : new BufferNode(this.context, this, index); + child(e, t, i) { + var _this_context = this.context, + n = _this_context.buffer, + s = n.findChild(this.index + 4, n.buffer[this.index + 3], e, t - this.context.start, i); + return s < 0 ? null : new Tt(this.context, this, s); } get firstChild() { return this.child(1, 0, 4); @@ -22010,137 +17440,120 @@ var __generator = get lastChild() { return this.child(-1, 0, 4); } - childAfter(pos) { - return this.child(1, pos, 2); + childAfter(e) { + return this.child(1, e, 2); } - childBefore(pos) { - return this.child(-1, pos, -2); + childBefore(e) { + return this.child(-1, e, -2); } - enter(pos, side) { - var mode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - if (mode & IterMode.ExcludeBuffers) return null; - var buffer = this.context.buffer; - var index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side); - return index < 0 ? null : new BufferNode(this.context, this, index); + enter(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + if (i & Le.ExcludeBuffers) return null; + var _this_context = this.context, + n = _this_context.buffer, + s = n.findChild(this.index + 4, n.buffer[this.index + 3], t > 0 ? 1 : -1, e - this.context.start, t); + return s < 0 ? null : new Tt(this.context, this, s); } get parent() { return this._parent || this.context.parent.nextSignificantParent(); } - externalSibling(dir) { - return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4); + externalSibling(e) { + return this._parent ? null : this.context.parent.nextChild(this.context.index + e, e, 0, 4); } get nextSibling() { - var buffer = this.context.buffer; - var after = buffer.buffer[this.index + 3]; - if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length)) return new BufferNode(this.context, this._parent, after); - return this.externalSibling(1); + var _this_context = this.context, + e = _this_context.buffer, + t = e.buffer[this.index + 3]; + return t < (this._parent ? e.buffer[this._parent.index + 3] : e.buffer.length) ? new Tt(this.context, this._parent, t) : this.externalSibling(1); } get prevSibling() { - var buffer = this.context.buffer; - var parentStart = this._parent ? this._parent.index + 4 : 0; - if (this.index == parentStart) return this.externalSibling(-1); - return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4)); + var _this_context = this.context, + e = _this_context.buffer, + t = this._parent ? this._parent.index + 4 : 0; + return this.index == t ? this.externalSibling(-1) : new Tt(this.context, this._parent, e.findChild(t, this.index, -1, 0, 4)); } cursor() { - var mode = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - return new TreeCursor(this, mode); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; + return new tr(this, e); } get tree() { return null; } toTree() { - var children2 = [], - positions = []; - var buffer = this.context.buffer; - var startI = this.index + 4, - endI = buffer.buffer[this.index + 3]; - if (endI > startI) { - var from = buffer.buffer[this.index + 1]; - children2.push(buffer.slice(startI, endI, from)); - positions.push(0); + var e = [], + t = [], + _this_context = this.context, + i = _this_context.buffer, + n = this.index + 4, + s = i.buffer[this.index + 3]; + if (s > n) { + var o = i.buffer[this.index + 1]; + e.push(i.slice(n, s, o)), t.push(0); } - return new Tree(this.type, children2, positions, this.to - this.from); + return new Ee(this.type, e, t, this.to - this.from); } - resolve(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - return resolveNode(this, pos, side, false); + resolve(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return Yr(this, e, t, !1); } - resolveInner(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - return resolveNode(this, pos, side, true); + resolveInner(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + return Yr(this, e, t, !0); } - enterUnfinishedNodesBefore(pos) { - return enterUnfinishedNodesBefore(this, pos); + enterUnfinishedNodesBefore(e) { + return OD(this, e); } toString() { return this.context.buffer.childString(this.index); } - getChild(type) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, - after = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; - var r = getChildren(this, type, before, after); - return r.length ? r[0] : null; + getChild(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + var n = cu(this, e, t, i); + return n.length ? n[0] : null; } - getChildren(type) { - var before = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, - after = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; - return getChildren(this, type, before, after); + getChildren(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + return cu(this, e, t, i); } get node() { return this; } - matchContext(context) { - return matchNodeContext(this, context); + matchContext(e) { + return fu(this, e); } - constructor(context, _parent, index) { - this.context = context; - this._parent = _parent; - this.index = index; - this.type = context.buffer.set.types[context.buffer.buffer[index]]; + constructor(e, t, i) { + (this.context = e), (this._parent = t), (this.index = i), (this.type = e.buffer.set.types[e.buffer.buffer[i]]); } }; - __name(BufferNode, "BufferNode"); - var TreeCursor = class TreeCursor { + h(Tt, "BufferNode"); + var tr = class tr { get name() { return this.type.name; } - yieldNode(node) { - if (!node) return false; - this._tree = node; - this.type = node.type; - this.from = node.from; - this.to = node.to; - return true; + yieldNode(e) { + return e ? ((this._tree = e), (this.type = e.type), (this.from = e.from), (this.to = e.to), !0) : !1; } - yieldBuf(index, type) { - this.index = index; + yieldBuf(e, t) { + this.index = e; var _this_buffer = this.buffer, - start = _this_buffer.start, - buffer = _this_buffer.buffer; - this.type = type || buffer.set.types[buffer.buffer[index]]; - this.from = start + buffer.buffer[index + 1]; - this.to = start + buffer.buffer[index + 2]; - return true; - } - yield(node) { - if (!node) return false; - if (node instanceof TreeNode) { - this.buffer = null; - return this.yieldNode(node); - } - this.buffer = node.context; - return this.yieldBuf(node.index, node.type); + i = _this_buffer.start, + n = _this_buffer.buffer; + return (this.type = t || n.set.types[n.buffer[e]]), (this.from = i + n.buffer[e + 1]), (this.to = i + n.buffer[e + 2]), !0; + } + yield(e) { + return e ? (e instanceof yt ? ((this.buffer = null), this.yieldNode(e)) : ((this.buffer = e.context), this.yieldBuf(e.index, e.type))) : !1; } toString() { return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString(); } - enterChild(dir, pos, side) { - if (!this.buffer) return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode)); - var buffer = this.buffer.buffer; - var index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side); - if (index < 0) return false; - this.stack.push(this.index); - return this.yieldBuf(index); + enterChild(e, t, i) { + if (!this.buffer) return this.yield(this._tree.nextChild(e < 0 ? this._tree._tree.children.length - 1 : 0, e, t, i, this.mode)); + var _this_buffer = this.buffer, + n = _this_buffer.buffer, + s = n.findChild(this.index + 4, n.buffer[this.index + 3], e, t - this.buffer.start, i); + return s < 0 ? !1 : (this.stack.push(this.index), this.yieldBuf(s)); } firstChild() { return this.enterChild(1, 0, 4); @@ -22148,36 +17561,35 @@ var __generator = lastChild() { return this.enterChild(-1, 0, 4); } - childAfter(pos) { - return this.enterChild(1, pos, 2); + childAfter(e) { + return this.enterChild(1, e, 2); } - childBefore(pos) { - return this.enterChild(-1, pos, -2); + childBefore(e) { + return this.enterChild(-1, e, -2); } - enter(pos, side) { - var mode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.mode; - if (!this.buffer) return this.yield(this._tree.enter(pos, side, mode)); - return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side); + enter(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : this.mode; + return this.buffer ? (i & Le.ExcludeBuffers ? !1 : this.enterChild(1, e, t)) : this.yield(this._tree.enter(e, t, i)); } parent() { - if (!this.buffer) return this.yieldNode(this.mode & IterMode.IncludeAnonymous ? this._tree._parent : this._tree.parent); + if (!this.buffer) return this.yieldNode(this.mode & Le.IncludeAnonymous ? this._tree._parent : this._tree.parent); if (this.stack.length) return this.yieldBuf(this.stack.pop()); - var parent = this.mode & IterMode.IncludeAnonymous ? this.buffer.parent : this.buffer.parent.nextSignificantParent(); - this.buffer = null; - return this.yieldNode(parent); - } - sibling(dir) { - if (!this.buffer) return !this._tree._parent ? false : this.yield(this._tree.index < 0 ? null : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4, this.mode)); - var buffer = this.buffer.buffer, - d = this.stack.length - 1; - if (dir < 0) { - var parentStart = d < 0 ? 0 : this.stack[d] + 4; - if (this.index != parentStart) return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4)); + var e = this.mode & Le.IncludeAnonymous ? this.buffer.parent : this.buffer.parent.nextSignificantParent(); + return (this.buffer = null), this.yieldNode(e); + } + sibling(e) { + if (!this.buffer) return this._tree._parent ? this.yield(this._tree.index < 0 ? null : this._tree._parent.nextChild(this._tree.index + e, e, 0, 4, this.mode)) : !1; + var _this_buffer = this.buffer, + t = _this_buffer.buffer, + i = this.stack.length - 1; + if (e < 0) { + var n = i < 0 ? 0 : this.stack[i] + 4; + if (this.index != n) return this.yieldBuf(t.findChild(n, this.index, -1, 0, 4)); } else { - var after = buffer.buffer[this.index + 3]; - if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3])) return this.yieldBuf(after); + var n1 = t.buffer[this.index + 3]; + if (n1 < (i < 0 ? t.buffer.length : t.buffer[this.stack[i] + 3])) return this.yieldBuf(n1); } - return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4, this.mode)) : false; + return i < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + e, e, 0, 4, this.mode)) : !1; } nextSibling() { return this.sibling(1); @@ -22185,352 +17597,280 @@ var __generator = prevSibling() { return this.sibling(-1); } - atLastNode(dir) { - var index, - parent, - buffer = this.buffer; - if (buffer) { - if (dir > 0) { - if (this.index < buffer.buffer.buffer.length) return false; - } else { - for (var i = 0; i < this.index; i++) if (buffer.buffer.buffer[i + 3] < this.index) return false; - } - var ref; - (ref = buffer), (index = ref.index), (parent = ref.parent), ref; - } else { + atLastNode(e) { + var t, + i, + _this = this, + n = _this.buffer; + var ref; + if (n) { + if (e > 0) { + if (this.index < n.buffer.buffer.length) return !1; + } else for (var s = 0; s < this.index; s++) if (n.buffer.buffer[s + 3] < this.index) return !1; var ref1; - (ref1 = this._tree), (index = ref1.index), (parent = ref1._parent), ref1; - } + (ref1 = n), (t = ref1.index), (i = ref1.parent), ref1; + } else (ref = this._tree), (t = ref.index), (i = ref._parent), ref; var ref2; - for (; parent; ref2 = parent, index = ref2.index, parent = ref2._parent, ref2) { - if (index > -1) - for (var i1 = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i1 != e; i1 += dir) { - var child = parent._tree.children[i1]; - if (this.mode & IterMode.IncludeAnonymous || child instanceof TreeBuffer || !child.type.isAnonymous || hasChild(child)) return false; + for (; i; ref2 = i, t = ref2.index, i = ref2._parent, ref2) + if (t > -1) + for (var s1 = t + e, o = e < 0 ? -1 : i._tree.children.length; s1 != o; s1 += e) { + var u = i._tree.children[s1]; + if (this.mode & Le.IncludeAnonymous || u instanceof Gt || !u.type.isAnonymous || yh(u)) return !1; } - } - return true; + return !0; } - move(dir, enter) { - if (enter && this.enterChild(dir, 0, 4)) return true; + move(e, t) { + if (t && this.enterChild(e, 0, 4)) return !0; for (;;) { - if (this.sibling(dir)) return true; - if (this.atLastNode(dir) || !this.parent()) return false; + if (this.sibling(e)) return !0; + if (this.atLastNode(e) || !this.parent()) return !1; } } next() { - var enter = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - return this.move(1, enter); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0; + return this.move(1, e); } prev() { - var enter = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - return this.move(-1, enter); + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0; + return this.move(-1, e); } - moveTo(pos) { - var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - while (this.from == this.to || (side < 1 ? this.from >= pos : this.from > pos) || (side > -1 ? this.to <= pos : this.to < pos)) if (!this.parent()) break; - while (this.enterChild(1, pos, side)) {} + moveTo(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + for (; (this.from == this.to || (t < 1 ? this.from >= e : this.from > e) || (t > -1 ? this.to <= e : this.to < e)) && this.parent(); ); + for (; this.enterChild(1, e, t); ); return this; } get node() { if (!this.buffer) return this._tree; - var cache = this.bufferNode, - result = null, - depth = 0; - if (cache && cache.context == this.buffer) { - scan: for (var index = this.index, d = this.stack.length; d >= 0; ) { - for (var c = cache; c; c = c._parent) - if (c.index == index) { - if (index == this.index) return c; - result = c; - depth = d + 1; - break scan; + var e = this.bufferNode, + t = null, + i = 0; + if (e && e.context == this.buffer) + e: for (var n = this.index, s = this.stack.length; s >= 0; ) { + for (var o = e; o; o = o._parent) + if (o.index == n) { + if (n == this.index) return o; + (t = o), (i = s + 1); + break e; } - index = this.stack[--d]; + n = this.stack[--s]; } - } - for (var i = depth; i < this.stack.length; i++) result = new BufferNode(this.buffer, result, this.stack[i]); - return (this.bufferNode = new BufferNode(this.buffer, result, this.index)); + for (var n1 = i; n1 < this.stack.length; n1++) t = new Tt(this.buffer, t, this.stack[n1]); + return (this.bufferNode = new Tt(this.buffer, t, this.index)); } get tree() { return this.buffer ? null : this._tree._tree; } - iterate(enter, leave) { - for (var depth = 0; ; ) { - var mustLeave = false; - if (this.type.isAnonymous || enter(this) !== false) { + iterate(e, t) { + for (var i = 0; ; ) { + var n = !1; + if (this.type.isAnonymous || e(this) !== !1) { if (this.firstChild()) { - depth++; + i++; continue; } - if (!this.type.isAnonymous) mustLeave = true; + this.type.isAnonymous || (n = !0); } - for (;;) { - if (mustLeave && leave) leave(this); - mustLeave = this.type.isAnonymous; - if (this.nextSibling()) break; - if (!depth) return; - this.parent(); - depth--; - mustLeave = true; - } - } - } - matchContext(context) { - if (!this.buffer) return matchNodeContext(this.node, context); - var buffer = this.buffer.buffer, - _buffer_set = buffer.set, - types2 = _buffer_set.types; - for (var i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) { - if (d < 0) return matchNodeContext(this.node, context, i); - var type = types2[buffer.buffer[this.stack[d]]]; - if (!type.isAnonymous) { - if (context[i] && context[i] != type.name) return false; - i--; - } - } - return true; - } - constructor(node, ref) { - var mode = ref === void 0 ? 0 : ref; - this.mode = mode; - this.buffer = null; - this.stack = []; - this.index = 0; - this.bufferNode = null; - if (node instanceof TreeNode) { - this.yieldNode(node); - } else { - this._tree = node.context.parent; - this.buffer = node.context; - for (var n = node._parent; n; n = n._parent) this.stack.unshift(n.index); - this.bufferNode = node; - this.yieldBuf(node.index); + for (; n && t && t(this), (n = this.type.isAnonymous), !this.nextSibling(); ) { + if (!i) return; + this.parent(), i--, (n = !0); + } + } + } + matchContext(e) { + if (!this.buffer) return fu(this.node, e); + var _this_buffer = this.buffer, + t = _this_buffer.buffer, + _t_set = t.set, + i = _t_set.types; + for (var n = e.length - 1, s = this.stack.length - 1; n >= 0; s--) { + if (s < 0) return fu(this.node, e, n); + var o = i[t.buffer[this.stack[s]]]; + if (!o.isAnonymous) { + if (e[n] && e[n] != o.name) return !1; + n--; + } + } + return !0; + } + constructor(e, ref) { + var t = ref === void 0 ? 0 : ref; + if (((this.mode = t), (this.buffer = null), (this.stack = []), (this.index = 0), (this.bufferNode = null), e instanceof yt)) this.yieldNode(e); + else { + (this._tree = e.context.parent), (this.buffer = e.context); + for (var i = e._parent; i; i = i._parent) this.stack.unshift(i.index); + (this.bufferNode = e), this.yieldBuf(e.index); } } }; - __name(TreeCursor, "TreeCursor"); - function hasChild(tree) { - return tree.children.some((ch) => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch)); - } - __name(hasChild, "hasChild"); - function buildTree(data) { - var _a2; - var buffer = data.buffer, - nodeSet = data.nodeSet, - _data_maxBufferLength = data.maxBufferLength, - maxBufferLength = _data_maxBufferLength === void 0 ? DefaultBufferLength : _data_maxBufferLength, - _data_reused = data.reused, - reused = _data_reused === void 0 ? [] : _data_reused, - _data_minRepeatType = data.minRepeatType, - minRepeatType = _data_minRepeatType === void 0 ? nodeSet.types.length : _data_minRepeatType; - var cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer; - var types2 = nodeSet.types; - var contextHash = 0, - lookAhead = 0; - function takeNode(parentStart, minPos, children3, positions2, inRepeat) { - var id = cursor.id, - start = cursor.start, - end = cursor.end, - size = cursor.size; - var lookAheadAtStart = lookAhead; - while (size < 0) { - cursor.next(); - if (size == -1) { - var node2 = reused[id]; - children3.push(node2); - positions2.push(start - parentStart); + h(tr, "TreeCursor"); + function yh(r) { + return r.children.some((e) => e instanceof Gt || !e.type.isAnonymous || yh(e)); + } + h(yh, "hasChild"); + function ew(r) { + var e; + var t = r.buffer, + i = r.nodeSet, + tmp = r.maxBufferLength, + n = tmp === void 0 ? 1024 : tmp, + tmp1 = r.reused, + s = tmp1 === void 0 ? [] : tmp1, + tmp2 = r.minRepeatType, + o = tmp2 === void 0 ? i.types.length : tmp2, + u = Array.isArray(t) ? new Ur(t, t.length) : t, + l = i.types, + a = 0, + c = 0; + function f(E, O, _, W, Q) { + var j = u.id, + Y = u.start, + I = u.end, + oe = u.size, + le = c; + for (; oe < 0; ) + if ((u.next(), oe == -1)) { + var ge = s[j]; + _.push(ge), W.push(Y - E); return; - } else if (size == -3) { - contextHash = id; + } else if (oe == -3) { + a = j; return; - } else if (size == -4) { - lookAhead = id; + } else if (oe == -4) { + c = j; return; - } else { - throw new RangeError("Unrecognized record size: ".concat(size)); - } - } - var type = types2[id], - node, - buffer2; - var startPos = start - parentStart; - if (end - start <= maxBufferLength && (buffer2 = findBufferSize(cursor.pos - minPos, inRepeat))) { - var data2 = new Uint16Array(buffer2.size - buffer2.skip); - var endPos = cursor.pos - buffer2.size, - index = data2.length; - while (cursor.pos > endPos) index = copyToBuffer(buffer2.start, data2, index); - node = new TreeBuffer(data2, end - buffer2.start, nodeSet); - startPos = buffer2.start - parentStart; + } else throw new RangeError("Unrecognized record size: ".concat(oe)); + var G = l[j], + R, + ee, + Fe = Y - E; + if (I - Y <= n && (ee = D(u.pos - O, Q))) { + var ge1 = new Uint16Array(ee.size - ee.skip), + fe = u.pos - ee.size, + Ie = ge1.length; + for (; u.pos > fe; ) Ie = g(ee.start, ge1, Ie); + (R = new Gt(ge1, I - ee.start, i)), (Fe = ee.start - E); } else { - var endPos1 = cursor.pos - size; - cursor.next(); - var localChildren = [], - localPositions = []; - var localInRepeat = id >= minRepeatType ? id : -1; - var lastGroup = 0, - lastEnd = end; - while (cursor.pos > endPos1) { - if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) { - if (cursor.end <= lastEnd - maxBufferLength) { - makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart); - lastGroup = localChildren.length; - lastEnd = cursor.end; - } - cursor.next(); - } else { - takeNode(start, endPos1, localChildren, localPositions, localInRepeat); - } - } - if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length) makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart); - localChildren.reverse(); - localPositions.reverse(); - if (localInRepeat > -1 && lastGroup > 0) { - var make = makeBalanced(type); - node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make); - } else { - node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end); - } - } - children3.push(node); - positions2.push(startPos); - } - __name(takeNode, "takeNode"); - function makeBalanced(type) { - return (children3, positions2, length2) => { - var lookAhead2 = 0, - lastI = children3.length - 1, - last, - lookAheadProp; - if (lastI >= 0 && (last = children3[lastI]) instanceof Tree) { - if (!lastI && last.type == type && last.length == length2) return last; - if ((lookAheadProp = last.prop(NodeProp.lookAhead))) lookAhead2 = positions2[lastI] + last.length + lookAheadProp; - } - return makeTree(type, children3, positions2, length2, lookAhead2); + var ge2 = u.pos - oe; + u.next(); + var fe1 = [], + Ie1 = [], + Re = j >= o ? j : -1, + Ye = 0, + mt = I; + for (; u.pos > ge2; ) Re >= 0 && u.id == Re && u.size >= 0 ? (u.end <= mt - n && (p(fe1, Ie1, Y, Ye, u.end, mt, Re, le), (Ye = fe1.length), (mt = u.end)), u.next()) : f(Y, ge2, fe1, Ie1, Re); + if ((Re >= 0 && Ye > 0 && Ye < fe1.length && p(fe1, Ie1, Y, Ye, Y, mt, Re, le), fe1.reverse(), Ie1.reverse(), Re > -1 && Ye > 0)) { + var mi = d(G); + R = Ch(G, fe1, Ie1, 0, fe1.length, 0, I - Y, mi, mi); + } else R = m(G, fe1, Ie1, I - Y, le - I); + } + _.push(R), W.push(Fe); + } + h(f, "takeNode"); + function d(E) { + return (O, _, W) => { + var Q = 0, + j = O.length - 1, + Y, + I; + if (j >= 0 && (Y = O[j]) instanceof Ee) { + if (!j && Y.type == E && Y.length == W) return Y; + (I = Y.prop(ue.lookAhead)) && (Q = _[j] + Y.length + I); + } + return m(E, O, _, W, Q); }; } - __name(makeBalanced, "makeBalanced"); - function makeRepeatLeaf(children3, positions2, base2, i, from, to, type, lookAhead2) { - var localChildren = [], - localPositions = []; - while (children3.length > i) { - localChildren.push(children3.pop()); - localPositions.push(positions2.pop() + base2 - from); - } - children3.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead2 - to)); - positions2.push(from - base2); - } - __name(makeRepeatLeaf, "makeRepeatLeaf"); - function makeTree(type, children3, positions2, length2) { - var lookAhead2 = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0, - props = arguments.length > 5 ? arguments[5] : void 0; - if (contextHash) { - var pair2 = [NodeProp.contextHash, contextHash]; - props = props ? [pair2].concat(props) : [pair2]; - } - if (lookAhead2 > 25) { - var pair21 = [NodeProp.lookAhead, lookAhead2]; - props = props ? [pair21].concat(props) : [pair21]; - } - return new Tree(type, children3, positions2, length2, props); - } - __name(makeTree, "makeTree"); - function findBufferSize(maxSize, inRepeat) { - var fork = cursor.fork(); - var size = 0, - start = 0, - skip = 0, - minStart = fork.end - maxBufferLength; - var result = { - size: 0, - start: 0, - skip: 0, - }; - scan: for (var minPos = fork.pos - maxSize; fork.pos > minPos; ) { - var nodeSize2 = fork.size; - if (fork.id == inRepeat && nodeSize2 >= 0) { - result.size = size; - result.start = start; - result.skip = skip; - skip += 4; - size += 4; - fork.next(); + h(d, "makeBalanced"); + function p(E, O, _, W, Q, j, Y, I) { + var oe = [], + le = []; + for (; E.length > W; ) oe.push(E.pop()), le.push(O.pop() + _ - Q); + E.push(m(i.types[Y], oe, le, j - Q, I - j)), O.push(Q - _); + } + h(p, "makeRepeatLeaf"); + function m(E, O, _, W) { + var Q = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0, + j = arguments.length > 5 ? arguments[5] : void 0; + if (a) { + var Y = [ue.contextHash, a]; + j = j ? [Y].concat(j) : [Y]; + } + if (Q > 25) { + var Y1 = [ue.lookAhead, Q]; + j = j ? [Y1].concat(j) : [Y1]; + } + return new Ee(E, O, _, W, j); + } + h(m, "makeTree"); + function D(E, O) { + var _ = u.fork(), + W = 0, + Q = 0, + j = 0, + Y = _.end - n, + I = { size: 0, start: 0, skip: 0 }; + e: for (var oe = _.pos - E; _.pos > oe; ) { + var le = _.size; + if (_.id == O && le >= 0) { + (I.size = W), (I.start = Q), (I.skip = j), (j += 4), (W += 4), _.next(); continue; } - var startPos = fork.pos - nodeSize2; - if (nodeSize2 < 0 || startPos < minPos || fork.start < minStart) break; - var localSkipped = fork.id >= minRepeatType ? 4 : 0; - var nodeStart = fork.start; - fork.next(); - while (fork.pos > startPos) { - if (fork.size < 0) { - if (fork.size == -3) localSkipped += 4; - else break scan; - } else if (fork.id >= minRepeatType) { - localSkipped += 4; - } - fork.next(); - } - start = nodeStart; - size += nodeSize2; - skip += localSkipped; - } - if (inRepeat < 0 || size == maxSize) { - result.size = size; - result.start = start; - result.skip = skip; - } - return result.size > 4 ? result : void 0; - } - __name(findBufferSize, "findBufferSize"); - function copyToBuffer(bufferStart, buffer2, index) { - var id = cursor.id, - start = cursor.start, - end = cursor.end, - size = cursor.size; - cursor.next(); - if (size >= 0 && id < minRepeatType) { - var startIndex = index; - if (size > 4) { - var endPos = cursor.pos - (size - 4); - while (cursor.pos > endPos) index = copyToBuffer(bufferStart, buffer2, index); - } - buffer2[--index] = startIndex; - buffer2[--index] = end - bufferStart; - buffer2[--index] = start - bufferStart; - buffer2[--index] = id; - } else if (size == -3) { - contextHash = id; - } else if (size == -4) { - lookAhead = id; - } - return index; - } - __name(copyToBuffer, "copyToBuffer"); - var children2 = [], - positions = []; - while (cursor.pos > 0) takeNode(data.start || 0, data.bufferStart || 0, children2, positions, -1); - var length = (_a2 = data.length) !== null && _a2 !== void 0 ? _a2 : children2.length ? positions[0] + children2[0].length : 0; - return new Tree(types2[data.topID], children2.reverse(), positions.reverse(), length); - } - __name(buildTree, "buildTree"); - var nodeSizeCache = /* @__PURE__ */ new WeakMap(); - function nodeSize(balanceType, node) { - if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType) return 1; - var size = nodeSizeCache.get(node); - if (size == null) { - size = 1; + var G = _.pos - le; + if (le < 0 || G < oe || _.start < Y) break; + var R = _.id >= o ? 4 : 0, + ee = _.start; + for (_.next(); _.pos > G; ) { + if (_.size < 0) + if (_.size == -3) R += 4; + else break e; + else _.id >= o && (R += 4); + _.next(); + } + (Q = ee), (W += le), (j += R); + } + return (O < 0 || W == E) && ((I.size = W), (I.start = Q), (I.skip = j)), I.size > 4 ? I : void 0; + } + h(D, "findBufferSize"); + function g(E, O, _) { + var W = u.id, + Q = u.start, + j = u.end, + Y = u.size; + if ((u.next(), Y >= 0 && W < o)) { + var I = _; + if (Y > 4) { + var oe = u.pos - (Y - 4); + for (; u.pos > oe; ) _ = g(E, O, _); + } + (O[--_] = I), (O[--_] = j - E), (O[--_] = Q - E), (O[--_] = W); + } else Y == -3 ? (a = W) : Y == -4 && (c = W); + return _; + } + h(g, "copyToBuffer"); + var b = [], + F = []; + for (; u.pos > 0; ) f(r.start || 0, r.bufferStart || 0, b, F, -1); + var A = (e = r.length) !== null && e !== void 0 ? e : b.length ? F[0] + b[0].length : 0; + return new Ee(l[r.topID], b.reverse(), F.reverse(), A); + } + h(ew, "buildTree"); + var BD = new WeakMap(); + function au(r, e) { + if (!r.isAnonymous || e instanceof Gt || e.type != r) return 1; + var t = BD.get(e); + if (t == null) { + t = 1; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var child = _step.value; - if (child.type != balanceType || !(child instanceof Tree)) { - size = 1; + for (var _iterator = e.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + if (i.type != r || !(i instanceof Ee)) { + t = 1; break; } - size += nodeSize(balanceType, child); + t += au(r, i); } } catch (err) { _didIteratorError = true; @@ -22546,65 +17886,62 @@ var __generator = } } } - nodeSizeCache.set(node, size); - } - return size; - } - __name(nodeSize, "nodeSize"); - function balanceRange(balanceType, children2, positions, from, to, start, length, mkTop, mkTree) { - var total = 0; - for (var i = from; i < to; i++) total += nodeSize(balanceType, children2[i]); - var maxChild = Math.ceil((total * 1.5) / 8); - var localChildren = [], - localPositions = []; - function divide(children3, positions2, from2, to2, offset) { - for (var i = from2; i < to2; ) { - var groupFrom = i, - groupStart = positions2[i], - groupSize = nodeSize(balanceType, children3[i]); - i++; - for (; i < to2; i++) { - var nextSize = nodeSize(balanceType, children3[i]); - if (groupSize + nextSize >= maxChild) break; - groupSize += nextSize; - } - if (i == groupFrom + 1) { - if (groupSize > maxChild) { - var only = children3[groupFrom]; - divide(only.children, only.positions, 0, only.children.length, positions2[groupFrom] + offset); + BD.set(e, t); + } + return t; + } + h(au, "nodeSize"); + function Ch(r, e, t, i, n, s, o, u, l) { + var a = 0; + for (var m = i; m < n; m++) a += au(r, e[m]); + var c = Math.ceil((a * 1.5) / 8), + f = [], + d = []; + function p(m, D, g, b, F) { + for (var A = g; A < b; ) { + var E = A, + O = D[A], + _ = au(r, m[A]); + for (A++; A < b; A++) { + var W = au(r, m[A]); + if (_ + W >= c) break; + _ += W; + } + if (A == E + 1) { + if (_ > c) { + var W1 = m[E]; + p(W1.children, W1.positions, 0, W1.children.length, D[E] + F); continue; } - localChildren.push(children3[groupFrom]); + f.push(m[E]); } else { - var length2 = positions2[i - 1] + children3[i - 1].length - groupStart; - localChildren.push(balanceRange(balanceType, children3, positions2, groupFrom, i, groupStart, length2, null, mkTree)); + var W2 = D[A - 1] + m[A - 1].length - O; + f.push(Ch(r, m, D, E, A, O, W2, null, l)); } - localPositions.push(groupStart + offset - start); + d.push(O + F - s); } } - __name(divide, "divide"); - divide(children2, positions, from, to, 0); - return (mkTop || mkTree)(localChildren, localPositions, length); + return h(p, "divide"), p(e, t, i, n, 0), (u || l)(f, d, o); } - __name(balanceRange, "balanceRange"); - var TreeFragment = class TreeFragment1 { + h(Ch, "balanceRange"); + var Rt = class Rt1 { get openStart() { return (this.open & 1) > 0; } get openEnd() { return (this.open & 2) > 0; } - static addTree(tree) { - var fragments = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [], - partial = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - var result = [new TreeFragment(0, tree.length, tree, 0, false, partial)]; + static addTree(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [], + i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1; + var n = [new Rt(0, e.length, e, 0, !1, i)]; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = fragments[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var f = _step.value; - if (f.to > tree.length) result.push(f); + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + s.to > e.length && n.push(s); } } catch (err) { _didIteratorError = true; @@ -22620,102 +17957,137 @@ var __generator = } } } - return result; - } - static applyChanges(fragments, changes) { - var minGap = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 128; - if (!changes.length) return fragments; - var result = []; - var fI = 1, - nextF = fragments.length ? fragments[0] : null; - for (var cI = 0, pos = 0, off = 0; ; cI++) { - var nextC = cI < changes.length ? changes[cI] : null; - var nextPos = nextC ? nextC.fromA : 1e9; - if (nextPos - pos >= minGap) - while (nextF && nextF.from < nextPos) { - var cut = nextF; - if (pos >= cut.from || nextPos <= cut.to || off) { - var fFrom = Math.max(cut.from, pos) - off, - fTo = Math.min(cut.to, nextPos) - off; - cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC); + return n; + } + static applyChanges(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 128; + if (!t.length) return e; + var n = [], + s = 1, + o = e.length ? e[0] : null; + for (var u = 0, l = 0, a = 0; ; u++) { + var c = u < t.length ? t[u] : null, + f = c ? c.fromA : 1e9; + if (f - l >= i) + for (; o && o.from < f; ) { + var d = o; + if (l >= d.from || f <= d.to || a) { + var p = Math.max(d.from, l) - a, + m = Math.min(d.to, f) - a; + d = p >= m ? null : new Rt(p, m, d.tree, d.offset + a, u > 0, !!c); } - if (cut) result.push(cut); - if (nextF.to > nextPos) break; - nextF = fI < fragments.length ? fragments[fI++] : null; + if ((d && n.push(d), o.to > f)) break; + o = s < e.length ? e[s++] : null; } - if (!nextC) break; - pos = nextC.toA; - off = nextC.toA - nextC.toB; + if (!c) break; + (l = c.toA), (a = c.toA - c.toB); } - return result; + return n; } - constructor(from, to, tree, offset, ref, ref1) { - var openStart = ref === void 0 ? false : ref, - openEnd = ref1 === void 0 ? false : ref1; - this.from = from; - this.to = to; - this.tree = tree; - this.offset = offset; - this.open = (openStart ? 1 : 0) | (openEnd ? 2 : 0); + constructor(e, t, i, n, ref, ref1) { + var s = ref === void 0 ? !1 : ref, + o = ref1 === void 0 ? !1 : ref1; + (this.from = e), (this.to = t), (this.tree = i), (this.offset = n), (this.open = (s ? 1 : 0) | (o ? 2 : 0)); } }; - __name(TreeFragment, "TreeFragment"); - var Parser = class Parser { - startParse(input, fragments, ranges) { - if (typeof input == "string") input = new StringInput(input); - ranges = !ranges ? [new Range2(0, input.length)] : ranges.length ? ranges.map((r) => new Range2(r.from, r.to)) : [new Range2(0, 0)]; - return this.createParse(input, fragments || [], ranges); - } - parse(input, fragments, ranges) { - var parse = this.startParse(input, fragments, ranges); + h(Rt, "TreeFragment"); + var ir = class ir { + startParse(e, t, i) { + return typeof e == "string" && (e = new hu(e)), (i = i ? (i.length ? i.map((n) => new Hr(n.from, n.to)) : [new Hr(0, 0)]) : [new Hr(0, e.length)]), this.createParse(e, t || [], i); + } + parse(e, t, i) { + var n = this.startParse(e, t, i); for (;;) { - var done = parse.advance(); - if (done) return done; + var s = n.advance(); + if (s) return s; } } }; - __name(Parser, "Parser"); - var StringInput = class StringInput { + h(ir, "Parser"); + var hu = class hu { get length() { return this.string.length; } - chunk(from) { - return this.string.slice(from); + chunk(e) { + return this.string.slice(e); } get lineChunks() { - return false; + return !1; } - read(from, to) { - return this.string.slice(from, to); + read(e, t) { + return this.string.slice(e, t); } - constructor(string2) { - this.string = string2; + constructor(e) { + this.string = e; } }; - __name(StringInput, "StringInput"); - var stoppedInner = new NodeProp({ - perNode: true, - }); - // node_modules/@lezer/highlight/dist/index.js - var nextTagID = 0; - var Tag = class Tag1 { - static define(parent) { - if (parent === null || parent === void 0 ? void 0 : parent.base) throw new Error("Can not derive from a modified tag"); - var tag = new Tag([], null, []); - tag.set.push(tag); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - if (parent) - try { - for (var _iterator = parent.set[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var t2 = _step.value; - tag.set.push(t2); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(hu, "StringInput"); + var yB = new ue({ perNode: !0 }); + var tw = 0, + dt = class dt1 { + static define(e) { + if (e === null || e === void 0 ? void 0 : e.base) throw new Error("Can not derive from a modified tag"); + var t = new dt([], null, []); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if ((t.set.push(t), e)) + try { + for (var _iterator = e.set[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + t.set.push(i); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + return t; + } + static defineModifier() { + var e = new nr(); + return (t) => + t.modified.indexOf(e) > -1 + ? t + : nr.get( + t.base || t, + t.modified.concat(e).sort((i, n) => i.id - n.id) + ); + } + constructor(e, t, i) { + (this.set = e), (this.base = t), (this.modified = i), (this.id = tw++); + } + }; + h(dt, "Tag"); + var iw = 0, + nr = class nr1 { + static get(e, t) { + if (!t.length) return e; + var i = t[0].instances.find((u) => u.base == e && rw(t, u.modified)); + if (i) return i; + var n = [], + s = new dt(n, e, t); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var u = _step.value; + u.instances.push(s); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); @@ -22726,161 +18098,104 @@ var __generator = } } } - return tag; - } - static defineModifier() { - var mod = new Modifier(); - return (tag) => { - if (tag.modified.indexOf(mod) > -1) return tag; - return Modifier.get( - tag.base || tag, - tag.modified.concat(mod).sort((a, b) => a.id - b.id) - ); - }; - } - constructor(set, base2, modified) { - this.set = set; - this.base = base2; - this.modified = modified; - this.id = nextTagID++; - } - }; - __name(Tag, "Tag"); - var nextModifierID = 0; - var Modifier = class Modifier1 { - static get(base2, mods) { - if (!mods.length) return base2; - var exists = mods[0].instances.find((t2) => t2.base == base2 && sameArray2(mods, t2.modified)); - if (exists) return exists; - var set = [], - tag = new Tag(set, base2, mods); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = mods[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var m = _step.value; - m.instances.push(tag); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + var o = nw(t); + var _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined, + _iteratorNormalCompletion2 = true, + _didIteratorError2 = false, + _iteratorError2 = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - var configs = powerSet(mods); - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined, - _iteratorNormalCompletion2 = true, - _didIteratorError2 = false, - _iteratorError2 = undefined; - try { - for (var _iterator1 = base2.set[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true) { - var parent = _step1.value; - if (!parent.modified.length) - try { - for (var _iterator2 = configs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion1 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion1 = true) { - var config = _step2.value; - set.push(Modifier.get(parent, config)); - } - } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; - } finally { + for (var _iterator1 = e.set[Symbol.iterator](), _step1; !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true) { + var u1 = _step1.value; + if (!u1.modified.length) try { - if (!_iteratorNormalCompletion1 && _iterator2.return != null) { - _iterator2.return(); + for (var _iterator2 = o[Symbol.iterator](), _step2; !(_iteratorNormalCompletion1 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion1 = true) { + var l = _step2.value; + n.push(nr.get(u1, l)); } + } catch (err) { + _didIteratorError1 = true; + _iteratorError1 = err; } finally { - if (_didIteratorError1) { - throw _iteratorError1; + try { + if (!_iteratorNormalCompletion1 && _iterator2.return != null) { + _iterator2.return(); + } + } finally { + if (_didIteratorError1) { + throw _iteratorError1; + } } } - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator1.return != null) { - _iterator1.return(); } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; } finally { - if (_didIteratorError2) { - throw _iteratorError2; + try { + if (!_iteratorNormalCompletion2 && _iterator1.return != null) { + _iterator1.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } } } + return s; } - return tag; - } - constructor() { - this.instances = []; - this.id = nextModifierID++; - } - }; - __name(Modifier, "Modifier"); - function sameArray2(a, b) { - return a.length == b.length && a.every((x, i) => x == b[i]); - } - __name(sameArray2, "sameArray"); - function powerSet(array) { - var sets = [[]]; - for (var i = 0; i < array.length; i++) { - for (var j = 0, e = sets.length; j < e; j++) { - sets.push(sets[j].concat(array[i])); - } - } - return sets.sort((a, b) => b.length - a.length); - } - __name(powerSet, "powerSet"); - function styleTags(spec) { - var byName = /* @__PURE__ */ Object.create(null); - for (var prop in spec) { - var tags2 = spec[prop]; - if (!Array.isArray(tags2)) tags2 = [tags2]; + constructor() { + (this.instances = []), (this.id = iw++); + } + }; + h(nr, "Modifier"); + function rw(r, e) { + return r.length == e.length && r.every((t, i) => t == e[i]); + } + h(rw, "sameArray"); + function nw(r) { + var e = [[]]; + for (var t = 0; t < r.length; t++) for (var i = 0, n = e.length; i < n; i++) e.push(e[i].concat(r[t])); + return e.sort((t, i) => i.length - t.length); + } + h(nw, "powerSet"); + function Du(r) { + var e = Object.create(null); + for (var t in r) { + var i = r[t]; + Array.isArray(i) || (i = [i]); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = prop.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var part = _step.value; - if (part) { - var pieces = [], - mode = 2, - rest = part; - for (var pos = 0; ; ) { - if (rest == "..." && pos > 0 && pos + 3 == part.length) { - mode = 1; + for (var _iterator = t.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + if (n) { + var s = [], + o = 2, + u = n; + for (var f = 0; ; ) { + if (u == "..." && f > 0 && f + 3 == n.length) { + o = 1; break; } - var m = /^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(rest); - if (!m) throw new RangeError("Invalid path: " + part); - pieces.push(m[0] == "*" ? "" : m[0][0] == '"' ? JSON.parse(m[0]) : m[0]); - pos += m[0].length; - if (pos == part.length) break; - var next = part[pos++]; - if (pos == part.length && next == "!") { - mode = 0; + var d = /^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(u); + if (!d) throw new RangeError("Invalid path: " + n); + if ((s.push(d[0] == "*" ? "" : d[0][0] == '"' ? JSON.parse(d[0]) : d[0]), (f += d[0].length), f == n.length)) break; + var p = n[f++]; + if (f == n.length && p == "!") { + o = 0; break; } - if (next != "/") throw new RangeError("Invalid path: " + part); - rest = part.slice(pos); + if (p != "/") throw new RangeError("Invalid path: " + n); + u = n.slice(f); } - var last = pieces.length - 1, - inner = pieces[last]; - if (!inner) throw new RangeError("Invalid path: " + part); - var rule = new Rule(tags2, mode, last > 0 ? pieces.slice(0, last) : null); - byName[inner] = rule.sort(byName[inner]); + var l = s.length - 1, + a = s[l]; + if (!a) throw new RangeError("Invalid path: " + n); + var c = new sr(i, o, l > 0 ? s.slice(0, l) : null); + e[a] = c.sort(e[a]); } } } catch (err) { @@ -22898,154 +18213,146 @@ var __generator = } } } - return ruleNodeProp.add(byName); + return $D.add(e); } - __name(styleTags, "styleTags"); - var ruleNodeProp = new NodeProp(); - var Rule = class Rule { - get opaque() { - return this.mode == 0; - } - get inherit() { - return this.mode == 1; - } - sort(other) { - if (!other || other.depth < this.depth) { - this.next = other; - return this; + h(Du, "styleTags"); + var $D = new ue(), + sr = class sr { + get opaque() { + return this.mode == 0; } - other.next = this.sort(other.next); - return other; - } - get depth() { - return this.context ? this.context.length : 0; - } - constructor(tags2, mode, context, next) { - this.tags = tags2; - this.mode = mode; - this.context = context; - this.next = next; - } - }; - __name(Rule, "Rule"); - Rule.empty = new Rule([], 2, null); - function tagHighlighter(tags2, options) { - var map = /* @__PURE__ */ Object.create(null); + get inherit() { + return this.mode == 1; + } + sort(e) { + return !e || e.depth < this.depth ? ((this.next = e), this) : ((e.next = this.sort(e.next)), e); + } + get depth() { + return this.context ? this.context.length : 0; + } + constructor(e, t, i, n) { + (this.tags = e), (this.mode = t), (this.context = i), (this.next = n); + } + }; + h(sr, "Rule"); + sr.empty = new sr([], 2, null); + function vh(r, e) { + var t = Object.create(null); var _iteratorNormalCompletion = true, _didIteratorError = false, - _iteratorError = undefined; + _iteratorError = undefined, + _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; try { - for (var _iterator = tags2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var style = _step.value; - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; - if (!Array.isArray(style.tag)) map[style.tag.id] = style.class; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var s = _step.value; + if (!Array.isArray(s.tag)) t[s.tag.id] = s.class; else try { - for (var _iterator1 = style.tag[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var tag = _step1.value; - map[tag.id] = style.class; + for (var _iterator1 = s.tag[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { + var o = _step1.value; + t[o.id] = s.class; } } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; + _didIteratorError = true; + _iteratorError = err; } finally { try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + if (!_iteratorNormalCompletion && _iterator1.return != null) { _iterator1.return(); } } finally { - if (_didIteratorError1) { - throw _iteratorError1; + if (_didIteratorError) { + throw _iteratorError; } } } } } catch (err) { - _didIteratorError = true; - _iteratorError = err; + _didIteratorError1 = true; + _iteratorError1 = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return != null) { + if (!_iteratorNormalCompletion1 && _iterator.return != null) { _iterator.return(); } } finally { - if (_didIteratorError) { - throw _iteratorError; + if (_didIteratorError1) { + throw _iteratorError1; } } } - var _ref = options || {}, - scope = _ref.scope, - _ref_all = _ref.all, - all = _ref_all === void 0 ? null : _ref_all; + var _ref = e || {}, + i = _ref.scope, + tmp = _ref.all, + n = tmp === void 0 ? null : tmp; return { - style: (tags3) => { - var cls = all; + style: (s) => { + var o = n; var _iteratorNormalCompletion = true, _didIteratorError = false, - _iteratorError = undefined; + _iteratorError = undefined, + _iteratorNormalCompletion1 = true, + _didIteratorError1 = false, + _iteratorError1 = undefined; try { - for (var _iterator = tags3[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var tag = _step.value; - var _iteratorNormalCompletion1 = true, - _didIteratorError1 = false, - _iteratorError1 = undefined; + for (var _iterator = s[Symbol.iterator](), _step; !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true) { + var u = _step.value; try { - for (var _iterator1 = tag.set[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { - var sub = _step1.value; - var tagClass = map[sub.id]; - if (tagClass) { - cls = cls ? cls + " " + tagClass : tagClass; + for (var _iterator1 = u.set[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true) { + var l = _step1.value; + var a = t[l.id]; + if (a) { + o = o ? o + " " + a : a; break; } } } catch (err) { - _didIteratorError1 = true; - _iteratorError1 = err; + _didIteratorError = true; + _iteratorError = err; } finally { try { - if (!_iteratorNormalCompletion1 && _iterator1.return != null) { + if (!_iteratorNormalCompletion && _iterator1.return != null) { _iterator1.return(); } } finally { - if (_didIteratorError1) { - throw _iteratorError1; + if (_didIteratorError) { + throw _iteratorError; } } } } } catch (err) { - _didIteratorError = true; - _iteratorError = err; + _didIteratorError1 = true; + _iteratorError1 = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return != null) { + if (!_iteratorNormalCompletion1 && _iterator.return != null) { _iterator.return(); } } finally { - if (_didIteratorError) { - throw _iteratorError; + if (_didIteratorError1) { + throw _iteratorError1; } } } - return cls; + return o; }, - scope, + scope: i, }; } - __name(tagHighlighter, "tagHighlighter"); - function highlightTags(highlighters, tags2) { - var result = null; + h(vh, "tagHighlighter"); + function sw(r, e) { + var t = null; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = highlighters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var highlighter = _step.value; - var value = highlighter.style(tags2); - if (value) result = result ? result + " " + value : value; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + var n = i.style(e); + n && (t = t ? t + " " + n : n); } } catch (err) { _didIteratorError = true; @@ -23061,745 +18368,571 @@ var __generator = } } } - return result; - } - __name(highlightTags, "highlightTags"); - function highlightTree(tree, highlighter, putStyle) { - var from = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0, - to = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : tree.length; - var builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle); - builder.highlightRange(tree.cursor(), from, to, "", builder.highlighters); - builder.flush(to); - } - __name(highlightTree, "highlightTree"); - var HighlightBuilder = class HighlightBuilder { - startSpan(at, cls) { - if (cls != this.class) { - this.flush(at); - if (at > this.at) this.at = at; - this.class = cls; - } - } - flush(to) { - if (to > this.at && this.class) this.span(this.at, to, this.class); - } - highlightRange(cursor, from, to, inheritedClass, highlighters) { - var type = cursor.type, - start = cursor.from, - end = cursor.to; - if (start >= to || end <= from) return; - if (type.isTop) highlighters = this.highlighters.filter((h) => !h.scope || h.scope(type)); - var cls = inheritedClass; - var rule = getStyleTags(cursor) || Rule.empty; - var tagCls = highlightTags(highlighters, rule.tags); - if (tagCls) { - if (cls) cls += " "; - cls += tagCls; - if (rule.mode == 1) inheritedClass += (inheritedClass ? " " : "") + tagCls; - } - this.startSpan(cursor.from, cls); - if (rule.opaque) return; - var mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted); - if (mounted && mounted.overlay) { - var inner = cursor.node.enter(mounted.overlay[0].from + start, 1); - var innerHighlighters = this.highlighters.filter((h) => !h.scope || h.scope(mounted.tree.type)); - var hasChild2 = cursor.firstChild(); - for (var i = 0, pos = start; ; i++) { - var next = i < mounted.overlay.length ? mounted.overlay[i] : null; - var nextPos = next ? next.from + start : end; - var rangeFrom = Math.max(from, pos), - rangeTo = Math.min(to, nextPos); - if (rangeFrom < rangeTo && hasChild2) { - while (cursor.from < rangeTo) { - this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters); - this.startSpan(Math.min(rangeTo, cursor.to), cls); - if (cursor.to >= nextPos || !cursor.nextSibling()) break; + return t; + } + h(sw, "highlightTags"); + function MD(r, e, t) { + var i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0, + n = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : r.length; + var s = new gu(i, Array.isArray(e) ? e : [e], t); + s.highlightRange(r.cursor(), i, n, "", s.highlighters), s.flush(n); + } + h(MD, "highlightTree"); + var gu = class gu { + startSpan(e, t) { + t != this.class && (this.flush(e), e > this.at && (this.at = e), (this.class = t)); + } + flush(e) { + e > this.at && this.class && this.span(this.at, e, this.class); + } + highlightRange(e, t, i, n, s) { + var o = e.type, + u = e.from, + l = e.to; + if (u >= i || l <= t) return; + o.isTop && (s = this.highlighters.filter((p) => !p.scope || p.scope(o))); + var a = n, + c = ow(e) || sr.empty, + f = sw(s, c.tags); + if ((f && (a && (a += " "), (a += f), c.mode == 1 && (n += (n ? " " : "") + f)), this.startSpan(e.from, a), c.opaque)) return; + var d = e.tree && e.tree.prop(ue.mounted); + if (d && d.overlay) { + var p = e.node.enter(d.overlay[0].from + u, 1), + m = this.highlighters.filter((g) => !g.scope || g.scope(d.tree.type)), + D = e.firstChild(); + for (var g = 0, b = u; ; g++) { + var F = g < d.overlay.length ? d.overlay[g] : null, + A = F ? F.from + u : l, + E = Math.max(t, b), + O = Math.min(i, A); + if (E < O && D) for (; e.from < O && (this.highlightRange(e, E, O, n, s), this.startSpan(Math.min(O, e.to), a), !(e.to >= A || !e.nextSibling())); ); + if (!F || A > i) break; + (b = F.to + u), b > t && (this.highlightRange(p.cursor(), Math.max(t, F.from + u), Math.min(i, b), n, m), this.startSpan(b, a)); + } + D && e.parent(); + } else if (e.firstChild()) { + do + if (!(e.to <= t)) { + if (e.from >= i) break; + this.highlightRange(e, t, i, n, s), this.startSpan(Math.min(i, e.to), a); + } + while (e.nextSibling()); + e.parent(); + } + } + constructor(e, t, i) { + (this.at = e), (this.highlighters = t), (this.span = i), (this.class = ""); + } + }; + h(gu, "HighlightBuilder"); + function ow(r) { + var e = r.type.prop($D); + for (; e && e.context && !r.matchContext(e.context); ) e = e.next; + return e || null; + } + h(ow, "getStyleTags"); + var L = dt.define, + du = L(), + Ti = L(), + TD = L(Ti), + RD = L(Ti), + Ri = L(), + pu = L(Ri), + Ah = L(Ri), + Qt = L(), + rr = L(Qt), + Kt = L(), + Xt = L(), + Eh = L(), + Zn = L(Eh), + mu = L(), + B = { + comment: du, + lineComment: L(du), + blockComment: L(du), + docComment: L(du), + name: Ti, + variableName: L(Ti), + typeName: TD, + tagName: L(TD), + propertyName: RD, + attributeName: L(RD), + className: L(Ti), + labelName: L(Ti), + namespace: L(Ti), + macroName: L(Ti), + literal: Ri, + string: pu, + docString: L(pu), + character: L(pu), + attributeValue: L(pu), + number: Ah, + integer: L(Ah), + float: L(Ah), + bool: L(Ri), + regexp: L(Ri), + escape: L(Ri), + color: L(Ri), + url: L(Ri), + keyword: Kt, + self: L(Kt), + null: L(Kt), + atom: L(Kt), + unit: L(Kt), + modifier: L(Kt), + operatorKeyword: L(Kt), + controlKeyword: L(Kt), + definitionKeyword: L(Kt), + moduleKeyword: L(Kt), + operator: Xt, + derefOperator: L(Xt), + arithmeticOperator: L(Xt), + logicOperator: L(Xt), + bitwiseOperator: L(Xt), + compareOperator: L(Xt), + updateOperator: L(Xt), + definitionOperator: L(Xt), + typeOperator: L(Xt), + controlOperator: L(Xt), + punctuation: Eh, + separator: L(Eh), + bracket: Zn, + angleBracket: L(Zn), + squareBracket: L(Zn), + paren: L(Zn), + brace: L(Zn), + content: Qt, + heading: rr, + heading1: L(rr), + heading2: L(rr), + heading3: L(rr), + heading4: L(rr), + heading5: L(rr), + heading6: L(rr), + contentSeparator: L(Qt), + list: L(Qt), + quote: L(Qt), + emphasis: L(Qt), + strong: L(Qt), + link: L(Qt), + monospace: L(Qt), + strikethrough: L(Qt), + inserted: L(), + deleted: L(), + changed: L(), + invalid: L(), + meta: mu, + documentMeta: L(mu), + annotation: L(mu), + processingInstruction: L(mu), + definition: dt.defineModifier(), + constant: dt.defineModifier(), + function: dt.defineModifier(), + standard: dt.defineModifier(), + local: dt.defineModifier(), + special: dt.defineModifier(), + }, + vB = vh([ + { tag: B.link, class: "tok-link" }, + { tag: B.heading, class: "tok-heading" }, + { tag: B.emphasis, class: "tok-emphasis" }, + { tag: B.strong, class: "tok-strong" }, + { tag: B.keyword, class: "tok-keyword" }, + { tag: B.atom, class: "tok-atom" }, + { tag: B.bool, class: "tok-bool" }, + { tag: B.url, class: "tok-url" }, + { tag: B.labelName, class: "tok-labelName" }, + { tag: B.inserted, class: "tok-inserted" }, + { tag: B.deleted, class: "tok-deleted" }, + { tag: B.literal, class: "tok-literal" }, + { tag: B.string, class: "tok-string" }, + { tag: B.number, class: "tok-number" }, + { tag: [B.regexp, B.escape, B.special(B.string)], class: "tok-string2" }, + { tag: B.variableName, class: "tok-variableName" }, + { tag: B.local(B.variableName), class: "tok-variableName tok-local" }, + { tag: B.definition(B.variableName), class: "tok-variableName tok-definition" }, + { tag: B.special(B.variableName), class: "tok-variableName2" }, + { tag: B.definition(B.propertyName), class: "tok-propertyName tok-definition" }, + { tag: B.typeName, class: "tok-typeName" }, + { tag: B.namespace, class: "tok-namespace" }, + { tag: B.className, class: "tok-className" }, + { tag: B.macroName, class: "tok-macroName" }, + { tag: B.propertyName, class: "tok-propertyName" }, + { tag: B.operator, class: "tok-operator" }, + { tag: B.comment, class: "tok-comment" }, + { tag: B.meta, class: "tok-meta" }, + { tag: B.invalid, class: "tok-invalid" }, + { tag: B.punctuation, class: "tok-punctuation" }, + ]); + var kh, + Gr = new ue(); + function lw(r) { + return H.define({ combine: r ? (e) => e.concat(r) : void 0 }); + } + h(lw, "defineLanguageFacet"); + var aw = new ue(), + et = class et { + isActiveAt(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1; + return PD(e, t, i).type.prop(Gr) == this.data; + } + findRegions(e) { + var t = e.facet(Kr); + if ((t === null || t === void 0 ? void 0 : t.data) == this.data) return [{ from: 0, to: e.doc.length }]; + if (!t || !t.allowsNesting) return []; + var i = [], + n = h((s, o) => { + if (s.prop(Gr) == this.data) { + i.push({ from: o, to: o + s.length }); + return; } - } - if (!next || nextPos > to) break; - pos = next.to + start; - if (pos > from) { - this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), inheritedClass, innerHighlighters); - this.startSpan(pos, cls); - } - } - if (hasChild2) cursor.parent(); - } else if (cursor.firstChild()) { - do { - if (cursor.to <= from) continue; - if (cursor.from >= to) break; - this.highlightRange(cursor, from, to, inheritedClass, highlighters); - this.startSpan(Math.min(to, cursor.to), cls); - } while (cursor.nextSibling()); - cursor.parent(); + var u = s.prop(ue.mounted); + if (u) { + if (u.tree.prop(Gr) == this.data) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + if (u.overlay) + try { + for (var _iterator = u.overlay[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var l = _step.value; + i.push({ from: l.from + o, to: l.to + o }); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + else i.push({ from: o, to: o + s.length }); + return; + } else if (u.overlay) { + var l1 = i.length; + if ((n(u.tree, u.overlay[0].from + o), i.length > l1)) return; + } + } + for (var l2 = 0; l2 < s.children.length; l2++) { + var a = s.children[l2]; + a instanceof Ee && n(a, s.positions[l2] + o); + } + }, "explore"); + return n(ur(e), 0), i; + } + get allowsNesting() { + return !0; + } + constructor(e, t, ref, ref1) { + var i = ref === void 0 ? [] : ref, + n = ref1 === void 0 ? "" : ref1; + (this.data = e), + (this.name = n), + ae.prototype.hasOwnProperty("tree") || + Object.defineProperty(ae.prototype, "tree", { + get() { + return ur(this); + }, + }), + (this.parser = t), + (this.extension = [ + Kr.of(this), + ae.languageData.of((s, o, u) => { + var l = PD(s, o, u), + a = l.type.prop(Gr); + if (!a) return []; + var c = s.facet(a), + f = l.type.prop(aw); + if (f) { + var d = l.resolve(o - l.from, u); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; + try { + for (var _iterator = f[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var p = _step.value; + if (p.test(d, s)) { + var m = s.facet(p.facet); + return p.type == "replace" ? m : m.concat(c); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + return c; + }), + ].concat(i)); } + }; + h(et, "Language"); + et.setState = de.define(); + function PD(r, e, t) { + var i = r.facet(Kr), + n = ur(r).topNode; + if (!i || i.allowsNesting) for (var s = n; s; s = s.enter(e, t, Le.ExcludeBuffers)) s.type.isTop && (n = s); + return n; + } + h(PD, "topNodeAt"); + var $i = class $i1 extends et { + static define(e) { + var t = lw(e.languageData); + return new $i(t, e.parser.configure({ props: [Gr.add((i) => (i.isTop ? t : void 0))] }), e.name); + } + configure(e, t) { + return new $i(this.data, this.parser.configure(e), t || this.name); + } + get allowsNesting() { + return this.parser.hasWrappers(); } - constructor(at, highlighters, span) { - this.at = at; - this.highlighters = highlighters; - this.span = span; - this.class = ""; + constructor(e, t, i) { + super(e, t, [], i), (this.parser = t); } }; - __name(HighlightBuilder, "HighlightBuilder"); - function getStyleTags(node) { - var rule = node.type.prop(ruleNodeProp); - while (rule && rule.context && !node.matchContext(rule.context)) rule = rule.next; - return rule || null; - } - __name(getStyleTags, "getStyleTags"); - var t = Tag.define; - var comment = t(); - var name = t(); - var typeName = t(name); - var propertyName = t(name); - var literal = t(); - var string = t(literal); - var number = t(literal); - var content = t(); - var heading = t(content); - var keyword = t(); - var operator = t(); - var punctuation = t(); - var bracket = t(punctuation); - var meta = t(); - var tags = { - comment, - lineComment: t(comment), - blockComment: t(comment), - docComment: t(comment), - name, - variableName: t(name), - typeName, - tagName: t(typeName), - propertyName, - attributeName: t(propertyName), - className: t(name), - labelName: t(name), - namespace: t(name), - macroName: t(name), - literal, - string, - docString: t(string), - character: t(string), - attributeValue: t(string), - number, - integer: t(number), - float: t(number), - bool: t(literal), - regexp: t(literal), - escape: t(literal), - color: t(literal), - url: t(literal), - keyword, - self: t(keyword), - null: t(keyword), - atom: t(keyword), - unit: t(keyword), - modifier: t(keyword), - operatorKeyword: t(keyword), - controlKeyword: t(keyword), - definitionKeyword: t(keyword), - moduleKeyword: t(keyword), - operator, - derefOperator: t(operator), - arithmeticOperator: t(operator), - logicOperator: t(operator), - bitwiseOperator: t(operator), - compareOperator: t(operator), - updateOperator: t(operator), - definitionOperator: t(operator), - typeOperator: t(operator), - controlOperator: t(operator), - punctuation, - separator: t(punctuation), - bracket, - angleBracket: t(bracket), - squareBracket: t(bracket), - paren: t(bracket), - brace: t(bracket), - content, - heading, - heading1: t(heading), - heading2: t(heading), - heading3: t(heading), - heading4: t(heading), - heading5: t(heading), - heading6: t(heading), - contentSeparator: t(content), - list: t(content), - quote: t(content), - emphasis: t(content), - strong: t(content), - link: t(content), - monospace: t(content), - strikethrough: t(content), - inserted: t(), - deleted: t(), - changed: t(), - invalid: t(), - meta, - documentMeta: t(meta), - annotation: t(meta), - processingInstruction: t(meta), - definition: Tag.defineModifier(), - constant: Tag.defineModifier(), - function: Tag.defineModifier(), - standard: Tag.defineModifier(), - local: Tag.defineModifier(), - special: Tag.defineModifier(), + h($i, "LRLanguage"); + function ur(r) { + var e = r.field(et.state, !1); + return e ? e.tree : Ee.empty; + } + h(ur, "syntaxTree"); + var bu = class bu { + get length() { + return this.doc.length; + } + syncTo(e) { + return (this.string = this.cursor.next(e - this.cursorPos).value), (this.cursorPos = e + this.string.length), this.cursorPos - this.string.length; + } + chunk(e) { + return this.syncTo(e), this.string; + } + get lineChunks() { + return !0; + } + read(e, t) { + var i = this.cursorPos - this.string.length; + return e < i || t >= this.cursorPos ? this.doc.sliceString(e, t) : this.string.slice(e - i, t - i); + } + constructor(e) { + (this.doc = e), (this.cursorPos = 0), (this.string = ""), (this.cursor = e.iter()); + } }; - var classHighlighter = tagHighlighter([ - { - tag: tags.link, - class: "tok-link", - }, - { - tag: tags.heading, - class: "tok-heading", - }, - { - tag: tags.emphasis, - class: "tok-emphasis", - }, - { - tag: tags.strong, - class: "tok-strong", - }, - { - tag: tags.keyword, - class: "tok-keyword", - }, - { - tag: tags.atom, - class: "tok-atom", - }, - { - tag: tags.bool, - class: "tok-bool", - }, - { - tag: tags.url, - class: "tok-url", - }, - { - tag: tags.labelName, - class: "tok-labelName", - }, - { - tag: tags.inserted, - class: "tok-inserted", - }, - { - tag: tags.deleted, - class: "tok-deleted", - }, - { - tag: tags.literal, - class: "tok-literal", - }, - { - tag: tags.string, - class: "tok-string", - }, - { - tag: tags.number, - class: "tok-number", - }, - { - tag: [tags.regexp, tags.escape, tags.special(tags.string)], - class: "tok-string2", - }, - { - tag: tags.variableName, - class: "tok-variableName", - }, - { - tag: tags.local(tags.variableName), - class: "tok-variableName tok-local", - }, - { - tag: tags.definition(tags.variableName), - class: "tok-variableName tok-definition", - }, - { - tag: tags.special(tags.variableName), - class: "tok-variableName2", - }, - { - tag: tags.definition(tags.propertyName), - class: "tok-propertyName tok-definition", - }, - { - tag: tags.typeName, - class: "tok-typeName", - }, - { - tag: tags.namespace, - class: "tok-namespace", - }, - { - tag: tags.className, - class: "tok-className", - }, - { - tag: tags.macroName, - class: "tok-macroName", - }, - { - tag: tags.propertyName, - class: "tok-propertyName", - }, - { - tag: tags.operator, - class: "tok-operator", - }, - { - tag: tags.comment, - class: "tok-comment", - }, - { - tag: tags.meta, - class: "tok-meta", - }, - { - tag: tags.invalid, - class: "tok-invalid", - }, - { - tag: tags.punctuation, - class: "tok-punctuation", - }, - ]); - // node_modules/@codemirror/language/dist/index.js - var _a; - var languageDataProp = /* @__PURE__ */ new NodeProp(); - function defineLanguageFacet(baseData) { - return Facet.define({ - combine: baseData ? (values) => values.concat(baseData) : void 0, - }); - } - __name(defineLanguageFacet, "defineLanguageFacet"); - var Language = class Language { - isActiveAt(state, pos) { - var side = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1; - return languageDataFacetAt(state, pos, side) == this.data; - } - findRegions(state) { - var lang = state.facet(language); - if ((lang === null || lang === void 0 ? void 0 : lang.data) == this.data) - return [ - { - from: 0, - to: state.doc.length, - }, - ]; - if (!lang || !lang.allowsNesting) return []; - var result = []; - var explore = /* @__PURE__ */ __name((tree, from) => { - if (tree.prop(languageDataProp) == this.data) { - result.push({ - from, - to: from + tree.length, - }); - return; - } - var mount = tree.prop(NodeProp.mounted); - if (mount) { - if (mount.tree.prop(languageDataProp) == this.data) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - if (mount.overlay) - try { - for (var _iterator = mount.overlay[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - result.push({ - from: r.from + from, - to: r.to + from, - }); + h(bu, "DocInput"); + var es = null, + or = class or1 { + static create(e, t, i) { + return new or(e, t, [], Ee.empty, 0, i, [], null); + } + startParse() { + return this.parser.startParse(new bu(this.state.doc), this.fragments); + } + work(e, t) { + return ( + t != null && t >= this.state.doc.length && (t = void 0), + this.tree != Ee.empty && this.isDone(t !== null && t !== void 0 ? t : this.state.doc.length) + ? (this.takeTree(), !0) + : this.withContext(() => { + var i; + if (typeof e == "number") { + var n = Date.now() + e; + e = h(() => Date.now() > n, "until"); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } + for (this.parse || (this.parse = this.startParse()), t != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > t) && t < this.state.doc.length && this.parse.stopAt(t); ; ) { + var n1 = this.parse.advance(); + if (n1) + if (((this.fragments = this.withoutTempSkipped(Rt.addTree(n1, this.fragments, this.parse.stoppedAt != null))), (this.treeLen = (i = this.parse.stoppedAt) !== null && i !== void 0 ? i : this.state.doc.length), (this.tree = n1), (this.parse = null), this.treeLen < (t !== null && t !== void 0 ? t : this.state.doc.length))) this.parse = this.startParse(); + else return !0; + if (e()) return !1; } - } - else - result.push({ - from, - to: from + tree.length, - }); - return; - } else if (mount.overlay) { - var size = result.length; - explore(mount.tree, mount.overlay[0].from + from); - if (result.length > size) return; - } - } - for (var i = 0; i < tree.children.length; i++) { - var ch = tree.children[i]; - if (ch instanceof Tree) explore(ch, tree.positions[i] + from); - } - }, "explore"); - explore(syntaxTree(state), 0); - return result; - } - get allowsNesting() { - return true; - } - constructor(data, parser2, ref, ref1) { - var extraExtensions = ref === void 0 ? [] : ref, - name2 = ref1 === void 0 ? "" : ref1; - this.data = data; - this.name = name2; - if (!EditorState.prototype.hasOwnProperty("tree")) - Object.defineProperty(EditorState.prototype, "tree", { - get() { - return syntaxTree(this); - }, - }); - this.parser = parser2; - this.extension = [language.of(this), EditorState.languageData.of((state, pos, side) => state.facet(languageDataFacetAt(state, pos, side)))].concat(extraExtensions); - } - }; - __name(Language, "Language"); - Language.setState = /* @__PURE__ */ StateEffect.define(); - function languageDataFacetAt(state, pos, side) { - var topLang = state.facet(language); - if (!topLang) return null; - var facet = topLang.data; - if (topLang.allowsNesting) { - for (var node = syntaxTree(state).topNode; node; node = node.enter(pos, side, IterMode.ExcludeBuffers)) facet = node.type.prop(languageDataProp) || facet; - } - return facet; - } - __name(languageDataFacetAt, "languageDataFacetAt"); - var LRLanguage = class LRLanguage1 extends Language { - static define(spec) { - var data = defineLanguageFacet(spec.languageData); - return new LRLanguage( - data, - spec.parser.configure({ - props: [languageDataProp.add((type) => (type.isTop ? data : void 0))], - }), - spec.name - ); - } - configure(options, name2) { - return new LRLanguage(this.data, this.parser.configure(options), name2 || this.name); - } - get allowsNesting() { - return this.parser.hasWrappers(); - } - constructor(data, parser2, name2) { - super(data, parser2, [], name2); - this.parser = parser2; - } - }; - __name(LRLanguage, "LRLanguage"); - function syntaxTree(state) { - var field = state.field(Language.state, false); - return field ? field.tree : Tree.empty; - } - __name(syntaxTree, "syntaxTree"); - var DocInput = class DocInput { - syncTo(pos) { - this.string = this.cursor.next(pos - this.cursorPos).value; - this.cursorPos = pos + this.string.length; - return this.cursorPos - this.string.length; - } - chunk(pos) { - this.syncTo(pos); - return this.string; - } - get lineChunks() { - return true; - } - read(from, to) { - var stringStart = this.cursorPos - this.string.length; - if (from < stringStart || to >= this.cursorPos) return this.doc.sliceString(from, to); - else return this.string.slice(from - stringStart, to - stringStart); - } - constructor(doc2, ref) { - var length = ref === void 0 ? doc2.length : ref; - this.doc = doc2; - this.length = length; - this.cursorPos = 0; - this.string = ""; - this.cursor = doc2.iter(); - } - }; - __name(DocInput, "DocInput"); - var currentContext = null; - var ParseContext = class ParseContext1 { - static create(parser2, state, viewport) { - return new ParseContext(parser2, state, [], Tree.empty, 0, viewport, [], null); - } - startParse() { - return this.parser.startParse(new DocInput(this.state.doc), this.fragments); - } - work(until, upto) { - if (upto != null && upto >= this.state.doc.length) upto = void 0; - if (this.tree != Tree.empty && this.isDone(upto !== null && upto !== void 0 ? upto : this.state.doc.length)) { - this.takeTree(); - return true; - } - return this.withContext(() => { - var _a2; - if (typeof until == "number") { - var endTime = Date.now() + until; - until = /* @__PURE__ */ __name(() => Date.now() > endTime, "until"); - } - if (!this.parse) this.parse = this.startParse(); - if (upto != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > upto) && upto < this.state.doc.length) this.parse.stopAt(upto); - for (;;) { - var done = this.parse.advance(); - if (done) { - this.fragments = this.withoutTempSkipped(TreeFragment.addTree(done, this.fragments, this.parse.stoppedAt != null)); - this.treeLen = (_a2 = this.parse.stoppedAt) !== null && _a2 !== void 0 ? _a2 : this.state.doc.length; - this.tree = done; - this.parse = null; - if (this.treeLen < (upto !== null && upto !== void 0 ? upto : this.state.doc.length)) this.parse = this.startParse(); - else return true; - } - if (until()) return false; + }) + ); + } + takeTree() { + var e, t; + this.parse && + (e = this.parse.parsedPos) >= this.treeLen && + ((this.parse.stoppedAt == null || this.parse.stoppedAt > e) && this.parse.stopAt(e), + this.withContext(() => { + for (; !(t = this.parse.advance()); ); + }), + (this.treeLen = e), + (this.tree = t), + (this.fragments = this.withoutTempSkipped(Rt.addTree(this.tree, this.fragments, !0))), + (this.parse = null)); + } + withContext(e) { + var t = es; + es = this; + try { + return e(); + } finally { + es = t; } - }); - } - takeTree() { - var pos, tree; - if (this.parse && (pos = this.parse.parsedPos) >= this.treeLen) { - if (this.parse.stoppedAt == null || this.parse.stoppedAt > pos) this.parse.stopAt(pos); - this.withContext(() => { - while (!(tree = this.parse.advance())) {} - }); - this.treeLen = pos; - this.tree = tree; - this.fragments = this.withoutTempSkipped(TreeFragment.addTree(this.tree, this.fragments, true)); - this.parse = null; } - } - withContext(f) { - var prev = currentContext; - currentContext = this; - try { - return f(); - } finally { - currentContext = prev; + withoutTempSkipped(e) { + for (var t; (t = this.tempSkipped.pop()); ) e = LD(e, t.from, t.to); + return e; } - } - withoutTempSkipped(fragments) { - for (var r; (r = this.tempSkipped.pop()); ) fragments = cutFragments(fragments, r.from, r.to); - return fragments; - } - changes(changes, newState) { - var _this = this, - fragments = _this.fragments, - tree = _this.tree, - treeLen = _this.treeLen, - viewport = _this.viewport, - skipped = _this.skipped; - this.takeTree(); - if (!changes.empty) { - var ranges = []; - changes.iterChangedRanges((fromA, toA, fromB, toB) => - ranges.push({ - fromA, - toA, - fromB, - toB, - }) - ); - fragments = TreeFragment.applyChanges(fragments, ranges); - tree = Tree.empty; - treeLen = 0; - viewport = { - from: changes.mapPos(viewport.from, -1), - to: changes.mapPos(viewport.to, 1), - }; - if (this.skipped.length) { - skipped = []; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.skipped[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - var from = changes.mapPos(r.from, 1), - to = changes.mapPos(r.to, -1); - if (from < to) - skipped.push({ - from, - to, - }); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + changes(e, t) { + var _this = this, + i = _this.fragments, + n = _this.tree, + s = _this.treeLen, + o = _this.viewport, + u = _this.skipped; + if ((this.takeTree(), !e.empty)) { + var l = []; + if ((e.iterChangedRanges((a, c, f, d) => l.push({ fromA: a, toA: c, fromB: f, toB: d })), (i = Rt.applyChanges(i, l)), (n = Ee.empty), (s = 0), (o = { from: e.mapPos(o.from, -1), to: e.mapPos(o.to, 1) }), this.skipped.length)) { + u = []; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.skipped[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var a = _step.value; + var c = e.mapPos(a.from, 1), + f = e.mapPos(a.to, -1); + c < f && u.push({ from: c, to: f }); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } } } + return new or(this.parser, t, i, n, s, o, u, this.scheduleOn); } - return new ParseContext(this.parser, newState, fragments, tree, treeLen, viewport, skipped, this.scheduleOn); - } - updateViewport(viewport) { - if (this.viewport.from == viewport.from && this.viewport.to == viewport.to) return false; - this.viewport = viewport; - var startLen = this.skipped.length; - for (var i = 0; i < this.skipped.length; i++) { - var _this_skipped_i = this.skipped[i], - from = _this_skipped_i.from, - to = _this_skipped_i.to; - if (from < viewport.to && to > viewport.from) { - this.fragments = cutFragments(this.fragments, from, to); - this.skipped.splice(i--, 1); + updateViewport(e) { + if (this.viewport.from == e.from && this.viewport.to == e.to) return !1; + this.viewport = e; + var t = this.skipped.length; + for (var i = 0; i < this.skipped.length; i++) { + var _this_skipped_i = this.skipped[i], + n = _this_skipped_i.from, + s = _this_skipped_i.to; + n < e.to && s > e.from && ((this.fragments = LD(this.fragments, n, s)), this.skipped.splice(i--, 1)); } + return this.skipped.length >= t ? !1 : (this.reset(), !0); } - if (this.skipped.length >= startLen) return false; - this.reset(); - return true; - } - reset() { - if (this.parse) { - this.takeTree(); - this.parse = null; + reset() { + this.parse && (this.takeTree(), (this.parse = null)); } - } - skipUntilInView(from, to) { - this.skipped.push({ - from, - to, - }); - } - static getSkippingParser(until) { - return new (class extends Parser { - createParse(input, fragments, ranges) { - var from = ranges[0].from, - to = ranges[ranges.length - 1].to; - var parser2 = { - parsedPos: from, - advance() { - var cx = currentContext; - if (cx) { - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - cx.tempSkipped.push(r); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + skipUntilInView(e, t) { + this.skipped.push({ from: e, to: t }); + } + static getSkippingParser(e) { + return new (class extends ir { + createParse(t, i, n) { + var s = n[0].from, + o = n[n.length - 1].to; + return { + parsedPos: s, + advance() { + var l = es; + if (l) { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = n[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var a = _step.value; + l.tempSkipped.push(a); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + e && (l.scheduleOn = l.scheduleOn ? Promise.all([l.scheduleOn, e]) : e); } - if (until) cx.scheduleOn = cx.scheduleOn ? Promise.all([cx.scheduleOn, until]) : until; - } - this.parsedPos = to; - return new Tree(NodeType.none, [], [], to - from); - }, - stoppedAt: null, - stopAt() {}, - }; - return parser2; - } - })(); - } - isDone(upto) { - upto = Math.min(upto, this.state.doc.length); - var frags = this.fragments; - return this.treeLen >= upto && frags.length && frags[0].from == 0 && frags[0].to >= upto; - } - static get() { - return currentContext; - } - constructor(parser2, state, ref, tree, treeLen, viewport, skipped, scheduleOn) { - var fragments = ref === void 0 ? [] : ref; - this.parser = parser2; - this.state = state; - this.fragments = fragments; - this.tree = tree; - this.treeLen = treeLen; - this.viewport = viewport; - this.skipped = skipped; - this.scheduleOn = scheduleOn; - this.parse = null; - this.tempSkipped = []; - } - }; - __name(ParseContext, "ParseContext"); - function cutFragments(fragments, from, to) { - return TreeFragment.applyChanges(fragments, [ - { - fromA: from, - toA: to, - fromB: from, - toB: to, - }, - ]); - } - __name(cutFragments, "cutFragments"); - var LanguageState = class LanguageState1 { - apply(tr) { - if (!tr.docChanged && this.tree == this.context.tree) return this; - var newCx = this.context.changes(tr.changes, tr.state); - var upto = this.context.treeLen == tr.startState.doc.length ? void 0 : Math.max(tr.changes.mapPos(this.context.treeLen), newCx.viewport.to); - if (!newCx.work(20, upto)) newCx.takeTree(); - return new LanguageState(newCx); - } - static init(state) { - var vpTo = Math.min(3e3, state.doc.length); - var parseState = ParseContext.create(state.facet(language).parser, state, { - from: 0, - to: vpTo, - }); - if (!parseState.work(20, vpTo)) parseState.takeTree(); - return new LanguageState(parseState); - } - constructor(context) { - this.context = context; - this.tree = context.tree; + return (this.parsedPos = o), new Ee(qe.none, [], [], o - s); + }, + stoppedAt: null, + stopAt() {}, + }; + } + })(); + } + isDone(e) { + e = Math.min(e, this.state.doc.length); + var t = this.fragments; + return this.treeLen >= e && t.length && t[0].from == 0 && t[0].to >= e; + } + static get() { + return es; + } + constructor(e, t, ref, n, s, o, u, l) { + var i = ref === void 0 ? [] : ref; + (this.parser = e), (this.state = t), (this.fragments = i), (this.tree = n), (this.treeLen = s), (this.viewport = o), (this.skipped = u), (this.scheduleOn = l), (this.parse = null), (this.tempSkipped = []); + } + }; + h(or, "ParseContext"); + function LD(r, e, t) { + return Rt.applyChanges(r, [{ fromA: e, toA: t, fromB: e, toB: t }]); + } + h(LD, "cutFragments"); + var ci = class ci1 { + apply(e) { + if (!e.docChanged && this.tree == this.context.tree) return this; + var t = this.context.changes(e.changes, e.state), + i = this.context.treeLen == e.startState.doc.length ? void 0 : Math.max(e.changes.mapPos(this.context.treeLen), t.viewport.to); + return t.work(20, i) || t.takeTree(), new ci(t); + } + static init(e) { + var t = Math.min(3e3, e.doc.length), + i = or.create(e.facet(Kr).parser, e, { from: 0, to: t }); + return i.work(20, t) || i.takeTree(), new ci(i); + } + constructor(e) { + (this.context = e), (this.tree = e.tree); } }; - __name(LanguageState, "LanguageState"); - Language.state = /* @__PURE__ */ StateField.define({ - create: LanguageState.init, - update(value, tr) { + h(ci, "LanguageState"); + et.state = $e.define({ + create: ci.init, + update(r, e) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = tr.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var e = _step.value; - if (e.is(Language.setState)) return e.value; + for (var _iterator = e.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + if (t.is(et.setState)) return t.value; } } catch (err) { _didIteratorError = true; @@ -23815,261 +18948,192 @@ var __generator = } } } - if (tr.startState.facet(language) != tr.state.facet(language)) return LanguageState.init(tr.state); - return value.apply(tr); + return e.startState.facet(Kr) != e.state.facet(Kr) ? ci.init(e.state) : r.apply(e); }, }); - var requestIdle = /* @__PURE__ */ __name((callback) => { - var timeout = setTimeout(() => callback(), 500); - return () => clearTimeout(timeout); + var ND = h((r) => { + var e = setTimeout(() => r(), 500); + return () => clearTimeout(e); }, "requestIdle"); - if (typeof requestIdleCallback != "undefined") - requestIdle = /* @__PURE__ */ __name((callback) => { - var idle = -1, - timeout = setTimeout(() => { - idle = requestIdleCallback(callback, { - timeout: 500 - 100, - }); + typeof requestIdleCallback < "u" && + (ND = h((r) => { + var e = -1, + t = setTimeout(() => { + e = requestIdleCallback(r, { timeout: 500 - 100 }); }, 100); - return () => (idle < 0 ? clearTimeout(timeout) : cancelIdleCallback(idle)); - }, "requestIdle"); - var isInputPending = typeof navigator != "undefined" && ((_a = navigator.scheduling) === null || _a === void 0 ? void 0 : _a.isInputPending) ? () => navigator.scheduling.isInputPending() : null; - var parseWorker = /* @__PURE__ */ ViewPlugin.fromClass( - /* @__PURE__ */ __name( - class ParseWorker { - update(update2) { - var cx = this.view.state.field(Language.state).context; - if (cx.updateViewport(update2.view.viewport) || this.view.viewport.to > cx.treeLen) this.scheduleWork(); - if (update2.docChanged) { - if (this.view.hasFocus) this.chunkBudget += 50; - this.scheduleWork(); - } - this.checkAsyncSchedule(cx); - } - scheduleWork() { - if (this.working) return; - var state = this.view.state, - field = state.field(Language.state); - if (field.tree != field.context.tree || !field.context.isDone(state.doc.length)) this.working = requestIdle(this.work); - } - work(deadline) { - this.working = null; - var now = Date.now(); - if (this.chunkEnd < now && (this.chunkEnd < 0 || this.view.hasFocus)) { - this.chunkEnd = now + 3e4; - this.chunkBudget = 3e3; - } - if (this.chunkBudget <= 0) return; - var _this_view = this.view, - state = _this_view.state, - _this_view_viewport = _this_view.viewport, - vpTo = _this_view_viewport.to, - field = state.field(Language.state); - if (field.tree == field.context.tree && field.context.isDone(vpTo + 1e5)) return; - var endTime = Date.now() + Math.min(this.chunkBudget, 100, deadline && !isInputPending ? Math.max(25, deadline.timeRemaining() - 5) : 1e9); - var viewportFirst = field.context.treeLen < vpTo && state.doc.length > vpTo + 1e3; - var done = field.context.work(() => { - return (isInputPending && isInputPending()) || Date.now() > endTime; - }, vpTo + (viewportFirst ? 0 : 1e5)); - this.chunkBudget -= Date.now() - now; - if (done || this.chunkBudget <= 0) { - field.context.takeTree(); - this.view.dispatch({ - effects: Language.setState.of(new LanguageState(field.context)), - }); - } - if (this.chunkBudget > 0 && !(done && !viewportFirst)) this.scheduleWork(); - this.checkAsyncSchedule(field.context); - } - checkAsyncSchedule(cx) { - if (cx.scheduleOn) { - this.workScheduled++; - cx.scheduleOn - .then(() => this.scheduleWork()) - .catch((err) => logException(this.view.state, err)) - .then(() => this.workScheduled--); - cx.scheduleOn = null; + return () => (e < 0 ? clearTimeout(t) : cancelIdleCallback(e)); + }, "requestIdle")); + var wh = typeof navigator < "u" && !((kh = navigator.scheduling) === null || kh === void 0) && kh.isInputPending ? () => navigator.scheduling.isInputPending() : null, + hw = ze.fromClass( + h( + class { + update(e) { + var t = this.view.state.field(et.state).context; + (t.updateViewport(e.view.viewport) || this.view.viewport.to > t.treeLen) && this.scheduleWork(), e.docChanged && (this.view.hasFocus && (this.chunkBudget += 50), this.scheduleWork()), this.checkAsyncSchedule(t); + } + scheduleWork() { + if (this.working) return; + var _this_view = this.view, + e = _this_view.state, + t = e.field(et.state); + (t.tree != t.context.tree || !t.context.isDone(e.doc.length)) && (this.working = ND(this.work)); + } + work(e) { + this.working = null; + var t = Date.now(); + if ((this.chunkEnd < t && (this.chunkEnd < 0 || this.view.hasFocus) && ((this.chunkEnd = t + 3e4), (this.chunkBudget = 3e3)), this.chunkBudget <= 0)) return; + var _this_view = this.view, + i = _this_view.state, + _this_view_viewport = _this_view.viewport, + n = _this_view_viewport.to, + s = i.field(et.state); + if (s.tree == s.context.tree && s.context.isDone(n + 1e5)) return; + var o = Date.now() + Math.min(this.chunkBudget, 100, e && !wh ? Math.max(25, e.timeRemaining() - 5) : 1e9), + u = s.context.treeLen < n && i.doc.length > n + 1e3, + l = s.context.work(() => (wh && wh()) || Date.now() > o, n + (u ? 0 : 1e5)); + (this.chunkBudget -= Date.now() - t), (l || this.chunkBudget <= 0) && (s.context.takeTree(), this.view.dispatch({ effects: et.setState.of(new ci(s.context)) })), this.chunkBudget > 0 && !(l && !u) && this.scheduleWork(), this.checkAsyncSchedule(s.context); + } + checkAsyncSchedule(e) { + e.scheduleOn && + (this.workScheduled++, + e.scheduleOn + .then(() => this.scheduleWork()) + .catch((t) => Ft(this.view.state, t)) + .then(() => this.workScheduled--), + (e.scheduleOn = null)); + } + destroy() { + this.working && this.working(); + } + isWorking() { + return !!(this.working || this.workScheduled > 0); + } + constructor(e) { + (this.view = e), (this.working = null), (this.workScheduled = 0), (this.chunkEnd = -1), (this.chunkBudget = -1), (this.work = this.work.bind(this)), this.scheduleWork(); } - } - destroy() { - if (this.working) this.working(); - } - isWorking() { - return !!(this.working || this.workScheduled > 0); - } - constructor(view) { - this.view = view; - this.working = null; - this.workScheduled = 0; - this.chunkEnd = -1; - this.chunkBudget = -1; - this.work = this.work.bind(this); - this.scheduleWork(); - } - }, - "ParseWorker" - ), - { - eventHandlers: { - focus() { - this.scheduleWork(); }, - }, - } - ); - var language = /* @__PURE__ */ Facet.define({ - combine(languages) { - return languages.length ? languages[0] : null; - }, - enables: (language3) => [ - Language.state, - parseWorker, - EditorView.contentAttributes.compute([language3], (state) => { - var lang = state.facet(language3); - return lang && lang.name - ? { - "data-language": lang.name, - } - : {}; - }), - ], - }); - var LanguageSupport = class LanguageSupport { - constructor(language3, ref) { - var support = ref === void 0 ? [] : ref; - this.language = language3; - this.support = support; - this.extension = [language3, support]; - } - }; - __name(LanguageSupport, "LanguageSupport"); - var indentUnit = /* @__PURE__ */ Facet.define({ - combine: (values) => { - if (!values.length) return " "; - if (!/^(?: +|\t+)$/.test(values[0])) throw new Error("Invalid indent unit: " + JSON.stringify(values[0])); - return values[0]; + "ParseWorker" + ), + { + eventHandlers: { + focus() { + this.scheduleWork(); + }, + }, + } + ), + Kr = H.define({ + combine(r) { + return r.length ? r[0] : null; + }, + enables: (r) => [ + et.state, + hw, + te.contentAttributes.compute([r], (e) => { + var t = e.facet(r); + return t && t.name ? { "data-language": t.name } : {}; + }), + ], + }), + is = class is { + constructor(e, ref) { + var t = ref === void 0 ? [] : ref; + (this.language = e), (this.support = t), (this.extension = [e, t]); + } + }; + h(is, "LanguageSupport"); + var yu = H.define({ + combine: (r) => { + if (!r.length) return " "; + var e = r[0]; + if (!e || /\S/.test(e) || Array.from(e).some((t) => t != e[0])) throw new Error("Invalid indent unit: " + JSON.stringify(r[0])); + return e; }, }); - function getIndentUnit(state) { - var unit = state.facet(indentUnit); - return unit.charCodeAt(0) == 9 ? state.tabSize * unit.length : unit.length; - } - __name(getIndentUnit, "getIndentUnit"); - function indentString(state, cols) { - var result = "", - ts = state.tabSize; - if (state.facet(indentUnit).charCodeAt(0) == 9) - while (cols >= ts) { - result += " "; - cols -= ts; - } - for (var i = 0; i < cols; i++) result += " "; - return result; - } - __name(indentString, "indentString"); - var HighlightStyle = class HighlightStyle1 { - static define(specs, options) { - return new HighlightStyle(specs, options || {}); - } - constructor(specs, options) { - this.specs = specs; - var modSpec; - function def(spec) { - var cls = StyleModule.newName(); - (modSpec || (modSpec = /* @__PURE__ */ Object.create(null)))["." + cls] = spec; - return cls; - } - __name(def, "def"); - var all = typeof options.all == "string" ? options.all : options.all ? def(options.all) : void 0; - var scopeOpt = options.scope; - this.scope = scopeOpt instanceof Language ? (type) => type.prop(languageDataProp) == scopeOpt.data : scopeOpt ? (type) => type == scopeOpt : void 0; - this.style = tagHighlighter( - specs.map((style) => ({ - tag: style.tag, - class: - style.class || - def( - Object.assign({}, style, { - tag: null, - }) - ), - })), - { - all, - } - ).style; - this.module = modSpec ? new StyleModule(modSpec) : null; - this.themeType = options.themeType; + function VD(r) { + var e = r.facet(yu); + return e.charCodeAt(0) == 9 ? r.tabSize * e.length : e.length; + } + h(VD, "getIndentUnit"); + function zD(r, e) { + var t = "", + i = r.tabSize, + n = r.facet(yu)[0]; + if (n == " ") { + for (; e >= i; ) (t += " "), (e -= i); + n = " "; + } + for (var s = 0; s < e; s++) t += n; + return t; + } + h(zD, "indentString"); + var fi = class fi1 { + static define(e, t) { + return new fi(e, t || {}); + } + constructor(e, t) { + this.specs = e; + var i; + function n(u) { + var l = lt.newName(); + return ((i || (i = Object.create(null)))["." + l] = u), l; + } + h(n, "def"); + var s = typeof t.all == "string" ? t.all : t.all ? n(t.all) : void 0, + o = t.scope; + (this.scope = o instanceof et ? (u) => u.prop(Gr) == o.data : o ? (u) => u == o : void 0), + (this.style = vh( + e.map((u) => ({ tag: u.tag, class: u.class || n(Object.assign({}, u, { tag: null })) })), + { all: s } + ).style), + (this.module = i ? new lt(i) : null), + (this.themeType = t.themeType); } }; - __name(HighlightStyle, "HighlightStyle"); - var highlighterFacet = /* @__PURE__ */ Facet.define(); - var fallbackHighlighter = /* @__PURE__ */ Facet.define({ - combine(values) { - return values.length ? [values[0]] : null; - }, - }); - function getHighlighters(state) { - var main = state.facet(highlighterFacet); - return main.length ? main : state.facet(fallbackHighlighter); - } - __name(getHighlighters, "getHighlighters"); - function syntaxHighlighting(highlighter, options) { - var ext = [treeHighlighter], - themeType; - if (highlighter instanceof HighlightStyle) { - if (highlighter.module) ext.push(EditorView.styleModule.of(highlighter.module)); - themeType = highlighter.themeType; - } - if (options === null || options === void 0 ? void 0 : options.fallback) ext.push(fallbackHighlighter.of(highlighter)); - else if (themeType) - ext.push( - highlighterFacet.computeN([EditorView.darkTheme], (state) => { - return state.facet(EditorView.darkTheme) == (themeType == "dark") ? [highlighter] : []; - }) - ); - else ext.push(highlighterFacet.of(highlighter)); - return ext; - } - __name(syntaxHighlighting, "syntaxHighlighting"); - var TreeHighlighter = class TreeHighlighter { - update(update2) { - var tree = syntaxTree(update2.state), - highlighters = getHighlighters(update2.state); - var styleChange = highlighters != getHighlighters(update2.startState); - if (tree.length < update2.view.viewport.to && !styleChange && tree.type == this.tree.type) { - this.decorations = this.decorations.map(update2.changes); - } else if (tree != this.tree || update2.viewportChanged || styleChange) { - this.tree = tree; - this.decorations = this.buildDeco(update2.view, highlighters); - } - } - buildDeco(view, highlighters) { - if (!highlighters || !this.tree.length) return Decoration.none; - var builder = new RangeSetBuilder(); + h(fi, "HighlightStyle"); + var Bh = H.define(), + WD = H.define({ + combine(r) { + return r.length ? [r[0]] : null; + }, + }); + function xh(r) { + var e = r.facet(Bh); + return e.length ? e : r.facet(WD); + } + h(xh, "getHighlighters"); + function jD(r, e) { + var t = [cw], + i; + return r instanceof fi && (r.module && t.push(te.styleModule.of(r.module)), (i = r.themeType)), (e === null || e === void 0 ? void 0 : e.fallback) ? t.push(WD.of(r)) : i ? t.push(Bh.computeN([te.darkTheme], (n) => (n.facet(te.darkTheme) == (i == "dark") ? [r] : []))) : t.push(Bh.of(r)), t; + } + h(jD, "syntaxHighlighting"); + var Fu = class Fu { + update(e) { + var t = ur(e.state), + i = xh(e.state), + n = i != xh(e.startState); + t.length < e.view.viewport.to && !n && t.type == this.tree.type ? (this.decorations = this.decorations.map(e.changes)) : (t != this.tree || e.viewportChanged || n) && ((this.tree = t), (this.decorations = this.buildDeco(e.view, i))); + } + buildDeco(e, t) { + if (!t || !this.tree.length) return he.none; + var i = new Wt(); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = view.visibleRanges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = e.visibleRanges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step_value = _step.value, - from = _step_value.from, - to = _step_value.to; - highlightTree( + n = _step_value.from, + s = _step_value.to; + MD( this.tree, - highlighters, - (from2, to2, style) => { - builder.add( - from2, - to2, - this.markCache[style] || - (this.markCache[style] = Decoration.mark({ - class: style, - })) - ); + t, + (o, u, l) => { + i.add(o, u, this.markCache[l] || (this.markCache[l] = he.mark({ class: l }))); }, - from, - to + n, + s ); } } catch (err) { @@ -24086,291 +19150,180 @@ var __generator = } } } - return builder.finish(); + return i.finish(); } - constructor(view) { - this.markCache = /* @__PURE__ */ Object.create(null); - this.tree = syntaxTree(view.state); - this.decorations = this.buildDeco(view, getHighlighters(view.state)); + constructor(e) { + (this.markCache = Object.create(null)), (this.tree = ur(e.state)), (this.decorations = this.buildDeco(e, xh(e.state))); } }; - __name(TreeHighlighter, "TreeHighlighter"); - var treeHighlighter = /* @__PURE__ */ Prec.high( - /* @__PURE__ */ ViewPlugin.fromClass(TreeHighlighter, { - decorations: (v) => v.decorations, - }) - ); - var defaultHighlightStyle = /* @__PURE__ */ HighlightStyle.define([ - { - tag: tags.meta, - color: "#7a757a", - }, - { - tag: tags.link, - textDecoration: "underline", - }, - { - tag: tags.heading, - textDecoration: "underline", - fontWeight: "bold", - }, - { - tag: tags.emphasis, - fontStyle: "italic", - }, - { - tag: tags.strong, - fontWeight: "bold", - }, - { - tag: tags.strikethrough, - textDecoration: "line-through", - }, - { - tag: tags.keyword, - color: "#708", - }, - { - tag: [tags.atom, tags.bool, tags.url, tags.contentSeparator, tags.labelName], - color: "#219", - }, - { - tag: [tags.literal, tags.inserted], - color: "#164", - }, - { - tag: [tags.string, tags.deleted], - color: "#a11", - }, - { - tag: [tags.regexp, tags.escape, /* @__PURE__ */ tags.special(tags.string)], - color: "#e40", - }, - { - tag: /* @__PURE__ */ tags.definition(tags.variableName), - color: "#00f", - }, - { - tag: /* @__PURE__ */ tags.local(tags.variableName), - color: "#30a", - }, - { - tag: [tags.typeName, tags.namespace], - color: "#085", - }, - { - tag: tags.className, - color: "#167", - }, - { - tag: [/* @__PURE__ */ tags.special(tags.variableName), tags.macroName], - color: "#256", - }, - { - tag: /* @__PURE__ */ tags.definition(tags.propertyName), - color: "#00c", - }, - { - tag: tags.comment, - color: "#940", - }, - { - tag: tags.invalid, - color: "#f00", - }, - ]); - var baseTheme2 = /* @__PURE__ */ EditorView.baseTheme({ - "&.cm-focused .cm-matchingBracket": { - backgroundColor: "#328c8252", - }, - "&.cm-focused .cm-nonmatchingBracket": { - backgroundColor: "#bb555544", - }, - }); - var DefaultScanDist = 1e4; - var DefaultBrackets = "()[]{}"; - var bracketMatchingConfig = /* @__PURE__ */ Facet.define({ - combine(configs) { - return combineConfig(configs, { - afterCursor: true, - brackets: DefaultBrackets, - maxScanDistance: DefaultScanDist, - renderMatch: defaultRenderMatch, - }); - }, - }); - var matchingMark = /* @__PURE__ */ Decoration.mark({ - class: "cm-matchingBracket", - }); - var nonmatchingMark = /* @__PURE__ */ Decoration.mark({ - class: "cm-nonmatchingBracket", - }); - function defaultRenderMatch(match) { - var decorations2 = []; - var mark = match.matched ? matchingMark : nonmatchingMark; - decorations2.push(mark.range(match.start.from, match.start.to)); - if (match.end) decorations2.push(mark.range(match.end.from, match.end.to)); - return decorations2; - } - __name(defaultRenderMatch, "defaultRenderMatch"); - var bracketMatchingState = /* @__PURE__ */ StateField.define({ - create() { - return Decoration.none; - }, - update(deco, tr) { - if (!tr.docChanged && !tr.selection) return deco; - var decorations2 = []; - var config = tr.state.facet(bracketMatchingConfig); - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = tr.state.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var range = _step.value; - if (!range.empty) continue; - var match = matchBrackets(tr.state, range.head, -1, config) || (range.head > 0 && matchBrackets(tr.state, range.head - 1, 1, config)) || (config.afterCursor && (matchBrackets(tr.state, range.head, 1, config) || (range.head < tr.state.doc.length && matchBrackets(tr.state, range.head + 1, -1, config)))); - if (match) decorations2 = decorations2.concat(config.renderMatch(match, tr.state)); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(Fu, "TreeHighlighter"); + var cw = Tr.high(ze.fromClass(Fu, { decorations: (r) => r.decorations })), + RB = fi.define([ + { tag: B.meta, color: "#404740" }, + { tag: B.link, textDecoration: "underline" }, + { tag: B.heading, textDecoration: "underline", fontWeight: "bold" }, + { tag: B.emphasis, fontStyle: "italic" }, + { tag: B.strong, fontWeight: "bold" }, + { tag: B.strikethrough, textDecoration: "line-through" }, + { tag: B.keyword, color: "#708" }, + { tag: [B.atom, B.bool, B.url, B.contentSeparator, B.labelName], color: "#219" }, + { tag: [B.literal, B.inserted], color: "#164" }, + { tag: [B.string, B.deleted], color: "#a11" }, + { tag: [B.regexp, B.escape, B.special(B.string)], color: "#e40" }, + { tag: B.definition(B.variableName), color: "#00f" }, + { tag: B.local(B.variableName), color: "#30a" }, + { tag: [B.typeName, B.namespace], color: "#085" }, + { tag: B.className, color: "#167" }, + { tag: [B.special(B.variableName), B.macroName], color: "#256" }, + { tag: B.definition(B.propertyName), color: "#00c" }, + { tag: B.comment, color: "#940" }, + { tag: B.invalid, color: "#f00" }, + ]), + fw = te.baseTheme({ "&.cm-focused .cm-matchingBracket": { backgroundColor: "#328c8252" }, "&.cm-focused .cm-nonmatchingBracket": { backgroundColor: "#bb555544" } }), + HD = 1e4, + UD = "()[]{}", + YD = H.define({ + combine(r) { + return ui(r, { afterCursor: !0, brackets: UD, maxScanDistance: HD, renderMatch: mw }); + }, + }), + dw = he.mark({ class: "cm-matchingBracket" }), + pw = he.mark({ class: "cm-nonmatchingBracket" }); + function mw(r) { + var e = [], + t = r.matched ? dw : pw; + return e.push(t.range(r.start.from, r.start.to)), r.end && e.push(t.range(r.end.from, r.end.to)), e; + } + h(mw, "defaultRenderMatch"); + var gw = $e.define({ + create() { + return he.none; + }, + update(r, e) { + if (!e.docChanged && !e.selection) return r; + var t = [], + i = e.state.facet(YD); + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = e.state.selection.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + if (!n.empty) continue; + var s = ts(e.state, n.head, -1, i) || (n.head > 0 && ts(e.state, n.head - 1, 1, i)) || (i.afterCursor && (ts(e.state, n.head, 1, i) || (n.head < e.state.doc.length && ts(e.state, n.head + 1, -1, i)))); + s && (t = t.concat(i.renderMatch(s, e.state))); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - return Decoration.set(decorations2, true); - }, - provide: (f) => EditorView.decorations.from(f), - }); - var bracketMatchingUnique = [bracketMatchingState, baseTheme2]; - function bracketMatching() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - return [bracketMatchingConfig.of(config), bracketMatchingUnique]; - } - __name(bracketMatching, "bracketMatching"); - function matchingNodes(node, dir, brackets) { - var byProp = node.prop(dir < 0 ? NodeProp.openedBy : NodeProp.closedBy); - if (byProp) return byProp; - if (node.name.length == 1) { - var index = brackets.indexOf(node.name); - if (index > -1 && index % 2 == (dir < 0 ? 1 : 0)) return [brackets[index + dir]]; + return he.set(t, !0); + }, + provide: (r) => te.decorations.from(r), + }), + Dw = [gw, fw]; + function GD() { + var r = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + return [YD.of(r), Dw]; + } + h(GD, "bracketMatching"); + var bw = new ue(); + function _h(r, e, t) { + var i = r.prop(e < 0 ? ue.openedBy : ue.closedBy); + if (i) return i; + if (r.name.length == 1) { + var n = t.indexOf(r.name); + if (n > -1 && n % 2 == (e < 0 ? 1 : 0)) return [t[n + e]]; } return null; } - __name(matchingNodes, "matchingNodes"); - function matchBrackets(state, pos, dir) { - var config = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; - var maxScanDistance = config.maxScanDistance || DefaultScanDist, - brackets = config.brackets || DefaultBrackets; - var tree = syntaxTree(state), - node = tree.resolveInner(pos, dir); - for (var cur = node; cur; cur = cur.parent) { - var matches = matchingNodes(cur.type, dir, brackets); - if (matches && cur.from < cur.to) return matchMarkedBrackets(state, pos, dir, cur, matches, brackets); - } - return matchPlainBrackets(state, pos, dir, tree, node.type, maxScanDistance, brackets); - } - __name(matchBrackets, "matchBrackets"); - function matchMarkedBrackets(_state, _pos, dir, token, matching, brackets) { - var parent = token.parent, - firstToken = { - from: token.from, - to: token.to, - }; - var depth = 0, - cursor = parent === null || parent === void 0 ? void 0 : parent.cursor(); - if (cursor && (dir < 0 ? cursor.childBefore(token.from) : cursor.childAfter(token.to))) - do { - if (dir < 0 ? cursor.to <= token.from : cursor.from >= token.to) { - if (depth == 0 && matching.indexOf(cursor.type.name) > -1 && cursor.from < cursor.to) { - return { - start: firstToken, - end: { - from: cursor.from, - to: cursor.to, - }, - matched: true, - }; - } else if (matchingNodes(cursor.type, dir, brackets)) { - depth++; - } else if (matchingNodes(cursor.type, -dir, brackets)) { - if (depth == 0) - return { - start: firstToken, - end: - cursor.from == cursor.to - ? void 0 - : { - from: cursor.from, - to: cursor.to, - }, - matched: false, - }; - depth--; - } - } - } while (dir < 0 ? cursor.prevSibling() : cursor.nextSibling()); - return { - start: firstToken, - matched: false, - }; - } - __name(matchMarkedBrackets, "matchMarkedBrackets"); - function matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) { - var startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1); - var bracket2 = brackets.indexOf(startCh); - if (bracket2 < 0 || (bracket2 % 2 == 0) != dir > 0) return null; - var startToken = { - from: dir < 0 ? pos - 1 : pos, - to: dir > 0 ? pos + 1 : pos, - }; - var iter = state.doc.iterRange(pos, dir > 0 ? state.doc.length : 0), - depth = 0; - for (var distance = 0; !iter.next().done && distance <= maxScanDistance; ) { - var text2 = iter.value; - if (dir < 0) distance += text2.length; - var basePos = pos + distance * dir; - for (var pos2 = dir > 0 ? 0 : text2.length - 1, end = dir > 0 ? text2.length : -1; pos2 != end; pos2 += dir) { - var found = brackets.indexOf(text2[pos2]); - if (found < 0 || tree.resolveInner(basePos + pos2, 1).type != tokenType) continue; - if ((found % 2 == 0) == dir > 0) { - depth++; - } else if (depth == 1) { - return { - start: startToken, - end: { - from: basePos + pos2, - to: basePos + pos2 + 1, - }, - matched: found >> 1 == bracket2 >> 1, - }; - } else { - depth--; - } - } - if (dir > 0) distance += text2.length; - } - return iter.done - ? { - start: startToken, - matched: false, - } - : null; - } - __name(matchPlainBrackets, "matchPlainBrackets"); - var noTokens = /* @__PURE__ */ Object.create(null); - var typeArray = [NodeType.none]; - var warned = []; - var defaultTable = /* @__PURE__ */ Object.create(null); + h(_h, "matchingNodes"); + function Oh(r) { + var e = r.type.prop(bw); + return e ? e(r.node) : r; + } + h(Oh, "findHandle"); + function ts(r, e, t) { + var i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; + var n = i.maxScanDistance || HD, + s = i.brackets || UD, + o = ur(r), + u = o.resolveInner(e, t); + for (var l = u; l; l = l.parent) { + var a = _h(l.type, t, s); + if (a && l.from < l.to) { + var c = Oh(l); + if (c && (t > 0 ? e >= c.from && e < c.to : e > c.from && e <= c.to)) return Fw(r, e, t, l, c, a, s); + } + } + return yw(r, e, t, o, u.type, n, s); + } + h(ts, "matchBrackets"); + function Fw(r, e, t, i, n, s, o) { + var u = i.parent, + l = { from: n.from, to: n.to }, + a = 0, + c = u === null || u === void 0 ? void 0 : u.cursor(); + if (c && (t < 0 ? c.childBefore(i.from) : c.childAfter(i.to))) + do + if (t < 0 ? c.to <= i.from : c.from >= i.to) { + if (a == 0 && s.indexOf(c.type.name) > -1 && c.from < c.to) { + var f = Oh(c); + return { start: l, end: f ? { from: f.from, to: f.to } : void 0, matched: !0 }; + } else if (_h(c.type, t, o)) a++; + else if (_h(c.type, -t, o)) { + if (a == 0) { + var f1 = Oh(c); + return { start: l, end: f1 && f1.from < f1.to ? { from: f1.from, to: f1.to } : void 0, matched: !1 }; + } + a--; + } + } + while (t < 0 ? c.prevSibling() : c.nextSibling()); + return { start: l, matched: !1 }; + } + h(Fw, "matchMarkedBrackets"); + function yw(r, e, t, i, n, s, o) { + var u = t < 0 ? r.sliceDoc(e - 1, e) : r.sliceDoc(e, e + 1), + l = o.indexOf(u); + if (l < 0 || (l % 2 == 0) != t > 0) return null; + var a = { from: t < 0 ? e - 1 : e, to: t > 0 ? e + 1 : e }, + c = r.doc.iterRange(e, t > 0 ? r.doc.length : 0), + f = 0; + for (var d = 0; !c.next().done && d <= s; ) { + var p = c.value; + t < 0 && (d += p.length); + var m = e + d * t; + for (var D = t > 0 ? 0 : p.length - 1, g = t > 0 ? p.length : -1; D != g; D += t) { + var b = o.indexOf(p[D]); + if (!(b < 0 || i.resolveInner(m + D, 1).type != n)) + if ((b % 2 == 0) == t > 0) f++; + else { + if (f == 1) return { start: a, end: { from: m + D, to: m + D + 1 }, matched: b >> 1 == l >> 1 }; + f--; + } + } + t > 0 && (d += p.length); + } + return c.done ? { start: a, matched: !1 } : null; + } + h(yw, "matchPlainBrackets"); + var Cw = Object.create(null), + qD = [qe.none]; + var ID = [], + Aw = Object.create(null); for ( - var _i1 = 0, + var _i2 = 0, _iter1 = [ ["variable", "variableName"], ["variable-2", "variableName.special"], @@ -24385,38 +19338,28 @@ var __generator = ["header", "heading"], ["property", "propertyName"], ]; - _i1 < _iter1.length; - _i1++ + _i2 < _iter1.length; + _i2++ ) { - var _iter__i = _slicedToArray(_iter1[_i1], 2), - legacyName = _iter__i[0], - name2 = _iter__i[1]; - defaultTable[legacyName] = /* @__PURE__ */ createTokenType(noTokens, name2); - } - function warnForPart(part, msg) { - if (warned.indexOf(part) > -1) return; - warned.push(part); - console.warn(msg); - } - __name(warnForPart, "warnForPart"); - function createTokenType(extra, tagStr) { - var tag = null; + var _iter__i = _slicedToArray(_iter1[_i2], 2), + r2 = _iter__i[0], + e1 = _iter__i[1]; + Aw[r2] = Ew(Cw, e1); + } + function Sh(r, e) { + ID.indexOf(r) > -1 || (ID.push(r), console.warn(e)); + } + h(Sh, "warnForPart"); + function Ew(r, e) { + var t = null; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = tagStr.split(".")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var part = _step.value; - var value = extra[part] || tags[part]; - if (!value) { - warnForPart(part, "Unknown highlighting tag ".concat(part)); - } else if (typeof value == "function") { - if (!tag) warnForPart(part, "Modifier ".concat(part, " used at start of tag")); - else tag = value(tag); - } else { - if (tag) warnForPart(part, "Tag ".concat(part, " used as modifier")); - else tag = value; - } + for (var _iterator = e.split(".")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + var o = r[s] || B[s]; + o ? (typeof o == "function" ? (t ? (t = o(t)) : Sh(s, "Modifier ".concat(s, " used at start of tag"))) : t ? Sh(s, "Tag ".concat(s, " used as modifier")) : (t = o)) : Sh(s, "Unknown highlighting tag ".concat(s)); } } catch (err) { _didIteratorError = true; @@ -24432,143 +19375,104 @@ var __generator = } } } - if (!tag) return 0; - var name2 = tagStr.replace(/ /g, "_"), - type = NodeType.define({ - id: typeArray.length, - name: name2, - props: [ - styleTags({ - [name2]: tag, - }), - ], - }); - typeArray.push(type); - return type.id; - } - __name(createTokenType, "createTokenType"); - // node_modules/@codemirror/commands/dist/index.js - var fromHistory = /* @__PURE__ */ Annotation.define(); - var isolateHistory = /* @__PURE__ */ Annotation.define(); - var invertedEffects = /* @__PURE__ */ Facet.define(); - var historyConfig = /* @__PURE__ */ Facet.define({ - combine(configs) { - return combineConfig( - configs, - { - minDepth: 100, - newGroupDelay: 500, - }, - { - minDepth: Math.max, - newGroupDelay: Math.min, - } - ); - }, - }); - function changeEnd(changes) { - var end = 0; - changes.iterChangedRanges((_, to) => (end = to)); - return end; + if (!t) return 0; + var i = e.replace(/ /g, "_"), + n = qe.define({ id: qD.length, name: i, props: [Du({ [i]: t })] }); + return qD.push(n), n.id; } - __name(changeEnd, "changeEnd"); - var historyField_ = /* @__PURE__ */ StateField.define({ + h(Ew, "createTokenType"); + var Rh = ut.define(), + vw = ut.define(), + kw = H.define(), + KD = H.define({ + combine(r) { + return ui(r, { minDepth: 100, newGroupDelay: 500, joinToEvent: (e, t) => t }, { minDepth: Math.max, newGroupDelay: Math.min, joinToEvent: (e, t) => (i, n) => e(i, n) || t(i, n) }); + }, + }); + function ww(r) { + var e = 0; + return r.iterChangedRanges((t, i) => (e = i)), e; + } + h(ww, "changeEnd"); + var XD = $e.define({ create() { - return HistoryState.empty; - }, - update(state, tr) { - var config = tr.state.facet(historyConfig); - var fromHist = tr.annotation(fromHistory); - if (fromHist) { - var selection = tr.docChanged ? EditorSelection.single(changeEnd(tr.changes)) : void 0; - var item = HistEvent.fromTransaction(tr, selection), - from = fromHist.side; - var other = from == 0 ? state.undone : state.done; - if (item) other = updateBranch(other, other.length, config.minDepth, item); - else other = addSelection(other, tr.startState.selection); - return new HistoryState(from == 0 ? fromHist.rest : other, from == 0 ? other : fromHist.rest); - } - var isolate = tr.annotation(isolateHistory); - if (isolate == "full" || isolate == "before") state = state.isolate(); - if (tr.annotation(Transaction.addToHistory) === false) return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state; - var event = HistEvent.fromTransaction(tr); - var time = tr.annotation(Transaction.time), - userEvent = tr.annotation(Transaction.userEvent); - if (event) state = state.addChanges(event, time, userEvent, config.newGroupDelay, config.minDepth); - else if (tr.selection) state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay); - if (isolate == "full" || isolate == "after") state = state.isolate(); - return state; - }, - toJSON(value) { - return { - done: value.done.map((e) => e.toJSON()), - undone: value.undone.map((e) => e.toJSON()), - }; - }, - fromJSON(json) { - return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON)); + return pt.empty; + }, + update(r, e) { + var t = e.state.facet(KD), + i = e.annotation(Rh); + if (i) { + var l = e.docChanged ? z.single(ww(e.changes)) : void 0, + a = je.fromTransaction(e, l), + c = i.side, + f = c == 0 ? r.undone : r.done; + return a ? (f = Cu(f, f.length, t.minDepth, a)) : (f = e11(f, e.startState.selection)), new pt(c == 0 ? i.rest : f, c == 0 ? f : i.rest); + } + var n = e.annotation(vw); + if (((n == "full" || n == "before") && (r = r.isolate()), e.annotation(we.addToHistory) === !1)) return e.changes.empty ? r : r.addMapping(e.changes.desc); + var s = je.fromTransaction(e), + o = e.annotation(we.time), + u = e.annotation(we.userEvent); + return s ? (r = r.addChanges(s, o, u, t, e)) : e.selection && (r = r.addSelection(e.startState.selection, o, u, t.newGroupDelay)), (n == "full" || n == "after") && (r = r.isolate()), r; + }, + toJSON(r) { + return { done: r.done.map((e) => e.toJSON()), undone: r.undone.map((e) => e.toJSON()) }; + }, + fromJSON(r) { + return new pt(r.done.map(je.fromJSON), r.undone.map(je.fromJSON)); }, }); - function history() { - var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + function QD() { + var r = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; return [ - historyField_, - historyConfig.of(config), - EditorView.domEventHandlers({ - beforeinput(e, view) { - var command = e.inputType == "historyUndo" ? undo : e.inputType == "historyRedo" ? redo : null; - if (!command) return false; - e.preventDefault(); - return command(view); + XD, + KD.of(r), + te.domEventHandlers({ + beforeinput(e, t) { + var i = e.inputType == "historyUndo" ? JD : e.inputType == "historyRedo" ? $h : null; + return i ? (e.preventDefault(), i(t)) : !1; }, }), ]; } - __name(history, "history"); - function cmd(side, selection) { + h(QD, "history"); + function Au(r, e) { return function (param) { - var state = param.state, - dispatch = param.dispatch; - if (!selection && state.readOnly) return false; - var historyState = state.field(historyField_, false); - if (!historyState) return false; - var tr = historyState.pop(side, state, selection); - if (!tr) return false; - dispatch(tr); - return true; + var t = param.state, + i = param.dispatch; + if (!e && t.readOnly) return !1; + var n = t.field(XD, !1); + if (!n) return !1; + var s = n.pop(r, t, e); + return s ? (i(s), !0) : !1; }; } - __name(cmd, "cmd"); - var undo = /* @__PURE__ */ cmd(0, false); - var redo = /* @__PURE__ */ cmd(1, false); - var undoSelection = /* @__PURE__ */ cmd(0, true); - var redoSelection = /* @__PURE__ */ cmd(1, true); - var HistEvent = class HistEvent1 { - setSelAfter(after) { - return new HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after); + h(Au, "cmd"); + var JD = Au(0, !1), + $h = Au(1, !1), + xw = Au(0, !0), + Sw = Au(1, !0); + var je = class je1 { + setSelAfter(e) { + return new je(this.changes, this.effects, this.mapped, this.startSelection, e); } toJSON() { - var _a2, _b, _c; - return { - changes: (_a2 = this.changes) === null || _a2 === void 0 ? void 0 : _a2.toJSON(), - mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(), - startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(), - selectionsAfter: this.selectionsAfter.map((s) => s.toJSON()), - }; + var e, t, i; + return { changes: (e = this.changes) === null || e === void 0 ? void 0 : e.toJSON(), mapped: (t = this.mapped) === null || t === void 0 ? void 0 : t.toJSON(), startSelection: (i = this.startSelection) === null || i === void 0 ? void 0 : i.toJSON(), selectionsAfter: this.selectionsAfter.map((n) => n.toJSON()) }; } - static fromJSON(json) { - return new HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON)); + static fromJSON(e) { + return new je(e.changes && ke.fromJSON(e.changes), [], e.mapped && Ze.fromJSON(e.mapped), e.startSelection && z.fromJSON(e.startSelection), e.selectionsAfter.map(z.fromJSON)); } - static fromTransaction(tr, selection) { - var effects = none2; + static fromTransaction(e, t) { + var i = Ct; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = tr.startState.facet(invertedEffects)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var invert = _step.value; - var result = invert(tr); - if (result.length) effects = effects.concat(result); + for (var _iterator = e.startState.facet(kw)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + var s = n(e); + s.length && (i = i.concat(s)); } } catch (err) { _didIteratorError = true; @@ -24584,585 +19488,439 @@ var __generator = } } } - if (!effects.length && tr.changes.empty) return null; - return new HistEvent(tr.changes.invert(tr.startState.doc), effects, void 0, selection || tr.startState.selection, none2); + return !i.length && e.changes.empty ? null : new je(e.changes.invert(e.startState.doc), i, void 0, t || e.startState.selection, Ct); } - static selection(selections) { - return new HistEvent(void 0, none2, void 0, void 0, selections); + static selection(e) { + return new je(void 0, Ct, void 0, void 0, e); } - constructor(changes, effects, mapped, startSelection, selectionsAfter) { - this.changes = changes; - this.effects = effects; - this.mapped = mapped; - this.startSelection = startSelection; - this.selectionsAfter = selectionsAfter; + constructor(e, t, i, n, s) { + (this.changes = e), (this.effects = t), (this.mapped = i), (this.startSelection = n), (this.selectionsAfter = s); } }; - __name(HistEvent, "HistEvent"); - function updateBranch(branch, to, maxLen, newEvent) { - var start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0; - var newBranch = branch.slice(start, to); - newBranch.push(newEvent); - return newBranch; - } - __name(updateBranch, "updateBranch"); - function isAdjacent(a, b) { - var ranges = [], - isAdjacent2 = false; - a.iterChangedRanges((f, t2) => ranges.push(f, t2)); - b.iterChangedRanges((_f, _t, f, t2) => { - for (var i = 0; i < ranges.length; ) { - var from = ranges[i++], - to = ranges[i++]; - if (t2 >= from && f <= to) isAdjacent2 = true; + h(je, "HistEvent"); + function Cu(r, e, t, i) { + var n = e + 1 > t + 20 ? e - t - 1 : 0, + s = r.slice(n, e); + return s.push(i), s; + } + h(Cu, "updateBranch"); + function Bw(r, e) { + var t = [], + i = !1; + return ( + r.iterChangedRanges((n, s) => t.push(n, s)), + e.iterChangedRanges((n, s, o, u) => { + for (var l = 0; l < t.length; ) { + var a = t[l++], + c = t[l++]; + u >= a && o <= c && (i = !0); + } + }), + i + ); + } + h(Bw, "isAdjacent"); + function _w(r, e) { + return r.ranges.length == e.ranges.length && r.ranges.filter((t, i) => t.empty != e.ranges[i].empty).length === 0; + } + h(_w, "eqSelectionShape"); + function ZD(r, e) { + return r.length ? (e.length ? r.concat(e) : r) : e; + } + h(ZD, "conc"); + var Ct = [], + Ow = 200; + function e11(r, e) { + if (r.length) { + var t = r[r.length - 1], + i = t.selectionsAfter.slice(Math.max(0, t.selectionsAfter.length - Ow)); + return i.length && i[i.length - 1].eq(e) ? r : (i.push(e), Cu(r, r.length - 1, 1e9, t.setSelAfter(i))); + } else return [je.selection([e])]; + } + h(e11, "addSelection"); + function Tw(r) { + var e = r[r.length - 1], + t = r.slice(); + return (t[r.length - 1] = e.setSelAfter(e.selectionsAfter.slice(0, e.selectionsAfter.length - 1))), t; + } + h(Tw, "popSelection"); + function Th(r, e) { + if (!r.length) return r; + var t = r.length, + i = Ct; + for (; t; ) { + var n = Rw(r[t - 1], e, i); + if ((n.changes && !n.changes.empty) || n.effects.length) { + var s = r.slice(0, t); + return (s[t - 1] = n), s; + } else (e = n.mapped), t--, (i = n.selectionsAfter); + } + return i.length ? [je.selection(i)] : Ct; + } + h(Th, "addMappingToBranch"); + function Rw(r, e, t) { + var i = ZD(r.selectionsAfter.length ? r.selectionsAfter.map((u) => u.map(e)) : Ct, t); + if (!r.changes) return je.selection(i); + var n = r.changes.map(e), + s = e.mapDesc(r.changes, !0), + o = r.mapped ? r.mapped.composeDesc(s) : s; + return new je(n, de.mapEffects(r.effects, e), o, r.startSelection.map(s), i); + } + h(Rw, "mapEvent"); + var $w = /^(input\.type|delete)($|\.)/, + pt = class pt1 { + isolate() { + return this.prevTime ? new pt(this.done, this.undone) : this; + } + addChanges(e, t, i, n, s) { + var o = this.done, + u = o[o.length - 1]; + return ( + u && u.changes && !u.changes.empty && e.changes && (!i || $w.test(i)) && ((!u.selectionsAfter.length && t - this.prevTime < n.newGroupDelay && n.joinToEvent(s, Bw(u.changes, e.changes))) || i == "input.type.compose") + ? (o = Cu(o, o.length - 1, n.minDepth, new je(e.changes.compose(u.changes), ZD(e.effects, u.effects), u.mapped, u.startSelection, Ct))) + : (o = Cu(o, o.length, n.minDepth, e)), + new pt(o, Ct, t, i) + ); } - }); - return isAdjacent2; - } - __name(isAdjacent, "isAdjacent"); - function eqSelectionShape(a, b) { - return a.ranges.length == b.ranges.length && a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0; - } - __name(eqSelectionShape, "eqSelectionShape"); - function conc(a, b) { - return !a.length ? b : !b.length ? a : a.concat(b); - } - __name(conc, "conc"); - var none2 = []; - var MaxSelectionsPerEvent = 200; - function addSelection(branch, selection) { - if (!branch.length) { - return [HistEvent.selection([selection])]; - } else { - var lastEvent = branch[branch.length - 1]; - var sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent)); - if (sels.length && sels[sels.length - 1].eq(selection)) return branch; - sels.push(selection); - return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels)); - } - } - __name(addSelection, "addSelection"); - function popSelection(branch) { - var last = branch[branch.length - 1]; - var newBranch = branch.slice(); - newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1)); - return newBranch; - } - __name(popSelection, "popSelection"); - function addMappingToBranch(branch, mapping) { - if (!branch.length) return branch; - var length = branch.length, - selections = none2; - while (length) { - var event = mapEvent(branch[length - 1], mapping, selections); - if ((event.changes && !event.changes.empty) || event.effects.length) { - var result = branch.slice(0, length); - result[length - 1] = event; - return result; - } else { - mapping = event.mapped; - length--; - selections = event.selectionsAfter; - } - } - return selections.length ? [HistEvent.selection(selections)] : none2; - } - __name(addMappingToBranch, "addMappingToBranch"); - function mapEvent(event, mapping, extraSelections) { - var selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map((s) => s.map(mapping)) : none2, extraSelections); - if (!event.changes) return HistEvent.selection(selections); - var mappedChanges = event.changes.map(mapping), - before = mapping.mapDesc(event.changes, true); - var fullMapping = event.mapped ? event.mapped.composeDesc(before) : before; - return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections); - } - __name(mapEvent, "mapEvent"); - var joinableUserEvent = /^(input\.type|delete)($|\.)/; - var HistoryState = class HistoryState1 { - isolate() { - return this.prevTime ? new HistoryState(this.done, this.undone) : this; - } - addChanges(event, time, userEvent, newGroupDelay, maxLen) { - var done = this.done, - lastEvent = done[done.length - 1]; - if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes && (!userEvent || joinableUserEvent.test(userEvent)) && ((!lastEvent.selectionsAfter.length && time - this.prevTime < newGroupDelay && isAdjacent(lastEvent.changes, event.changes)) || userEvent == "input.type.compose")) { - done = updateBranch(done, done.length - 1, maxLen, new HistEvent(event.changes.compose(lastEvent.changes), conc(event.effects, lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none2)); - } else { - done = updateBranch(done, done.length, maxLen, event); - } - return new HistoryState(done, none2, time, userEvent); - } - addSelection(selection, time, userEvent, newGroupDelay) { - var last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none2; - if (last.length > 0 && time - this.prevTime < newGroupDelay && userEvent == this.prevUserEvent && userEvent && /^select($|\.)/.test(userEvent) && eqSelectionShape(last[last.length - 1], selection)) return this; - return new HistoryState(addSelection(this.done, selection), this.undone, time, userEvent); - } - addMapping(mapping) { - return new HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent); - } - pop(side, state, selection) { - var branch = side == 0 ? this.done : this.undone; - if (branch.length == 0) return null; - var event = branch[branch.length - 1]; - if (selection && event.selectionsAfter.length) { - return state.update({ - selection: event.selectionsAfter[event.selectionsAfter.length - 1], - annotations: fromHistory.of({ - side, - rest: popSelection(branch), - }), - userEvent: side == 0 ? "select.undo" : "select.redo", - scrollIntoView: true, - }); - } else if (!event.changes) { - return null; - } else { - var rest = branch.length == 1 ? none2 : branch.slice(0, branch.length - 1); - if (event.mapped) rest = addMappingToBranch(rest, event.mapped); - return state.update({ - changes: event.changes, - selection: event.startSelection, - effects: event.effects, - annotations: fromHistory.of({ - side, - rest, - }), - filter: false, - userEvent: side == 0 ? "undo" : "redo", - scrollIntoView: true, - }); + addSelection(e, t, i, n) { + var s = this.done.length ? this.done[this.done.length - 1].selectionsAfter : Ct; + return s.length > 0 && t - this.prevTime < n && i == this.prevUserEvent && i && /^select($|\.)/.test(i) && _w(s[s.length - 1], e) ? this : new pt(e11(this.done, e), this.undone, t, i); } - } - constructor(done, undone, ref, ref1) { - var prevTime = ref === void 0 ? 0 : ref, - prevUserEvent = ref1 === void 0 ? void 0 : ref1; - this.done = done; - this.undone = undone; - this.prevTime = prevTime; - this.prevUserEvent = prevUserEvent; - } - }; - __name(HistoryState, "HistoryState"); - HistoryState.empty = /* @__PURE__ */ new HistoryState(none2, none2); - var historyKeymap = [ - { - key: "Mod-z", - run: undo, - preventDefault: true, - }, - { - key: "Mod-y", - mac: "Mod-Shift-z", - run: redo, - preventDefault: true, - }, - { - linux: "Ctrl-Shift-z", - run: redo, - preventDefault: true, - }, - { - key: "Mod-u", - run: undoSelection, - preventDefault: true, - }, - { - key: "Alt-u", - mac: "Mod-Shift-u", - run: redoSelection, - preventDefault: true, - }, + addMapping(e) { + return new pt(Th(this.done, e), Th(this.undone, e), this.prevTime, this.prevUserEvent); + } + pop(e, t, i) { + var n = e == 0 ? this.done : this.undone; + if (n.length == 0) return null; + var s = n[n.length - 1]; + if (i && s.selectionsAfter.length) return t.update({ selection: s.selectionsAfter[s.selectionsAfter.length - 1], annotations: Rh.of({ side: e, rest: Tw(n) }), userEvent: e == 0 ? "select.undo" : "select.redo", scrollIntoView: !0 }); + if (s.changes) { + var o = n.length == 1 ? Ct : n.slice(0, n.length - 1); + return s.mapped && (o = Th(o, s.mapped)), t.update({ changes: s.changes, selection: s.startSelection, effects: s.effects, annotations: Rh.of({ side: e, rest: o }), filter: !1, userEvent: e == 0 ? "undo" : "redo", scrollIntoView: !0 }); + } else return null; + } + constructor(e, t, ref, ref1) { + var i = ref === void 0 ? 0 : ref, + n = ref1 === void 0 ? void 0 : ref1; + (this.done = e), (this.undone = t), (this.prevTime = i), (this.prevUserEvent = n); + } + }; + h(pt, "HistoryState"); + pt.empty = new pt(Ct, Ct); + var t1 = [ + { key: "Mod-z", run: JD, preventDefault: !0 }, + { key: "Mod-y", mac: "Mod-Shift-z", run: $h, preventDefault: !0 }, + { linux: "Ctrl-Shift-z", run: $h, preventDefault: !0 }, + { key: "Mod-u", run: xw, preventDefault: !0 }, + { key: "Alt-u", mac: "Mod-Shift-u", run: Sw, preventDefault: !0 }, ]; - function changeBySelectedLine(state, f) { - var atLine = -1; - return state.changeByRange((range) => { - var changes = []; - for (var pos = range.from; pos <= range.to; ) { - var line = state.doc.lineAt(pos); - if (line.number > atLine && (range.empty || range.to > line.from)) { - f(line, changes, range); - atLine = line.number; - } - pos = line.to + 1; - } - var changeSet = state.changes(changes); - return { - changes, - range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1)), - }; + function i1(r, e) { + var t = -1; + return r.changeByRange((i) => { + var n = []; + for (var o = i.from; o <= i.to; ) { + var u = r.doc.lineAt(o); + u.number > t && (i.empty || i.to > u.from) && (e(u, n, i), (t = u.number)), (o = u.to + 1); + } + var s = r.changes(n); + return { changes: n, range: z.range(s.mapPos(i.anchor, 1), s.mapPos(i.head, 1)) }; }); } - __name(changeBySelectedLine, "changeBySelectedLine"); - var indentMore = /* @__PURE__ */ __name((param) => { - var state = param.state, - dispatch = param.dispatch; - if (state.readOnly) return false; - dispatch( - state.update( - changeBySelectedLine(state, (line, changes) => { - changes.push({ - from: line.from, - insert: state.facet(indentUnit), - }); - }), - { - userEvent: "input.indent", - } - ) - ); - return true; - }, "indentMore"); - var indentLess = /* @__PURE__ */ __name((param) => { - var state = param.state, - dispatch = param.dispatch; - if (state.readOnly) return false; - dispatch( - state.update( - changeBySelectedLine(state, (line, changes) => { - var space2 = /^\s*/.exec(line.text)[0]; - if (!space2) return; - var col = countColumn(space2, state.tabSize), - keep = 0; - var insert3 = indentString(state, Math.max(0, col - getIndentUnit(state))); - while (keep < space2.length && keep < insert3.length && space2.charCodeAt(keep) == insert3.charCodeAt(keep)) keep++; - changes.push({ - from: line.from + keep, - to: line.from + space2.length, - insert: insert3.slice(keep), - }); - }), - { - userEvent: "delete.dedent", - } - ) - ); - return true; - }, "indentLess"); - var indentWithTab = { - key: "Tab", - run: indentMore, - shift: indentLess, - }; - // node_modules/crelt/index.es.js - function crelt() { - var elt = arguments[0]; - if (typeof elt == "string") elt = document.createElement(elt); - var i = 1, - next = arguments[1]; - if (next && typeof next == "object" && next.nodeType == null && !Array.isArray(next)) { - for (var name2 in next) - if (Object.prototype.hasOwnProperty.call(next, name2)) { - var value = next[name2]; - if (typeof value == "string") elt.setAttribute(name2, value); - else if (value != null) elt[name2] = value; - } - i++; - } - for (; i < arguments.length; i++) add(elt, arguments[i]); - return elt; - } - __name(crelt, "crelt"); - function add(elt, child) { - if (typeof child == "string") { - elt.appendChild(document.createTextNode(child)); - } else if (child == null) { - } else if (child.nodeType != null) { - elt.appendChild(child); - } else if (Array.isArray(child)) { - for (var i = 0; i < child.length; i++) add(elt, child[i]); - } else { - throw new RangeError("Unsupported child node: " + child); - } - } - __name(add, "add"); - // node_modules/@codemirror/lint/dist/index.js - var SelectedDiagnostic = class SelectedDiagnostic { - constructor(from, to, diagnostic) { - this.from = from; - this.to = to; - this.diagnostic = diagnostic; + h(i1, "changeBySelectedLine"); + var Mw = h((param) => { + var r = param.state, + e = param.dispatch; + return r.readOnly + ? !1 + : (e( + r.update( + i1(r, (t, i) => { + i.push({ from: t.from, insert: r.facet(yu) }); + }), + { userEvent: "input.indent" } + ) + ), + !0); + }, "indentMore"), + Pw = h((param) => { + var r = param.state, + e = param.dispatch; + return r.readOnly + ? !1 + : (e( + r.update( + i1(r, (t, i) => { + var n = /^\s*/.exec(t.text)[0]; + if (!n) return; + var s = Ao(n, r.tabSize), + o = 0, + u = zD(r, Math.max(0, s - VD(r))); + for (; o < n.length && o < u.length && n.charCodeAt(o) == u.charCodeAt(o); ) o++; + i.push({ from: t.from + o, to: t.from + n.length, insert: u.slice(o) }); + }), + { userEvent: "delete.dedent" } + ) + ), + !0); + }, "indentLess"); + var r11 = { key: "Tab", run: Mw, shift: Pw }; + function At() { + var r = arguments[0]; + typeof r == "string" && (r = document.createElement(r)); + var e = 1, + t = arguments[1]; + if (t && typeof t == "object" && t.nodeType == null && !Array.isArray(t)) { + for (var i in t) + if (Object.prototype.hasOwnProperty.call(t, i)) { + var n = t[i]; + typeof n == "string" ? r.setAttribute(i, n) : n != null && (r[i] = n); + } + e++; + } + for (; e < arguments.length; e++) n1(r, arguments[e]); + return r; + } + h(At, "crelt"); + function n1(r, e) { + if (typeof e == "string") r.appendChild(document.createTextNode(e)); + else if (e != null) + if (e.nodeType != null) r.appendChild(e); + else if (Array.isArray(e)) for (var t = 0; t < e.length; t++) n1(r, e[t]); + else throw new RangeError("Unsupported child node: " + e); + } + h(n1, "add"); + var Eu = class Eu { + constructor(e, t, i) { + (this.from = e), (this.to = t), (this.diagnostic = i); } }; - __name(SelectedDiagnostic, "SelectedDiagnostic"); - var LintState = class LintState1 { - static init(diagnostics, panel, state) { - var markedDiagnostics = diagnostics; - var diagnosticFilter = state.facet(lintConfig).markerFilter; - if (diagnosticFilter) markedDiagnostics = diagnosticFilter(markedDiagnostics); - var ranges = Decoration.set( - markedDiagnostics.map((d) => { - return d.from == d.to || (d.from == d.to - 1 && state.doc.lineAt(d.from).to == d.from) - ? Decoration.widget({ - widget: new DiagnosticWidget(d), - diagnostic: d, - }).range(d.from) - : Decoration.mark({ - attributes: { - class: "cm-lintRange cm-lintRange-" + d.severity, - }, - diagnostic: d, - }).range(d.from, d.to); - }), - true + h(Eu, "SelectedDiagnostic"); + var Jt = class Jt1 { + static init(e, t, i) { + var n = e, + s = i.facet(lr).markerFilter; + s && (n = s(n)); + var o = he.set( + n.map((u) => (u.from == u.to || (u.from == u.to - 1 && i.doc.lineAt(u.from).to == u.from) ? he.widget({ widget: new vu(u), diagnostic: u }).range(u.from) : he.mark({ attributes: { class: "cm-lintRange cm-lintRange-" + u.severity }, diagnostic: u }).range(u.from, u.to))), + !0 ); - return new LintState(ranges, panel, findDiagnostic(ranges)); + return new Jt(o, t, Qr(o)); } - constructor(diagnostics, panel, selected) { - this.diagnostics = diagnostics; - this.panel = panel; - this.selected = selected; + constructor(e, t, i) { + (this.diagnostics = e), (this.panel = t), (this.selected = i); } }; - __name(LintState, "LintState"); - function findDiagnostic(diagnostics) { - var diagnostic = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, - after = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - var found = null; - diagnostics.between(after, 1e9, (from, to, param) => { - var spec = param.spec; - if (diagnostic && spec.diagnostic != diagnostic) return; - found = new SelectedDiagnostic(from, to, spec.diagnostic); - return false; - }); - return found; - } - __name(findDiagnostic, "findDiagnostic"); - function hideTooltip(tr, tooltip) { - return !!(tr.effects.some((e) => e.is(setDiagnosticsEffect)) || tr.changes.touchesRange(tooltip.pos)); - } - __name(hideTooltip, "hideTooltip"); - function maybeEnableLint(state, effects) { - return state.field(lintState, false) - ? effects - : effects.concat( - StateEffect.appendConfig.of([ - lintState, - EditorView.decorations.compute([lintState], (state2) => { - var _state2_field = state2.field(lintState), - selected = _state2_field.selected, - panel = _state2_field.panel; - return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([activeMark.range(selected.from, selected.to)]); - }), - hoverTooltip(lintTooltip, { - hideOn: hideTooltip, + h(Jt, "LintState"); + function Qr(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, + t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + var i = null; + return ( + r.between(t, 1e9, (n, s, param) => { + var o = param.spec; + if (!(e && o.diagnostic != e)) return (i = new Eu(n, s, o.diagnostic)), !1; + }), + i + ); + } + h(Qr, "findDiagnostic"); + function Lw(r, e) { + return !!(r.effects.some((t) => t.is(Ph)) || r.changes.touchesRange(e.pos)); + } + h(Lw, "hideTooltip"); + function qw(r, e) { + return r.field($t, !1) + ? e + : e.concat( + de.appendConfig.of([ + $t, + te.decorations.compute([$t], (t) => { + var _t_field = t.field($t), + i = _t_field.selected, + n = _t_field.panel; + return !i || !n || i.from == i.to ? he.none : he.set([Nw.range(i.from, i.to)]); }), - baseTheme3, + vD(Vw, { hideOn: Lw }), + Hw, ]) ); } - __name(maybeEnableLint, "maybeEnableLint"); - function setDiagnostics(state, diagnostics) { - return { - effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)]), - }; + h(qw, "maybeEnableLint"); + function Iw(r, e) { + return { effects: qw(r, [Ph.of(e)]) }; } - __name(setDiagnostics, "setDiagnostics"); - var setDiagnosticsEffect = /* @__PURE__ */ StateEffect.define(); - var togglePanel = /* @__PURE__ */ StateEffect.define(); - var movePanelSelection = /* @__PURE__ */ StateEffect.define(); - var lintState = /* @__PURE__ */ StateField.define({ - create() { - return new LintState(Decoration.none, null, null); - }, - update(value, tr) { - if (tr.docChanged) { - var mapped = value.diagnostics.map(tr.changes), - selected = null; - if (value.selected) { - var selPos = tr.changes.mapPos(value.selected.from, 1); - selected = findDiagnostic(mapped, value.selected.diagnostic, selPos) || findDiagnostic(mapped, null, selPos); - } - value = new LintState(mapped, value.panel, selected); - } - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = tr.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var effect = _step.value; - if (effect.is(setDiagnosticsEffect)) { - value = LintState.init(effect.value, value.panel, tr.state); - } else if (effect.is(togglePanel)) { - value = new LintState(value.diagnostics, effect.value ? LintPanel.open : null, value.selected); - } else if (effect.is(movePanelSelection)) { - value = new LintState(value.diagnostics, value.panel, effect.value); + h(Iw, "setDiagnostics"); + var Ph = de.define(), + o1 = de.define(), + u1 = de.define(), + $t = $e.define({ + create() { + return new Jt(he.none, null, null); + }, + update(r, e) { + if (e.docChanged) { + var t = r.diagnostics.map(e.changes), + i = null; + if (r.selected) { + var n = e.changes.mapPos(r.selected.from, 1); + i = Qr(t, r.selected.diagnostic, n) || Qr(t, null, n); } + r = new Jt(t, r.panel, i); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = e.effects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t1 = _step.value; + t1.is(Ph) ? (r = Jt.init(t1.value, r.panel, e.state)) : t1.is(o1) ? (r = new Jt(r.diagnostics, t1.value ? Xr.open : null, r.selected)) : t1.is(u1) && (r = new Jt(r.diagnostics, r.panel, t1.value)); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - } - return value; - }, - provide: (f) => [showPanel.from(f, (val) => val.panel), EditorView.decorations.from(f, (s) => s.diagnostics)], - }); - var activeMark = /* @__PURE__ */ Decoration.mark({ - class: "cm-lintRange cm-lintRange-active", - }); - function lintTooltip(view, pos, side) { - var diagnostics = view.state.field(lintState).diagnostics; - var found = [], - stackStart = 2e8, - stackEnd = 0; - diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), (from, to, param) => { - var spec = param.spec; - if (pos >= from && pos <= to && (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) { - found.push(spec.diagnostic); - stackStart = Math.min(from, stackStart); - stackEnd = Math.max(to, stackEnd); - } - }); - var diagnosticFilter = view.state.facet(lintConfig).tooltipFilter; - if (diagnosticFilter) found = diagnosticFilter(found); - if (!found.length) return null; - return { - pos: stackStart, - end: stackEnd, - above: view.state.doc.lineAt(stackStart).to < stackEnd, - create() { - return { - dom: diagnosticsTooltip(view, found), - }; + return r; }, - }; + provide: (r) => [nu.from(r, (e) => e.panel), te.decorations.from(r, (e) => e.diagnostics)], + }); + var Nw = he.mark({ class: "cm-lintRange cm-lintRange-active" }); + function Vw(r, e, t) { + var _r_state_field = r.state.field($t), + i = _r_state_field.diagnostics, + n = [], + s = 2e8, + o = 0; + i.between(e - (t < 0 ? 1 : 0), e + (t > 0 ? 1 : 0), (l, a, param) => { + var c = param.spec; + e >= l && e <= a && (l == a || ((e > l || t > 0) && (e < a || t < 0))) && (n.push(c.diagnostic), (s = Math.min(l, s)), (o = Math.max(a, o))); + }); + var u = r.state.facet(lr).tooltipFilter; + return ( + u && (n = u(n)), + n.length + ? { + pos: s, + end: o, + above: r.state.doc.lineAt(s).to < o, + create() { + return { dom: zw(r, n) }; + }, + } + : null + ); } - __name(lintTooltip, "lintTooltip"); - function diagnosticsTooltip(view, diagnostics) { - return crelt( + h(Vw, "lintTooltip"); + function zw(r, e) { + return At( "ul", - { - class: "cm-tooltip-lint", - }, - diagnostics.map((d) => renderDiagnostic(view, d, false)) + { class: "cm-tooltip-lint" }, + e.map((t) => h1(r, t, !1)) ); } - __name(diagnosticsTooltip, "diagnosticsTooltip"); - var closeLintPanel = /* @__PURE__ */ __name((view) => { - var field = view.state.field(lintState, false); - if (!field || !field.panel) return false; - view.dispatch({ - effects: togglePanel.of(false), - }); - return true; + h(zw, "diagnosticsTooltip"); + var s1 = h((r) => { + var e = r.state.field($t, !1); + return !e || !e.panel ? !1 : (r.dispatch({ effects: o1.of(!1) }), !0); }, "closeLintPanel"); - var lintPlugin = /* @__PURE__ */ ViewPlugin.fromClass( - class { - run() { - var now = Date.now(); - if (now < this.lintTime - 10) { - setTimeout(this.run, this.lintTime - now); - } else { - this.set = false; - var state = this.view.state, - sources = state.facet(lintConfig).sources; - Promise.all(sources.map((source) => Promise.resolve(source(this.view)))).then( - (annotations) => { - var all = annotations.reduce((a, b) => a.concat(b)); - if (this.view.state.doc == state.doc) this.view.dispatch(setDiagnostics(this.view.state, all)); - }, - (error) => { - logException(this.view.state, error); - } - ); - } - } - update(update2) { - var config = update2.state.facet(lintConfig); - if (update2.docChanged || config != update2.startState.facet(lintConfig)) { - this.lintTime = Date.now() + config.delay; - if (!this.set) { - this.set = true; - this.timeout = setTimeout(this.run, config.delay); + var Ww = ze.fromClass( + class { + run() { + var r = Date.now(); + if (r < this.lintTime - 10) setTimeout(this.run, this.lintTime - r); + else { + this.set = !1; + var _this_view = this.view, + e = _this_view.state, + _e_facet = e.facet(lr), + t = _e_facet.sources; + Promise.all(t.map((i) => Promise.resolve(i(this.view)))).then( + (i) => { + var n = i.reduce((s, o) => s.concat(o)); + this.view.state.doc == e.doc && this.view.dispatch(Iw(this.view.state, n)); + }, + (i) => { + Ft(this.view.state, i); + } + ); } } - } - force() { - if (this.set) { - this.lintTime = Date.now(); - this.run(); + update(r) { + var e = r.state.facet(lr); + (r.docChanged || e != r.startState.facet(lr) || (e.needsRefresh && e.needsRefresh(r))) && ((this.lintTime = Date.now() + e.delay), this.set || ((this.set = !0), (this.timeout = setTimeout(this.run, e.delay)))); + } + force() { + this.set && ((this.lintTime = Date.now()), this.run()); + } + destroy() { + clearTimeout(this.timeout); + } + constructor(r) { + (this.view = r), (this.timeout = -1), (this.set = !0); + var _r_state_facet = r.state.facet(lr), + e = _r_state_facet.delay; + (this.lintTime = Date.now() + e), (this.run = this.run.bind(this)), (this.timeout = setTimeout(this.run, e)); } } - destroy() { - clearTimeout(this.timeout); - } - constructor(view) { - this.view = view; - this.timeout = -1; - this.set = true; - var delay = view.state.facet(lintConfig).delay; - this.lintTime = Date.now() + delay; - this.run = this.run.bind(this); - this.timeout = setTimeout(this.run, delay); - } - } - ); - var lintConfig = /* @__PURE__ */ Facet.define({ - combine(input) { - return Object.assign( - { - sources: input.map((i) => i.source), - }, - combineConfig( - input.map((i) => i.config), - { - delay: 750, - markerFilter: null, - tooltipFilter: null, - } - ) - ); - }, - enables: lintPlugin, - }); - function linter(source) { - var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - return lintConfig.of({ - source, - config, + ), + lr = H.define({ + combine(r) { + return Object.assign( + { sources: r.map((e) => e.source) }, + ui( + r.map((e) => e.config), + { delay: 750, markerFilter: null, tooltipFilter: null, needsRefresh: null }, + { needsRefresh: (e, t) => (e ? (t ? (i) => e(i) || t(i) : e) : t) } + ) + ); + }, + enables: Ww, }); + function l1(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + return lr.of({ source: r, config: e }); } - __name(linter, "linter"); - function assignKeys(actions) { - var assigned = []; + h(l1, "linter"); + function a1(r) { + var e = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - if (actions) + if (r) try { var _loop = function () { var _loop = function (i) { - var ch = name2[i]; - if (/[a-zA-Z]/.test(ch) && !assigned.some((c) => c.toLowerCase() == ch.toLowerCase())) { - assigned.push(ch); - return "continue|actions"; + var n = t[i]; + if (/[a-zA-Z]/.test(n) && !e.some((s) => s.toLowerCase() == n.toLowerCase())) { + e.push(n); + return "continue|e"; } }; var _step_value = _step.value, - name2 = _step_value.name; - for (var i = 0; i < name2.length; i++) { + t = _step_value.name; + for (var i = 0; i < t.length; i++) { var _ret = _loop(i); switch (_ret) { - case "continue|actions": - return "continue|actions"; + case "continue|e": + return "continue|e"; } } - assigned.push(""); + e.push(""); }; - actions: for (var _iterator = actions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + e: for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _ret = _loop(); switch (_ret) { - case "continue|actions": - continue actions; + case "continue|e": + continue e; } } } catch (err) { @@ -25179,182 +19937,115 @@ var __generator = } } } - return assigned; + return e; } - __name(assignKeys, "assignKeys"); - function renderDiagnostic(view, diagnostic, inPanel) { - var _a2; - var keys = inPanel ? assignKeys(diagnostic.actions) : []; - return crelt( + h(a1, "assignKeys"); + function h1(r, e, t) { + var i; + var n = t ? a1(e.actions) : []; + return At( "li", - { - class: "cm-diagnostic cm-diagnostic-" + diagnostic.severity, - }, - crelt( - "span", - { - class: "cm-diagnosticText", - }, - diagnostic.renderMessage ? diagnostic.renderMessage() : diagnostic.message - ), - (_a2 = diagnostic.actions) === null || _a2 === void 0 + { class: "cm-diagnostic cm-diagnostic-" + e.severity }, + At("span", { class: "cm-diagnosticText" }, e.renderMessage ? e.renderMessage() : e.message), + (i = e.actions) === null || i === void 0 ? void 0 - : _a2.map((action, i) => { - var click = /* @__PURE__ */ __name((e) => { - e.preventDefault(); - var found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic); - if (found) action.apply(view, found.from, found.to); - }, "click"); - var name2 = action.name, - keyIndex = keys[i] ? name2.indexOf(keys[i]) : -1; - var nameElt = keyIndex < 0 ? name2 : [name2.slice(0, keyIndex), crelt("u", name2.slice(keyIndex, keyIndex + 1)), name2.slice(keyIndex + 1)]; - return crelt( - "button", - { - type: "button", - class: "cm-diagnosticAction", - onclick: click, - onmousedown: click, - "aria-label": " Action: ".concat(name2).concat(keyIndex < 0 ? "" : ' (access key "'.concat(keys[i], ')"'), "."), - }, - nameElt - ); + : i.map((s, o) => { + var u = !1, + l = h((d) => { + if ((d.preventDefault(), u)) return; + u = !0; + var p = Qr(r.state.field($t).diagnostics, e); + p && s.apply(r, p.from, p.to); + }, "click"), + a = s.name, + c = n[o] ? a.indexOf(n[o]) : -1, + f = c < 0 ? a : [a.slice(0, c), At("u", a.slice(c, c + 1)), a.slice(c + 1)]; + return At("button", { type: "button", class: "cm-diagnosticAction", onclick: l, onmousedown: l, "aria-label": " Action: ".concat(a).concat(c < 0 ? "" : ' (access key "'.concat(n[o], ')"'), ".") }, f); }), - diagnostic.source && - crelt( - "div", - { - class: "cm-diagnosticSource", - }, - diagnostic.source - ) + e.source && At("div", { class: "cm-diagnosticSource" }, e.source) ); } - __name(renderDiagnostic, "renderDiagnostic"); - var DiagnosticWidget = class DiagnosticWidget extends WidgetType { - eq(other) { - return other.diagnostic == this.diagnostic; + h(h1, "renderDiagnostic"); + var vu = class vu extends Ht { + eq(e) { + return e.diagnostic == this.diagnostic; } toDOM() { - return crelt("span", { - class: "cm-lintPoint cm-lintPoint-" + this.diagnostic.severity, - }); + return At("span", { class: "cm-lintPoint cm-lintPoint-" + this.diagnostic.severity }); } - constructor(diagnostic) { - super(); - this.diagnostic = diagnostic; + constructor(e) { + super(), (this.diagnostic = e); } }; - __name(DiagnosticWidget, "DiagnosticWidget"); - var PanelItem = class PanelItem { - constructor(view, diagnostic) { - this.diagnostic = diagnostic; - this.id = "item_" + Math.floor(Math.random() * 4294967295).toString(16); - this.dom = renderDiagnostic(view, diagnostic, true); - this.dom.id = this.id; - this.dom.setAttribute("role", "option"); + h(vu, "DiagnosticWidget"); + var rs = class rs { + constructor(e, t) { + (this.diagnostic = t), (this.id = "item_" + Math.floor(Math.random() * 4294967295).toString(16)), (this.dom = h1(e, t, !0)), (this.dom.id = this.id), this.dom.setAttribute("role", "option"); } }; - __name(PanelItem, "PanelItem"); - var LintPanel = class LintPanel1 { + h(rs, "PanelItem"); + var Xr = class Xr1 { get selectedIndex() { - var selected = this.view.state.field(lintState).selected; - if (!selected) return -1; - for (var i = 0; i < this.items.length; i++) if (this.items[i].diagnostic == selected.diagnostic) return i; + var e = this.view.state.field($t).selected; + if (!e) return -1; + for (var t = 0; t < this.items.length; t++) if (this.items[t].diagnostic == e.diagnostic) return t; return -1; } update() { - var _this_view_state_field = this.view.state.field(lintState), - diagnostics = _this_view_state_field.diagnostics, - selected = _this_view_state_field.selected; - var i = 0, - needsSync = false, - newSelectedItem = null; - diagnostics.between(0, this.view.state.doc.length, (_start, _end, param) => { - var spec = param.spec; - var found = -1, - item; - for (var j = i; j < this.items.length; j++) - if (this.items[j].diagnostic == spec.diagnostic) { - found = j; - break; - } - if (found < 0) { - item = new PanelItem(this.view, spec.diagnostic); - this.items.splice(i, 0, item); - needsSync = true; - } else { - item = this.items[found]; - if (found > i) { - this.items.splice(i, found - i); - needsSync = true; - } - } - if (selected && item.diagnostic == selected.diagnostic) { - if (!item.dom.hasAttribute("aria-selected")) { - item.dom.setAttribute("aria-selected", "true"); - newSelectedItem = item; - } - } else if (item.dom.hasAttribute("aria-selected")) { - item.dom.removeAttribute("aria-selected"); - } - i++; - }); - while (i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0)) { - needsSync = true; - this.items.pop(); - } - if (this.items.length == 0) { - this.items.push( - new PanelItem(this.view, { - from: -1, - to: -1, - severity: "info", - message: this.view.state.phrase("No diagnostics"), - }) - ); - needsSync = true; - } - if (newSelectedItem) { - this.list.setAttribute("aria-activedescendant", newSelectedItem.id); - this.view.requestMeasure({ - key: this, - read: () => ({ - sel: newSelectedItem.dom.getBoundingClientRect(), - panel: this.list.getBoundingClientRect(), - }), - write: (param) => { - var sel = param.sel, - panel = param.panel; - if (sel.top < panel.top) this.list.scrollTop -= panel.top - sel.top; - else if (sel.bottom > panel.bottom) this.list.scrollTop += sel.bottom - panel.bottom; - }, + var _this_view_state_field = this.view.state.field($t), + e = _this_view_state_field.diagnostics, + t = _this_view_state_field.selected, + i = 0, + n = !1, + s = null; + for ( + e.between(0, this.view.state.doc.length, (o, u, param) => { + var l = param.spec; + var a = -1, + c; + for (var f = i; f < this.items.length; f++) + if (this.items[f].diagnostic == l.diagnostic) { + a = f; + break; + } + a < 0 ? ((c = new rs(this.view, l.diagnostic)), this.items.splice(i, 0, c), (n = !0)) : ((c = this.items[a]), a > i && (this.items.splice(i, a - i), (n = !0))), t && c.diagnostic == t.diagnostic ? c.dom.hasAttribute("aria-selected") || (c.dom.setAttribute("aria-selected", "true"), (s = c)) : c.dom.hasAttribute("aria-selected") && c.dom.removeAttribute("aria-selected"), i++; }); - } else if (this.selectedIndex < 0) { - this.list.removeAttribute("aria-activedescendant"); - } - if (needsSync) this.sync(); + i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0); + + ) + (n = !0), this.items.pop(); + this.items.length == 0 && (this.items.push(new rs(this.view, { from: -1, to: -1, severity: "info", message: this.view.state.phrase("No diagnostics") })), (n = !0)), + s + ? (this.list.setAttribute("aria-activedescendant", s.id), + this.view.requestMeasure({ + key: this, + read: () => ({ sel: s.dom.getBoundingClientRect(), panel: this.list.getBoundingClientRect() }), + write: (param) => { + var o = param.sel, + u = param.panel; + o.top < u.top ? (this.list.scrollTop -= u.top - o.top) : o.bottom > u.bottom && (this.list.scrollTop += o.bottom - u.bottom); + }, + })) + : this.selectedIndex < 0 && this.list.removeAttribute("aria-activedescendant"), + n && this.sync(); } sync() { - var domPos = this.list.firstChild; - function rm2() { - var prev = domPos; - domPos = prev.nextSibling; - prev.remove(); + var e = this.list.firstChild; + function t() { + var i = e; + (e = i.nextSibling), i.remove(); } - __name(rm2, "rm"); + h(t, "rm"); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var item = _step.value; - if (item.dom.parentNode == this.list) { - while (domPos != item.dom) rm2(); - domPos = item.dom.nextSibling; - } else { - this.list.insertBefore(item.dom, domPos); - } + var i = _step.value; + if (i.dom.parentNode == this.list) { + for (; e != i.dom; ) t(); + e = i.dom.nextSibling; + } else this.list.insertBefore(i.dom, e); } } catch (err) { _didIteratorError = true; @@ -25370,609 +20061,381 @@ var __generator = } } } - while (domPos) rm2(); + for (; e; ) t(); } - moveSelection(selectedIndex) { + moveSelection(e) { if (this.selectedIndex < 0) return; - var field = this.view.state.field(lintState); - var selection = findDiagnostic(field.diagnostics, this.items[selectedIndex].diagnostic); - if (!selection) return; - this.view.dispatch({ - selection: { - anchor: selection.from, - head: selection.to, - }, - scrollIntoView: true, - effects: movePanelSelection.of(selection), - }); - } - static open(view) { - return new LintPanel(view); - } - constructor(view) { - this.view = view; - this.items = []; - var onkeydown = /* @__PURE__ */ __name((event) => { - if (event.keyCode == 27) { - closeLintPanel(this.view); - this.view.focus(); - } else if (event.keyCode == 38 || event.keyCode == 33) { - this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length); - } else if (event.keyCode == 40 || event.keyCode == 34) { - this.moveSelection((this.selectedIndex + 1) % this.items.length); - } else if (event.keyCode == 36) { - this.moveSelection(0); - } else if (event.keyCode == 35) { - this.moveSelection(this.items.length - 1); - } else if (event.keyCode == 13) { - this.view.focus(); - } else if (event.keyCode >= 65 && event.keyCode <= 90 && this.selectedIndex >= 0) { - var diagnostic = this.items[this.selectedIndex].diagnostic, - keys = assignKeys(diagnostic.actions); - for (var i = 0; i < keys.length; i++) - if (keys[i].toUpperCase().charCodeAt(0) == event.keyCode) { - var found = findDiagnostic(this.view.state.field(lintState).diagnostics, diagnostic); - if (found) diagnostic.actions[i].apply(view, found.from, found.to); - } - } else { - return; - } - event.preventDefault(); - }, "onkeydown"); - var onclick = /* @__PURE__ */ __name((event) => { - for (var i = 0; i < this.items.length; i++) { - if (this.items[i].dom.contains(event.target)) this.moveSelection(i); - } - }, "onclick"); - this.list = crelt("ul", { - tabIndex: 0, - role: "listbox", - "aria-label": this.view.state.phrase("Diagnostics"), - onkeydown, - onclick, - }); - this.dom = crelt( - "div", - { - class: "cm-panel-lint", - }, - this.list, - crelt( - "button", - { - type: "button", - name: "close", - "aria-label": this.view.state.phrase("close"), - onclick: () => closeLintPanel(this.view), - }, - "\xd7" - ) - ); - this.update(); + var t = this.view.state.field($t), + i = Qr(t.diagnostics, this.items[e].diagnostic); + i && this.view.dispatch({ selection: { anchor: i.from, head: i.to }, scrollIntoView: !0, effects: u1.of(i) }); + } + static open(e) { + return new Xr(e); + } + constructor(e) { + (this.view = e), (this.items = []); + var t = h((n) => { + if (n.keyCode == 27) s1(this.view), this.view.focus(); + else if (n.keyCode == 38 || n.keyCode == 33) this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length); + else if (n.keyCode == 40 || n.keyCode == 34) this.moveSelection((this.selectedIndex + 1) % this.items.length); + else if (n.keyCode == 36) this.moveSelection(0); + else if (n.keyCode == 35) this.moveSelection(this.items.length - 1); + else if (n.keyCode == 13) this.view.focus(); + else if (n.keyCode >= 65 && n.keyCode <= 90 && this.selectedIndex >= 0) { + var _this_items_this_selectedIndex = this.items[this.selectedIndex], + s = _this_items_this_selectedIndex.diagnostic, + o = a1(s.actions); + for (var u = 0; u < o.length; u++) + if (o[u].toUpperCase().charCodeAt(0) == n.keyCode) { + var l = Qr(this.view.state.field($t).diagnostics, s); + l && s.actions[u].apply(e, l.from, l.to); + } + } else return; + n.preventDefault(); + }, "onkeydown"), + i = h((n) => { + for (var s = 0; s < this.items.length; s++) this.items[s].dom.contains(n.target) && this.moveSelection(s); + }, "onclick"); + (this.list = At("ul", { tabIndex: 0, role: "listbox", "aria-label": this.view.state.phrase("Diagnostics"), onkeydown: t, onclick: i })), (this.dom = At("div", { class: "cm-panel-lint" }, this.list, At("button", { type: "button", name: "close", "aria-label": this.view.state.phrase("close"), onclick: () => s1(this.view) }, "\xd7"))), this.update(); } }; - __name(LintPanel, "LintPanel"); - function svg(content2) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'viewBox="0 0 40 40"'; - return 'url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" '.concat(attrs, ">").concat(encodeURIComponent(content2), "</svg>')"); - } - __name(svg, "svg"); - function underline(color) { - return svg('<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="'.concat(color, '" fill="none" stroke-width=".7"/>'), 'width="6" height="3"'); - } - __name(underline, "underline"); - var baseTheme3 = /* @__PURE__ */ EditorView.baseTheme({ - ".cm-diagnostic": { - padding: "3px 6px 3px 8px", - marginLeft: "-1px", - display: "block", - whiteSpace: "pre-wrap", - }, - ".cm-diagnostic-error": { - borderLeft: "5px solid #d11", - }, - ".cm-diagnostic-warning": { - borderLeft: "5px solid orange", - }, - ".cm-diagnostic-info": { - borderLeft: "5px solid #999", - }, - ".cm-diagnosticAction": { - font: "inherit", - border: "none", - padding: "2px 4px", - backgroundColor: "#444", - color: "white", - borderRadius: "3px", - marginLeft: "8px", - }, - ".cm-diagnosticSource": { - fontSize: "70%", - opacity: 0.7, - }, - ".cm-lintRange": { - backgroundPosition: "left bottom", - backgroundRepeat: "repeat-x", - paddingBottom: "0.7px", - }, - ".cm-lintRange-error": { - backgroundImage: /* @__PURE__ */ underline("#d11"), - }, - ".cm-lintRange-warning": { - backgroundImage: /* @__PURE__ */ underline("orange"), - }, - ".cm-lintRange-info": { - backgroundImage: /* @__PURE__ */ underline("#999"), - }, - ".cm-lintRange-active": { - backgroundColor: "#ffdd9980", - }, - ".cm-tooltip-lint": { - padding: 0, - margin: 0, - }, - ".cm-lintPoint": { - position: "relative", - "&:after": { - content: '""', - position: "absolute", - bottom: 0, - left: "-2px", - borderLeft: "3px solid transparent", - borderRight: "3px solid transparent", - borderBottom: "4px solid #d11", - }, - }, - ".cm-lintPoint-warning": { - "&:after": { - borderBottomColor: "orange", - }, - }, - ".cm-lintPoint-info": { - "&:after": { - borderBottomColor: "#999", - }, - }, + h(Xr, "LintPanel"); + function jw(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'viewBox="0 0 40 40"'; + return 'url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" '.concat(e, ">").concat(encodeURIComponent(r), "</svg>')"); + } + h(jw, "svg"); + function Mh(r) { + return jw('<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="'.concat(r, '" fill="none" stroke-width=".7"/>'), 'width="6" height="3"'); + } + h(Mh, "underline"); + var Hw = te.baseTheme({ + ".cm-diagnostic": { padding: "3px 6px 3px 8px", marginLeft: "-1px", display: "block", whiteSpace: "pre-wrap" }, + ".cm-diagnostic-error": { borderLeft: "5px solid #d11" }, + ".cm-diagnostic-warning": { borderLeft: "5px solid orange" }, + ".cm-diagnostic-info": { borderLeft: "5px solid #999" }, + ".cm-diagnosticAction": { font: "inherit", border: "none", padding: "2px 4px", backgroundColor: "#444", color: "white", borderRadius: "3px", marginLeft: "8px", cursor: "pointer" }, + ".cm-diagnosticSource": { fontSize: "70%", opacity: 0.7 }, + ".cm-lintRange": { backgroundPosition: "left bottom", backgroundRepeat: "repeat-x", paddingBottom: "0.7px" }, + ".cm-lintRange-error": { backgroundImage: Mh("#d11") }, + ".cm-lintRange-warning": { backgroundImage: Mh("orange") }, + ".cm-lintRange-info": { backgroundImage: Mh("#999") }, + ".cm-lintRange-active": { backgroundColor: "#ffdd9980" }, + ".cm-tooltip-lint": { padding: 0, margin: 0 }, + ".cm-lintPoint": { position: "relative", "&:after": { content: '""', position: "absolute", bottom: 0, left: "-2px", borderLeft: "3px solid transparent", borderRight: "3px solid transparent", borderBottom: "4px solid #d11" } }, + ".cm-lintPoint-warning": { "&:after": { borderBottomColor: "orange" } }, + ".cm-lintPoint-info": { "&:after": { borderBottomColor: "#999" } }, ".cm-panel.cm-panel-lint": { position: "relative", - "& ul": { - maxHeight: "100px", - overflowY: "auto", - "& [aria-selected]": { - backgroundColor: "#ddd", - "& u": { - textDecoration: "underline", - }, - }, - "&:focus [aria-selected]": { - background_fallback: "#bdf", - backgroundColor: "Highlight", - color_fallback: "white", - color: "HighlightText", - }, - "& u": { - textDecoration: "none", - }, - padding: 0, - margin: 0, - }, - "& [name=close]": { - position: "absolute", - top: "0", - right: "2px", - background: "inherit", - border: "none", - font: "inherit", - padding: 0, - margin: 0, - }, + "& ul": { maxHeight: "100px", overflowY: "auto", "& [aria-selected]": { backgroundColor: "#ddd", "& u": { textDecoration: "underline" } }, "&:focus [aria-selected]": { background_fallback: "#bdf", backgroundColor: "Highlight", color_fallback: "white", color: "HighlightText" }, "& u": { textDecoration: "none" }, padding: 0, margin: 0 }, + "& [name=close]": { position: "absolute", top: "0", right: "2px", background: "inherit", border: "none", font: "inherit", padding: 0, margin: 0 }, }, }); - // src/ui/CopyButton.svelte - function create_fragment(ctx) { - var button; - var mounted; - var dispose; + function Uw(r) { + var e, t, i; return { c() { - button = element("button"); - button.innerHTML = - '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" class="svelte-1ha11jr"><path d="M704 896H64V320h640v192h64V192c0-35-29-64-64-64H512C512 57 455 0 384 0S256 57 256 128H64c-35 0-64 29-64 64v704c0 35 29 64 64 64h640c35 0 64-29 64-64V768h-64v128zM192 192h64s64-29 64-64 29-64 64-64 64 29 64 64 32 64 64 64h64s64 29 64 64H128c0-39 28-64 64-64zm-64 512h128v-64H128v64zm448-128V448L320 640l256 192V704h320V576H576zM128 832h192v-64H128v64zm320-448H128v64h320v-64zM256 512H128v64h128v-64z"></path></svg>'; - attr(button, "class", "btn svelte-1ha11jr"); - attr(button, "id", "copy"); - attr(button, "title", "Copy bibtex"); - toggle_class(button, "copied", ctx[0]); - }, - m(target, anchor) { - insert(target, button, anchor); - if (!mounted) { - dispose = listen(button, "click", ctx[1]); - mounted = true; - } - }, - p(ctx2, param) { + (e = T("button")), + (e.innerHTML = + '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" class="svelte-1ha11jr"><path d="M704 896H64V320h640v192h64V192c0-35-29-64-64-64H512C512 57 455 0 384 0S256 57 256 128H64c-35 0-64 29-64 64v704c0 35 29 64 64 64h640c35 0 64-29 64-64V768h-64v128zM192 192h64s64-29 64-64 29-64 64-64 64 29 64 64 32 64 64 64h64s64 29 64 64H128c0-39 28-64 64-64zm-64 512h128v-64H128v64zm448-128V448L320 640l256 192V704h320V576H576zM128 832h192v-64H128v64zm320-448H128v64h320v-64zM256 512H128v64h128v-64z"></path></svg>'), + v(e, "class", "btn svelte-1ha11jr"), + v(e, "id", "copy"), + v(e, "title", "Copy bibtex"), + kr(e, "copied", r[0]); + }, + m(n, s) { + C(n, e, s), t || ((i = ye(e, "click", r[1])), (t = !0)); + }, + p(n, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (dirty & 1) { - toggle_class(button, "copied", ctx2[0]); - } + s = _param[0]; + s & 1 && kr(e, "copied", n[0]); }, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(button); - mounted = false; - dispose(); + i: xe, + o: xe, + d(n) { + n && y(e), (t = !1), i(); }, }; } - __name(create_fragment, "create_fragment"); - function instance($$self, $$props, $$invalidate) { - var resetCopyBtnTimeout; - var showAsCopied = false; - var bibtex = $$props.bibtex; - var handleCopy = /* @__PURE__ */ __name( - /*#__PURE__*/ _asyncToGenerator(function () { - var _a2; - return __generator(this, function (_state) { - switch (_state.label) { - case 0: - _state.trys.push([0, 2, , 3]); - return [4, navigator.clipboard.writeText(bibtex)]; - case 1: - _state.sent(); - $$invalidate(0, (showAsCopied = true)); - clearInterval(resetCopyBtnTimeout); - resetCopyBtnTimeout = setTimeout(() => $$invalidate(0, (showAsCopied = false)), 3e3); - return [3, 3]; - case 2: - _a2 = _state.sent(); - alert("Failed to copy"); - return [3, 3]; - case 3: - return [2]; - } - }); + h(Uw, "create_fragment"); + function Yw(r, e, t) { + var i, + n = !1, + s = e.bibtex, + o = h( + _asyncToGenerator(function () { + var u; + return __generator(this, function (_state) { + switch (_state.label) { + case 0: + _state.trys.push([0, 2, , 3]); + return [4, navigator.clipboard.writeText(s)]; + case 1: + _state.sent(), t(0, (n = !0)), clearInterval(i), (i = setTimeout(() => t(0, (n = !1)), 3e3)); + return [3, 3]; + case 2: + u = _state.sent(); + alert("Failed to copy"); + return [3, 3]; + case 3: + return [2]; + } + }); + }), + "handleCopy" + ); + return ( + (r.$$set = (u) => { + "bibtex" in u && t(2, (s = u.bibtex)); }), - "handleCopy" + [n, o, s] ); - $$self.$$set = ($$props2) => { - if ("bibtex" in $$props2) $$invalidate(2, (bibtex = $$props2.bibtex)); - }; - return [showAsCopied, handleCopy, bibtex]; - } - __name(instance, "instance"); - var CopyButton = class CopyButton extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance, create_fragment, safe_not_equal, { - bibtex: 2, - }); + } + h(Yw, "instance"); + var ku = class ku extends re { + constructor(e) { + super(), se(this, e, Yw, Uw, ne, { bibtex: 2 }); } }; - __name(CopyButton, "CopyButton"); - var CopyButton_default = CopyButton; - // node_modules/@lezer/lr/dist/index.js - var Stack = class Stack1 { + h(ku, "CopyButton"); + var c1 = ku; + var ar = class ar1 { toString() { return "[" - .concat(this.stack.filter((_, i) => i % 3 == 0).concat(this.state), "]@") + .concat(this.stack.filter((e, t) => t % 3 == 0).concat(this.state), "]@") .concat(this.pos) .concat(this.score ? "!" + this.score : ""); } - static start(p, state) { - var pos = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - var cx = p.parser.context; - return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null); + static start(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; + var n = e.parser.context; + return new ar(e, [], t, i, i, 0, [], 0, n ? new ss(n, n.start) : null, 0, null); } get context() { return this.curContext ? this.curContext.context : null; } - pushState(state, start) { - this.stack.push(this.state, start, this.bufferBase + this.buffer.length); - this.state = state; - } - reduce(action) { - var depth = action >> 19, - type = action & 65535; - var _this_p = this.p, - parser2 = _this_p.parser; - var dPrec = parser2.dynamicPrecedence(type); - if (dPrec) this.score += dPrec; - if (depth == 0) { - this.pushState(parser2.getGoto(this.state, type, true), this.reducePos); - if (type < parser2.minRepeatTerm) this.storeNode(type, this.reducePos, this.reducePos, 4, true); - this.reduceContext(type, this.reducePos); + pushState(e, t) { + this.stack.push(this.state, t, this.bufferBase + this.buffer.length), (this.state = e); + } + reduce(e) { + var t; + var i = e >> 19, + n = e & 65535, + _this_p = this.p, + s = _this_p.parser, + o = s.dynamicPrecedence(n); + if ((o && (this.score += o), i == 0)) { + this.pushState(s.getGoto(this.state, n, !0), this.reducePos), n < s.minRepeatTerm && this.storeNode(n, this.reducePos, this.reducePos, 4, !0), this.reduceContext(n, this.reducePos); return; } - var base2 = this.stack.length - (depth - 1) * 3 - (action & 262144 ? 6 : 0); - var start = this.stack[base2 - 2]; - var bufferBase = this.stack[base2 - 1], - count = this.bufferBase + this.buffer.length - bufferBase; - if (type < parser2.minRepeatTerm || action & 131072) { - var pos = parser2.stateFlag(this.state, 1) ? this.pos : this.reducePos; - this.storeNode(type, start, pos, count + 4, true); - } - if (action & 262144) { - this.state = this.stack[base2]; - } else { - var baseStateID = this.stack[base2 - 3]; - this.state = parser2.getGoto(baseStateID, type, true); - } - while (this.stack.length > base2) this.stack.pop(); - this.reduceContext(type, start); - } - storeNode(term, start, end) { - var size = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 4, - isReduce = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false; - if (term == 0 && (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) { - var cur = this, - top2 = this.buffer.length; - if (top2 == 0 && cur.parent) { - top2 = cur.bufferBase - cur.parent.bufferBase; - cur = cur.parent; - } - if (top2 > 0 && cur.buffer[top2 - 4] == 0 && cur.buffer[top2 - 1] > -1) { - if (start == end) return; - if (cur.buffer[top2 - 2] >= start) { - cur.buffer[top2 - 2] = end; + var u = this.stack.length - (i - 1) * 3 - (e & 262144 ? 6 : 0), + l = u ? this.stack[u - 2] : this.p.ranges[0].from, + a = this.reducePos - l; + a >= 2e3 && !(!((t = this.p.parser.nodeSet.types[n]) === null || t === void 0) && t.isAnonymous) && (l == this.p.lastBigReductionStart ? (this.p.bigReductionCount++, (this.p.lastBigReductionSize = a)) : this.p.lastBigReductionSize < a && ((this.p.bigReductionCount = 1), (this.p.lastBigReductionStart = l), (this.p.lastBigReductionSize = a))); + var c = u ? this.stack[u - 1] : 0, + f = this.bufferBase + this.buffer.length - c; + if (n < s.minRepeatTerm || e & 131072) { + var d = s.stateFlag(this.state, 1) ? this.pos : this.reducePos; + this.storeNode(n, l, d, f + 4, !0); + } + if (e & 262144) this.state = this.stack[u]; + else { + var d1 = this.stack[u - 3]; + this.state = s.getGoto(d1, n, !0); + } + for (; this.stack.length > u; ) this.stack.pop(); + this.reduceContext(n, l); + } + storeNode(e, t, i) { + var n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 4, + s = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !1; + if (e == 0 && (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) { + var o = this, + u = this.buffer.length; + if ((u == 0 && o.parent && ((u = o.bufferBase - o.parent.bufferBase), (o = o.parent)), u > 0 && o.buffer[u - 4] == 0 && o.buffer[u - 1] > -1)) { + if (t == i) return; + if (o.buffer[u - 2] >= t) { + o.buffer[u - 2] = i; return; } } } - if (!isReduce || this.pos == end) { - this.buffer.push(term, start, end, size); - } else { - var index = this.buffer.length; - if (index > 0 && this.buffer[index - 4] != 0) - while (index > 0 && this.buffer[index - 2] > end) { - this.buffer[index] = this.buffer[index - 4]; - this.buffer[index + 1] = this.buffer[index - 3]; - this.buffer[index + 2] = this.buffer[index - 2]; - this.buffer[index + 3] = this.buffer[index - 1]; - index -= 4; - if (size > 4) size -= 4; - } - this.buffer[index] = term; - this.buffer[index + 1] = start; - this.buffer[index + 2] = end; - this.buffer[index + 3] = size; - } - } - shift(action, next, nextEnd) { - var start = this.pos; - if (action & 131072) { - this.pushState(action & 65535, this.pos); - } else if ((action & 262144) == 0) { - var nextState = action, + if (!s || this.pos == i) this.buffer.push(e, t, i, n); + else { + var o1 = this.buffer.length; + if (o1 > 0 && this.buffer[o1 - 4] != 0) for (; o1 > 0 && this.buffer[o1 - 2] > i; ) (this.buffer[o1] = this.buffer[o1 - 4]), (this.buffer[o1 + 1] = this.buffer[o1 - 3]), (this.buffer[o1 + 2] = this.buffer[o1 - 2]), (this.buffer[o1 + 3] = this.buffer[o1 - 1]), (o1 -= 4), n > 4 && (n -= 4); + (this.buffer[o1] = e), (this.buffer[o1 + 1] = t), (this.buffer[o1 + 2] = i), (this.buffer[o1 + 3] = n); + } + } + shift(e, t, i) { + var n = this.pos; + if (e & 131072) this.pushState(e & 65535, this.pos); + else if (e & 262144) (this.pos = i), this.shiftContext(t, n), t <= this.p.parser.maxNode && this.buffer.push(t, n, i, 4); + else { + var s = e, _this_p = this.p, - parser2 = _this_p.parser; - if (nextEnd > this.pos || next <= parser2.maxNode) { - this.pos = nextEnd; - if (!parser2.stateFlag(nextState, 1)) this.reducePos = nextEnd; - } - this.pushState(nextState, start); - this.shiftContext(next, start); - if (next <= parser2.maxNode) this.buffer.push(next, start, nextEnd, 4); - } else { - this.pos = nextEnd; - this.shiftContext(next, start); - if (next <= this.p.parser.maxNode) this.buffer.push(next, start, nextEnd, 4); + o = _this_p.parser; + (i > this.pos || t <= o.maxNode) && ((this.pos = i), o.stateFlag(s, 1) || (this.reducePos = i)), this.pushState(s, n), this.shiftContext(t, n), t <= o.maxNode && this.buffer.push(t, n, i, 4); } } - apply(action, next, nextEnd) { - if (action & 65536) this.reduce(action); - else this.shift(action, next, nextEnd); + apply(e, t, i) { + e & 65536 ? this.reduce(e) : this.shift(e, t, i); } - useNode(value, next) { - var index = this.p.reused.length - 1; - if (index < 0 || this.p.reused[index] != value) { - this.p.reused.push(value); - index++; - } - var start = this.pos; - this.reducePos = this.pos = start + value.length; - this.pushState(next, start); - this.buffer.push(index, start, this.reducePos, -1); - if (this.curContext) this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length))); + useNode(e, t) { + var i = this.p.reused.length - 1; + (i < 0 || this.p.reused[i] != e) && (this.p.reused.push(e), i++); + var n = this.pos; + (this.reducePos = this.pos = n + e.length), this.pushState(t, n), this.buffer.push(i, n, this.reducePos, -1), this.curContext && this.updateContext(this.curContext.tracker.reuse(this.curContext.context, e, this, this.p.stream.reset(this.pos - e.length))); } split() { - var parent = this; - var off = parent.buffer.length; - while (off > 0 && parent.buffer[off - 2] > parent.reducePos) off -= 4; - var buffer = parent.buffer.slice(off), - base2 = parent.bufferBase + off; - while (parent && base2 == parent.bufferBase) parent = parent.parent; - return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base2, this.curContext, this.lookAhead, parent); - } - recoverByDelete(next, nextEnd) { - var isNode = next <= this.p.parser.maxNode; - if (isNode) this.storeNode(next, this.pos, nextEnd, 4); - this.storeNode(0, this.pos, nextEnd, isNode ? 8 : 4); - this.pos = this.reducePos = nextEnd; - this.score -= 190; - } - canShift(term) { - for (var sim = new SimulatedStack(this); ; ) { - var action = this.p.parser.stateSlot(sim.state, 4) || this.p.parser.hasAction(sim.state, term); - if (action == 0) return false; - if ((action & 65536) == 0) return true; - sim.reduce(action); - } - } - recoverByInsert(next) { + var e = this, + t = e.buffer.length; + for (; t > 0 && e.buffer[t - 2] > e.reducePos; ) t -= 4; + var i = e.buffer.slice(t), + n = e.bufferBase + t; + for (; e && n == e.bufferBase; ) e = e.parent; + return new ar(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, i, n, this.curContext, this.lookAhead, e); + } + recoverByDelete(e, t) { + var i = e <= this.p.parser.maxNode; + i && this.storeNode(e, this.pos, t, 4), this.storeNode(0, this.pos, t, i ? 8 : 4), (this.pos = this.reducePos = t), (this.score -= 190); + } + canShift(e) { + for (var t = new wu(this); ; ) { + var i = this.p.parser.stateSlot(t.state, 4) || this.p.parser.hasAction(t.state, e); + if (i == 0) return !1; + if (!(i & 65536)) return !0; + t.reduce(i); + } + } + recoverByInsert(e) { if (this.stack.length >= 300) return []; - var nextStates = this.p.parser.nextStates(this.state); - if (nextStates.length > 4 << 1 || this.stack.length >= 120) { - var _loop = function (i1) { - var s = nextStates[i1 + 1]; - if (!best.some((v, i2) => i2 & 1 && v == s)) best.push(nextStates[i1], s); + var t = this.p.parser.nextStates(this.state); + if (t.length > 4 << 1 || this.stack.length >= 120) { + var _loop = function (s1) { + var o = t[s1 + 1]; + n.some((u, l) => l & 1 && u == o) || n.push(t[s1], o); }; - var best = []; - for (var i = 0, s; i < nextStates.length; i += 2) { - if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next)) best.push(nextStates[i], s); - } - if (this.stack.length < 120) for (var i1 = 0; best.length < 4 << 1 && i1 < nextStates.length; i1 += 2) _loop(i1); - nextStates = best; - } - var result = []; - for (var i2 = 0; i2 < nextStates.length && result.length < 4; i2 += 2) { - var s1 = nextStates[i2 + 1]; - if (s1 == this.state) continue; - var stack = this.split(); - stack.pushState(s1, this.pos); - stack.storeNode(0, stack.pos, stack.pos, 4, true); - stack.shiftContext(nextStates[i2], this.pos); - stack.score -= 200; - result.push(stack); - } - return result; + var n = []; + for (var s = 0, o; s < t.length; s += 2) (o = t[s + 1]) != this.state && this.p.parser.hasAction(o, e) && n.push(t[s], o); + if (this.stack.length < 120) for (var s1 = 0; n.length < 4 << 1 && s1 < t.length; s1 += 2) _loop(s1); + t = n; + } + var i = []; + for (var n1 = 0; n1 < t.length && i.length < 4; n1 += 2) { + var s2 = t[n1 + 1]; + if (s2 == this.state) continue; + var o1 = this.split(); + o1.pushState(s2, this.pos), o1.storeNode(0, o1.pos, o1.pos, 4, !0), o1.shiftContext(t[n1], this.pos), (o1.score -= 200), i.push(o1); + } + return i; } forceReduce() { - var reduce = this.p.parser.stateSlot(this.state, 5); - if ((reduce & 65536) == 0) return false; + var e = this.p.parser.stateSlot(this.state, 5); + if (!(e & 65536)) return !1; var _this_p = this.p, - parser2 = _this_p.parser; - if (!parser2.validAction(this.state, reduce)) { - var depth = reduce >> 19, - term = reduce & 65535; - var target = this.stack.length - depth * 3; - if (target < 0 || parser2.getGoto(this.stack[target], term, false) < 0) return false; - this.storeNode(0, this.reducePos, this.reducePos, 4, true); - this.score -= 100; - } - this.reducePos = this.pos; - this.reduce(reduce); - return true; + t = _this_p.parser; + if (!t.validAction(this.state, e)) { + var i = e >> 19, + n = e & 65535, + s = this.stack.length - i * 3; + if (s < 0 || t.getGoto(this.stack[s], n, !1) < 0) return !1; + this.storeNode(0, this.reducePos, this.reducePos, 4, !0), (this.score -= 100); + } + return (this.reducePos = this.pos), this.reduce(e), !0; } forceAll() { - while (!this.p.parser.stateFlag(this.state, 2)) { + for (; !this.p.parser.stateFlag(this.state, 2); ) if (!this.forceReduce()) { - this.storeNode(0, this.pos, this.pos, 4, true); + this.storeNode(0, this.pos, this.pos, 4, !0); break; } - } return this; } get deadEnd() { - if (this.stack.length != 3) return false; + if (this.stack.length != 3) return !1; var _this_p = this.p, - parser2 = _this_p.parser; - return parser2.data[parser2.stateSlot(this.state, 1)] == 65535 && !parser2.stateSlot(this.state, 4); + e = _this_p.parser; + return e.data[e.stateSlot(this.state, 1)] == 65535 && !e.stateSlot(this.state, 4); } restart() { - this.state = this.stack[0]; - this.stack.length = 0; + (this.state = this.stack[0]), (this.stack.length = 0); } - sameState(other) { - if (this.state != other.state || this.stack.length != other.stack.length) return false; - for (var i = 0; i < this.stack.length; i += 3) if (this.stack[i] != other.stack[i]) return false; - return true; + sameState(e) { + if (this.state != e.state || this.stack.length != e.stack.length) return !1; + for (var t = 0; t < this.stack.length; t += 3) if (this.stack[t] != e.stack[t]) return !1; + return !0; } get parser() { return this.p.parser; } - dialectEnabled(dialectID) { - return this.p.parser.dialect.flags[dialectID]; + dialectEnabled(e) { + return this.p.parser.dialect.flags[e]; } - shiftContext(term, start) { - if (this.curContext) this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start))); + shiftContext(e, t) { + this.curContext && this.updateContext(this.curContext.tracker.shift(this.curContext.context, e, this, this.p.stream.reset(t))); } - reduceContext(term, start) { - if (this.curContext) this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start))); + reduceContext(e, t) { + this.curContext && this.updateContext(this.curContext.tracker.reduce(this.curContext.context, e, this, this.p.stream.reset(t))); } emitContext() { - var last = this.buffer.length - 1; - if (last < 0 || this.buffer[last] != -3) this.buffer.push(this.curContext.hash, this.reducePos, this.reducePos, -3); + var e = this.buffer.length - 1; + (e < 0 || this.buffer[e] != -3) && this.buffer.push(this.curContext.hash, this.reducePos, this.reducePos, -3); } emitLookAhead() { - var last = this.buffer.length - 1; - if (last < 0 || this.buffer[last] != -4) this.buffer.push(this.lookAhead, this.reducePos, this.reducePos, -4); + var e = this.buffer.length - 1; + (e < 0 || this.buffer[e] != -4) && this.buffer.push(this.lookAhead, this.reducePos, this.reducePos, -4); } - updateContext(context) { - if (context != this.curContext.context) { - var newCx = new StackContext(this.curContext.tracker, context); - if (newCx.hash != this.curContext.hash) this.emitContext(); - this.curContext = newCx; + updateContext(e) { + if (e != this.curContext.context) { + var t = new ss(this.curContext.tracker, e); + t.hash != this.curContext.hash && this.emitContext(), (this.curContext = t); } } - setLookAhead(lookAhead) { - if (lookAhead > this.lookAhead) { - this.emitLookAhead(); - this.lookAhead = lookAhead; - } + setLookAhead(e) { + e > this.lookAhead && (this.emitLookAhead(), (this.lookAhead = e)); } close() { - if (this.curContext && this.curContext.tracker.strict) this.emitContext(); - if (this.lookAhead > 0) this.emitLookAhead(); - } - constructor(p, stack, state, reducePos, pos, score, buffer, bufferBase, curContext, ref, parent) { - var lookAhead = ref === void 0 ? 0 : ref; - this.p = p; - this.stack = stack; - this.state = state; - this.reducePos = reducePos; - this.pos = pos; - this.score = score; - this.buffer = buffer; - this.bufferBase = bufferBase; - this.curContext = curContext; - this.lookAhead = lookAhead; - this.parent = parent; + this.curContext && this.curContext.tracker.strict && this.emitContext(), this.lookAhead > 0 && this.emitLookAhead(); } - }; - __name(Stack, "Stack"); - var StackContext = class StackContext { - constructor(tracker, context) { - this.tracker = tracker; - this.context = context; - this.hash = tracker.strict ? tracker.hash(context) : 0; + constructor(e, t, i, n, s, o, u, l, a, ref, f) { + var c = ref === void 0 ? 0 : ref; + (this.p = e), (this.stack = t), (this.state = i), (this.reducePos = n), (this.pos = s), (this.score = o), (this.buffer = u), (this.bufferBase = l), (this.curContext = a), (this.lookAhead = c), (this.parent = f); } }; - __name(StackContext, "StackContext"); - var Recover; - (function (Recover2) { - Recover2[(Recover2["Insert"] = 200)] = "Insert"; - Recover2[(Recover2["Delete"] = 190)] = "Delete"; - Recover2[(Recover2["Reduce"] = 100)] = "Reduce"; - Recover2[(Recover2["MaxNext"] = 4)] = "MaxNext"; - Recover2[(Recover2["MaxInsertStackDepth"] = 300)] = "MaxInsertStackDepth"; - Recover2[(Recover2["DampenInsertStackDepth"] = 120)] = "DampenInsertStackDepth"; - })(Recover || (Recover = {})); - var SimulatedStack = class SimulatedStack { - reduce(action) { - var term = action & 65535, - depth = action >> 19; - if (depth == 0) { - if (this.stack == this.start.stack) this.stack = this.stack.slice(); - this.stack.push(this.state, 0, 0); - this.base += 3; - } else { - this.base -= (depth - 1) * 3; - } - var goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true); - this.state = goto; + h(ar, "Stack"); + var ss = class ss { + constructor(e, t) { + (this.tracker = e), (this.context = t), (this.hash = e.strict ? e.hash(t) : 0); } - constructor(start) { - this.start = start; - this.state = start.state; - this.stack = start.stack; - this.base = this.stack.length; + }; + h(ss, "StackContext"); + var f1; + (function (r) { + (r[(r.Insert = 200)] = "Insert"), (r[(r.Delete = 190)] = "Delete"), (r[(r.Reduce = 100)] = "Reduce"), (r[(r.MaxNext = 4)] = "MaxNext"), (r[(r.MaxInsertStackDepth = 300)] = "MaxInsertStackDepth"), (r[(r.DampenInsertStackDepth = 120)] = "DampenInsertStackDepth"), (r[(r.MinBigReduction = 2e3)] = "MinBigReduction"); + })(f1 || (f1 = {})); + var wu = class wu { + reduce(e) { + var t = e & 65535, + i = e >> 19; + i == 0 ? (this.stack == this.start.stack && (this.stack = this.stack.slice()), this.stack.push(this.state, 0, 0), (this.base += 3)) : (this.base -= (i - 1) * 3); + var n = this.start.p.parser.getGoto(this.stack[this.base - 3], t, !0); + this.state = n; + } + constructor(e) { + (this.start = e), (this.state = e.state), (this.stack = e.stack), (this.base = this.stack.length); } }; - __name(SimulatedStack, "SimulatedStack"); - var StackBufferCursor = class StackBufferCursor1 { - static create(stack) { - var pos = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : stack.bufferBase + stack.buffer.length; - return new StackBufferCursor(stack, pos, pos - stack.bufferBase); + h(wu, "SimulatedStack"); + var hr = class hr1 { + static create(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : e.bufferBase + e.buffer.length; + return new hr(e, t, t - e.bufferBase); } maybeNext() { - var next = this.stack.parent; - if (next != null) { - this.index = this.stack.bufferBase - next.bufferBase; - this.stack = next; - this.buffer = next.buffer; - } + var e = this.stack.parent; + e != null && ((this.index = this.stack.bufferBase - e.bufferBase), (this.stack = e), (this.buffer = e.buffer)); } get id() { return this.buffer[this.index - 4]; @@ -25987,698 +20450,542 @@ var __generator = return this.buffer[this.index - 1]; } next() { - this.index -= 4; - this.pos -= 4; - if (this.index == 0) this.maybeNext(); + (this.index -= 4), (this.pos -= 4), this.index == 0 && this.maybeNext(); } fork() { - return new StackBufferCursor(this.stack, this.pos, this.index); + return new hr(this.stack, this.pos, this.index); } - constructor(stack, pos, index) { - this.stack = stack; - this.pos = pos; - this.index = index; - this.buffer = stack.buffer; - if (this.index == 0) this.maybeNext(); + constructor(e, t, i) { + (this.stack = e), (this.pos = t), (this.index = i), (this.buffer = e.buffer), this.index == 0 && this.maybeNext(); } }; - __name(StackBufferCursor, "StackBufferCursor"); - var CachedToken = class CachedToken { + h(hr, "StackBufferCursor"); + function ns(r) { + var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Uint16Array; + if (typeof r != "string") return r; + var t = null; + for (var i = 0, n = 0; i < r.length; ) { + var s = 0; + for (;;) { + var o = r.charCodeAt(i++), + u = !1; + if (o == 126) { + s = 65535; + break; + } + o >= 92 && o--, o >= 34 && o--; + var l = o - 32; + if ((l >= 46 && ((l -= 46), (u = !0)), (s += l), u)) break; + s *= 46; + } + t ? (t[n++] = s) : (t = new e(s)); + } + return t; + } + h(ns, "decodeArray"); + var cr = class cr { constructor() { - this.start = -1; - this.value = -1; - this.end = -1; - this.extended = -1; - this.lookAhead = 0; - this.mask = 0; - this.context = 0; + (this.start = -1), (this.value = -1), (this.end = -1), (this.extended = -1), (this.lookAhead = 0), (this.mask = 0), (this.context = 0); } }; - __name(CachedToken, "CachedToken"); - var nullToken = new CachedToken(); - var InputStream = class InputStream { - resolveOffset(offset, assoc) { - var range = this.range, - index = this.rangeIndex; - var pos = this.pos + offset; - while (pos < range.from) { - if (!index) return null; - var next = this.ranges[--index]; - pos -= range.from - next.to; - range = next; - } - while (assoc < 0 ? pos > range.to : pos >= range.to) { - if (index == this.ranges.length - 1) return null; - var next1 = this.ranges[++index]; - pos += next1.from - range.to; - range = next1; - } - return pos; - } - clipPos(pos) { - if (pos >= this.range.from && pos < this.range.to) return pos; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var range = _step.value; - if (range.to > pos) return Math.max(pos, range.from); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + h(cr, "CachedToken"); + var d1 = new cr(), + xu = class xu { + resolveOffset(e, t) { + var i = this.range, + n = this.rangeIndex, + s = this.pos + e; + for (; s < i.from; ) { + if (!n) return null; + var o = this.ranges[--n]; + (s -= i.from - o.to), (i = o); + } + for (; t < 0 ? s > i.to : s >= i.to; ) { + if (n == this.ranges.length - 1) return null; + var o1 = this.ranges[++n]; + (s += o1.from - i.to), (i = o1); + } + return s; + } + clipPos(e) { + if (e >= this.range.from && e < this.range.to) return e; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + if (t.to > e) return Math.max(e, t.from); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + return this.end; } - return this.end; - } - peek(offset) { - var idx = this.chunkOff + offset, - pos, - result; - if (idx >= 0 && idx < this.chunk.length) { - pos = this.pos + offset; - result = this.chunk.charCodeAt(idx); - } else { - var resolved = this.resolveOffset(offset, 1); - if (resolved == null) return -1; - pos = resolved; - if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) { - result = this.chunk2.charCodeAt(pos - this.chunk2Pos); + peek(e) { + var t = this.chunkOff + e, + i, + n; + if (t >= 0 && t < this.chunk.length) (i = this.pos + e), (n = this.chunk.charCodeAt(t)); + else { + var s = this.resolveOffset(e, 1); + if (s == null) return -1; + if (((i = s), i >= this.chunk2Pos && i < this.chunk2Pos + this.chunk2.length)) n = this.chunk2.charCodeAt(i - this.chunk2Pos); + else { + var o = this.rangeIndex, + u = this.range; + for (; u.to <= i; ) u = this.ranges[++o]; + (this.chunk2 = this.input.chunk((this.chunk2Pos = i))), i + this.chunk2.length > u.to && (this.chunk2 = this.chunk2.slice(0, u.to - i)), (n = this.chunk2.charCodeAt(0)); + } + } + return i >= this.token.lookAhead && (this.token.lookAhead = i + 1), n; + } + acceptToken(e) { + var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + var i = t ? this.resolveOffset(t, -1) : this.pos; + if (i == null || i < this.token.start) throw new RangeError("Token end out of bounds"); + (this.token.value = e), (this.token.end = i); + } + getChunk() { + if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) { + var _this = this, + e = _this.chunk, + t = _this.chunkPos; + (this.chunk = this.chunk2), (this.chunkPos = this.chunk2Pos), (this.chunk2 = e), (this.chunk2Pos = t), (this.chunkOff = this.pos - this.chunkPos); } else { - var i = this.rangeIndex, - range = this.range; - while (range.to <= pos) range = this.ranges[++i]; - this.chunk2 = this.input.chunk((this.chunk2Pos = pos)); - if (pos + this.chunk2.length > range.to) this.chunk2 = this.chunk2.slice(0, range.to - pos); - result = this.chunk2.charCodeAt(0); - } - } - if (pos >= this.token.lookAhead) this.token.lookAhead = pos + 1; - return result; - } - acceptToken(token) { - var endOffset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - var end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos; - if (end == null || end < this.token.start) throw new RangeError("Token end out of bounds"); - this.token.value = token; - this.token.end = end; - } - getChunk() { - if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) { - var _this = this, - chunk = _this.chunk, - chunkPos = _this.chunkPos; - this.chunk = this.chunk2; - this.chunkPos = this.chunk2Pos; - this.chunk2 = chunk; - this.chunk2Pos = chunkPos; - this.chunkOff = this.pos - this.chunkPos; - } else { - this.chunk2 = this.chunk; - this.chunk2Pos = this.chunkPos; - var nextChunk = this.input.chunk(this.pos); - var end = this.pos + nextChunk.length; - this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk; - this.chunkPos = this.pos; - this.chunkOff = 0; - } - } - readNext() { - if (this.chunkOff >= this.chunk.length) { - this.getChunk(); - if (this.chunkOff == this.chunk.length) return (this.next = -1); + (this.chunk2 = this.chunk), (this.chunk2Pos = this.chunkPos); + var e1 = this.input.chunk(this.pos), + t1 = this.pos + e1.length; + (this.chunk = t1 > this.range.to ? e1.slice(0, this.range.to - this.pos) : e1), (this.chunkPos = this.pos), (this.chunkOff = 0); + } } - return (this.next = this.chunk.charCodeAt(this.chunkOff)); - } - advance() { - var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1; - this.chunkOff += n; - while (this.pos + n >= this.range.to) { - if (this.rangeIndex == this.ranges.length - 1) return this.setDone(); - n -= this.range.to - this.pos; - this.range = this.ranges[++this.rangeIndex]; - this.pos = this.range.from; - } - this.pos += n; - if (this.pos >= this.token.lookAhead) this.token.lookAhead = this.pos + 1; - return this.readNext(); - } - setDone() { - this.pos = this.chunkPos = this.end; - this.range = this.ranges[(this.rangeIndex = this.ranges.length - 1)]; - this.chunk = ""; - return (this.next = -1); - } - reset(pos, token) { - if (token) { - this.token = token; - token.start = pos; - token.lookAhead = pos + 1; - token.value = token.extended = -1; - } else { - this.token = nullToken; + readNext() { + return this.chunkOff >= this.chunk.length && (this.getChunk(), this.chunkOff == this.chunk.length) ? (this.next = -1) : (this.next = this.chunk.charCodeAt(this.chunkOff)); } - if (this.pos != pos) { - this.pos = pos; - if (pos == this.end) { - this.setDone(); - return this; + advance() { + var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1; + for (this.chunkOff += e; this.pos + e >= this.range.to; ) { + if (this.rangeIndex == this.ranges.length - 1) return this.setDone(); + (e -= this.range.to - this.pos), (this.range = this.ranges[++this.rangeIndex]), (this.pos = this.range.from); } - while (pos < this.range.from) this.range = this.ranges[--this.rangeIndex]; - while (pos >= this.range.to) this.range = this.ranges[++this.rangeIndex]; - if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) { - this.chunkOff = pos - this.chunkPos; - } else { - this.chunk = ""; - this.chunkOff = 0; - } - this.readNext(); + return (this.pos += e), this.pos >= this.token.lookAhead && (this.token.lookAhead = this.pos + 1), this.readNext(); } - return this; - } - read(from, to) { - if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length) return this.chunk.slice(from - this.chunkPos, to - this.chunkPos); - if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length) return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos); - if (from >= this.range.from && to <= this.range.to) return this.input.read(from, to); - var result = ""; - var _iteratorNormalCompletion = true, - _didIteratorError = false, - _iteratorError = undefined; - try { - for (var _iterator = this.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - if (r.from >= to) break; - if (r.to > from) result += this.input.read(Math.max(r.from, from), Math.min(r.to, to)); + setDone() { + return (this.pos = this.chunkPos = this.end), (this.range = this.ranges[(this.rangeIndex = this.ranges.length - 1)]), (this.chunk = ""), (this.next = -1); + } + reset(e, t) { + if ((t ? ((this.token = t), (t.start = e), (t.lookAhead = e + 1), (t.value = t.extended = -1)) : (this.token = d1), this.pos != e)) { + if (((this.pos = e), e == this.end)) return this.setDone(), this; + for (; e < this.range.from; ) this.range = this.ranges[--this.rangeIndex]; + for (; e >= this.range.to; ) this.range = this.ranges[++this.rangeIndex]; + e >= this.chunkPos && e < this.chunkPos + this.chunk.length ? (this.chunkOff = e - this.chunkPos) : ((this.chunk = ""), (this.chunkOff = 0)), this.readNext(); } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { + return this; + } + read(e, t) { + if (e >= this.chunkPos && t <= this.chunkPos + this.chunk.length) return this.chunk.slice(e - this.chunkPos, t - this.chunkPos); + if (e >= this.chunk2Pos && t <= this.chunk2Pos + this.chunk2.length) return this.chunk2.slice(e - this.chunk2Pos, t - this.chunk2Pos); + if (e >= this.range.from && t <= this.range.to) return this.input.read(e, t); + var i = ""; + var _iteratorNormalCompletion = true, + _didIteratorError = false, + _iteratorError = undefined; try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); + for (var _iterator = this.ranges[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var n = _step.value; + if (n.from >= t) break; + n.to > e && (i += this.input.read(Math.max(n.from, e), Math.min(n.to, t))); } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; } finally { - if (_didIteratorError) { - throw _iteratorError; + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } + return i; + } + constructor(e, t) { + (this.input = e), (this.ranges = t), (this.chunk = ""), (this.chunkOff = 0), (this.chunk2 = ""), (this.chunk2Pos = 0), (this.next = -1), (this.token = d1), (this.rangeIndex = 0), (this.pos = this.chunkPos = t[0].from), (this.range = t[0]), (this.end = t[t.length - 1].to), this.readNext(); } - return result; + }; + h(xu, "InputStream"); + var pi = class pi { + token(e, t) { + var _t_p = t.p, + i = _t_p.parser; + y1(this.data, e, t, this.id, i.data, i.tokenPrecTable); } - constructor(input, ranges) { - this.input = input; - this.ranges = ranges; - this.chunk = ""; - this.chunkOff = 0; - this.chunk2 = ""; - this.chunk2Pos = 0; - this.next = -1; - this.token = nullToken; - this.rangeIndex = 0; - this.pos = this.chunkPos = ranges[0].from; - this.range = ranges[0]; - this.end = ranges[ranges.length - 1].to; - this.readNext(); + constructor(e, t) { + (this.data = e), (this.id = t); } }; - __name(InputStream, "InputStream"); - var TokenGroup = class TokenGroup { - token(input, stack) { - readToken(this.data, input, stack, this.id); - } - constructor(data, id) { - this.data = data; - this.id = id; + h(pi, "TokenGroup"); + pi.prototype.contextual = pi.prototype.fallback = pi.prototype.extend = !1; + var Su = class Su { + token(e, t) { + var i = e.pos, + n; + for (; (n = e.pos), y1(this.data, e, t, 0, this.data, this.precTable), !(e.token.value > -1); ) { + if (this.elseToken == null) return; + if (e.next < 0) break; + e.advance(), e.reset(n + 1, e.token); + } + n > i && (e.reset(i, e.token), e.acceptToken(this.elseToken, n - i)); + } + constructor(e, t, i) { + (this.precTable = t), (this.elseToken = i), (this.data = typeof e == "string" ? ns(e) : e); } }; - __name(TokenGroup, "TokenGroup"); - TokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false; - function readToken(data, input, stack, group) { - var state = 0, - groupMask = 1 << group, - _stack_p = stack.p, - parser2 = _stack_p.parser, - dialect = parser2.dialect; - scan: for (;;) { - if ((groupMask & data[state]) == 0) break; - var accEnd = data[state + 1]; - for (var i = state + 3; i < accEnd; i += 2) - if ((data[i + 1] & groupMask) > 0) { - var term = data[i]; - if (dialect.allows(term) && (input.token.value == -1 || input.token.value == term || parser2.overrides(term, input.token.value))) { - input.acceptToken(term); + h(Su, "LocalTokenGroup"); + Su.prototype.contextual = pi.prototype.fallback = pi.prototype.extend = !1; + function y1(r, e, t, i, n, s) { + var o = 0, + u = 1 << i, + _t_p_parser = t.p.parser, + l = _t_p_parser.dialect; + e: for (; u & r[o]; ) { + var a = r[o + 1]; + for (var p = o + 3; p < a; p += 2) + if ((r[p + 1] & u) > 0) { + var m = r[p]; + if (l.allows(m) && (e.token.value == -1 || e.token.value == m || Kw(m, e.token.value, n, s))) { + e.acceptToken(m); break; } } - var next = input.next, - low = 0, - high = data[state + 2]; - if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 && data[accEnd + high * 3 - 3] == 65535) { - state = data[accEnd + high * 3 - 1]; - continue scan; - } - for (; low < high; ) { - var mid = (low + high) >> 1; - var index = accEnd + mid + (mid << 1); - var from = data[index], - to = data[index + 1] || 65536; - if (next < from) high = mid; - else if (next >= to) low = mid + 1; + var c = e.next, + f = 0, + d = r[o + 2]; + if (e.next < 0 && d > f && r[a + d * 3 - 3] == 65535 && r[a + d * 3 - 3] == 65535) { + o = r[a + d * 3 - 1]; + continue e; + } + for (; f < d; ) { + var p1 = (f + d) >> 1, + m1 = a + p1 + (p1 << 1), + D = r[m1], + g = r[m1 + 1] || 65536; + if (c < D) d = p1; + else if (c >= g) f = p1 + 1; else { - state = data[index + 2]; - input.advance(); - continue scan; + (o = r[m1 + 2]), e.advance(); + continue e; } } break; } } - __name(readToken, "readToken"); - function decodeArray(input) { - var Type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Uint16Array; - if (typeof input != "string") return input; - var array = null; - for (var pos = 0, out = 0; pos < input.length; ) { - var value = 0; - for (;;) { - var next = input.charCodeAt(pos++), - stop = false; - if (next == 126) { - value = 65535; - break; - } - if (next >= 92) next--; - if (next >= 34) next--; - var digit = next - 32; - if (digit >= 46) { - digit -= 46; - stop = true; - } - value += digit; - if (stop) break; - value *= 46; - } - if (array) array[out++] = value; - else array = new Type(value); - } - return array; - } - __name(decodeArray, "decodeArray"); - var verbose = typeof process != "undefined" && process.env && /\bparse\b/.test(process.env.LOG); - var stackIDs = null; - var Safety; - (function (Safety2) { - Safety2[(Safety2["Margin"] = 25)] = "Margin"; - })(Safety || (Safety = {})); - function cutAt(tree, pos, side) { - var cursor = tree.cursor(IterMode.IncludeAnonymous); - cursor.moveTo(pos); - for (;;) { - if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos))) + h(y1, "readToken"); + function p1(r, e, t) { + for (var i = e, n; (n = r[i]) != 65535; i++) if (n == t) return i - e; + return -1; + } + h(p1, "findOffset"); + function Kw(r, e, t, i) { + var n = p1(t, i, e); + return n < 0 || p1(t, i, r) < n; + } + h(Kw, "overrides"); + var Mt = typeof process < "u" && process.env && /\bparse\b/.test(process.env.LOG), + Lh = null, + m1; + (function (r) { + r[(r.Margin = 25)] = "Margin"; + })(m1 || (m1 = {})); + function g1(r, e, t) { + var i = r.cursor(Le.IncludeAnonymous); + for (i.moveTo(e); ; ) + if (!(t < 0 ? i.childBefore(e) : i.childAfter(e))) for (;;) { - if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError) return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25)) : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25)); - if (side < 0 ? cursor.prevSibling() : cursor.nextSibling()) break; - if (!cursor.parent()) return side < 0 ? 0 : tree.length; + if ((t < 0 ? i.to < e : i.from > e) && !i.type.isError) return t < 0 ? Math.max(0, Math.min(i.to - 1, e - 25)) : Math.min(r.length, Math.max(i.from + 1, e + 25)); + if (t < 0 ? i.prevSibling() : i.nextSibling()) break; + if (!i.parent()) return t < 0 ? 0 : r.length; } - } } - __name(cutAt, "cutAt"); - var FragmentCursor = class FragmentCursor { + h(g1, "cutAt"); + var Bu = class Bu { nextFragment() { - var fr = (this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++]); - if (fr) { - this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from; - this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to; - while (this.trees.length) { - this.trees.pop(); - this.start.pop(); - this.index.pop(); - } - this.trees.push(fr.tree); - this.start.push(-fr.offset); - this.index.push(0); - this.nextStart = this.safeFrom; - } else { - this.nextStart = 1e9; - } - } - nodeAt(pos) { - if (pos < this.nextStart) return null; - while (this.fragment && this.safeTo <= pos) this.nextFragment(); + var e = (this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++]); + if (e) { + for (this.safeFrom = e.openStart ? g1(e.tree, e.from + e.offset, 1) - e.offset : e.from, this.safeTo = e.openEnd ? g1(e.tree, e.to + e.offset, -1) - e.offset : e.to; this.trees.length; ) this.trees.pop(), this.start.pop(), this.index.pop(); + this.trees.push(e.tree), this.start.push(-e.offset), this.index.push(0), (this.nextStart = this.safeFrom); + } else this.nextStart = 1e9; + } + nodeAt(e) { + if (e < this.nextStart) return null; + for (; this.fragment && this.safeTo <= e; ) this.nextFragment(); if (!this.fragment) return null; for (;;) { - var last = this.trees.length - 1; - if (last < 0) { - this.nextFragment(); - return null; - } - var top2 = this.trees[last], - index = this.index[last]; - if (index == top2.children.length) { - this.trees.pop(); - this.start.pop(); - this.index.pop(); + var t = this.trees.length - 1; + if (t < 0) return this.nextFragment(), null; + var i = this.trees[t], + n = this.index[t]; + if (n == i.children.length) { + this.trees.pop(), this.start.pop(), this.index.pop(); continue; } - var next = top2.children[index]; - var start = this.start[last] + top2.positions[index]; - if (start > pos) { - this.nextStart = start; - return null; - } - if (next instanceof Tree) { - if (start == pos) { - if (start < this.safeFrom) return null; - var end = start + next.length; - if (end <= this.safeTo) { - var lookAhead = next.prop(NodeProp.lookAhead); - if (!lookAhead || end + lookAhead < this.fragment.to) return next; + var s = i.children[n], + o = this.start[t] + i.positions[n]; + if (o > e) return (this.nextStart = o), null; + if (s instanceof Ee) { + if (o == e) { + if (o < this.safeFrom) return null; + var u = o + s.length; + if (u <= this.safeTo) { + var l = s.prop(ue.lookAhead); + if (!l || u + l < this.fragment.to) return s; } } - this.index[last]++; - if (start + next.length >= Math.max(this.safeFrom, pos)) { - this.trees.push(next); - this.start.push(start); - this.index.push(0); - } - } else { - this.index[last]++; - this.nextStart = start + next.length; - } + this.index[t]++, o + s.length >= Math.max(this.safeFrom, e) && (this.trees.push(s), this.start.push(o), this.index.push(0)); + } else this.index[t]++, (this.nextStart = o + s.length); } } - constructor(fragments, nodeSet) { - this.fragments = fragments; - this.nodeSet = nodeSet; - this.i = 0; - this.fragment = null; - this.safeFrom = -1; - this.safeTo = -1; - this.trees = []; - this.start = []; - this.index = []; - this.nextFragment(); + constructor(e, t) { + (this.fragments = e), (this.nodeSet = t), (this.i = 0), (this.fragment = null), (this.safeFrom = -1), (this.safeTo = -1), (this.trees = []), (this.start = []), (this.index = []), this.nextFragment(); } }; - __name(FragmentCursor, "FragmentCursor"); - var TokenCache = class TokenCache { - getActions(stack) { - var actionIndex = 0; - var main = null; - var _stack_p = stack.p, - parser2 = _stack_p.parser, - tokenizers = parser2.tokenizers; - var mask = parser2.stateSlot(stack.state, 3); - var context = stack.curContext ? stack.curContext.hash : 0; - var lookAhead = 0; - for (var i = 0; i < tokenizers.length; i++) { - if (((1 << i) & mask) == 0) continue; - var tokenizer = tokenizers[i], - token = this.tokens[i]; - if (main && !tokenizer.fallback) continue; - if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) { - this.updateCachedToken(token, tokenizer, stack); - token.mask = mask; - token.context = context; - } - if (token.lookAhead > token.end + 25) lookAhead = Math.max(token.lookAhead, lookAhead); - if (token.value != 0) { - var startIndex = actionIndex; - if (token.extended > -1) actionIndex = this.addActions(stack, token.extended, token.end, actionIndex); - actionIndex = this.addActions(stack, token.value, token.end, actionIndex); - if (!tokenizer.extend) { - main = token; - if (actionIndex > startIndex) break; - } - } - } - while (this.actions.length > actionIndex) this.actions.pop(); - if (lookAhead) stack.setLookAhead(lookAhead); - if (!main && stack.pos == this.stream.end) { - main = new CachedToken(); - main.value = stack.p.parser.eofTerm; - main.start = main.end = stack.pos; - actionIndex = this.addActions(stack, main.value, main.end, actionIndex); - } - this.mainToken = main; - return this.actions; - } - getMainToken(stack) { + h(Bu, "FragmentCursor"); + var _u = class _u { + getActions(e) { + var t = 0, + i = null, + _e_p = e.p, + n = _e_p.parser, + s = n.tokenizers, + o = n.stateSlot(e.state, 3), + u = e.curContext ? e.curContext.hash : 0, + l = 0; + for (var a = 0; a < s.length; a++) { + if (!((1 << a) & o)) continue; + var c = s[a], + f = this.tokens[a]; + if (!(i && !c.fallback) && ((c.contextual || f.start != e.pos || f.mask != o || f.context != u) && (this.updateCachedToken(f, c, e), (f.mask = o), (f.context = u)), f.lookAhead > f.end + 25 && (l = Math.max(f.lookAhead, l)), f.value != 0)) { + var d = t; + if ((f.extended > -1 && (t = this.addActions(e, f.extended, f.end, t)), (t = this.addActions(e, f.value, f.end, t)), !c.extend && ((i = f), t > d))) break; + } + } + for (; this.actions.length > t; ) this.actions.pop(); + return l && e.setLookAhead(l), !i && e.pos == this.stream.end && ((i = new cr()), (i.value = e.p.parser.eofTerm), (i.start = i.end = e.pos), (t = this.addActions(e, i.value, i.end, t))), (this.mainToken = i), this.actions; + } + getMainToken(e) { if (this.mainToken) return this.mainToken; - var main = new CachedToken(), - pos = stack.pos, - p = stack.p; - main.start = pos; - main.end = Math.min(pos + 1, p.stream.end); - main.value = pos == p.stream.end ? p.parser.eofTerm : 0; - return main; - } - updateCachedToken(token, tokenizer, stack) { - var start = this.stream.clipPos(stack.pos); - tokenizer.token(this.stream.reset(start, token), stack); - if (token.value > -1) { - var _stack_p = stack.p, - parser2 = _stack_p.parser; - for (var i = 0; i < parser2.specialized.length; i++) - if (parser2.specialized[i] == token.value) { - var result = parser2.specializers[i](this.stream.read(token.start, token.end), stack); - if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) { - if ((result & 1) == 0) token.value = result >> 1; - else token.extended = result >> 1; + var t = new cr(), + i = e.pos, + n = e.p; + return (t.start = i), (t.end = Math.min(i + 1, n.stream.end)), (t.value = i == n.stream.end ? n.parser.eofTerm : 0), t; + } + updateCachedToken(e, t, i) { + var n = this.stream.clipPos(i.pos); + if ((t.token(this.stream.reset(n, e), i), e.value > -1)) { + var _i_p = i.p, + s = _i_p.parser; + for (var o = 0; o < s.specialized.length; o++) + if (s.specialized[o] == e.value) { + var u = s.specializers[o](this.stream.read(e.start, e.end), i); + if (u >= 0 && i.p.parser.dialect.allows(u >> 1)) { + u & 1 ? (e.extended = u >> 1) : (e.value = u >> 1); break; } } - } else { - token.value = 0; - token.end = this.stream.clipPos(start + 1); - } - } - putAction(action, token, end, index) { - for (var i = 0; i < index; i += 3) if (this.actions[i] == action) return index; - this.actions[index++] = action; - this.actions[index++] = token; - this.actions[index++] = end; - return index; - } - addActions(stack, token, end, index) { - var state = stack.state, - _stack_p = stack.p, - parser2 = _stack_p.parser, - data = parser2.data; - for (var set = 0; set < 2; set++) { - for (var i = parser2.stateSlot(state, set ? 2 : 1); ; i += 3) { - if (data[i] == 65535) { - if (data[i + 1] == 1) { - i = pair(data, i + 2); - } else { - if (index == 0 && data[i + 1] == 2) index = this.putAction(pair(data, i + 2), token, end, index); + } else (e.value = 0), (e.end = this.stream.clipPos(n + 1)); + } + putAction(e, t, i, n) { + for (var s = 0; s < n; s += 3) if (this.actions[s] == e) return n; + return (this.actions[n++] = e), (this.actions[n++] = t), (this.actions[n++] = i), n; + } + addActions(e, t, i, n) { + var s = e.state, + _e_p = e.p, + o = _e_p.parser, + u = o.data; + for (var l = 0; l < 2; l++) + for (var a = o.stateSlot(s, l ? 2 : 1); ; a += 3) { + if (u[a] == 65535) + if (u[a + 1] == 1) a = di(u, a + 2); + else { + n == 0 && u[a + 1] == 2 && (n = this.putAction(di(u, a + 2), t, i, n)); break; } - } - if (data[i] == token) index = this.putAction(pair(data, i + 1), token, end, index); + u[a] == t && (n = this.putAction(di(u, a + 1), t, i, n)); } - } - return index; + return n; } - constructor(parser2, stream) { - this.stream = stream; - this.tokens = []; - this.mainToken = null; - this.actions = []; - this.tokens = parser2.tokenizers.map((_) => new CachedToken()); + constructor(e, t) { + (this.stream = t), (this.tokens = []), (this.mainToken = null), (this.actions = []), (this.tokens = e.tokenizers.map((i) => new cr())); } }; - __name(TokenCache, "TokenCache"); - var Rec; - (function (Rec2) { - Rec2[(Rec2["Distance"] = 5)] = "Distance"; - Rec2[(Rec2["MaxRemainingPerStep"] = 3)] = "MaxRemainingPerStep"; - Rec2[(Rec2["MinBufferLengthPrune"] = 500)] = "MinBufferLengthPrune"; - Rec2[(Rec2["ForceReduceLimit"] = 10)] = "ForceReduceLimit"; - Rec2[(Rec2["CutDepth"] = 15e3)] = "CutDepth"; - Rec2[(Rec2["CutTo"] = 9e3)] = "CutTo"; - })(Rec || (Rec = {})); - var Parse = class Parse { + h(_u, "TokenCache"); + var D1; + (function (r) { + (r[(r.Distance = 5)] = "Distance"), + (r[(r.MaxRemainingPerStep = 3)] = "MaxRemainingPerStep"), + (r[(r.MinBufferLengthPrune = 500)] = "MinBufferLengthPrune"), + (r[(r.ForceReduceLimit = 10)] = "ForceReduceLimit"), + (r[(r.CutDepth = 15e3)] = "CutDepth"), + (r[(r.CutTo = 9e3)] = "CutTo"), + (r[(r.MaxLeftAssociativeReductionCount = 300)] = "MaxLeftAssociativeReductionCount"), + (r[(r.MaxStackCount = 12)] = "MaxStackCount"); + })(D1 || (D1 = {})); + var Ou = class Ou { get parsedPos() { return this.minStackPos; } advance() { - var stacks = this.stacks, - pos = this.minStackPos; - var newStacks = (this.stacks = []); - var stopped, stoppedTokens; - for (var i = 0; i < stacks.length; i++) { - var stack = stacks[i]; + var e = this.stacks, + t = this.minStackPos, + i = (this.stacks = []), + n, + s; + if (this.bigReductionCount > 300 && e.length == 1) { + var _e = _slicedToArray(e, 1), + o = _e[0]; + for (; o.forceReduce() && o.stack.length && o.stack[o.stack.length - 2] >= this.lastBigReductionStart; ); + this.bigReductionCount = this.lastBigReductionSize = 0; + } + for (var o1 = 0; o1 < e.length; o1++) { + var u = e[o1]; for (;;) { - this.tokens.mainToken = null; - if (stack.pos > pos) { - newStacks.push(stack); - } else if (this.advanceStack(stack, newStacks, stacks)) { - continue; - } else { - if (!stopped) { - stopped = []; - stoppedTokens = []; + if (((this.tokens.mainToken = null), u.pos > t)) i.push(u); + else { + if (this.advanceStack(u, i, e)) continue; + { + n || ((n = []), (s = [])), n.push(u); + var l = this.tokens.getMainToken(u); + s.push(l.value, l.end); } - stopped.push(stack); - var tok = this.tokens.getMainToken(stack); - stoppedTokens.push(tok.value, tok.end); } break; } } - if (!newStacks.length) { - var finished = stopped && findFinished(stopped); - if (finished) return this.stackToTree(finished); - if (this.parser.strict) { - if (verbose && stopped) console.log("Stuck with token " + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : "none")); - throw new SyntaxError("No parse at " + pos); - } - if (!this.recovering) this.recovering = 5; + if (!i.length) { + var o2 = n && Xw(n); + if (o2) return this.stackToTree(o2); + if (this.parser.strict) throw (Mt && n && console.log("Stuck with token " + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : "none")), new SyntaxError("No parse at " + t)); + this.recovering || (this.recovering = 5); } - if (this.recovering && stopped) { - var finished1 = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0] : this.runRecovery(stopped, stoppedTokens, newStacks); - if (finished1) return this.stackToTree(finished1.forceAll()); + if (this.recovering && n) { + var o3 = this.stoppedAt != null && n[0].pos > this.stoppedAt ? n[0] : this.runRecovery(n, s, i); + if (o3) return this.stackToTree(o3.forceAll()); } if (this.recovering) { - var maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3; - if (newStacks.length > maxRemaining) { - newStacks.sort((a, b) => b.score - a.score); - while (newStacks.length > maxRemaining) newStacks.pop(); - } - if (newStacks.some((s) => s.reducePos > pos)) this.recovering--; - } else if (newStacks.length > 1) { - outer: for (var i1 = 0; i1 < newStacks.length - 1; i1++) { - var stack1 = newStacks[i1]; - for (var j = i1 + 1; j < newStacks.length; j++) { - var other = newStacks[j]; - if (stack1.sameState(other) || (stack1.buffer.length > 500 && other.buffer.length > 500)) { - if ((stack1.score - other.score || stack1.buffer.length - other.buffer.length) > 0) { - newStacks.splice(j--, 1); - } else { - newStacks.splice(i1--, 1); - continue outer; + var o4 = this.recovering == 1 ? 1 : this.recovering * 3; + if (i.length > o4) for (i.sort((u, l) => l.score - u.score); i.length > o4; ) i.pop(); + i.some((u) => u.reducePos > t) && this.recovering--; + } else if (i.length > 1) { + e: for (var o5 = 0; o5 < i.length - 1; o5++) { + var u1 = i[o5]; + for (var l1 = o5 + 1; l1 < i.length; l1++) { + var a = i[l1]; + if (u1.sameState(a) || (u1.buffer.length > 500 && a.buffer.length > 500)) + if ((u1.score - a.score || u1.buffer.length - a.buffer.length) > 0) i.splice(l1--, 1); + else { + i.splice(o5--, 1); + continue e; } - } } } + i.length > 12 && i.splice(12, i.length - 12); } - this.minStackPos = newStacks[0].pos; - for (var i2 = 1; i2 < newStacks.length; i2++) if (newStacks[i2].pos < this.minStackPos) this.minStackPos = newStacks[i2].pos; + this.minStackPos = i[0].pos; + for (var o6 = 1; o6 < i.length; o6++) i[o6].pos < this.minStackPos && (this.minStackPos = i[o6].pos); return null; } - stopAt(pos) { - if (this.stoppedAt != null && this.stoppedAt < pos) throw new RangeError("Can't move stoppedAt forward"); - this.stoppedAt = pos; + stopAt(e) { + if (this.stoppedAt != null && this.stoppedAt < e) throw new RangeError("Can't move stoppedAt forward"); + this.stoppedAt = e; } - advanceStack(stack, stacks, split) { - var start = stack.pos, + advanceStack(e, t, i) { + var n = e.pos, _this = this, - parser2 = _this.parser; - var base2 = verbose ? this.stackID(stack) + " -> " : ""; - if (this.stoppedAt != null && start > this.stoppedAt) return stack.forceReduce() ? stack : null; + s = _this.parser, + o = Mt ? this.stackID(e) + " -> " : ""; + if (this.stoppedAt != null && n > this.stoppedAt) return e.forceReduce() ? e : null; if (this.fragments) { - var strictCx = stack.curContext && stack.curContext.tracker.strict, - cxHash = strictCx ? stack.curContext.hash : 0; - for (var cached = this.fragments.nodeAt(start); cached; ) { - var match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser2.getGoto(stack.state, cached.type.id) : -1; - if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) { - stack.useNode(cached, match); - if (verbose) console.log(base2 + this.stackID(stack) + " (via reuse of ".concat(parser2.getName(cached.type.id), ")")); - return true; - } - if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0) break; - var inner = cached.children[0]; - if (inner instanceof Tree && cached.positions[0] == 0) cached = inner; + var a = e.curContext && e.curContext.tracker.strict, + c = a ? e.curContext.hash : 0; + for (var f = this.fragments.nodeAt(n); f; ) { + var d = this.parser.nodeSet.types[f.type.id] == f.type ? s.getGoto(e.state, f.type.id) : -1; + if (d > -1 && f.length && (!a || (f.prop(ue.contextHash) || 0) == c)) return e.useNode(f, d), Mt && console.log(o + this.stackID(e) + " (via reuse of ".concat(s.getName(f.type.id), ")")), !0; + if (!(f instanceof Ee) || f.children.length == 0 || f.positions[0] > 0) break; + var p = f.children[0]; + if (p instanceof Ee && f.positions[0] == 0) f = p; else break; } } - var defaultReduce = parser2.stateSlot(stack.state, 4); - if (defaultReduce > 0) { - stack.reduce(defaultReduce); - if (verbose) console.log(base2 + this.stackID(stack) + " (via always-reduce ".concat(parser2.getName(defaultReduce & 65535), ")")); - return true; - } - if (stack.stack.length >= 15e3) { - while (stack.stack.length > 9e3 && stack.forceReduce()) {} - } - var actions = this.tokens.getActions(stack); - for (var i = 0; i < actions.length; ) { - var action = actions[i++], - term = actions[i++], - end = actions[i++]; - var last = i == actions.length || !split; - var localStack = last ? stack : stack.split(); - localStack.apply(action, term, end); - if (verbose) - console.log( - base2 + - this.stackID(localStack) + - " (via " - .concat((action & 65536) == 0 ? "shift" : "reduce of ".concat(parser2.getName(action & 65535)), " for ") - .concat(parser2.getName(term), " @ ") - .concat(start) - .concat(localStack == stack ? "" : ", split", ")") - ); - if (last) return true; - else if (localStack.pos > start) stacks.push(localStack); - else split.push(localStack); + var u = s.stateSlot(e.state, 4); + if (u > 0) return e.reduce(u), Mt && console.log(o + this.stackID(e) + " (via always-reduce ".concat(s.getName(u & 65535), ")")), !0; + if (e.stack.length >= 15e3) for (; e.stack.length > 9e3 && e.forceReduce(); ); + var l = this.tokens.getActions(e); + for (var a1 = 0; a1 < l.length; ) { + var c1 = l[a1++], + f1 = l[a1++], + d1 = l[a1++], + p1 = a1 == l.length || !i, + m = p1 ? e : e.split(); + if ( + (m.apply(c1, f1, d1), + Mt && + console.log( + o + + this.stackID(m) + + " (via " + .concat(c1 & 65536 ? "reduce of ".concat(s.getName(c1 & 65535)) : "shift", " for ") + .concat(s.getName(f1), " @ ") + .concat(n) + .concat(m == e ? "" : ", split", ")") + ), + p1) + ) + return !0; + m.pos > n ? t.push(m) : i.push(m); } - return false; + return !1; } - advanceFully(stack, newStacks) { - var pos = stack.pos; + advanceFully(e, t) { + var i = e.pos; for (;;) { - if (!this.advanceStack(stack, null, null)) return false; - if (stack.pos > pos) { - pushStackDedup(stack, newStacks); - return true; - } - } - } - runRecovery(stacks, tokens, newStacks) { - var finished = null, - restarted = false; - for (var i = 0; i < stacks.length; i++) { - var stack = stacks[i], - token = tokens[i << 1], - tokenEnd = tokens[(i << 1) + 1]; - var base2 = verbose ? this.stackID(stack) + " -> " : ""; - if (stack.deadEnd) { - if (restarted) continue; - restarted = true; - stack.restart(); - if (verbose) console.log(base2 + this.stackID(stack) + " (restarted)"); - var done = this.advanceFully(stack, newStacks); - if (done) continue; - } - var force = stack.split(), - forceBase = base2; - for (var j = 0; force.forceReduce() && j < 10; j++) { - if (verbose) console.log(forceBase + this.stackID(force) + " (via force-reduce)"); - var done1 = this.advanceFully(force, newStacks); - if (done1) break; - if (verbose) forceBase = this.stackID(force) + " -> "; - } + if (!this.advanceStack(e, null, null)) return !1; + if (e.pos > i) return b1(e, t), !0; + } + } + runRecovery(e, t, i) { + var n = null, + s = !1; + for (var o = 0; o < e.length; o++) { + var u = e[o], + l = t[o << 1], + a = t[(o << 1) + 1], + c = Mt ? this.stackID(u) + " -> " : ""; + if (u.deadEnd && (s || ((s = !0), u.restart(), Mt && console.log(c + this.stackID(u) + " (restarted)"), this.advanceFully(u, i)))) continue; + var f = u.split(), + d = c; + for (var p = 0; f.forceReduce() && p < 10 && (Mt && console.log(d + this.stackID(f) + " (via force-reduce)"), !this.advanceFully(f, i)); p++) Mt && (d = this.stackID(f) + " -> "); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = stack.recoverByInsert(token)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var insert3 = _step.value; - if (verbose) console.log(base2 + this.stackID(insert3) + " (via recover-insert)"); - this.advanceFully(insert3, newStacks); + for (var _iterator = u.recoverByInsert(l)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var p1 = _step.value; + Mt && console.log(c + this.stackID(p1) + " (via recover-insert)"), this.advanceFully(p1, i); } } catch (err) { _didIteratorError = true; @@ -26694,88 +21001,55 @@ var __generator = } } } - if (this.stream.end > stack.pos) { - if (tokenEnd == stack.pos) { - tokenEnd++; - token = 0; - } - stack.recoverByDelete(token, tokenEnd); - if (verbose) console.log(base2 + this.stackID(stack) + " (via recover-delete ".concat(this.parser.getName(token), ")")); - pushStackDedup(stack, newStacks); - } else if (!finished || finished.score < stack.score) { - finished = stack; - } + this.stream.end > u.pos ? (a == u.pos && (a++, (l = 0)), u.recoverByDelete(l, a), Mt && console.log(c + this.stackID(u) + " (via recover-delete ".concat(this.parser.getName(l), ")")), b1(u, i)) : (!n || n.score < u.score) && (n = u); } - return finished; + return n; } - stackToTree(stack) { - stack.close(); - return Tree.build({ - buffer: StackBufferCursor.create(stack), - nodeSet: this.parser.nodeSet, - topID: this.topTerm, - maxBufferLength: this.parser.bufferLength, - reused: this.reused, - start: this.ranges[0].from, - length: stack.pos - this.ranges[0].from, - minRepeatType: this.parser.minRepeatTerm, - }); + stackToTree(e) { + return e.close(), Ee.build({ buffer: hr.create(e), nodeSet: this.parser.nodeSet, topID: this.topTerm, maxBufferLength: this.parser.bufferLength, reused: this.reused, start: this.ranges[0].from, length: e.pos - this.ranges[0].from, minRepeatType: this.parser.minRepeatTerm }); } - stackID(stack) { - var id = (stackIDs || (stackIDs = /* @__PURE__ */ new WeakMap())).get(stack); - if (!id) stackIDs.set(stack, (id = String.fromCodePoint(this.nextStackID++))); - return id + stack; - } - constructor(parser2, input, fragments, ranges) { - this.parser = parser2; - this.input = input; - this.ranges = ranges; - this.recovering = 0; - this.nextStackID = 9812; - this.minStackPos = 0; - this.reused = []; - this.stoppedAt = null; - this.stream = new InputStream(input, ranges); - this.tokens = new TokenCache(parser2, this.stream); - this.topTerm = parser2.top[1]; - var from = ranges[0].from; - this.stacks = [Stack.start(this, parser2.top[0], from)]; - this.fragments = fragments.length && this.stream.end - from > parser2.bufferLength * 4 ? new FragmentCursor(fragments, parser2.nodeSet) : null; + stackID(e) { + var t = (Lh || (Lh = new WeakMap())).get(e); + return t || Lh.set(e, (t = String.fromCodePoint(this.nextStackID++))), t + e; + } + constructor(e, t, i, n) { + (this.parser = e), (this.input = t), (this.ranges = n), (this.recovering = 0), (this.nextStackID = 9812), (this.minStackPos = 0), (this.reused = []), (this.stoppedAt = null), (this.lastBigReductionStart = -1), (this.lastBigReductionSize = 0), (this.bigReductionCount = 0), (this.stream = new xu(t, n)), (this.tokens = new _u(e, this.stream)), (this.topTerm = e.top[1]); + var _n_ = n[0], + s = _n_.from; + (this.stacks = [ar.start(this, e.top[0], s)]), (this.fragments = i.length && this.stream.end - s > e.bufferLength * 4 ? new Bu(i, e.nodeSet) : null); } }; - __name(Parse, "Parse"); - function pushStackDedup(stack, newStacks) { - for (var i = 0; i < newStacks.length; i++) { - var other = newStacks[i]; - if (other.pos == stack.pos && other.sameState(stack)) { - if (newStacks[i].score < stack.score) newStacks[i] = stack; + h(Ou, "Parse"); + function b1(r, e) { + for (var t = 0; t < e.length; t++) { + var i = e[t]; + if (i.pos == r.pos && i.sameState(r)) { + e[t].score < r.score && (e[t] = r); return; } } - newStacks.push(stack); + e.push(r); } - __name(pushStackDedup, "pushStackDedup"); - var Dialect = class Dialect { - allows(term) { - return !this.disabled || this.disabled[term] == 0; + h(b1, "pushStackDedup"); + var Tu = class Tu { + allows(e) { + return !this.disabled || this.disabled[e] == 0; } - constructor(source, flags, disabled) { - this.source = source; - this.flags = flags; - this.disabled = disabled; + constructor(e, t, i) { + (this.source = e), (this.flags = t), (this.disabled = i); } }; - __name(Dialect, "Dialect"); - var LRParser = class LRParser1 extends Parser { - createParse(input, fragments, ranges) { - var parse = new Parse(this, input, fragments, ranges); + h(Tu, "Dialect"); + var Mi = class Mi1 extends ir { + createParse(e, t, i) { + var n = new Ou(this, e, t, i); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for (var _iterator = this.wrappers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var w = _step.value; - parse = w(parse, input, fragments, ranges); + var s = _step.value; + n = s(n, e, t, i); } } catch (err) { _didIteratorError = true; @@ -26791,112 +21065,103 @@ var __generator = } } } - return parse; - } - getGoto(state, term) { - var loose = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - var table = this.goto; - if (term >= table[0]) return -1; - for (var pos = table[term + 1]; ; ) { - var groupTag = table[pos++], - last = groupTag & 1; - var target = table[pos++]; - if (last && loose) return target; - for (var end = pos + (groupTag >> 1); pos < end; pos++) if (table[pos] == state) return target; - if (last) return -1; - } + return n; } - hasAction(state, terminal) { - var data = this.data; - for (var set = 0; set < 2; set++) { - for (var i = this.stateSlot(state, set ? 2 : 1), next = void 0; ; i += 3) { - if ((next = data[i]) == 65535) { - if (data[i + 1] == 1) next = data[(i = pair(data, i + 2))]; - else if (data[i + 1] == 2) return pair(data, i + 2); - else break; - } - if (next == terminal || next == 0) return pair(data, i + 1); + getGoto(e, t) { + var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1; + var n = this.goto; + if (t >= n[0]) return -1; + for (var s = n[t + 1]; ; ) { + var o = n[s++], + u = o & 1, + l = n[s++]; + if (u && i) return l; + for (var a = s + (o >> 1); s < a; s++) if (n[s] == e) return l; + if (u) return -1; + } + } + hasAction(e, t) { + var i = this.data; + for (var n = 0; n < 2; n++) + for (var s = this.stateSlot(e, n ? 2 : 1), o = void 0; ; s += 3) { + if ((o = i[s]) == 65535) + if (i[s + 1] == 1) o = i[(s = di(i, s + 2))]; + else { + if (i[s + 1] == 2) return di(i, s + 2); + break; + } + if (o == t || o == 0) return di(i, s + 1); } - } return 0; } - stateSlot(state, slot) { - return this.states[state * 6 + slot]; + stateSlot(e, t) { + return this.states[e * 6 + t]; } - stateFlag(state, flag) { - return (this.stateSlot(state, 0) & flag) > 0; + stateFlag(e, t) { + return (this.stateSlot(e, 0) & t) > 0; } - validAction(state, action) { - if (action == this.stateSlot(state, 4)) return true; - for (var i = this.stateSlot(state, 1); ; i += 3) { - if (this.data[i] == 65535) { - if (this.data[i + 1] == 1) i = pair(this.data, i + 2); - else return false; - } - if (action == pair(this.data, i + 1)) return true; + validAction(e, t) { + if (t == this.stateSlot(e, 4)) return !0; + for (var i = this.stateSlot(e, 1); ; i += 3) { + if (this.data[i] == 65535) + if (this.data[i + 1] == 1) i = di(this.data, i + 2); + else return !1; + if (t == di(this.data, i + 1)) return !0; } } - nextStates(state) { + nextStates(e) { var _this = this, _loop = function (i1) { - if (_this.data[i1] == 65535) { - if (_this.data[i1 + 1] == 1) i1 = pair(_this.data, i1 + 2); + if (_this.data[i1] == 65535) + if (_this.data[i1 + 1] == 1) i1 = di(_this.data, i1 + 2); else return (i = i1), "break"; - } - if ((_this.data[i1 + 2] & (65536 >> 16)) == 0) { - var value = _this.data[i1 + 1]; - if (!result.some((v, i2) => i2 & 1 && v == value)) result.push(_this.data[i1], value); + if (!(_this.data[i1 + 2] & 1)) { + var n = _this.data[i1 + 1]; + t.some((s, o) => o & 1 && s == n) || t.push(_this.data[i1], n); } (i = i1), void 0; }; - var result = []; - for (var i = this.stateSlot(state, 1); ; i += 3) { + var t = []; + for (var i = this.stateSlot(e, 1); ; i += 3) { var _ret = _loop(i); if (_ret === "break") break; } - return result; + return t; } - overrides(token, prev) { - var iPrev = findOffset(this.data, this.tokenPrecTable, prev); - return iPrev < 0 || findOffset(this.data, this.tokenPrecTable, token) < iPrev; - } - configure(config) { - var copy = Object.assign(Object.create(LRParser.prototype), this); - if (config.props) copy.nodeSet = this.nodeSet.extend(...config.props); - if (config.top) { - var info = this.topRules[config.top]; - if (!info) throw new RangeError("Invalid top rule name ".concat(config.top)); - copy.top = info; - } - if (config.tokenizers) - copy.tokenizers = this.tokenizers.map((t2) => { - var found = config.tokenizers.find((r) => r.from == t2); - return found ? found.to : t2; - }); - if (config.specializers) { - copy.specializers = this.specializers.slice(); - copy.specializerSpecs = this.specializerSpecs.map((s, i) => { - var found = config.specializers.find((r) => r.from == s.external); - if (!found) return s; - var spec = Object.assign(Object.assign({}, s), { - external: found.to, - }); - copy.specializers[i] = getSpecializer(spec); - return spec; - }); + configure(e) { + var t = Object.assign(Object.create(Mi.prototype), this); + if ((e.props && (t.nodeSet = this.nodeSet.extend(...e.props)), e.top)) { + var i = this.topRules[e.top]; + if (!i) throw new RangeError("Invalid top rule name ".concat(e.top)); + t.top = i; } - if (config.contextTracker) copy.context = config.contextTracker; - if (config.dialect) copy.dialect = this.parseDialect(config.dialect); - if (config.strict != null) copy.strict = config.strict; - if (config.wrap) copy.wrappers = copy.wrappers.concat(config.wrap); - if (config.bufferLength != null) copy.bufferLength = config.bufferLength; - return copy; + return ( + e.tokenizers && + (t.tokenizers = this.tokenizers.map((i) => { + var n = e.tokenizers.find((s) => s.from == i); + return n ? n.to : i; + })), + e.specializers && + ((t.specializers = this.specializers.slice()), + (t.specializerSpecs = this.specializerSpecs.map((i, n) => { + var s = e.specializers.find((u) => u.from == i.external); + if (!s) return i; + var o = Object.assign(Object.assign({}, i), { external: s.to }); + return (t.specializers[n] = F1(o)), o; + }))), + e.contextTracker && (t.context = e.contextTracker), + e.dialect && (t.dialect = this.parseDialect(e.dialect)), + e.strict != null && (t.strict = e.strict), + e.wrap && (t.wrappers = t.wrappers.concat(e.wrap)), + e.bufferLength != null && (t.bufferLength = e.bufferLength), + t + ); } hasWrappers() { return this.wrappers.length > 0; } - getName(term) { - return this.termNames ? this.termNames[term] : String((term <= this.maxNode && this.nodeSet.types[term].name) || term); + getName(e) { + return this.termNames ? this.termNames[e] : String((e <= this.maxNode && this.nodeSet.types[e].name) || e); } get eofTerm() { return this.maxNode + 1; @@ -26904,22 +21169,22 @@ var __generator = get topNode() { return this.nodeSet.types[this.top[1]]; } - dynamicPrecedence(term) { - var prec2 = this.dynamicPrecedences; - return prec2 == null ? 0 : prec2[term] || 0; + dynamicPrecedence(e) { + var t = this.dynamicPrecedences; + return t == null ? 0 : t[e] || 0; } - parseDialect(dialect) { - var values = Object.keys(this.dialects), - flags = values.map(() => false); + parseDialect(e) { + var t = Object.keys(this.dialects), + i = t.map(() => !1); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - if (dialect) + if (e) try { - for (var _iterator = dialect.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var part = _step.value; - var id = values.indexOf(part); - if (id >= 0) flags[id] = true; + for (var _iterator = e.split(" ")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var s = _step.value; + var o = t.indexOf(s); + o >= 0 && (i[o] = !0); } } catch (err) { _didIteratorError = true; @@ -26935,47 +21200,40 @@ var __generator = } } } - var disabled = null; - for (var i = 0; i < values.length; i++) - if (!flags[i]) { - for (var j = this.dialects[values[i]], id1 = void 0; (id1 = this.data[j++]) != 65535; ) (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id1] = 1; - } - return new Dialect(dialect, flags, disabled); + var n = null; + for (var s1 = 0; s1 < t.length; s1++) if (!i[s1]) for (var o1 = this.dialects[t[s1]], u = void 0; (u = this.data[o1++]) != 65535; ) (n || (n = new Uint8Array(this.maxTerm + 1)))[u] = 1; + return new Tu(e, i, n); } - static deserialize(spec) { - return new LRParser(spec); + static deserialize(e) { + return new Mi(e); } - constructor(spec) { - super(); - this.wrappers = []; - if (spec.version != 14) throw new RangeError("Parser version (".concat(spec.version, ") doesn't match runtime version (", 14, ")")); - var nodeNames = spec.nodeNames.split(" "); - this.minRepeatTerm = nodeNames.length; - for (var i = 0; i < spec.repeatNodeCount; i++) nodeNames.push(""); - var topTerms = Object.keys(spec.topRules).map((r) => spec.topRules[r][1]); - var nodeProps = []; - for (var i1 = 0; i1 < nodeNames.length; i1++) nodeProps.push([]); - function setProp(nodeID, prop, value) { - nodeProps[nodeID].push([prop, prop.deserialize(String(value))]); + constructor(e) { + if ((super(), (this.wrappers = []), e.version != 14)) throw new RangeError("Parser version (".concat(e.version, ") doesn't match runtime version (14)")); + var t = e.nodeNames.split(" "); + this.minRepeatTerm = t.length; + for (var u = 0; u < e.repeatNodeCount; u++) t.push(""); + var i = Object.keys(e.topRules).map((u) => e.topRules[u][1]), + n = []; + for (var u1 = 0; u1 < t.length; u1++) n.push([]); + function s(u, l, a) { + n[u].push([l, l.deserialize(String(a))]); } - __name(setProp, "setProp"); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; - if (spec.nodeProps) + if ((h(s, "setProp"), e.nodeProps)) try { - for (var _iterator = spec.nodeProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var propSpec = _step.value; - var prop = propSpec[0]; - if (typeof prop == "string") prop = NodeProp[prop]; - for (var i2 = 1; i2 < propSpec.length; ) { - var next = propSpec[i2++]; - if (next >= 0) { - setProp(next, prop, propSpec[i2++]); - } else { - var value = propSpec[i2 + -next]; - for (var j = -next; j > 0; j--) setProp(propSpec[i2++], prop, value); - i2++; + for (var _iterator = e.nodeProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var u2 = _step.value; + var l = u2[0]; + typeof l == "string" && (l = ue[l]); + for (var a = 1; a < u2.length; ) { + var c = u2[a++]; + if (c >= 0) s(c, l, u2[a++]); + else { + var f = u2[a + -c]; + for (var d = -c; d > 0; d--) s(u2[a++], l, f); + a++; } } } @@ -26993,62 +21251,41 @@ var __generator = } } } - this.nodeSet = new NodeSet( - nodeNames.map((name2, i) => - NodeType.define({ - name: i >= this.minRepeatTerm ? void 0 : name2, - id: i, - props: nodeProps[i], - top: topTerms.indexOf(i) > -1, - error: i == 0, - skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1, - }) - ) - ); - if (spec.propSources) this.nodeSet = this.nodeSet.extend(...spec.propSources); - this.strict = false; - this.bufferLength = DefaultBufferLength; - var tokenArray = decodeArray(spec.tokenData); - this.context = spec.context; - this.specializerSpecs = spec.specialized || []; - this.specialized = new Uint16Array(this.specializerSpecs.length); - for (var i3 = 0; i3 < this.specializerSpecs.length; i3++) this.specialized[i3] = this.specializerSpecs[i3].term; - this.specializers = this.specializerSpecs.map(getSpecializer); - this.states = decodeArray(spec.states, Uint32Array); - this.data = decodeArray(spec.stateData); - this.goto = decodeArray(spec.goto); - this.maxTerm = spec.maxTerm; - this.tokenizers = spec.tokenizers.map((value) => (typeof value == "number" ? new TokenGroup(tokenArray, value) : value)); - this.topRules = spec.topRules; - this.dialects = spec.dialects || {}; - this.dynamicPrecedences = spec.dynamicPrecedences || null; - this.tokenPrecTable = spec.tokenPrec; - this.termNames = spec.termNames || null; - this.maxNode = this.nodeSet.types.length - 1; - this.dialect = this.parseDialect(); - this.top = this.topRules[Object.keys(this.topRules)[0]]; + (this.nodeSet = new Oi(t.map((u, l) => qe.define({ name: l >= this.minRepeatTerm ? void 0 : u, id: l, props: n[l], top: i.indexOf(l) > -1, error: l == 0, skipped: e.skippedNodes && e.skippedNodes.indexOf(l) > -1 })))), e.propSources && (this.nodeSet = this.nodeSet.extend(...e.propSources)), (this.strict = !1), (this.bufferLength = 1024); + var o = ns(e.tokenData); + (this.context = e.context), (this.specializerSpecs = e.specialized || []), (this.specialized = new Uint16Array(this.specializerSpecs.length)); + for (var u3 = 0; u3 < this.specializerSpecs.length; u3++) this.specialized[u3] = this.specializerSpecs[u3].term; + (this.specializers = this.specializerSpecs.map(F1)), + (this.states = ns(e.states, Uint32Array)), + (this.data = ns(e.stateData)), + (this.goto = ns(e.goto)), + (this.maxTerm = e.maxTerm), + (this.tokenizers = e.tokenizers.map((u) => (typeof u == "number" ? new pi(o, u) : u))), + (this.topRules = e.topRules), + (this.dialects = e.dialects || {}), + (this.dynamicPrecedences = e.dynamicPrecedences || null), + (this.tokenPrecTable = e.tokenPrec), + (this.termNames = e.termNames || null), + (this.maxNode = this.nodeSet.types.length - 1), + (this.dialect = this.parseDialect()), + (this.top = this.topRules[Object.keys(this.topRules)[0]]); } }; - __name(LRParser, "LRParser"); - function pair(data, off) { - return data[off] | (data[off + 1] << 16); - } - __name(pair, "pair"); - function findOffset(data, start, term) { - for (var i = start, next; (next = data[i]) != 65535; i++) if (next == term) return i - start; - return -1; + h(Mi, "LRParser"); + function di(r, e) { + return r[e] | (r[e + 1] << 16); } - __name(findOffset, "findOffset"); - function findFinished(stacks) { - var best = null; + h(di, "pair"); + function Xw(r) { + var e = null; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { - for (var _iterator = stacks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var stack = _step.value; - var stopped = stack.p.stoppedAt; - if ((stack.pos == stack.p.stream.end || (stopped != null && stack.pos > stopped)) && stack.p.parser.stateFlag(stack.state, 2) && (!best || best.score < stack.score)) best = stack; + for (var _iterator = r[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var t = _step.value; + var i = t.p.stoppedAt; + (t.pos == t.p.stream.end || (i != null && t.pos > i)) && t.p.parser.stateFlag(t.state, 2) && (!e || e.score < t.score) && (e = t); } } catch (err) { _didIteratorError = true; @@ -27064,19 +21301,18 @@ var __generator = } } } - return best; + return e; } - __name(findFinished, "findFinished"); - function getSpecializer(spec) { - if (spec.external) { - var mask = spec.extend ? 1 : 0; - return (value, stack) => (spec.external(value, stack) << 1) | mask; + h(Xw, "findFinished"); + function F1(r) { + if (r.external) { + var e = r.extend ? 1 : 0; + return (t, i) => (r.external(t, i) << 1) | e; } - return spec.get; + return r.get; } - __name(getSpecializer, "getSpecializer"); - // src/ui/codemirrorExtensions/bibtex.ts - var parser = LRParser.deserialize({ + h(F1, "getSpecializer"); + var C1 = Mi.deserialize({ version: 14, states: "'[QVQPOOOhQPO'#CsOmQPO'#CwOrQPO'#CzOOQO'#Cp'#CpOOQO'#Ci'#CiQVQPOOOwQPO'#CpO|QQO,59_O![QQO,59cO!aQSO,59fOOQO-E6g-E6gO!fQWO'#C_OOQO,59[,59[OOQO'#Cu'#CuO!qQPO'#CtO!|QPO1G.yO#RQPO'#CxO#WQPO1G.}O#]QPO1G/QO#bQWO'#CjO#mQPO,58yOOQO,58y,58yO#mQPO,58yO|QQO'#CkO#uQPO,59`OOQO7+$e7+$eO|QQO,59dOOQO7+$i7+$iO![QQO7+$lOOQO,59U,59UOOQO-E6h-E6hOOQO1G.e1G.eO$QQPO1G.eOOQO,59V,59VOOQO-E6i-E6iOOQO1G/O1G/OO$YQPO<<HWOOQO7+$P7+$PO$bQQOAN=rO$jQPOAN=rOOQOAN=rAN=rOOQO,59W,59WOOQOG23^G23^O$rQQOG23^OOQO-E6j-E6jOOQOLD(xLD(xP![QQO'#Cl", @@ -27089,5711 +21325,3100 @@ var __generator = tokenData: "!<f~R|OX#{X^$g^p#{pq$gqr#{rs&]st+[t|#{|}+r}!Q#{!Q![,Y![!_#{!_!`,v!`!b#{!b!c-^!c!}Kx!}#R#{#R#SKx#S#T#{#T#bKx#b#cNO#c#oKx#o#p!<[#p#q#{#q#r!<a#r#y#{#y#z$g#z$f#{$f$g$g$g#BY#{#BY#BZ$g#BZ$IS#{$IS$I_$g$I_$I|#{$I|$JO$g$JO$JT#{$JT$JU$g$JU$KV#{$KV$KW$g$KW&FU#{&FU&FV$g&FV;'S#{;'S;=`$a<%lO#{W$QTSWO#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{W$dP;=`<%l#{~$niSWc~OX#{X^$g^p#{pq$gq#o#{#p#q#{#r#y#{#y#z$g#z$f#{$f$g$g$g#BY#{#BY#BZ$g#BZ$IS#{$IS$I_$g$I_$I|#{$I|$JO$g$JO$JT#{$JT$JU$g$JU$KV#{$KV$KW$g$KW&FU#{&FU&FV$g&FV;'S#{;'S;=`$a<%lO#{Y&bZSWOr&]rs'Ts#O&]#O#P'k#P#o&]#o#p)]#p#q&]#q#r)]#r;'S&];'S;=`+U<%lO&]Y'[TUQSWO#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{Y'pZSWOr&]rs(cs#O&]#O#P'k#P#o&]#o#p)]#p#q&]#q#r)]#r;'S&];'S;=`+U<%lO&]Y(jZUQSWOr&]rs'Ts#O&]#O#P'k#P#o&]#o#p)]#p#q&]#q#r)]#r;'S&];'S;=`+U<%lO&]Q)`VOr)]rs)us#O)]#O#P)z#P;'S)];'S;=`+O<%lO)]Q)zOUQQ)}VOr)]rs*ds#O)]#O#P)z#P;'S)];'S;=`+O<%lO)]Q*iVUQOr)]rs)us#O)]#O#P)z#P;'S)];'S;=`+O<%lO)]Q+RP;=`<%l)]Y+XP;=`<%l&]X+cTjPSWO#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X+yToPSWO#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{Y,aVVQSWO!Q#{!Q![,Y![#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X,}TmPSWO#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{~-cfSWO!c#{!c!e.w!e!f0{!f!r.w!r!s9|!s!u.w!u!vDW!v!}.w!}#R#{#R#S.w#S#T#{#T#V.w#V#W0{#W#d.w#d#e9|#e#g.w#g#hDW#h#o.w#p#q#{#r;'S#{;'S;=`$a<%lO#{~.|^SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!}/x!}#R#{#R#S/x#S#T#{#T#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~0P^Y~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!}/x!}#R#{#R#S/x#S#T#{#T#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~1QbSWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!q/x!q!r2Y!r!}/x!}#R#{#R#S/x#S#T#{#T#c/x#c#d2Y#d#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~2abY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!o/x!o!p3i!p!}/x!}#R#{#R#S/x#S#T#{#T#a/x#a#b3i#b#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~3pbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!o/x!o!p4x!p!}/x!}#R#{#R#S/x#S#T#{#T#a/x#a#b4x#b#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~5PbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!g/x!g!h6X!h!}/x!}#R#{#R#S/x#S#T#{#T#X/x#X#Y6X#Y#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~6`bY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!p/x!p!q7h!q!}/x!}#R#{#R#S/x#S#T#{#T#b/x#b#c7h#c#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~7obY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!v/x!v!w8w!w!}/x!}#R#{#R#S/x#S#T#{#T#h/x#h#i8w#i#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~9Q^Q~Y~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!}/x!}#R#{#R#S/x#S#T#{#T#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~:RbSWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!t/x!t!u;Z!u!}/x!}#R#{#R#S/x#S#T#{#T#f/x#f#g;Z#g#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~;bbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!g/x!g!h<j!h!}/x!}#R#{#R#S/x#S#T#{#T#X/x#X#Y<j#Y#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~<q`Y~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!d=s!d!}/x!}#R#{#R#S/x#S#T#{#T#U=s#U#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~=zbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!o/x!o!p?S!p!}/x!}#R#{#R#S/x#S#T#{#T#a/x#a#b?S#b#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~?ZbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!d/x!d!e@c!e!}/x!}#R#{#R#S/x#S#T#{#T#U/x#U#V@c#V#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~@jbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!n/x!n!oAr!o!}/x!}#R#{#R#S/x#S#T#{#T#`/x#`#aAr#a#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~AybY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!g/x!g!hCR!h!}/x!}#R#{#R#S/x#S#T#{#T#X/x#X#YCR#Y#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~C[^T~Y~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!}/x!}#R#{#R#S/x#S#T#{#T#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~D]bSWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!v/x!v!wEe!w!}/x!}#R#{#R#S/x#S#T#{#T#h/x#h#iEe#i#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~ElbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!t/x!t!uFt!u!}/x!}#R#{#R#S/x#S#T#{#T#f/x#f#gFt#g#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~F{bY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!k/x!k!lHT!l!}/x!}#R#{#R#S/x#S#T#{#T#]/x#]#^HT#^#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~H[bY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!p/x!p!qId!q!}/x!}#R#{#R#S/x#S#T#{#T#b/x#b#cId#c#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~IkbY~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!i/x!i!jJs!j!}/x!}#R#{#R#S/x#S#T#{#T#Z/x#Z#[Js#[#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{~J|^X~Y~SWO}#{}!O/x!O!Q#{!Q![/x![!c#{!c!}/x!}#R#{#R#S/x#S#T#{#T#o/x#p#q#{#r;'S#{;'S;=`$a<%lO#{^K}^SWO}#{}!OLy!O!Q#{!Q![Ly![!c#{!c!}Ly!}#R#{#R#SLy#S#T#{#T#oLy#p#q#{#r;'S#{;'S;=`$a<%lO#{^MS^WQZSSWO}#{}!OLy!O!Q#{!Q![Ly![!c#{!c!}Ly!}#R#{#R#SLy#S#T#{#T#oLy#p#q#{#r;'S#{;'S;=`$a<%lO#{_NT`SWO}#{}!OLy!O!Q#{!Q![Ly![!c#{!c!}Ly!}#R#{#R#SLy#S#T#{#T#cLy#c#d! V#d#oLy#p#q#{#r;'S#{;'S;=`$a<%lO#{_! ``WQZSSWOp#{pq!!bq}#{}!OLy!O!Q#{!Q![Ly![!c#{!c!}Ly!}#R#{#R#SLy#S#T#{#T#oLy#p#q#{#r;'S#{;'S;=`$a<%lO#{X!!gVSWO#]#{#]#^!!|#^#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!#RVSWO#W#{#W#X!#h#X#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!#mVSWO#X#{#X#Y!$S#Y#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!$XVSWO#T#{#T#U!$n#U#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!$sVSWOp#{pq!%Yq#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!%_VSWO#k#{#k#l!%t#l#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!%yVSWO#[#{#[#]!&`#]#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!&eVSWO#m#{#m#n!&z#n#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!'PVSWOp#{pq!'fq#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!'kVSWO#h#{#h#i!(Q#i#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!(VVSWO#[#{#[#]!(l#]#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!(qVSWO#]#{#]#^!)W#^#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!)]VSWO#g#{#g#h!)r#h#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!)wVSWOp#{pq!*^q#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!*cVSWO#g#{#g#h!*x#h#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!*}VSWO#h#{#h#i!+d#i#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!+iVSWO#f#{#f#g!,O#g#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!,TVSWO#]#{#]#^!,j#^#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!,oVSWO#b#{#b#c!-U#c#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!-ZVSWO#Z#{#Z#[!-p#[#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!-uVSWOp#{pq!.[q#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!.aVSWO#]#{#]#^!.v#^#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!.{VSWO#g#{#g#h!/b#h#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!/gVSWOp#{pq!/|q#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!0RVSWO#b#{#b#c!0h#c#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!0mVSWO#X#{#X#Y!1S#Y#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!1XVSWO#X#{#X#Y!1n#Y#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!1sVSWO#W#{#W#X!2Y#X#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!2_VSWO#X#{#X#Y!2t#Y#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!2yVSWO#W#{#W#X!3`#X#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!3eVSWOp#{pq!3zq#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!4PVSWO#U#{#U#V!4f#V#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!4kVSWO#i#{#i#j!5Q#j#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!5VVSWO#h#{#h#i!5l#i#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!5qVSWOp#{pq!6Wq#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!6]VSWO#k#{#k#l!6r#l#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!6wVSWO#[#{#[#]!7^#]#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!7cVSWO#T#{#T#U!7x#U#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!7}VSWO#h#{#h#i!8d#i#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!8iVSWO#X#{#X#Y!9O#Y#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!9TVSWO#j#{#j#k!9j#k#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!9oVSWO#X#{#X#Y!:U#Y#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!:ZVSWO#f#{#f#g!:p#g#o#{#p#q#{#r;'S#{;'S;=`$a<%lO#{X!:uXSWOp!;bpq#{q!b!;b!b!c#{!c#o!;b#p#q!;b#r;'S!;b;'S;=`!<U<%lO!;bX!;iX[PSWOp!;bpq#{q!b!;b!b!c#{!c#o!;b#p#q!;b#r;'S!;b;'S;=`!<U<%lO!;bX!<XP;=`<%l!;b~!<aOe~~!<fOf~", tokenizers: [0, 1, 2, 3], - topRules: { - Program: [0, 1], - }, + topRules: { Program: [0, 1] }, tokenPrec: 4, }); - // src/ui/codemirrorExtensions/index.ts - var language2 = LRLanguage.define({ - parser: parser.configure({ - props: [ - styleTags({ - Identifier: tags.variableName, - Comment: tags.comment, - Key: tags.name, - Number: tags.number, - BraceContent: tags.string, - Quoted: tags.string, - Command: tags.className, - CommentCommand: tags.className, - PreambleCommand: tags.className, - StringCommand: tags.className, - Field: tags.variableName, - }), - ], - }), - }); - var highlighting = HighlightStyle.define([ - { - tag: tags.comment, - color: "var(--light5)", - }, - { - tag: tags.name, - color: "var(--orange)", - }, - { - tag: tags.number, - color: "var(--light-blue)", - }, - { - tag: tags.string, - color: "var(--green)", - }, - { - tag: tags.className, - color: "var(--pink)", - }, - { - tag: tags.variableName, - color: "white", - }, - ]); - function bibtexLanguage() { - return new LanguageSupport(language2); - } - __name(bibtexLanguage, "bibtexLanguage"); - function bibtexSyntaxHighlighting() { - return syntaxHighlighting(highlighting); - } - __name(bibtexSyntaxHighlighting, "bibtexSyntaxHighlighting"); - // src/ui/Editor.svelte - function create_fragment2(ctx) { - var main; - var copybutton; - var current; - copybutton = new CopyButton_default({ - props: { - bibtex: ctx[0], - }, - }); - return { - c() { - main = element("main"); - create_component(copybutton.$$.fragment); - attr(main, "id", "editor"); - attr(main, "class", "svelte-x4zh2g"); - }, - m(target, anchor) { - insert(target, main, anchor); - mount_component(copybutton, main, null); - ctx[5](main); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var copybutton_changes = {}; - if (dirty & 1) copybutton_changes.bibtex = ctx2[0]; - copybutton.$set(copybutton_changes); - }, - i(local) { - if (current) return; - transition_in(copybutton.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(copybutton.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(main); - destroy_component(copybutton); - ctx[5](null); - }, - }; + var Qw = $i.define({ parser: C1.configure({ props: [Du({ Identifier: B.variableName, Comment: B.comment, Key: B.name, Number: B.number, BraceContent: B.string, Quoted: B.string, Command: B.className, CommentCommand: B.className, PreambleCommand: B.className, StringCommand: B.className, Field: B.variableName })] }) }), + Jw = fi.define([ + { tag: B.comment, color: "var(--light5)" }, + { tag: B.name, color: "var(--orange)" }, + { tag: B.number, color: "var(--light-blue)" }, + { tag: B.string, color: "var(--green)" }, + { tag: B.className, color: "var(--pink)" }, + { tag: B.variableName, color: "white" }, + ]); + function A1() { + return new is(Qw); } - __name(create_fragment2, "create_fragment"); - function instance2($$self, $$props, $$invalidate) { - var bibtex = $$props.bibtex; - var error = $$props.error; - var editorRef; - var cmEditor; - var lintCompartment; - onMount(() => { - var onUpdate = EditorView.updateListener.of((v) => { - if (cmEditor && v.docChanged) { - $$invalidate(0, (bibtex = cmEditor.state.doc.toString())); - } + h(A1, "bibtexLanguage"); + function E1() { + return jD(Jw); + } + h(E1, "bibtexSyntaxHighlighting"); + function Zw(r) { + var e, t, i; + return ( + (t = new c1({ props: { bibtex: r[0] } })), + { + c() { + (e = T("main")), P(t.$$.fragment), v(e, "id", "editor"), v(e, "class", "svelte-x4zh2g"); + }, + m(n, s) { + C(n, e, s), M(t, e, null), r[5](e), (i = !0); + }, + p(n, param) { + var _param = _slicedToArray(param, 1), + s = _param[0]; + var o = {}; + s & 1 && (o.bibtex = n[0]), t.$set(o); + }, + i(n) { + i || (x(t.$$.fragment, n), (i = !0)); + }, + o(n) { + S(t.$$.fragment, n), (i = !1); + }, + d(n) { + n && y(e), $(t), r[5](null); + }, + } + ); + } + h(Zw, "create_fragment"); + function e4(r, e, t) { + var i = e.bibtex, + n = e.error, + s, + o, + u; + ka(() => { + var a = te.updateListener.of((c) => { + o && c.docChanged && t(0, (i = o.state.doc.toString())); }); - $$invalidate(4, (lintCompartment = new Compartment())); - $$invalidate( - 3, - (cmEditor = new EditorView({ - parent: editorRef, - state: EditorState.create({ - doc: bibtex, - extensions: [lineNumbers(), highlightActiveLineGutter(), dropCursor(), EditorState.allowMultipleSelections.of(true), bracketMatching(), drawSelection(), bibtexLanguage(), bibtexSyntaxHighlighting(), keymap.of([...historyKeymap, indentWithTab]), history(), onUpdate, lintCompartment.of([])], - }), - })) - ); - cmEditor.focus(); - window.cmEditor = cmEditor; + t(4, (u = new oi())), t(3, (o = new te({ parent: s, state: ae.create({ doc: i, extensions: [wD(), xD(), ED(), ae.allowMultipleSelections.of(!0), GD(), FD(), A1(), E1(), bh.of([...t1, r11]), QD(), a, u.of([])] }) }))), o.focus(), (window.cmEditor = o); }); - function main_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - editorRef = $$value; - $$invalidate(1, editorRef); + function l(a) { + X[a ? "unshift" : "push"](() => { + (s = a), t(1, s); }); } - __name(main_binding, "main_binding"); - $$self.$$set = ($$props2) => { - if ("bibtex" in $$props2) $$invalidate(0, (bibtex = $$props2.bibtex)); - if ("error" in $$props2) $$invalidate(2, (error = $$props2.error)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 28) { - $: { - cmEditor === null || cmEditor === void 0 - ? void 0 - : cmEditor.dispatch({ - effects: lintCompartment.reconfigure( - linter(() => { - if (error && cmEditor) { - var line = cmEditor.state.doc.line(error.line); - var from = line.from; - var to = line.to; - return [ - { - from, - to, - severity: "error", - message: "Syntax Error", - }, - ]; - } else { - return []; - } - }) - ), - }); - } - } - if ($$self.$$.dirty & 9) { - $: { - if (cmEditor && bibtex !== cmEditor.state.doc.toString()) { - cmEditor.dispatch({ - changes: { - from: 0, - to: cmEditor.state.doc.length, - insert: bibtex, - }, + return ( + h(l, "main_binding"), + (r.$$set = (a) => { + "bibtex" in a && t(0, (i = a.bibtex)), "error" in a && t(2, (n = a.error)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 28) + e: o == null || + o.dispatch({ + effects: u.reconfigure( + l1(() => { + if (n && o) { + var a = o.state.doc.line(n.line), + c = a.from, + f = a.to; + return [{ from: c, to: f, severity: "error", message: "Syntax Error" }]; + } else return []; + }) + ), }); - } - } - } - }; - return [bibtex, editorRef, error, cmEditor, lintCompartment, main_binding]; - } - __name(instance2, "instance"); - var Editor = class Editor extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance2, create_fragment2, safe_not_equal, { - bibtex: 0, - error: 2, - }); + if (r.$$.dirty & 9) e: o && i !== o.state.doc.toString() && o.dispatch({ changes: { from: 0, to: o.state.doc.length, insert: i } }); + }), + [i, s, n, o, u, l] + ); + } + h(e4, "instance"); + var Ru = class Ru extends re { + constructor(e) { + super(), se(this, e, e4, Zw, ne, { bibtex: 0, error: 2 }); } }; - __name(Editor, "Editor"); - var Editor_default = Editor; - // src/ui/Collapsible.svelte - function create_fragment3(ctx) { - var details; - var summary; - var t0; - var t1; - var current; - var default_slot_template = ctx[3].default; - var default_slot = create_slot(default_slot_template, ctx, ctx[2], null); + h(Ru, "Editor"); + var v1 = Ru; + function t4(r) { + var e, + t, + i, + n, + s, + o = r[3].default, + u = gi(o, r, r[2], null); return { c() { - details = element("details"); - summary = element("summary"); - t0 = text(ctx[0]); - t1 = space(); - if (default_slot) default_slot.c(); - attr(summary, "class", "svelte-ee92zc"); - details.open = ctx[1]; - attr(details, "class", "svelte-ee92zc"); + (e = T("details")), (t = T("summary")), (i = K(r[0])), (n = q()), u && u.c(), v(t, "class", "svelte-ee92zc"), (e.open = r[1]), v(e, "class", "svelte-ee92zc"); }, - m(target, anchor) { - insert(target, details, anchor); - append(details, summary); - append(summary, t0); - append(details, t1); - if (default_slot) { - default_slot.m(details, null); - } - current = true; + m(l, a) { + C(l, e, a), V(e, t), V(t, i), V(e, n), u && u.m(e, null), (s = !0); }, - p(ctx2, param) { + p(l, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (!current || dirty & 1) set_data(t0, ctx2[0]); - if (default_slot) { - if (default_slot.p && (!current || dirty & 4)) { - update_slot_base(default_slot, default_slot_template, ctx2, ctx2[2], !current ? get_all_dirty_from_scope(ctx2[2]) : get_slot_changes(default_slot_template, ctx2[2], dirty, null), null); - } - } - if (!current || dirty & 2) { - details.open = ctx2[1]; - } + a = _param[0]; + (!s || a & 1) && Ke(i, l[0]), u && u.p && (!s || a & 4) && bi(u, o, l, l[2], s ? Di(o, l[2], a, null) : Fi(l[2]), null), (!s || a & 2) && (e.open = l[1]); }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; + i(l) { + s || (x(u, l), (s = !0)); }, - o(local) { - transition_out(default_slot, local); - current = false; + o(l) { + S(u, l), (s = !1); }, - d(detaching) { - if (detaching) detach(details); - if (default_slot) default_slot.d(detaching); + d(l) { + l && y(e), u && u.d(l); }, }; } - __name(create_fragment3, "create_fragment"); - function instance3($$self, $$props, $$invalidate) { - var tmp = $$props.$$slots, - slots = tmp === void 0 ? {} : tmp, - $$scope = $$props.$$scope; - var title2 = $$props.title; - var _$$props_open = $$props.open, - open = _$$props_open === void 0 ? false : _$$props_open; - $$self.$$set = ($$props2) => { - if ("title" in $$props2) $$invalidate(0, (title2 = $$props2.title)); - if ("open" in $$props2) $$invalidate(1, (open = $$props2.open)); - if ("$$scope" in $$props2) $$invalidate(2, ($$scope = $$props2.$$scope)); - }; - return [title2, open, $$scope, slots]; - } - __name(instance3, "instance"); - var Collapsible = class Collapsible extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance3, create_fragment3, safe_not_equal, { - title: 0, - open: 1, - }); + h(t4, "create_fragment"); + function i4(r, e, t) { + var tmp = e.$$slots, + i = tmp === void 0 ? {} : tmp, + n = e.$$scope, + s = e.title, + tmp1 = e.open, + o = tmp1 === void 0 ? !1 : tmp1; + return ( + (r.$$set = (u) => { + "title" in u && t(0, (s = u.title)), "open" in u && t(1, (o = u.open)), "$$scope" in u && t(2, (n = u.$$scope)); + }), + [s, o, n, i] + ); + } + h(i4, "instance"); + var $u = class $u extends re { + constructor(e) { + super(), se(this, e, i4, t4, ne, { title: 0, open: 1 }); } }; - __name(Collapsible, "Collapsible"); - var Collapsible_default = Collapsible; - // src/ui/Checkbox.svelte - function create_fragment4(ctx) { - var input; - var mounted; - var dispose; + h($u, "Collapsible"); + var tt = $u; + function r4(r) { + var e, t, i; return { c() { - input = element("input"); - attr(input, "type", "checkbox"); - attr(input, "name", ctx[1]); - attr(input, "class", "svelte-doypik"); + (e = T("input")), v(e, "type", "checkbox"), v(e, "name", r[1]), v(e, "class", "svelte-doypik"); }, - m(target, anchor) { - insert(target, input, anchor); - input.checked = ctx[0]; - if (!mounted) { - dispose = [listen(input, "change", ctx[3]), listen(input, "change", ctx[4])]; - mounted = true; - } + m(n, s) { + C(n, e, s), (e.checked = r[0]), t || ((i = [ye(e, "change", r[3]), ye(e, "change", r[4])]), (t = !0)); }, - p(ctx2, param) { + p(n, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (dirty & 2) { - attr(input, "name", ctx2[1]); - } - if (dirty & 1) { - input.checked = ctx2[0]; - } + s = _param[0]; + s & 2 && v(e, "name", n[1]), s & 1 && (e.checked = n[0]); }, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(input); - mounted = false; - run_all(dispose); + i: xe, + o: xe, + d(n) { + n && y(e), (t = !1), It(i); }, }; } - __name(create_fragment4, "create_fragment"); - function instance4($$self, $$props, $$invalidate) { - var name2 = $$props.name; - var _$$props_checked = $$props.checked, - checked = _$$props_checked === void 0 ? void 0 : _$$props_checked; - var dispatch = createEventDispatcher(); - function input_change_handler() { - checked = this.checked; - $$invalidate(0, checked); - } - __name(input_change_handler, "input_change_handler"); - var change_handler = /* @__PURE__ */ __name(() => dispatch("change"), "change_handler"); - $$self.$$set = ($$props2) => { - if ("name" in $$props2) $$invalidate(1, (name2 = $$props2.name)); - if ("checked" in $$props2) $$invalidate(0, (checked = $$props2.checked)); - }; - return [checked, name2, dispatch, input_change_handler, change_handler]; - } - __name(instance4, "instance"); - var Checkbox = class Checkbox extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance4, create_fragment4, safe_not_equal, { - name: 1, - checked: 0, - }); + h(r4, "create_fragment"); + function n4(r, e, t) { + var i = e.name, + tmp = e.checked, + n = tmp === void 0 ? void 0 : tmp, + s = Wi(); + function o() { + (n = this.checked), t(0, n); + } + h(o, "input_change_handler"); + var u = h(() => s("change"), "change_handler"); + return ( + (r.$$set = (l) => { + "name" in l && t(1, (i = l.name)), "checked" in l && t(0, (n = l.checked)); + }), + [n, i, s, o, u] + ); + } + h(n4, "instance"); + var Mu = class Mu extends re { + constructor(e) { + super(), se(this, e, n4, r4, ne, { name: 1, checked: 0 }); } }; - __name(Checkbox, "Checkbox"); - var Checkbox_default = Checkbox; - // src/ui/Label.svelte - function create_fragment5(ctx) { - var label; - var current; - var default_slot_template = ctx[3].default; - var default_slot = create_slot(default_slot_template, ctx, ctx[2], null); + h(Mu, "Checkbox"); + var fr = Mu; + function s4(r) { + var e, + t, + i = r[3].default, + n = gi(i, r, r[2], null); return { c() { - label = element("label"); - if (default_slot) default_slot.c(); - attr(label, "title", ctx[0]); - attr(label, "class", "svelte-a2tm3u"); - toggle_class(label, "inset", ctx[1]); + (e = T("label")), n && n.c(), v(e, "title", r[0]), v(e, "class", "svelte-a2tm3u"), kr(e, "inset", r[1]); }, - m(target, anchor) { - insert(target, label, anchor); - if (default_slot) { - default_slot.m(label, null); - } - current = true; + m(s, o) { + C(s, e, o), n && n.m(e, null), (t = !0); }, - p(ctx2, param) { + p(s, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (default_slot) { - if (default_slot.p && (!current || dirty & 4)) { - update_slot_base(default_slot, default_slot_template, ctx2, ctx2[2], !current ? get_all_dirty_from_scope(ctx2[2]) : get_slot_changes(default_slot_template, ctx2[2], dirty, null), null); - } - } - if (!current || dirty & 1) { - attr(label, "title", ctx2[0]); - } - if (!current || dirty & 2) { - toggle_class(label, "inset", ctx2[1]); - } + o = _param[0]; + n && n.p && (!t || o & 4) && bi(n, i, s, s[2], t ? Di(i, s[2], o, null) : Fi(s[2]), null), (!t || o & 1) && v(e, "title", s[0]), (!t || o & 2) && kr(e, "inset", s[1]); }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; + i(s) { + t || (x(n, s), (t = !0)); }, - o(local) { - transition_out(default_slot, local); - current = false; + o(s) { + S(n, s), (t = !1); }, - d(detaching) { - if (detaching) detach(label); - if (default_slot) default_slot.d(detaching); + d(s) { + s && y(e), n && n.d(s); }, }; } - __name(create_fragment5, "create_fragment"); - function instance5($$self, $$props, $$invalidate) { - var tmp = $$props.$$slots, - slots = tmp === void 0 ? {} : tmp, - $$scope = $$props.$$scope; - var tmp1 = $$props.title, - title2 = tmp1 === void 0 ? void 0 : tmp1; - var _$$props_inset = $$props.inset, - inset = _$$props_inset === void 0 ? void 0 : _$$props_inset; - $$self.$$set = ($$props2) => { - if ("title" in $$props2) $$invalidate(0, (title2 = $$props2.title)); - if ("inset" in $$props2) $$invalidate(1, (inset = $$props2.inset)); - if ("$$scope" in $$props2) $$invalidate(2, ($$scope = $$props2.$$scope)); - }; - return [title2, inset, $$scope, slots]; - } - __name(instance5, "instance"); - var Label = class Label extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance5, create_fragment5, safe_not_equal, { - title: 0, - inset: 1, - }); + h(s4, "create_fragment"); + function o4(r, e, t) { + var tmp = e.$$slots, + i = tmp === void 0 ? {} : tmp, + n = e.$$scope, + tmp1 = e.title, + s = tmp1 === void 0 ? void 0 : tmp1, + tmp2 = e.inset, + o = tmp2 === void 0 ? void 0 : tmp2; + return ( + (r.$$set = (u) => { + "title" in u && t(0, (s = u.title)), "inset" in u && t(1, (o = u.inset)), "$$scope" in u && t(2, (n = u.$$scope)); + }), + [s, o, n, i] + ); + } + h(o4, "instance"); + var Pu = class Pu extends re { + constructor(e) { + super(), se(this, e, o4, s4, ne, { title: 0, inset: 1 }); } }; - __name(Label, "Label"); - var Label_default = Label; - // src/ui/SubOptions.svelte - function create_fragment6(ctx) { - var div; - var current; - var default_slot_template = ctx[1].default; - var default_slot = create_slot(default_slot_template, ctx, ctx[0], null); + h(Pu, "Label"); + var it = Pu; + function u4(r) { + var e, + t, + i = r[1].default, + n = gi(i, r, r[0], null); return { c() { - div = element("div"); - if (default_slot) default_slot.c(); - attr(div, "class", "suboptions svelte-1gkj6ol"); + (e = T("div")), n && n.c(), v(e, "class", "suboptions svelte-1gkj6ol"); }, - m(target, anchor) { - insert(target, div, anchor); - if (default_slot) { - default_slot.m(div, null); - } - current = true; + m(s, o) { + C(s, e, o), n && n.m(e, null), (t = !0); }, - p(ctx2, param) { + p(s, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (default_slot) { - if (default_slot.p && (!current || dirty & 1)) { - update_slot_base(default_slot, default_slot_template, ctx2, ctx2[0], !current ? get_all_dirty_from_scope(ctx2[0]) : get_slot_changes(default_slot_template, ctx2[0], dirty, null), null); - } - } + o = _param[0]; + n && n.p && (!t || o & 1) && bi(n, i, s, s[0], t ? Di(i, s[0], o, null) : Fi(s[0]), null); }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; + i(s) { + t || (x(n, s), (t = !0)); }, - o(local) { - transition_out(default_slot, local); - current = false; + o(s) { + S(n, s), (t = !1); }, - d(detaching) { - if (detaching) detach(div); - if (default_slot) default_slot.d(detaching); + d(s) { + s && y(e), n && n.d(s); }, }; } - __name(create_fragment6, "create_fragment"); - function instance6($$self, $$props, $$invalidate) { - var tmp = $$props.$$slots, - slots = tmp === void 0 ? {} : tmp, - $$scope = $$props.$$scope; - $$self.$$set = ($$props2) => { - if ("$$scope" in $$props2) $$invalidate(0, ($$scope = $$props2.$$scope)); - }; - return [$$scope, slots]; + h(u4, "create_fragment"); + function l4(r, e, t) { + var tmp = e.$$slots, + i = tmp === void 0 ? {} : tmp, + n = e.$$scope; + return ( + (r.$$set = (s) => { + "$$scope" in s && t(0, (n = s.$$scope)); + }), + [n, i] + ); } - __name(instance6, "instance"); - var SubOptions = class SubOptions extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance6, create_fragment6, safe_not_equal, {}); + h(l4, "instance"); + var Lu = class Lu extends re { + constructor(e) { + super(), se(this, e, l4, u4, ne, {}); } }; - __name(SubOptions, "SubOptions"); - var SubOptions_default = SubOptions; - // src/ui/Option.svelte - function create_default_slot_1(ctx) { - var checkbox; - var updating_checked; - var t0; - var t1_value = ctx[3].title + ""; - var t1; - var current; - function checkbox_checked_binding(value) { - ctx[6](value); - } - __name(checkbox_checked_binding, "checkbox_checked_binding"); - var checkbox_props = { - name: ctx[1], - }; - if (ctx[0] !== void 0) { - checkbox_props.checked = ctx[0]; - } - checkbox = new Checkbox_default({ - props: checkbox_props, - }); - binding_callbacks.push(() => bind(checkbox, "checked", checkbox_checked_binding)); - checkbox.$on("change", ctx[7]); + h(Lu, "SubOptions"); + var qu = Lu; + function a4(r) { + var e, + t, + i, + n = r[3].title + "", + s, + o; + function u(a) { + r[6](a); + } + h(u, "checkbox_checked_binding"); + var l = { name: r[1] }; + return ( + r[0] !== void 0 && (l.checked = r[0]), + (e = new fr({ props: l })), + X.push(() => Z(e, "checked", u)), + e.$on("change", r[7]), + { + c() { + P(e.$$.fragment), (i = q()), (s = K(n)); + }, + m(a, c) { + M(e, a, c), C(a, i, c), C(a, s, c), (o = !0); + }, + p(a, c) { + var f = {}; + c & 2 && (f.name = a[1]), !t && c & 1 && ((t = !0), (f.checked = a[0]), J(() => (t = !1))), e.$set(f); + }, + i(a) { + o || (x(e.$$.fragment, a), (o = !0)); + }, + o(a) { + S(e.$$.fragment, a), (o = !1); + }, + d(a) { + $(e, a), a && y(i), a && y(s); + }, + } + ); + } + h(a4, "create_default_slot_1"); + function k1(r) { + var e, + t, + i = r[0] && w1(r); return { c() { - create_component(checkbox.$$.fragment); - t0 = space(); - t1 = text(t1_value); - }, - m(target, anchor) { - mount_component(checkbox, target, anchor); - insert(target, t0, anchor); - insert(target, t1, anchor); - current = true; - }, - p(ctx2, dirty) { - var checkbox_changes = {}; - if (dirty & 2) checkbox_changes.name = ctx2[1]; - if (!updating_checked && dirty & 1) { - updating_checked = true; - checkbox_changes.checked = ctx2[0]; - add_flush_callback(() => (updating_checked = false)); - } - checkbox.$set(checkbox_changes); + i && i.c(), (e = ii()); + }, + m(n, s) { + i && i.m(n, s), C(n, e, s), (t = !0); + }, + p(n, s) { + n[0] + ? i + ? (i.p(n, s), s & 1 && x(i, 1)) + : ((i = w1(n)), i.c(), x(i, 1), i.m(e.parentNode, e)) + : i && + (ri(), + S(i, 1, 1, () => { + i = null; + }), + ni()); }, - i(local) { - if (current) return; - transition_in(checkbox.$$.fragment, local); - current = true; + i(n) { + t || (x(i), (t = !0)); }, - o(local) { - transition_out(checkbox.$$.fragment, local); - current = false; + o(n) { + S(i), (t = !1); }, - d(detaching) { - destroy_component(checkbox, detaching); - if (detaching) detach(t0); - if (detaching) detach(t1); + d(n) { + i && i.d(n), n && y(e); }, }; } - __name(create_default_slot_1, "create_default_slot_1"); - function create_if_block(ctx) { - var if_block_anchor; - var current; - var if_block = ctx[0] && create_if_block_1(ctx); + h(k1, "create_if_block"); + function w1(r) { + var e, t; + return ( + (e = new qu({ props: { $$slots: { default: [h4] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, n) { + var s = {}; + n & 256 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(w1, "create_if_block_1"); + function h4(r) { + var e, + t = r[5].default, + i = gi(t, r, r[8], null); return { c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); + i && i.c(); }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; + m(n, s) { + i && i.m(n, s), (e = !0); }, - p(ctx2, dirty) { - if (ctx2[0]) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & 1) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_1(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } + p(n, s) { + i && i.p && (!e || s & 256) && bi(i, t, n, n[8], e ? Di(t, n[8], s, null) : Fi(n[8]), null); }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; + i(n) { + e || (x(i, n), (e = !0)); }, - o(local) { - transition_out(if_block); - current = false; + o(n) { + S(i, n), (e = !1); }, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); + d(n) { + i && i.d(n); }, }; } - __name(create_if_block, "create_if_block"); - function create_if_block_1(ctx) { - var suboptions; - var current; - suboptions = new SubOptions_default({ - props: { - $$slots: { - default: [create_default_slot], - }, - $$scope: { - ctx, - }, - }, - }); + h(h4, "create_default_slot"); + function c4(r) { + var o; + var e, t, i, n; + e = new it({ props: { title: (o = r[3].description) == null ? void 0 : o.join("\n"), inset: !0, $$slots: { default: [a4] }, $$scope: { ctx: r } } }); + var s = r[4].default && k1(r); return { c() { - create_component(suboptions.$$.fragment); + P(e.$$.fragment), (t = q()), s && s.c(), (i = ii()); }, - m(target, anchor) { - mount_component(suboptions, target, anchor); - current = true; + m(u, l) { + M(e, u, l), C(u, t, l), s && s.m(u, l), C(u, i, l), (n = !0); }, - p(ctx2, dirty) { - var suboptions_changes = {}; - if (dirty & 256) { - suboptions_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - suboptions.$set(suboptions_changes); + p(u, param) { + var _param = _slicedToArray(param, 1), + l = _param[0]; + var a = {}; + l & 259 && (a.$$scope = { dirty: l, ctx: u }), + e.$set(a), + u[4].default + ? s + ? (s.p(u, l), l & 16 && x(s, 1)) + : ((s = k1(u)), s.c(), x(s, 1), s.m(i.parentNode, i)) + : s && + (ri(), + S(s, 1, 1, () => { + s = null; + }), + ni()); }, - i(local) { - if (current) return; - transition_in(suboptions.$$.fragment, local); - current = true; + i(u) { + n || (x(e.$$.fragment, u), x(s), (n = !0)); }, - o(local) { - transition_out(suboptions.$$.fragment, local); - current = false; + o(u) { + S(e.$$.fragment, u), S(s), (n = !1); }, - d(detaching) { - destroy_component(suboptions, detaching); + d(u) { + $(e, u), u && y(t), s && s.d(u), u && y(i); }, }; } - __name(create_if_block_1, "create_if_block_1"); - function create_default_slot(ctx) { - var current; - var default_slot_template = ctx[5].default; - var default_slot = create_slot(default_slot_template, ctx, ctx[8], null); + h(c4, "create_fragment"); + function f4(r, e, t) { + var tmp = e.$$slots, + i = tmp === void 0 ? {} : tmp, + n = e.$$scope, + s = jm(i), + o = e.option, + tmp1 = e.checked, + u = tmp1 === void 0 ? void 0 : tmp1, + l = Wi(), + a = g0[o]; + function c(d) { + (u = d), t(0, u); + } + h(c, "checkbox_checked_binding"); + var f = h(() => l("change", u), "change_handler"); + return ( + (r.$$set = (d) => { + "option" in d && t(1, (o = d.option)), "checked" in d && t(0, (u = d.checked)), "$$scope" in d && t(8, (n = d.$$scope)); + }), + [u, o, l, a, s, i, c, f, n] + ); + } + h(f4, "instance"); + var Iu = class Iu extends re { + constructor(e) { + super(), se(this, e, f4, c4, ne, { option: 1, checked: 0 }); + } + }; + h(Iu, "Option"); + var me = Iu; + function d4(r) { + var e, t, i, n, s, o; return { c() { - if (default_slot) default_slot.c(); - }, - m(target, anchor) { - if (default_slot) { - default_slot.m(target, anchor); - } - current = true; - }, - p(ctx2, dirty) { - if (default_slot) { - if (default_slot.p && (!current || dirty & 256)) { - update_slot_base(default_slot, default_slot_template, ctx2, ctx2[8], !current ? get_all_dirty_from_scope(ctx2[8]) : get_slot_changes(default_slot_template, ctx2[8], dirty, null), null); - } - } + (e = K("Fields to omit:\n ")), (t = T("textarea")), (i = q()), (n = T("p")), (n.innerHTML = "Space delimited, e.g: <code>id type publisher author</code>"), v(t, "name", "omitList"), v(t, "class", "omit svelte-1t0249j"), v(t, "placeholder", "e.g. abstract keywords"), v(t, "spellcheck", "false"); }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; + m(u, l) { + C(u, e, l), C(u, t, l), Ce(t, r[1]), C(u, i, l), C(u, n, l), s || ((o = ye(t, "input", r[9])), (s = !0)); }, - o(local) { - transition_out(default_slot, local); - current = false; + p(u, l) { + l & 2 && Ce(t, u[1]); }, - d(detaching) { - if (default_slot) default_slot.d(detaching); + d(u) { + u && y(e), u && y(t), u && y(i), u && y(n), (s = !1), o(); }, }; } - __name(create_default_slot, "create_default_slot"); - function create_fragment7(ctx) { - var _a2; - var label; - var t2; - var if_block_anchor; - var current; - label = new Label_default({ - props: { - title: (_a2 = ctx[3].description) == null ? void 0 : _a2.join("\n"), - inset: true, - $$slots: { - default: [create_default_slot_1], - }, - $$scope: { - ctx, - }, - }, - }); - var if_block = ctx[4].default && create_if_block(ctx); + h(d4, "create_default_slot_2"); + function p4(r) { + var e, t, i, n, s, o, u; return { c() { - create_component(label.$$.fragment); - t2 = space(); - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - mount_component(label, target, anchor); - insert(target, t2, anchor); - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var label_changes = {}; - if (dirty & 259) { - label_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label.$set(label_changes); - if (ctx2[4].default) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & 16) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } + (e = T("label")), (t = K("Template:\n ")), (i = T("textarea")), (n = q()), (s = T("p")), (s.innerHTML = '<a href="./manual/key-generation.html" target="_blank">Template documentation</a>'), v(i, "name", "generateKeysTemplate"); }, - i(local) { - if (current) return; - transition_in(label.$$.fragment, local); - transition_in(if_block); - current = true; + m(l, a) { + C(l, e, a), V(e, t), V(e, i), Ce(i, r[7]), C(l, n, a), C(l, s, a), o || ((u = ye(i, "input", r[14])), (o = !0)); }, - o(local) { - transition_out(label.$$.fragment, local); - transition_out(if_block); - current = false; + p(l, a) { + a & 128 && Ce(i, l[7]); }, - d(detaching) { - destroy_component(label, detaching); - if (detaching) detach(t2); - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); + d(l) { + l && y(e), l && y(n), l && y(s), (o = !1), u(); }, }; } - __name(create_fragment7, "create_fragment"); - function instance7($$self, $$props, $$invalidate) { - var tmp = $$props.$$slots, - slots = tmp === void 0 ? {} : tmp, - $$scope = $$props.$$scope; - var $$slots = compute_slots(slots); - var option = $$props.option; - var _$$props_checked = $$props.checked, - checked = _$$props_checked === void 0 ? void 0 : _$$props_checked; - var dispatch = createEventDispatcher(); - var def = optionDefinitionByKey[option]; - function checkbox_checked_binding(value) { - checked = value; - $$invalidate(0, checked); - } - __name(checkbox_checked_binding, "checkbox_checked_binding"); - var change_handler = /* @__PURE__ */ __name(() => dispatch("change", checked), "change_handler"); - $$self.$$set = ($$props2) => { - if ("option" in $$props2) $$invalidate(1, (option = $$props2.option)); - if ("checked" in $$props2) $$invalidate(0, (checked = $$props2.checked)); - if ("$$scope" in $$props2) $$invalidate(8, ($$scope = $$props2.$$scope)); - }; - return [checked, option, dispatch, def, $$slots, slots, checkbox_checked_binding, change_handler, $$scope]; - } - __name(instance7, "instance"); - var Option = class Option extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance7, create_fragment7, safe_not_equal, { - option: 1, - checked: 0, - }); + h(p4, "create_default_slot_1"); + function m4(r) { + var e, t, i, n, s, o, u, l, a, c, f, d, p, m, D, g, b, F; + function A(R) { + r[10](R); + } + h(A, "option0_checked_binding"); + var E = { option: "omit", $$slots: { default: [d4] }, $$scope: { ctx: r } }; + r[0] !== void 0 && (E.checked = r[0]), (e = new me({ props: E })), X.push(() => Z(e, "checked", A)); + function O(R) { + r[11](R); + } + h(O, "option1_checked_binding"); + var _ = { option: "stripComments" }; + r[2] !== void 0 && (_.checked = r[2]), (n = new me({ props: _ })), X.push(() => Z(n, "checked", O)); + function W(R) { + r[12](R); + } + h(W, "option2_checked_binding"); + var Q = { option: "tidyComments" }; + r[3] !== void 0 && (Q.checked = r[3]), (u = new me({ props: Q })), X.push(() => Z(u, "checked", W)); + function j(R) { + r[13](R); + } + h(j, "option3_checked_binding"); + var Y = { option: "lowercase" }; + r[4] !== void 0 && (Y.checked = r[4]), (c = new me({ props: Y })), X.push(() => Z(c, "checked", j)); + function I(R) { + r[15](R); + } + h(I, "option4_checked_binding"); + var oe = { option: "generateKeys", $$slots: { default: [p4] }, $$scope: { ctx: r } }; + r[6] !== void 0 && (oe.checked = r[6]), (p = new me({ props: oe })), X.push(() => Z(p, "checked", I)); + function le(R) { + r[16](R); + } + h(le, "option5_checked_binding"); + var G = { option: "trailingCommas" }; + return ( + r[5] !== void 0 && (G.checked = r[5]), + (g = new me({ props: G })), + X.push(() => Z(g, "checked", le)), + { + c() { + P(e.$$.fragment), (i = q()), P(n.$$.fragment), (o = q()), P(u.$$.fragment), (a = q()), P(c.$$.fragment), (d = q()), P(p.$$.fragment), (D = q()), P(g.$$.fragment); + }, + m(R, ee) { + M(e, R, ee), C(R, i, ee), M(n, R, ee), C(R, o, ee), M(u, R, ee), C(R, a, ee), M(c, R, ee), C(R, d, ee), M(p, R, ee), C(R, D, ee), M(g, R, ee), (F = !0); + }, + p(R, ee) { + var Fe = {}; + ee & 16777218 && (Fe.$$scope = { dirty: ee, ctx: R }), !t && ee & 1 && ((t = !0), (Fe.checked = R[0]), J(() => (t = !1))), e.$set(Fe); + var ge = {}; + !s && ee & 4 && ((s = !0), (ge.checked = R[2]), J(() => (s = !1))), n.$set(ge); + var fe = {}; + !l && ee & 8 && ((l = !0), (fe.checked = R[3]), J(() => (l = !1))), u.$set(fe); + var Ie = {}; + !f && ee & 16 && ((f = !0), (Ie.checked = R[4]), J(() => (f = !1))), c.$set(Ie); + var Re = {}; + ee & 16777344 && (Re.$$scope = { dirty: ee, ctx: R }), !m && ee & 64 && ((m = !0), (Re.checked = R[6]), J(() => (m = !1))), p.$set(Re); + var Ye = {}; + !b && ee & 32 && ((b = !0), (Ye.checked = R[5]), J(() => (b = !1))), g.$set(Ye); + }, + i(R) { + F || (x(e.$$.fragment, R), x(n.$$.fragment, R), x(u.$$.fragment, R), x(c.$$.fragment, R), x(p.$$.fragment, R), x(g.$$.fragment, R), (F = !0)); + }, + o(R) { + S(e.$$.fragment, R), S(n.$$.fragment, R), S(u.$$.fragment, R), S(c.$$.fragment, R), S(p.$$.fragment, R), S(g.$$.fragment, R), (F = !1); + }, + d(R) { + $(e, R), R && y(i), $(n, R), R && y(o), $(u, R), R && y(a), $(c, R), R && y(d), $(p, R), R && y(D), $(g, R); + }, + } + ); + } + h(m4, "create_default_slot"); + function g4(r) { + var e, t; + return ( + (e = new tt({ props: { title: "Clean up", open: !0, $$slots: { default: [m4] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, param) { + var _param = _slicedToArray(param, 1), + n = _param[0]; + var s = {}; + n & 16777471 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(g4, "create_fragment"); + function D4(r, e, t) { + var i, n, s, o, u, l, a; + var c = e.options, + f = c.omit !== void 0 && c.omit.length > 0, + d = (n = (i = c.omit) === null || i === void 0 ? void 0 : i.join(" ")) !== null && n !== void 0 ? n : "", + p = (s = c.stripComments) !== null && s !== void 0 ? s : !1, + m = (o = c.tidyComments) !== null && o !== void 0 ? o : !1, + D = (u = c.lowercase) !== null && u !== void 0 ? u : !1, + g = (l = c.trailingCommas) !== null && l !== void 0 ? l : !1, + b = c.generateKeys !== void 0 && c.generateKeys.length > 0, + F = (a = c.generateKeys) !== null && a !== void 0 ? a : "[auth:required:lower][year:required][veryshorttitle:lower][duplicateNumber]"; + function A() { + (d = this.value), t(1, d); + } + h(A, "textarea_input_handler"); + function E(I) { + (f = I), t(0, f); + } + h(E, "option0_checked_binding"); + function O(I) { + (p = I), t(2, p); + } + h(O, "option1_checked_binding"); + function _(I) { + (m = I), t(3, m); + } + h(_, "option2_checked_binding"); + function W(I) { + (D = I), t(4, D); + } + h(W, "option3_checked_binding"); + function Q() { + (F = this.value), t(7, F); + } + h(Q, "textarea_input_handler_1"); + function j(I) { + (b = I), t(6, b); + } + h(j, "option4_checked_binding"); + function Y(I) { + (g = I), t(5, g); + } + return ( + h(Y, "option5_checked_binding"), + (r.$$set = (I) => { + "options" in I && t(8, (c = I.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 255) e: t(8, (c.omit = f && d.length > 0 ? d.split(/[\n\t ,]+/) : void 0), c), t(8, (c.stripComments = p), c), t(8, (c.tidyComments = m), c), t(8, (c.lowercase = D), c), t(8, (c.trailingCommas = g), c), t(8, (c.generateKeys = b ? F : void 0), c); + }), + [f, d, p, m, D, g, b, F, c, A, E, O, _, W, Q, j, Y] + ); + } + h(D4, "instance"); + var Nu = class Nu extends re { + constructor(e) { + super(), se(this, e, D4, g4, ne, { options: 8 }); } }; - __name(Option, "Option"); - var Option_default = Option; - // src/ui/CleanupOptions.svelte - function create_default_slot_2(ctx) { - var t0; - var textarea; - var t1; - var p; - var mounted; - var dispose; + h(Nu, "CleanupOptions"); + var x1 = Nu; + var O6 = new Set(xr.flatMap((r) => Object.keys(r.cli))); + function S1(r) { + return xr + .map((e) => { + var t; + return (t = e.toCLI) == null ? void 0 : t.call(e, r[e.key], r); + }) + .filter((e) => typeof e == "string"); + } + h(S1, "optionsToCLIArgs"); + function B1(r, e, t) { + var i = r.slice(); + return (i[2] = e[t][0]), (i[3] = e[t][1]), i; + } + h(B1, "get_each_context"); + function _1(r) { + var e, + t, + i = r[3] + "", + n, + s; return { c() { - t0 = text("Fields to omit:\n "); - textarea = element("textarea"); - t1 = space(); - p = element("p"); - p.innerHTML = "Space delimited, e.g: <code>id type publisher author</code>"; - attr(textarea, "name", "omitList"); - attr(textarea, "class", "omit svelte-1t0249j"); - attr(textarea, "placeholder", "e.g. abstract keywords"); - attr(textarea, "spellcheck", "false"); + (e = K("=")), (t = T("span")), (n = K(i)), (s = q()), v(t, "class", "opt-val svelte-1xnx1c1"); }, - m(target, anchor) { - insert(target, t0, anchor); - insert(target, textarea, anchor); - set_input_value(textarea, ctx[1]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(textarea, "input", ctx[9]); - mounted = true; - } + m(o, u) { + C(o, e, u), C(o, t, u), V(t, n), C(o, s, u); }, - p(ctx2, dirty) { - if (dirty & 2) { - set_input_value(textarea, ctx2[1]); - } + p(o, u) { + u & 1 && i !== (i = o[3] + "") && Ke(n, i); }, - d(detaching) { - if (detaching) detach(t0); - if (detaching) detach(textarea); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); + d(o) { + o && y(e), o && y(t), o && y(s); }, }; } - __name(create_default_slot_2, "create_default_slot_2"); - function create_default_slot_12(ctx) { - var label; - var t0; - var textarea; - var t1; - var p; - var mounted; - var dispose; + h(_1, "create_if_block"); + function O1(r) { + var e, + t = r[2] + "", + i, + n = " ", + s, + o = r[3] && r[3].length > 0 && _1(r); return { c() { - label = element("label"); - t0 = text("Template:\n "); - textarea = element("textarea"); - t1 = space(); - p = element("p"); - p.innerHTML = '<a href="./manual/key-generation.html" target="_blank">Template documentation</a>'; - attr(textarea, "name", "generateKeysTemplate"); + (e = T("span")), (i = K(t)), o && o.c(), (s = K(n)), v(e, "class", "opt-name svelte-1xnx1c1"); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t0); - append(label, textarea); - set_input_value(textarea, ctx[7]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(textarea, "input", ctx[14]); - mounted = true; - } + m(u, l) { + C(u, e, l), V(e, i), o && o.m(u, l), C(u, s, l); }, - p(ctx2, dirty) { - if (dirty & 128) { - set_input_value(textarea, ctx2[7]); - } + p(u, l) { + l & 1 && t !== (t = u[2] + "") && Ke(i, t), u[3] && u[3].length > 0 ? (o ? o.p(u, l) : ((o = _1(u)), o.c(), o.m(s.parentNode, s))) : o && (o.d(1), (o = null)); }, - d(detaching) { - if (detaching) detach(label); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); + d(u) { + u && y(e), o && o.d(u), u && y(s); }, }; } - __name(create_default_slot_12, "create_default_slot_1"); - function create_default_slot2(ctx) { - var option0; - var updating_checked; - var t0; - var option1; - var updating_checked_1; - var t1; - var option2; - var updating_checked_2; - var t2; - var option3; - var updating_checked_3; - var t3; - var option4; - var updating_checked_4; - var t4; - var option5; - var updating_checked_5; - var current; - function option0_checked_binding(value) { - ctx[10](value); - } - __name(option0_checked_binding, "option0_checked_binding"); - var option0_props = { - option: "omit", - $$slots: { - default: [create_default_slot_2], + h(O1, "create_each_block"); + function b4(r) { + var e, + t, + i, + n, + s, + o = r[0], + u = []; + for (var l = 0; l < o.length; l += 1) u[l] = O1(B1(r, o, l)); + return { + c() { + (e = T("p")), (e.textContent = "To run this configuration on the command line:"), (t = q()), (i = T("code")), (n = K("bibtex-tidy ")); + for (var l = 0; l < u.length; l += 1) u[l].c(); + (s = K(" YOUR_FILE.bib")), v(i, "id", "cli"), v(i, "class", "svelte-1xnx1c1"); }, - $$scope: { - ctx, + m(l, a) { + C(l, e, a), C(l, t, a), C(l, i, a), V(i, n); + for (var c = 0; c < u.length; c += 1) u[c].m(i, null); + V(i, s); }, - }; - if (ctx[0] !== void 0) { - option0_props.checked = ctx[0]; - } - option0 = new Option_default({ - props: option0_props, - }); - binding_callbacks.push(() => bind(option0, "checked", option0_checked_binding)); - function option1_checked_binding(value) { - ctx[11](value); - } - __name(option1_checked_binding, "option1_checked_binding"); - var option1_props = { - option: "stripComments", - }; - if (ctx[2] !== void 0) { - option1_props.checked = ctx[2]; - } - option1 = new Option_default({ - props: option1_props, - }); - binding_callbacks.push(() => bind(option1, "checked", option1_checked_binding)); - function option2_checked_binding(value) { - ctx[12](value); - } - __name(option2_checked_binding, "option2_checked_binding"); - var option2_props = { - option: "tidyComments", - }; - if (ctx[3] !== void 0) { - option2_props.checked = ctx[3]; - } - option2 = new Option_default({ - props: option2_props, - }); - binding_callbacks.push(() => bind(option2, "checked", option2_checked_binding)); - function option3_checked_binding(value) { - ctx[13](value); - } - __name(option3_checked_binding, "option3_checked_binding"); - var option3_props = { - option: "lowercase", - }; - if (ctx[4] !== void 0) { - option3_props.checked = ctx[4]; - } - option3 = new Option_default({ - props: option3_props, - }); - binding_callbacks.push(() => bind(option3, "checked", option3_checked_binding)); - function option4_checked_binding(value) { - ctx[15](value); - } - __name(option4_checked_binding, "option4_checked_binding"); - var option4_props = { - option: "generateKeys", - $$slots: { - default: [create_default_slot_12], + p(l, a) { + if (a & 1) { + o = l[0]; + var c; + for (c = 0; c < o.length; c += 1) { + var f = B1(l, o, c); + u[c] ? u[c].p(f, a) : ((u[c] = O1(f)), u[c].c(), u[c].m(i, s)); + } + for (; c < u.length; c += 1) u[c].d(1); + u.length = o.length; + } }, - $$scope: { - ctx, + d(l) { + l && y(e), l && y(t), l && y(i), bn(u, l); }, }; - if (ctx[6] !== void 0) { - option4_props.checked = ctx[6]; - } - option4 = new Option_default({ - props: option4_props, - }); - binding_callbacks.push(() => bind(option4, "checked", option4_checked_binding)); - function option5_checked_binding(value) { - ctx[16](value); - } - __name(option5_checked_binding, "option5_checked_binding"); - var option5_props = { - option: "trailingCommas", - }; - if (ctx[5] !== void 0) { - option5_props.checked = ctx[5]; + } + h(b4, "create_default_slot"); + function F4(r) { + var e, t; + return ( + (e = new tt({ props: { title: "CLI", $$slots: { default: [b4] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, param) { + var _param = _slicedToArray(param, 1), + n = _param[0]; + var s = {}; + n & 65 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(F4, "create_fragment"); + function y4(r, e, t) { + var i = e.options, + n; + return ( + (r.$$set = (s) => { + "options" in s && t(1, (i = s.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 2) + e: t( + 0, + (n = S1(i).map((s) => { + var o = s.indexOf("="); + return o === -1 ? [s] : [s.slice(0, o), s.slice(o + 1)]; + })) + ); + }), + [n, i] + ); + } + h(y4, "instance"); + var Vu = class Vu extends re { + constructor(e) { + super(), se(this, e, y4, F4, ne, { options: 1 }); } - option5 = new Option_default({ - props: option5_props, - }); - binding_callbacks.push(() => bind(option5, "checked", option5_checked_binding)); + }; + h(Vu, "Cli"); + var T1 = Vu; + function C4(r) { + var e, t, i; return { c() { - create_component(option0.$$.fragment); - t0 = space(); - create_component(option1.$$.fragment); - t1 = space(); - create_component(option2.$$.fragment); - t2 = space(); - create_component(option3.$$.fragment); - t3 = space(); - create_component(option4.$$.fragment); - t4 = space(); - create_component(option5.$$.fragment); - }, - m(target, anchor) { - mount_component(option0, target, anchor); - insert(target, t0, anchor); - mount_component(option1, target, anchor); - insert(target, t1, anchor); - mount_component(option2, target, anchor); - insert(target, t2, anchor); - mount_component(option3, target, anchor); - insert(target, t3, anchor); - mount_component(option4, target, anchor); - insert(target, t4, anchor); - mount_component(option5, target, anchor); - current = true; + (e = T("input")), v(e, "type", "radio"), v(e, "name", r[1]), (e.__value = r[2]), (e.value = e.__value), v(e, "class", "svelte-qhlda7"), r[4][0].push(e); }, - p(ctx2, dirty) { - var option0_changes = {}; - if (dirty & 16777218) { - option0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked && dirty & 1) { - updating_checked = true; - option0_changes.checked = ctx2[0]; - add_flush_callback(() => (updating_checked = false)); - } - option0.$set(option0_changes); - var option1_changes = {}; - if (!updating_checked_1 && dirty & 4) { - updating_checked_1 = true; - option1_changes.checked = ctx2[2]; - add_flush_callback(() => (updating_checked_1 = false)); - } - option1.$set(option1_changes); - var option2_changes = {}; - if (!updating_checked_2 && dirty & 8) { - updating_checked_2 = true; - option2_changes.checked = ctx2[3]; - add_flush_callback(() => (updating_checked_2 = false)); - } - option2.$set(option2_changes); - var option3_changes = {}; - if (!updating_checked_3 && dirty & 16) { - updating_checked_3 = true; - option3_changes.checked = ctx2[4]; - add_flush_callback(() => (updating_checked_3 = false)); - } - option3.$set(option3_changes); - var option4_changes = {}; - if (dirty & 16777344) { - option4_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_4 && dirty & 64) { - updating_checked_4 = true; - option4_changes.checked = ctx2[6]; - add_flush_callback(() => (updating_checked_4 = false)); - } - option4.$set(option4_changes); - var option5_changes = {}; - if (!updating_checked_5 && dirty & 32) { - updating_checked_5 = true; - option5_changes.checked = ctx2[5]; - add_flush_callback(() => (updating_checked_5 = false)); - } - option5.$set(option5_changes); + m(n, s) { + C(n, e, s), (e.checked = e.__value === r[0]), t || ((i = ye(e, "change", r[3])), (t = !0)); }, - i(local) { - if (current) return; - transition_in(option0.$$.fragment, local); - transition_in(option1.$$.fragment, local); - transition_in(option2.$$.fragment, local); - transition_in(option3.$$.fragment, local); - transition_in(option4.$$.fragment, local); - transition_in(option5.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(option0.$$.fragment, local); - transition_out(option1.$$.fragment, local); - transition_out(option2.$$.fragment, local); - transition_out(option3.$$.fragment, local); - transition_out(option4.$$.fragment, local); - transition_out(option5.$$.fragment, local); - current = false; + p(n, param) { + var _param = _slicedToArray(param, 1), + s = _param[0]; + s & 2 && v(e, "name", n[1]), s & 4 && ((e.__value = n[2]), (e.value = e.__value)), s & 1 && (e.checked = e.__value === n[0]); }, - d(detaching) { - destroy_component(option0, detaching); - if (detaching) detach(t0); - destroy_component(option1, detaching); - if (detaching) detach(t1); - destroy_component(option2, detaching); - if (detaching) detach(t2); - destroy_component(option3, detaching); - if (detaching) detach(t3); - destroy_component(option4, detaching); - if (detaching) detach(t4); - destroy_component(option5, detaching); + i: xe, + o: xe, + d(n) { + n && y(e), r[4][0].splice(r[4][0].indexOf(e), 1), (t = !1), i(); }, }; } - __name(create_default_slot2, "create_default_slot"); - function create_fragment8(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - title: "Clean up", - open: true, - $$slots: { - default: [create_default_slot2], - }, - $$scope: { - ctx, - }, - }, - }); - return { - c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var collapsible_changes = {}; - if (dirty & 16777471) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); - }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(collapsible, detaching); - }, - }; + h(C4, "create_fragment"); + function A4(r, e, t) { + var i = e.name, + n = e.group, + tmp = e.value, + s = tmp === void 0 ? void 0 : tmp, + o = [[]]; + function u() { + (n = this.__value), t(0, n); + } + return ( + h(u, "input_change_handler"), + (r.$$set = (l) => { + "name" in l && t(1, (i = l.name)), "group" in l && t(0, (n = l.group)), "value" in l && t(2, (s = l.value)); + }), + [n, i, s, u, o] + ); } - __name(create_fragment8, "create_fragment"); - function instance8($$self, $$props, $$invalidate) { - var _a2, _b, _c, _d, _e, _f, _g; - var options = $$props.options; - var omitChecked = options.omit !== void 0 && options.omit.length > 0; - var omitValue = (_b = (_a2 = options.omit) === null || _a2 === void 0 ? void 0 : _a2.join(" ")) !== null && _b !== void 0 ? _b : ""; - var stripComments = (_c = options.stripComments) !== null && _c !== void 0 ? _c : false; - var tidyComments = (_d = options.tidyComments) !== null && _d !== void 0 ? _d : false; - var lowercase = (_e = options.lowercase) !== null && _e !== void 0 ? _e : false; - var trailingCommasChecked = (_f = options.trailingCommas) !== null && _f !== void 0 ? _f : false; - var generateKeysChecked = options.generateKeys !== void 0 && options.generateKeys.length > 0; - var generateKeysValue = (_g = options.generateKeys) !== null && _g !== void 0 ? _g : "[auth:required:lower][year:required][veryshorttitle:lower][duplicateNumber]"; - function textarea_input_handler() { - omitValue = this.value; - $$invalidate(1, omitValue); - } - __name(textarea_input_handler, "textarea_input_handler"); - function option0_checked_binding(value) { - omitChecked = value; - $$invalidate(0, omitChecked); - } - __name(option0_checked_binding, "option0_checked_binding"); - function option1_checked_binding(value) { - stripComments = value; - $$invalidate(2, stripComments); - } - __name(option1_checked_binding, "option1_checked_binding"); - function option2_checked_binding(value) { - tidyComments = value; - $$invalidate(3, tidyComments); - } - __name(option2_checked_binding, "option2_checked_binding"); - function option3_checked_binding(value) { - lowercase = value; - $$invalidate(4, lowercase); - } - __name(option3_checked_binding, "option3_checked_binding"); - function textarea_input_handler_1() { - generateKeysValue = this.value; - $$invalidate(7, generateKeysValue); - } - __name(textarea_input_handler_1, "textarea_input_handler_1"); - function option4_checked_binding(value) { - generateKeysChecked = value; - $$invalidate(6, generateKeysChecked); - } - __name(option4_checked_binding, "option4_checked_binding"); - function option5_checked_binding(value) { - trailingCommasChecked = value; - $$invalidate(5, trailingCommasChecked); - } - __name(option5_checked_binding, "option5_checked_binding"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(8, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 255) { - $: { - $$invalidate(8, (options.omit = omitChecked && omitValue.length > 0 ? omitValue.split(/[\n\t ,]+/) : void 0), options); - $$invalidate(8, (options.stripComments = stripComments), options); - $$invalidate(8, (options.tidyComments = tidyComments), options); - $$invalidate(8, (options.lowercase = lowercase), options); - $$invalidate(8, (options.trailingCommas = trailingCommasChecked), options); - $$invalidate(8, (options.generateKeys = generateKeysChecked ? generateKeysValue : void 0), options); - } - } - }; - return [omitChecked, omitValue, stripComments, tidyComments, lowercase, trailingCommasChecked, generateKeysChecked, generateKeysValue, options, textarea_input_handler, option0_checked_binding, option1_checked_binding, option2_checked_binding, option3_checked_binding, textarea_input_handler_1, option4_checked_binding, option5_checked_binding]; - } - __name(instance8, "instance"); - var CleanupOptions = class CleanupOptions extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance8, create_fragment8, safe_not_equal, { - options: 8, - }); + h(A4, "instance"); + var zu = class zu extends re { + constructor(e) { + super(), se(this, e, A4, C4, ne, { name: 1, group: 0, value: 2 }); } }; - __name(CleanupOptions, "CleanupOptions"); - var CleanupOptions_default = CleanupOptions; - // src/cliUtils.ts - var OPTIONS = new Set(optionDefinitions.flatMap((def) => Object.keys(def.cli))); - function optionsToCLIArgs(options) { - return optionDefinitions - .map((def) => { - var _a2; - return (_a2 = def.toCLI) == null ? void 0 : _a2.call(def, options[def.key], options); - }) - .filter((arg) => typeof arg === "string"); - } - __name(optionsToCLIArgs, "optionsToCLIArgs"); - // src/ui/Cli.svelte - function get_each_context(ctx, list, i) { - var child_ctx = ctx.slice(); - child_ctx[2] = list[i][0]; - child_ctx[3] = list[i][1]; - return child_ctx; - } - __name(get_each_context, "get_each_context"); - function create_if_block2(ctx) { - var t0; - var span; - var t1_value = ctx[3] + ""; - var t1; - var t2; - return { - c() { - t0 = text("="); - span = element("span"); - t1 = text(t1_value); - t2 = space(); - attr(span, "class", "opt-val svelte-1xnx1c1"); - }, - m(target, anchor) { - insert(target, t0, anchor); - insert(target, span, anchor); - append(span, t1); - insert(target, t2, anchor); - }, - p(ctx2, dirty) { - if (dirty & 1 && t1_value !== (t1_value = ctx2[3] + "")) set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) detach(t0); - if (detaching) detach(span); - if (detaching) detach(t2); - }, - }; + h(zu, "Radio"); + var Pi = zu; + function E4(r) { + var e, t, i, n; + function s(u) { + r[8](u); + } + h(s, "checkbox_checked_binding"); + var o = { name: "uniqKEY" }; + return ( + r[1] !== void 0 && (o.checked = r[1]), + (e = new fr({ props: o })), + X.push(() => Z(e, "checked", s)), + { + c() { + P(e.$$.fragment), (i = K("\n Matching Keys")); + }, + m(u, l) { + M(e, u, l), C(u, i, l), (n = !0); + }, + p(u, l) { + var a = {}; + !t && l & 2 && ((t = !0), (a.checked = u[1]), J(() => (t = !1))), e.$set(a); + }, + i(u) { + n || (x(e.$$.fragment, u), (n = !0)); + }, + o(u) { + S(e.$$.fragment, u), (n = !1); + }, + d(u) { + $(e, u), u && y(i); + }, + } + ); } - __name(create_if_block2, "create_if_block"); - function create_each_block(ctx) { - var span; - var t0_value = ctx[2] + ""; - var t0; - var t1_value = " "; - var t1; - var if_block = ctx[3] && ctx[3].length > 0 && create_if_block2(ctx); - return { - c() { - span = element("span"); - t0 = text(t0_value); - if (if_block) if_block.c(); - t1 = text(t1_value); - attr(span, "class", "opt-name svelte-1xnx1c1"); - }, - m(target, anchor) { - insert(target, span, anchor); - append(span, t0); - if (if_block) if_block.m(target, anchor); - insert(target, t1, anchor); - }, - p(ctx2, dirty) { - if (dirty & 1 && t0_value !== (t0_value = ctx2[2] + "")) set_data(t0, t0_value); - if (ctx2[3] && ctx2[3].length > 0) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block2(ctx2); - if_block.c(); - if_block.m(t1.parentNode, t1); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - d(detaching) { - if (detaching) detach(span); - if (if_block) if_block.d(detaching); - if (detaching) detach(t1); - }, - }; + h(E4, "create_default_slot_10"); + function v4(r) { + var e, t, i, n; + function s(u) { + r[9](u); + } + h(s, "checkbox_checked_binding_1"); + var o = { name: "uniqDOI" }; + return ( + r[2] !== void 0 && (o.checked = r[2]), + (e = new fr({ props: o })), + X.push(() => Z(e, "checked", s)), + { + c() { + P(e.$$.fragment), (i = K("\n Matching DOIs")); + }, + m(u, l) { + M(e, u, l), C(u, i, l), (n = !0); + }, + p(u, l) { + var a = {}; + !t && l & 4 && ((t = !0), (a.checked = u[2]), J(() => (t = !1))), e.$set(a); + }, + i(u) { + n || (x(e.$$.fragment, u), (n = !0)); + }, + o(u) { + S(e.$$.fragment, u), (n = !1); + }, + d(u) { + $(e, u), u && y(i); + }, + } + ); } - __name(create_each_block, "create_each_block"); - function create_default_slot3(ctx) { - var p; - var t1; - var code; - var t2; - var t3; - var each_value = ctx[0]; - var each_blocks = []; - for (var i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + h(v4, "create_default_slot_9"); + function k4(r) { + var e, t, i, n; + function s(u) { + r[10](u); } - return { - c() { - p = element("p"); - p.textContent = "To run this configuration on the command line:"; - t1 = space(); - code = element("code"); - t2 = text("bibtex-tidy "); - for (var i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - t3 = text(" YOUR_FILE.bib"); - attr(code, "id", "cli"); - attr(code, "class", "svelte-1xnx1c1"); - }, - m(target, anchor) { - insert(target, p, anchor); - insert(target, t1, anchor); - insert(target, code, anchor); - append(code, t2); - for (var i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(code, null); - } - append(code, t3); - }, - p(ctx2, dirty) { - if (dirty & 1) { - each_value = ctx2[0]; - var i; - for (i = 0; i < each_value.length; i += 1) { - var child_ctx = get_each_context(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(code, t3); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; - } - }, - d(detaching) { - if (detaching) detach(p); - if (detaching) detach(t1); - if (detaching) detach(code); - destroy_each(each_blocks, detaching); - }, - }; + h(s, "checkbox_checked_binding_2"); + var o = { name: "uniqCIT" }; + return ( + r[3] !== void 0 && (o.checked = r[3]), + (e = new fr({ props: o })), + X.push(() => Z(e, "checked", s)), + { + c() { + P(e.$$.fragment), (i = K("\n Similar author and title")); + }, + m(u, l) { + M(e, u, l), C(u, i, l), (n = !0); + }, + p(u, l) { + var a = {}; + !t && l & 8 && ((t = !0), (a.checked = u[3]), J(() => (t = !1))), e.$set(a); + }, + i(u) { + n || (x(e.$$.fragment, u), (n = !0)); + }, + o(u) { + S(e.$$.fragment, u), (n = !1); + }, + d(u) { + $(e, u), u && y(i); + }, + } + ); } - __name(create_default_slot3, "create_default_slot"); - function create_fragment9(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - title: "CLI", - $$slots: { - default: [create_default_slot3], + h(k4, "create_default_slot_8"); + function w4(r) { + var e, t, i, n; + function s(u) { + r[11](u); + } + h(s, "checkbox_checked_binding_3"); + var o = { name: "uniqABS" }; + return ( + r[4] !== void 0 && (o.checked = r[4]), + (e = new fr({ props: o })), + X.push(() => Z(e, "checked", s)), + { + c() { + P(e.$$.fragment), (i = K("\n Similar abstracts")); }, - $$scope: { - ctx, + m(u, l) { + M(e, u, l), C(u, i, l), (n = !0); }, - }, - }); - return { - c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var collapsible_changes = {}; - if (dirty & 65) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); - }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(collapsible, detaching); - }, - }; + p(u, l) { + var a = {}; + !t && l & 16 && ((t = !0), (a.checked = u[4]), J(() => (t = !1))), e.$set(a); + }, + i(u) { + n || (x(e.$$.fragment, u), (n = !0)); + }, + o(u) { + S(e.$$.fragment, u), (n = !1); + }, + d(u) { + $(e, u), u && y(i); + }, + } + ); } - __name(create_fragment9, "create_fragment"); - function instance9($$self, $$props, $$invalidate) { - var options = $$props.options; - var args; - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(1, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 2) { - $: { - $$invalidate( - 0, - (args = optionsToCLIArgs(options).map((opt) => { - var i = opt.indexOf("="); - return i === -1 ? [opt] : [opt.slice(0, i), opt.slice(i + 1)]; - })) - ); - } + h(w4, "create_default_slot_7"); + function x4(r) { + var e, t, i, n, s, o, u, l, a, c; + return ( + (i = new it({ props: { $$slots: { default: [E4] }, $$scope: { ctx: r } } })), + (s = new it({ props: { $$slots: { default: [v4] }, $$scope: { ctx: r } } })), + (u = new it({ props: { $$slots: { default: [k4] }, $$scope: { ctx: r } } })), + (a = new it({ props: { $$slots: { default: [w4] }, $$scope: { ctx: r } } })), + { + c() { + (e = T("p")), (e.textContent = "What to check:"), (t = q()), P(i.$$.fragment), (n = q()), P(s.$$.fragment), (o = q()), P(u.$$.fragment), (l = q()), P(a.$$.fragment); + }, + m(f, d) { + C(f, e, d), C(f, t, d), M(i, f, d), C(f, n, d), M(s, f, d), C(f, o, d), M(u, f, d), C(f, l, d), M(a, f, d), (c = !0); + }, + p(f, d) { + var p = {}; + d & 134217730 && (p.$$scope = { dirty: d, ctx: f }), i.$set(p); + var m = {}; + d & 134217732 && (m.$$scope = { dirty: d, ctx: f }), s.$set(m); + var D = {}; + d & 134217736 && (D.$$scope = { dirty: d, ctx: f }), u.$set(D); + var g = {}; + d & 134217744 && (g.$$scope = { dirty: d, ctx: f }), a.$set(g); + }, + i(f) { + c || (x(i.$$.fragment, f), x(s.$$.fragment, f), x(u.$$.fragment, f), x(a.$$.fragment, f), (c = !0)); + }, + o(f) { + S(i.$$.fragment, f), S(s.$$.fragment, f), S(u.$$.fragment, f), S(a.$$.fragment, f), (c = !1); + }, + d(f) { + f && y(e), f && y(t), $(i, f), f && y(n), $(s, f), f && y(o), $(u, f), f && y(l), $(a, f); + }, } - }; - return [args, options]; - } - __name(instance9, "instance"); - var Cli = class Cli extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance9, create_fragment9, safe_not_equal, { - options: 1, - }); - } - }; - __name(Cli, "Cli"); - var Cli_default = Cli; - // src/ui/Radio.svelte - function create_fragment10(ctx) { - var input; - var mounted; - var dispose; - return { - c() { - input = element("input"); - attr(input, "type", "radio"); - attr(input, "name", ctx[1]); - input.__value = ctx[2]; - input.value = input.__value; - attr(input, "class", "svelte-qhlda7"); - ctx[4][0].push(input); - }, - m(target, anchor) { - insert(target, input, anchor); - input.checked = input.__value === ctx[0]; - if (!mounted) { - dispose = listen(input, "change", ctx[3]); - mounted = true; - } - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (dirty & 2) { - attr(input, "name", ctx2[1]); - } - if (dirty & 4) { - input.__value = ctx2[2]; - input.value = input.__value; - } - if (dirty & 1) { - input.checked = input.__value === ctx2[0]; - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(input); - ctx[4][0].splice(ctx[4][0].indexOf(input), 1); - mounted = false; - dispose(); - }, - }; + ); } - __name(create_fragment10, "create_fragment"); - function instance10($$self, $$props, $$invalidate) { - var name2 = $$props.name; - var group = $$props.group; - var _$$props_value = $$props.value, - value = _$$props_value === void 0 ? void 0 : _$$props_value; - var $$binding_groups = [[]]; - function input_change_handler() { - group = this.__value; - $$invalidate(0, group); - } - __name(input_change_handler, "input_change_handler"); - $$self.$$set = ($$props2) => { - if ("name" in $$props2) $$invalidate(1, (name2 = $$props2.name)); - if ("group" in $$props2) $$invalidate(0, (group = $$props2.group)); - if ("value" in $$props2) $$invalidate(2, (value = $$props2.value)); - }; - return [group, name2, value, input_change_handler, $$binding_groups]; - } - __name(instance10, "instance"); - var Radio = class Radio extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance10, create_fragment10, safe_not_equal, { - name: 1, - group: 0, - value: 2, - }); - } - }; - __name(Radio, "Radio"); - var Radio_default = Radio; - // src/ui/DuplicateOptions.svelte - function create_default_slot_10(ctx) { - var checkbox; - var updating_checked; - var t2; - var current; - function checkbox_checked_binding(value) { - ctx[8](value); - } - __name(checkbox_checked_binding, "checkbox_checked_binding"); - var checkbox_props = { - name: "uniqKEY", - }; - if (ctx[1] !== void 0) { - checkbox_props.checked = ctx[1]; + h(x4, "create_default_slot_6"); + function S4(r) { + var e, t, i, n, s; + function o(l) { + r[13](l); } - checkbox = new Checkbox_default({ - props: checkbox_props, - }); - binding_callbacks.push(() => bind(checkbox, "checked", checkbox_checked_binding)); - return { - c() { - create_component(checkbox.$$.fragment); - t2 = text("\n Matching Keys"); - }, - m(target, anchor) { - mount_component(checkbox, target, anchor); - insert(target, t2, anchor); - current = true; - }, - p(ctx2, dirty) { - var checkbox_changes = {}; - if (!updating_checked && dirty & 2) { - updating_checked = true; - checkbox_changes.checked = ctx2[1]; - add_flush_callback(() => (updating_checked = false)); - } - checkbox.$set(checkbox_changes); - }, - i(local) { - if (current) return; - transition_in(checkbox.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(checkbox.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(checkbox, detaching); - if (detaching) detach(t2); - }, - }; + h(o, "radio_group_binding"); + var u = { name: "mergeStrategy", value: "combine" }; + return ( + r[6] !== void 0 && (u.group = r[6]), + (e = new Pi({ props: u })), + X.push(() => Z(e, "group", o)), + { + c() { + P(e.$$.fragment), (i = q()), (n = T("span")), (n.innerHTML = "<strong>Combine</strong><br/> \n <small>Keep original entry and merge in fields of duplicates if they do not\n already exist</small>"); + }, + m(l, a) { + M(e, l, a), C(l, i, a), C(l, n, a), (s = !0); + }, + p(l, a) { + var c = {}; + !t && a & 64 && ((t = !0), (c.group = l[6]), J(() => (t = !1))), e.$set(c); + }, + i(l) { + s || (x(e.$$.fragment, l), (s = !0)); + }, + o(l) { + S(e.$$.fragment, l), (s = !1); + }, + d(l) { + $(e, l), l && y(i), l && y(n); + }, + } + ); } - __name(create_default_slot_10, "create_default_slot_10"); - function create_default_slot_9(ctx) { - var checkbox; - var updating_checked; - var t2; - var current; - function checkbox_checked_binding_1(value) { - ctx[9](value); - } - __name(checkbox_checked_binding_1, "checkbox_checked_binding_1"); - var checkbox_props = { - name: "uniqDOI", - }; - if (ctx[2] !== void 0) { - checkbox_props.checked = ctx[2]; + h(S4, "create_default_slot_5"); + function B4(r) { + var e, t, i, n, s; + function o(l) { + r[14](l); } - checkbox = new Checkbox_default({ - props: checkbox_props, - }); - binding_callbacks.push(() => bind(checkbox, "checked", checkbox_checked_binding_1)); - return { - c() { - create_component(checkbox.$$.fragment); - t2 = text("\n Matching DOIs"); - }, - m(target, anchor) { - mount_component(checkbox, target, anchor); - insert(target, t2, anchor); - current = true; - }, - p(ctx2, dirty) { - var checkbox_changes = {}; - if (!updating_checked && dirty & 4) { - updating_checked = true; - checkbox_changes.checked = ctx2[2]; - add_flush_callback(() => (updating_checked = false)); - } - checkbox.$set(checkbox_changes); - }, - i(local) { - if (current) return; - transition_in(checkbox.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(checkbox.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(checkbox, detaching); - if (detaching) detach(t2); - }, - }; + h(o, "radio_group_binding_1"); + var u = { name: "mergeStrategy", value: "overwrite" }; + return ( + r[6] !== void 0 && (u.group = r[6]), + (e = new Pi({ props: u })), + X.push(() => Z(e, "group", o)), + { + c() { + P(e.$$.fragment), (i = q()), (n = T("span")), (n.innerHTML = "<strong>Overwrite</strong><br/> \n <small>Keep original entry and merge in fields of duplicates, overwriting\n existing fields if they exist</small>"); + }, + m(l, a) { + M(e, l, a), C(l, i, a), C(l, n, a), (s = !0); + }, + p(l, a) { + var c = {}; + !t && a & 64 && ((t = !0), (c.group = l[6]), J(() => (t = !1))), e.$set(c); + }, + i(l) { + s || (x(e.$$.fragment, l), (s = !0)); + }, + o(l) { + S(e.$$.fragment, l), (s = !1); + }, + d(l) { + $(e, l), l && y(i), l && y(n); + }, + } + ); } - __name(create_default_slot_9, "create_default_slot_9"); - function create_default_slot_8(ctx) { - var checkbox; - var updating_checked; - var t2; - var current; - function checkbox_checked_binding_2(value) { - ctx[10](value); - } - __name(checkbox_checked_binding_2, "checkbox_checked_binding_2"); - var checkbox_props = { - name: "uniqCIT", - }; - if (ctx[3] !== void 0) { - checkbox_props.checked = ctx[3]; + h(B4, "create_default_slot_4"); + function _4(r) { + var e, t, i, n, s; + function o(l) { + r[15](l); } - checkbox = new Checkbox_default({ - props: checkbox_props, - }); - binding_callbacks.push(() => bind(checkbox, "checked", checkbox_checked_binding_2)); - return { - c() { - create_component(checkbox.$$.fragment); - t2 = text("\n Similar author and title"); - }, - m(target, anchor) { - mount_component(checkbox, target, anchor); - insert(target, t2, anchor); - current = true; - }, - p(ctx2, dirty) { - var checkbox_changes = {}; - if (!updating_checked && dirty & 8) { - updating_checked = true; - checkbox_changes.checked = ctx2[3]; - add_flush_callback(() => (updating_checked = false)); - } - checkbox.$set(checkbox_changes); - }, - i(local) { - if (current) return; - transition_in(checkbox.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(checkbox.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(checkbox, detaching); - if (detaching) detach(t2); - }, - }; + h(o, "radio_group_binding_2"); + var u = { name: "mergeStrategy", value: "first" }; + return ( + r[6] !== void 0 && (u.group = r[6]), + (e = new Pi({ props: u })), + X.push(() => Z(e, "group", o)), + { + c() { + P(e.$$.fragment), (i = q()), (n = T("span")), (n.innerHTML = "<strong>First</strong><br/> \n <small>Only keep the original entry</small>"); + }, + m(l, a) { + M(e, l, a), C(l, i, a), C(l, n, a), (s = !0); + }, + p(l, a) { + var c = {}; + !t && a & 64 && ((t = !0), (c.group = l[6]), J(() => (t = !1))), e.$set(c); + }, + i(l) { + s || (x(e.$$.fragment, l), (s = !0)); + }, + o(l) { + S(e.$$.fragment, l), (s = !1); + }, + d(l) { + $(e, l), l && y(i), l && y(n); + }, + } + ); } - __name(create_default_slot_8, "create_default_slot_8"); - function create_default_slot_7(ctx) { - var checkbox; - var updating_checked; - var t2; - var current; - function checkbox_checked_binding_3(value) { - ctx[11](value); - } - __name(checkbox_checked_binding_3, "checkbox_checked_binding_3"); - var checkbox_props = { - name: "uniqABS", - }; - if (ctx[4] !== void 0) { - checkbox_props.checked = ctx[4]; + h(_4, "create_default_slot_3"); + function O4(r) { + var e, t, i, n, s; + function o(l) { + r[16](l); } - checkbox = new Checkbox_default({ - props: checkbox_props, - }); - binding_callbacks.push(() => bind(checkbox, "checked", checkbox_checked_binding_3)); - return { - c() { - create_component(checkbox.$$.fragment); - t2 = text("\n Similar abstracts"); - }, - m(target, anchor) { - mount_component(checkbox, target, anchor); - insert(target, t2, anchor); - current = true; - }, - p(ctx2, dirty) { - var checkbox_changes = {}; - if (!updating_checked && dirty & 16) { - updating_checked = true; - checkbox_changes.checked = ctx2[4]; - add_flush_callback(() => (updating_checked = false)); - } - checkbox.$set(checkbox_changes); - }, - i(local) { - if (current) return; - transition_in(checkbox.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(checkbox.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(checkbox, detaching); - if (detaching) detach(t2); - }, - }; + h(o, "radio_group_binding_3"); + var u = { name: "mergeStrategy", value: "last" }; + return ( + r[6] !== void 0 && (u.group = r[6]), + (e = new Pi({ props: u })), + X.push(() => Z(e, "group", o)), + { + c() { + P(e.$$.fragment), (i = q()), (n = T("span")), (n.innerHTML = "<strong>Last</strong><br/> \n <small>Only keep the last found duplicate</small>"); + }, + m(l, a) { + M(e, l, a), C(l, i, a), C(l, n, a), (s = !0); + }, + p(l, a) { + var c = {}; + !t && a & 64 && ((t = !0), (c.group = l[6]), J(() => (t = !1))), e.$set(c); + }, + i(l) { + s || (x(e.$$.fragment, l), (s = !0)); + }, + o(l) { + S(e.$$.fragment, l), (s = !1); + }, + d(l) { + $(e, l), l && y(i), l && y(n); + }, + } + ); } - __name(create_default_slot_7, "create_default_slot_7"); - function create_default_slot_6(ctx) { - var p; - var t1; - var label0; - var t2; - var label1; - var t3; - var label2; - var t4; - var label3; - var current; - label0 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_10], + h(O4, "create_default_slot_2"); + function T4(r) { + var e, t, i, n, s, o, u, l; + return ( + (e = new it({ props: { $$slots: { default: [S4] }, $$scope: { ctx: r } } })), + (i = new it({ props: { $$slots: { default: [B4] }, $$scope: { ctx: r } } })), + (s = new it({ props: { $$slots: { default: [_4] }, $$scope: { ctx: r } } })), + (u = new it({ props: { $$slots: { default: [O4] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment), (t = q()), P(i.$$.fragment), (n = q()), P(s.$$.fragment), (o = q()), P(u.$$.fragment); }, - $$scope: { - ctx, + m(a, c) { + M(e, a, c), C(a, t, c), M(i, a, c), C(a, n, c), M(s, a, c), C(a, o, c), M(u, a, c), (l = !0); }, - }, - }); - label1 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_9], + p(a, c) { + var f = {}; + c & 134217792 && (f.$$scope = { dirty: c, ctx: a }), e.$set(f); + var d = {}; + c & 134217792 && (d.$$scope = { dirty: c, ctx: a }), i.$set(d); + var p = {}; + c & 134217792 && (p.$$scope = { dirty: c, ctx: a }), s.$set(p); + var m = {}; + c & 134217792 && (m.$$scope = { dirty: c, ctx: a }), u.$set(m); }, - $$scope: { - ctx, + i(a) { + l || (x(e.$$.fragment, a), x(i.$$.fragment, a), x(s.$$.fragment, a), x(u.$$.fragment, a), (l = !0)); }, - }, - }); - label2 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_8], + o(a) { + S(e.$$.fragment, a), S(i.$$.fragment, a), S(s.$$.fragment, a), S(u.$$.fragment, a), (l = !1); }, - $$scope: { - ctx, + d(a) { + $(e, a), a && y(t), $(i, a), a && y(n), $(s, a), a && y(o), $(u, a); }, - }, - }); - label3 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_7], + } + ); + } + h(T4, "create_default_slot_1"); + function R4(r) { + var e, t, i, n, s, o; + function u(f) { + r[12](f); + } + h(u, "option0_checked_binding"); + var l = { option: "duplicates", $$slots: { default: [x4] }, $$scope: { ctx: r } }; + r[0] !== void 0 && (l.checked = r[0]), (e = new me({ props: l })), X.push(() => Z(e, "checked", u)); + function a(f) { + r[17](f); + } + h(a, "option1_checked_binding"); + var c = { option: "merge", $$slots: { default: [T4] }, $$scope: { ctx: r } }; + return ( + r[5] !== void 0 && (c.checked = r[5]), + (n = new me({ props: c })), + X.push(() => Z(n, "checked", a)), + { + c() { + P(e.$$.fragment), (i = q()), P(n.$$.fragment); }, - $$scope: { - ctx, + m(f, d) { + M(e, f, d), C(f, i, d), M(n, f, d), (o = !0); }, - }, - }); - return { - c() { - p = element("p"); - p.textContent = "What to check:"; - t1 = space(); - create_component(label0.$$.fragment); - t2 = space(); - create_component(label1.$$.fragment); - t3 = space(); - create_component(label2.$$.fragment); - t4 = space(); - create_component(label3.$$.fragment); - }, - m(target, anchor) { - insert(target, p, anchor); - insert(target, t1, anchor); - mount_component(label0, target, anchor); - insert(target, t2, anchor); - mount_component(label1, target, anchor); - insert(target, t3, anchor); - mount_component(label2, target, anchor); - insert(target, t4, anchor); - mount_component(label3, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var label0_changes = {}; - if (dirty & 134217730) { - label0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label0.$set(label0_changes); - var label1_changes = {}; - if (dirty & 134217732) { - label1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label1.$set(label1_changes); - var label2_changes = {}; - if (dirty & 134217736) { - label2_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label2.$set(label2_changes); - var label3_changes = {}; - if (dirty & 134217744) { - label3_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label3.$set(label3_changes); - }, - i(local) { - if (current) return; - transition_in(label0.$$.fragment, local); - transition_in(label1.$$.fragment, local); - transition_in(label2.$$.fragment, local); - transition_in(label3.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(label0.$$.fragment, local); - transition_out(label1.$$.fragment, local); - transition_out(label2.$$.fragment, local); - transition_out(label3.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(p); - if (detaching) detach(t1); - destroy_component(label0, detaching); - if (detaching) detach(t2); - destroy_component(label1, detaching); - if (detaching) detach(t3); - destroy_component(label2, detaching); - if (detaching) detach(t4); - destroy_component(label3, detaching); - }, - }; - } - __name(create_default_slot_6, "create_default_slot_6"); - function create_default_slot_5(ctx) { - var radio; - var updating_group; - var t0; - var span; - var current; - function radio_group_binding(value) { - ctx[13](value); - } - __name(radio_group_binding, "radio_group_binding"); - var radio_props = { - name: "mergeStrategy", - value: "combine", - }; - if (ctx[6] !== void 0) { - radio_props.group = ctx[6]; - } - radio = new Radio_default({ - props: radio_props, - }); - binding_callbacks.push(() => bind(radio, "group", radio_group_binding)); - return { - c() { - create_component(radio.$$.fragment); - t0 = space(); - span = element("span"); - span.innerHTML = "<strong>Combine</strong><br/> \n <small>Keep original entry and merge in fields of duplicates if they do not\n already exist</small>"; - }, - m(target, anchor) { - mount_component(radio, target, anchor); - insert(target, t0, anchor); - insert(target, span, anchor); - current = true; - }, - p(ctx2, dirty) { - var radio_changes = {}; - if (!updating_group && dirty & 64) { - updating_group = true; - radio_changes.group = ctx2[6]; - add_flush_callback(() => (updating_group = false)); - } - radio.$set(radio_changes); - }, - i(local) { - if (current) return; - transition_in(radio.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(radio.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(radio, detaching); - if (detaching) detach(t0); - if (detaching) detach(span); - }, - }; - } - __name(create_default_slot_5, "create_default_slot_5"); - function create_default_slot_4(ctx) { - var radio; - var updating_group; - var t0; - var span; - var current; - function radio_group_binding_1(value) { - ctx[14](value); - } - __name(radio_group_binding_1, "radio_group_binding_1"); - var radio_props = { - name: "mergeStrategy", - value: "overwrite", - }; - if (ctx[6] !== void 0) { - radio_props.group = ctx[6]; - } - radio = new Radio_default({ - props: radio_props, - }); - binding_callbacks.push(() => bind(radio, "group", radio_group_binding_1)); - return { - c() { - create_component(radio.$$.fragment); - t0 = space(); - span = element("span"); - span.innerHTML = "<strong>Overwrite</strong><br/> \n <small>Keep original entry and merge in fields of duplicates, overwriting\n existing fields if they exist</small>"; - }, - m(target, anchor) { - mount_component(radio, target, anchor); - insert(target, t0, anchor); - insert(target, span, anchor); - current = true; - }, - p(ctx2, dirty) { - var radio_changes = {}; - if (!updating_group && dirty & 64) { - updating_group = true; - radio_changes.group = ctx2[6]; - add_flush_callback(() => (updating_group = false)); - } - radio.$set(radio_changes); - }, - i(local) { - if (current) return; - transition_in(radio.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(radio.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(radio, detaching); - if (detaching) detach(t0); - if (detaching) detach(span); - }, - }; - } - __name(create_default_slot_4, "create_default_slot_4"); - function create_default_slot_3(ctx) { - var radio; - var updating_group; - var t0; - var span; - var current; - function radio_group_binding_2(value) { - ctx[15](value); - } - __name(radio_group_binding_2, "radio_group_binding_2"); - var radio_props = { - name: "mergeStrategy", - value: "first", - }; - if (ctx[6] !== void 0) { - radio_props.group = ctx[6]; - } - radio = new Radio_default({ - props: radio_props, - }); - binding_callbacks.push(() => bind(radio, "group", radio_group_binding_2)); - return { - c() { - create_component(radio.$$.fragment); - t0 = space(); - span = element("span"); - span.innerHTML = "<strong>First</strong><br/> \n <small>Only keep the original entry</small>"; - }, - m(target, anchor) { - mount_component(radio, target, anchor); - insert(target, t0, anchor); - insert(target, span, anchor); - current = true; - }, - p(ctx2, dirty) { - var radio_changes = {}; - if (!updating_group && dirty & 64) { - updating_group = true; - radio_changes.group = ctx2[6]; - add_flush_callback(() => (updating_group = false)); - } - radio.$set(radio_changes); - }, - i(local) { - if (current) return; - transition_in(radio.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(radio.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(radio, detaching); - if (detaching) detach(t0); - if (detaching) detach(span); - }, - }; - } - __name(create_default_slot_3, "create_default_slot_3"); - function create_default_slot_22(ctx) { - var radio; - var updating_group; - var t0; - var span; - var current; - function radio_group_binding_3(value) { - ctx[16](value); - } - __name(radio_group_binding_3, "radio_group_binding_3"); - var radio_props = { - name: "mergeStrategy", - value: "last", - }; - if (ctx[6] !== void 0) { - radio_props.group = ctx[6]; - } - radio = new Radio_default({ - props: radio_props, - }); - binding_callbacks.push(() => bind(radio, "group", radio_group_binding_3)); - return { - c() { - create_component(radio.$$.fragment); - t0 = space(); - span = element("span"); - span.innerHTML = "<strong>Last</strong><br/> \n <small>Only keep the last found duplicate</small>"; - }, - m(target, anchor) { - mount_component(radio, target, anchor); - insert(target, t0, anchor); - insert(target, span, anchor); - current = true; - }, - p(ctx2, dirty) { - var radio_changes = {}; - if (!updating_group && dirty & 64) { - updating_group = true; - radio_changes.group = ctx2[6]; - add_flush_callback(() => (updating_group = false)); - } - radio.$set(radio_changes); - }, - i(local) { - if (current) return; - transition_in(radio.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(radio.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(radio, detaching); - if (detaching) detach(t0); - if (detaching) detach(span); - }, - }; - } - __name(create_default_slot_22, "create_default_slot_2"); - function create_default_slot_13(ctx) { - var label0; - var t0; - var label1; - var t1; - var label2; - var t2; - var label3; - var current; - label0 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_5], + p(f, d) { + var p = {}; + d & 134217758 && (p.$$scope = { dirty: d, ctx: f }), !t && d & 1 && ((t = !0), (p.checked = f[0]), J(() => (t = !1))), e.$set(p); + var m = {}; + d & 134217792 && (m.$$scope = { dirty: d, ctx: f }), !s && d & 32 && ((s = !0), (m.checked = f[5]), J(() => (s = !1))), n.$set(m); }, - $$scope: { - ctx, + i(f) { + o || (x(e.$$.fragment, f), x(n.$$.fragment, f), (o = !0)); }, - }, - }); - label1 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_4], + o(f) { + S(e.$$.fragment, f), S(n.$$.fragment, f), (o = !1); }, - $$scope: { - ctx, + d(f) { + $(e, f), f && y(i), $(n, f); }, - }, - }); - label2 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_3], + } + ); + } + h(R4, "create_default_slot"); + function $4(r) { + var e, t; + return ( + (e = new tt({ props: { title: "Duplicates", open: !0, $$slots: { default: [R4] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); }, - $$scope: { - ctx, + m(i, n) { + M(e, i, n), (t = !0); }, - }, - }); - label3 = new Label_default({ - props: { - $$slots: { - default: [create_default_slot_22], + p(i, param) { + var _param = _slicedToArray(param, 1), + n = _param[0]; + var s = {}; + n & 134217855 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); }, - $$scope: { - ctx, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); }, - }, - }); - return { - c() { - create_component(label0.$$.fragment); - t0 = space(); - create_component(label1.$$.fragment); - t1 = space(); - create_component(label2.$$.fragment); - t2 = space(); - create_component(label3.$$.fragment); - }, - m(target, anchor) { - mount_component(label0, target, anchor); - insert(target, t0, anchor); - mount_component(label1, target, anchor); - insert(target, t1, anchor); - mount_component(label2, target, anchor); - insert(target, t2, anchor); - mount_component(label3, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var label0_changes = {}; - if (dirty & 134217792) { - label0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label0.$set(label0_changes); - var label1_changes = {}; - if (dirty & 134217792) { - label1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label1.$set(label1_changes); - var label2_changes = {}; - if (dirty & 134217792) { - label2_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label2.$set(label2_changes); - var label3_changes = {}; - if (dirty & 134217792) { - label3_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label3.$set(label3_changes); - }, - i(local) { - if (current) return; - transition_in(label0.$$.fragment, local); - transition_in(label1.$$.fragment, local); - transition_in(label2.$$.fragment, local); - transition_in(label3.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(label0.$$.fragment, local); - transition_out(label1.$$.fragment, local); - transition_out(label2.$$.fragment, local); - transition_out(label3.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(label0, detaching); - if (detaching) detach(t0); - destroy_component(label1, detaching); - if (detaching) detach(t1); - destroy_component(label2, detaching); - if (detaching) detach(t2); - destroy_component(label3, detaching); - }, - }; - } - __name(create_default_slot_13, "create_default_slot_1"); - function create_default_slot4(ctx) { - var option0; - var updating_checked; - var t2; - var option1; - var updating_checked_1; - var current; - function option0_checked_binding(value) { - ctx[12](value); - } - __name(option0_checked_binding, "option0_checked_binding"); - var option0_props = { - option: "duplicates", - $$slots: { - default: [create_default_slot_6], - }, - $$scope: { - ctx, - }, - }; - if (ctx[0] !== void 0) { - option0_props.checked = ctx[0]; - } - option0 = new Option_default({ - props: option0_props, - }); - binding_callbacks.push(() => bind(option0, "checked", option0_checked_binding)); - function option1_checked_binding(value) { - ctx[17](value); - } - __name(option1_checked_binding, "option1_checked_binding"); - var option1_props = { - option: "merge", - $$slots: { - default: [create_default_slot_13], - }, - $$scope: { - ctx, - }, - }; - if (ctx[5] !== void 0) { - option1_props.checked = ctx[5]; - } - option1 = new Option_default({ - props: option1_props, - }); - binding_callbacks.push(() => bind(option1, "checked", option1_checked_binding)); - return { - c() { - create_component(option0.$$.fragment); - t2 = space(); - create_component(option1.$$.fragment); - }, - m(target, anchor) { - mount_component(option0, target, anchor); - insert(target, t2, anchor); - mount_component(option1, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var option0_changes = {}; - if (dirty & 134217758) { - option0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked && dirty & 1) { - updating_checked = true; - option0_changes.checked = ctx2[0]; - add_flush_callback(() => (updating_checked = false)); - } - option0.$set(option0_changes); - var option1_changes = {}; - if (dirty & 134217792) { - option1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_1 && dirty & 32) { - updating_checked_1 = true; - option1_changes.checked = ctx2[5]; - add_flush_callback(() => (updating_checked_1 = false)); - } - option1.$set(option1_changes); - }, - i(local) { - if (current) return; - transition_in(option0.$$.fragment, local); - transition_in(option1.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(option0.$$.fragment, local); - transition_out(option1.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(option0, detaching); - if (detaching) detach(t2); - destroy_component(option1, detaching); - }, - }; - } - __name(create_default_slot4, "create_default_slot"); - function create_fragment11(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - title: "Duplicates", - open: true, - $$slots: { - default: [create_default_slot4], + o(i) { + S(e.$$.fragment, i), (t = !1); }, - $$scope: { - ctx, + d(i) { + $(e, i); }, - }, - }); - return { - c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var collapsible_changes = {}; - if (dirty & 134217855) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); - }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(collapsible, detaching); - }, - }; - } - __name(create_fragment11, "create_fragment"); - function instance11($$self, $$props, $$invalidate) { - var _a2, _b, _c, _d, _e, _f, _g, _h, _j; - var options = $$props.options; - var duplicateCheckChecked = options.duplicates !== void 0; - var duplicateCheckKey = (_b = (_a2 = options.duplicates) === null || _a2 === void 0 ? void 0 : _a2.includes("key")) !== null && _b !== void 0 ? _b : true; - var duplicateCheckDOI = (_d = (_c = options.duplicates) === null || _c === void 0 ? void 0 : _c.includes("doi")) !== null && _d !== void 0 ? _d : false; - var duplicateCheckCitation = (_f = (_e = options.duplicates) === null || _e === void 0 ? void 0 : _e.includes("citation")) !== null && _f !== void 0 ? _f : false; - var duplicateCheckAbstract = (_h = (_g = options.duplicates) === null || _g === void 0 ? void 0 : _g.includes("abstract")) !== null && _h !== void 0 ? _h : false; - var mergeChecked = options.merge !== void 0; - var mergeValue = (_j = options.merge) !== null && _j !== void 0 ? _j : "combine"; - function checkbox_checked_binding(value) { - duplicateCheckKey = value; - $$invalidate(1, duplicateCheckKey); - } - __name(checkbox_checked_binding, "checkbox_checked_binding"); - function checkbox_checked_binding_1(value) { - duplicateCheckDOI = value; - $$invalidate(2, duplicateCheckDOI); - } - __name(checkbox_checked_binding_1, "checkbox_checked_binding_1"); - function checkbox_checked_binding_2(value) { - duplicateCheckCitation = value; - $$invalidate(3, duplicateCheckCitation); - } - __name(checkbox_checked_binding_2, "checkbox_checked_binding_2"); - function checkbox_checked_binding_3(value) { - duplicateCheckAbstract = value; - $$invalidate(4, duplicateCheckAbstract); - } - __name(checkbox_checked_binding_3, "checkbox_checked_binding_3"); - function option0_checked_binding(value) { - duplicateCheckChecked = value; - $$invalidate(0, duplicateCheckChecked); - } - __name(option0_checked_binding, "option0_checked_binding"); - function radio_group_binding(value) { - mergeValue = value; - $$invalidate(6, mergeValue); - } - __name(radio_group_binding, "radio_group_binding"); - function radio_group_binding_1(value) { - mergeValue = value; - $$invalidate(6, mergeValue); - } - __name(radio_group_binding_1, "radio_group_binding_1"); - function radio_group_binding_2(value) { - mergeValue = value; - $$invalidate(6, mergeValue); - } - __name(radio_group_binding_2, "radio_group_binding_2"); - function radio_group_binding_3(value) { - mergeValue = value; - $$invalidate(6, mergeValue); - } - __name(radio_group_binding_3, "radio_group_binding_3"); - function option1_checked_binding(value) { - mergeChecked = value; - $$invalidate(5, mergeChecked); - } - __name(option1_checked_binding, "option1_checked_binding"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(7, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 255) { - $: { - if (duplicateCheckChecked) { - $$invalidate(7, (options.duplicates = []), options); - if (duplicateCheckKey) options.duplicates.push("key"); - if (duplicateCheckDOI) options.duplicates.push("doi"); - if (duplicateCheckCitation) options.duplicates.push("citation"); - if (duplicateCheckAbstract) options.duplicates.push("abstract"); - } else { - $$invalidate(7, (options.duplicates = void 0), options); - } - $$invalidate(7, (options.merge = mergeChecked ? mergeValue : void 0), options); - } } - }; - return [ - duplicateCheckChecked, - duplicateCheckKey, - duplicateCheckDOI, - duplicateCheckCitation, - duplicateCheckAbstract, - mergeChecked, - mergeValue, - options, - checkbox_checked_binding, - checkbox_checked_binding_1, - checkbox_checked_binding_2, - checkbox_checked_binding_3, - option0_checked_binding, - radio_group_binding, - radio_group_binding_1, - radio_group_binding_2, - radio_group_binding_3, - option1_checked_binding, - ]; - } - __name(instance11, "instance"); - var DuplicateOptions = class DuplicateOptions extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance11, create_fragment11, safe_not_equal, { - options: 7, - }); - } - }; - __name(DuplicateOptions, "DuplicateOptions"); - var DuplicateOptions_default = DuplicateOptions; - // src/ui/FeedbackError.svelte - function create_else_block_1(ctx) { - var strong; - var br0; - var t1; - var t2; - var br1; - var t3; - return { - c() { - strong = element("strong"); - strong.textContent = "There's a problem with the bibtex"; - br0 = element("br"); - t1 = text("\n Unknown error: "); - t2 = text(ctx[0]); - br1 = element("br"); - t3 = text("\n This is probably a bug."); - }, - m(target, anchor) { - insert(target, strong, anchor); - insert(target, br0, anchor); - insert(target, t1, anchor); - insert(target, t2, anchor); - insert(target, br1, anchor); - insert(target, t3, anchor); - }, - p(ctx2, dirty) { - if (dirty & 1) set_data(t2, ctx2[0]); - }, - d(detaching) { - if (detaching) detach(strong); - if (detaching) detach(br0); - if (detaching) detach(t1); - if (detaching) detach(t2); - if (detaching) detach(br1); - if (detaching) detach(t3); - }, - }; - } - __name(create_else_block_1, "create_else_block_1"); - function create_if_block3(ctx) { - var strong; - var br0; - var t1; - var t2_value = ctx[0].name + ""; - var t2; - var t3; - var t4_value = ctx[0].line + ""; - var t4; - var t5; - var t6_value = ctx[0].column + ""; - var t6; - var br1; - var t7; - var if_block_anchor; - function select_block_type_1(ctx2, dirty) { - if (ctx2[0].hint) return create_if_block_12; - return create_else_block; - } - __name(select_block_type_1, "select_block_type_1"); - var current_block_type = select_block_type_1(ctx, -1); - var if_block = current_block_type(ctx); - return { - c() { - strong = element("strong"); - strong.textContent = "There's a problem with the bibtex"; - br0 = element("br"); - t1 = space(); - t2 = text(t2_value); - t3 = text(" on line "); - t4 = text(t4_value); - t5 = text(" column "); - t6 = text(t6_value); - br1 = element("br"); - t7 = space(); - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - insert(target, strong, anchor); - insert(target, br0, anchor); - insert(target, t1, anchor); - insert(target, t2, anchor); - insert(target, t3, anchor); - insert(target, t4, anchor); - insert(target, t5, anchor); - insert(target, t6, anchor); - insert(target, br1, anchor); - insert(target, t7, anchor); - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx2, dirty) { - if (dirty & 1 && t2_value !== (t2_value = ctx2[0].name + "")) set_data(t2, t2_value); - if (dirty & 1 && t4_value !== (t4_value = ctx2[0].line + "")) set_data(t4, t4_value); - if (dirty & 1 && t6_value !== (t6_value = ctx2[0].column + "")) set_data(t6, t6_value); - if (current_block_type === (current_block_type = select_block_type_1(ctx2, dirty)) && if_block) { - if_block.p(ctx2, dirty); - } else { - if_block.d(1); - if_block = current_block_type(ctx2); - if (if_block) { - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } - }, - d(detaching) { - if (detaching) detach(strong); - if (detaching) detach(br0); - if (detaching) detach(t1); - if (detaching) detach(t2); - if (detaching) detach(t3); - if (detaching) detach(t4); - if (detaching) detach(t5); - if (detaching) detach(t6); - if (detaching) detach(br1); - if (detaching) detach(t7); - if_block.d(detaching); - if (detaching) detach(if_block_anchor); - }, - }; - } - __name(create_if_block3, "create_if_block"); - function create_else_block(ctx) { - var t0; - var t1_value = JSON.stringify(ctx[0].char) + ""; - var t1; - var t2; - var t3_value = ctx[0].node.type + ""; - var t3; - var t4; - return { - c() { - t0 = text("Unexpected "); - t1 = text(t1_value); - t2 = text(" in "); - t3 = text(t3_value); - t4 = text("."); - }, - m(target, anchor) { - insert(target, t0, anchor); - insert(target, t1, anchor); - insert(target, t2, anchor); - insert(target, t3, anchor); - insert(target, t4, anchor); - }, - p(ctx2, dirty) { - if (dirty & 1 && t1_value !== (t1_value = JSON.stringify(ctx2[0].char) + "")) set_data(t1, t1_value); - if (dirty & 1 && t3_value !== (t3_value = ctx2[0].node.type + "")) set_data(t3, t3_value); - }, - d(detaching) { - if (detaching) detach(t0); - if (detaching) detach(t1); - if (detaching) detach(t2); - if (detaching) detach(t3); - if (detaching) detach(t4); - }, - }; - } - __name(create_else_block, "create_else_block"); - function create_if_block_12(ctx) { - var t_value = ctx[0].hint + ""; - var t2; - return { - c() { - t2 = text(t_value); - }, - m(target, anchor) { - insert(target, t2, anchor); - }, - p(ctx2, dirty) { - if (dirty & 1 && t_value !== (t_value = ctx2[0].hint + "")) set_data(t2, t_value); - }, - d(detaching) { - if (detaching) detach(t2); - }, - }; - } - __name(create_if_block_12, "create_if_block_1"); - function create_fragment12(ctx) { - var div1; - var svg2; - var circle; - var line0; - var line1; - var t2; - var div0; - function select_block_type(ctx2, dirty) { - if (ctx2[0] instanceof BibTeXSyntaxError) return create_if_block3; - return create_else_block_1; - } - __name(select_block_type, "select_block_type"); - var current_block_type = select_block_type(ctx, -1); - var if_block = current_block_type(ctx); - return { - c() { - div1 = element("div"); - svg2 = svg_element("svg"); - circle = svg_element("circle"); - line0 = svg_element("line"); - line1 = svg_element("line"); - t2 = space(); - div0 = element("div"); - if_block.c(); - attr(circle, "cx", "12"); - attr(circle, "cy", "12"); - attr(circle, "r", "10"); - attr(circle, "class", "svelte-176xcb"); - attr(line0, "x1", "12"); - attr(line0, "y1", "8"); - attr(line0, "x2", "12"); - attr(line0, "y2", "12"); - attr(line0, "class", "svelte-176xcb"); - attr(line1, "x1", "12"); - attr(line1, "y1", "16"); - attr(line1, "x2", "12.01"); - attr(line1, "y2", "16"); - attr(line1, "class", "svelte-176xcb"); - attr(svg2, "xmlns", "http://www.w3.org/2000/svg"); - attr(svg2, "width", "24"); - attr(svg2, "height", "24"); - attr(svg2, "viewBox", "0 0 24 24"); - attr(svg2, "fill", "none"); - attr(svg2, "stroke", "currentColor"); - attr(svg2, "stroke-width", "2"); - attr(svg2, "stroke-linecap", "round"); - attr(svg2, "stroke-linejoin", "round"); - attr(svg2, "class", "svelte-176xcb"); - attr(div0, "class", "text"); - attr(div1, "class", "container svelte-176xcb"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, svg2); - append(svg2, circle); - append(svg2, line0); - append(svg2, line1); - append(div1, t2); - append(div1, div0); - if_block.m(div0, null); - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (current_block_type === (current_block_type = select_block_type(ctx2, dirty)) && if_block) { - if_block.p(ctx2, dirty); - } else { - if_block.d(1); - if_block = current_block_type(ctx2); - if (if_block) { - if_block.c(); - if_block.m(div0, null); - } - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(div1); - if_block.d(); - }, - }; - } - __name(create_fragment12, "create_fragment"); - function instance12($$self, $$props, $$invalidate) { - var error = $$props.error; - $$self.$$set = ($$props2) => { - if ("error" in $$props2) $$invalidate(0, (error = $$props2.error)); - }; - return [error]; - } - __name(instance12, "instance"); - var FeedbackError = class FeedbackError extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance12, create_fragment12, safe_not_equal, { - error: 0, - }); - } - }; - __name(FeedbackError, "FeedbackError"); - var FeedbackError_default = FeedbackError; - // src/ui/FeedbackSuccess.svelte - function get_each_context2(ctx, list, i) { - var child_ctx = ctx.slice(); - child_ctx[4] = list[i]; - return child_ctx; - } - __name(get_each_context2, "get_each_context"); - function get_each_context_1(ctx, list, i) { - var child_ctx = ctx.slice(); - child_ctx[7] = list[i]; - return child_ctx; - } - __name(get_each_context_1, "get_each_context_1"); - function create_if_block_2(ctx) { - var ul; - var each_value_1 = ctx[2]; - var each_blocks = []; - for (var i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); - } - return { - c() { - ul = element("ul"); - for (var i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - }, - m(target, anchor) { - insert(target, ul, anchor); - for (var i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(ul, null); - } - }, - p(ctx2, dirty) { - if (dirty & 4) { - each_value_1 = ctx2[2]; - var i; - for (i = 0; i < each_value_1.length; i += 1) { - var child_ctx = get_each_context_1(ctx2, each_value_1, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_1(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(ul, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_1.length; - } - }, - d(detaching) { - if (detaching) detach(ul); - destroy_each(each_blocks, detaching); - }, - }; - } - __name(create_if_block_2, "create_if_block_2"); - function create_each_block_1(ctx) { - var li; - var t0; - var t1_value = ctx[7].message + ""; - var t1; - return { - c() { - li = element("li"); - t0 = text("$"); - t1 = text(t1_value); - }, - m(target, anchor) { - insert(target, li, anchor); - append(li, t0); - append(li, t1); - }, - p: noop, - d(detaching) { - if (detaching) detach(li); - }, - }; - } - __name(create_each_block_1, "create_each_block_1"); - function create_if_block4(ctx) { - var if_block_anchor; - function select_block_type(ctx2, dirty) { - if (ctx2[3].length === 0) return create_if_block_13; - return create_else_block2; - } - __name(select_block_type, "select_block_type"); - var current_block_type = select_block_type(ctx, -1); - var if_block = current_block_type(ctx); - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx2, dirty) { - if_block.p(ctx2, dirty); - }, - d(detaching) { - if_block.d(detaching); - if (detaching) detach(if_block_anchor); - }, - }; - } - __name(create_if_block4, "create_if_block"); - function create_else_block2(ctx) { - var strong; - var t2; - var ul; - var each_value = ctx[3]; - var each_blocks = []; - for (var i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); - } - return { - c() { - strong = element("strong"); - strong.textContent = "".concat(ctx[3].length, " merged:"); - t2 = space(); - ul = element("ul"); - for (var i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(strong, "class", "svelte-yy7yvg"); - }, - m(target, anchor) { - insert(target, strong, anchor); - insert(target, t2, anchor); - insert(target, ul, anchor); - for (var i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(ul, null); - } - }, - p(ctx2, dirty) { - if (dirty & 8) { - each_value = ctx2[3]; - var i; - for (i = 0; i < each_value.length; i += 1) { - var child_ctx = get_each_context2(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block2(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(ul, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; - } - }, - d(detaching) { - if (detaching) detach(strong); - if (detaching) detach(t2); - if (detaching) detach(ul); - destroy_each(each_blocks, detaching); - }, - }; - } - __name(create_else_block2, "create_else_block"); - function create_if_block_13(ctx) { - var t2; - return { - c() { - t2 = text("No duplicates"); - }, - m(target, anchor) { - insert(target, t2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) detach(t2); - }, - }; - } - __name(create_if_block_13, "create_if_block_1"); - function create_each_block2(ctx) { - var li; - var t_value = ctx[4].message + ""; - var t2; - return { - c() { - li = element("li"); - t2 = text(t_value); - }, - m(target, anchor) { - insert(target, li, anchor); - append(li, t2); - }, - p: noop, - d(detaching) { - if (detaching) detach(li); - }, - }; - } - __name(create_each_block2, "create_each_block"); - function create_fragment13(ctx) { - var div1; - var svg2; - var circle; - var line0; - var line1; - var t0; - var div0; - var strong; - var br; - var t2; - var t3_value = ctx[1].count + ""; - var t3; - var t4; - var t5; - var if_block0 = ctx[2].length > 0 && create_if_block_2(ctx); - var if_block1 = ctx[0].merge && create_if_block4(ctx); - return { - c() { - div1 = element("div"); - svg2 = svg_element("svg"); - circle = svg_element("circle"); - line0 = svg_element("line"); - line1 = svg_element("line"); - t0 = space(); - div0 = element("div"); - strong = element("strong"); - strong.textContent = "Successful!"; - br = element("br"); - t2 = text("\n Tidied "); - t3 = text(t3_value); - t4 = text(" entries.\n\n "); - if (if_block0) if_block0.c(); - t5 = space(); - if (if_block1) if_block1.c(); - attr(circle, "cx", "12"); - attr(circle, "cy", "12"); - attr(circle, "r", "10"); - attr(circle, "class", "svelte-yy7yvg"); - attr(line0, "x1", "12"); - attr(line0, "y1", "16"); - attr(line0, "x2", "12"); - attr(line0, "y2", "12"); - attr(line0, "class", "svelte-yy7yvg"); - attr(line1, "x1", "12"); - attr(line1, "y1", "8"); - attr(line1, "x2", "12.01"); - attr(line1, "y2", "8"); - attr(line1, "class", "svelte-yy7yvg"); - attr(svg2, "xmlns", "http://www.w3.org/2000/svg"); - attr(svg2, "width", "24"); - attr(svg2, "height", "24"); - attr(svg2, "viewBox", "0 0 24 24"); - attr(svg2, "fill", "none"); - attr(svg2, "stroke", "currentColor"); - attr(svg2, "stroke-width", "2"); - attr(svg2, "stroke-linecap", "round"); - attr(svg2, "stroke-linejoin", "round"); - attr(svg2, "class", "feather feather-info svelte-yy7yvg"); - attr(strong, "class", "svelte-yy7yvg"); - attr(div0, "class", "text"); - attr(div1, "class", "container svelte-yy7yvg"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, svg2); - append(svg2, circle); - append(svg2, line0); - append(svg2, line1); - append(div1, t0); - append(div1, div0); - append(div0, strong); - append(div0, br); - append(div0, t2); - append(div0, t3); - append(div0, t4); - if (if_block0) if_block0.m(div0, null); - append(div0, t5); - if (if_block1) if_block1.m(div0, null); - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - if (dirty & 2 && t3_value !== (t3_value = ctx2[1].count + "")) set_data(t3, t3_value); - if (ctx2[2].length > 0) if_block0.p(ctx2, dirty); - if (ctx2[0].merge) { - if (if_block1) { - if_block1.p(ctx2, dirty); - } else { - if_block1 = create_if_block4(ctx2); - if_block1.c(); - if_block1.m(div0, null); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(div1); - if (if_block0) if_block0.d(); - if (if_block1) if_block1.d(); - }, - }; - } - __name(create_fragment13, "create_fragment"); - function instance13($$self, $$props, $$invalidate) { - var options = $$props.options; - var result = $$props.result; - var warnings = result.warnings.filter((w) => w.code !== "DUPLICATE_ENTRY"); - var dupes = result.warnings.filter((w) => w.code === "DUPLICATE_ENTRY"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(0, (options = $$props2.options)); - if ("result" in $$props2) $$invalidate(1, (result = $$props2.result)); - }; - return [options, result, warnings, dupes]; - } - __name(instance13, "instance"); - var FeedbackSuccess = class FeedbackSuccess extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance13, create_fragment13, safe_not_equal, { - options: 0, - result: 1, - }); - } - }; - __name(FeedbackSuccess, "FeedbackSuccess"); - var FeedbackSuccess_default = FeedbackSuccess; - // src/ui/Feedback.svelte - function create_else_block3(ctx) { - var feedbackerror; - var current; - feedbackerror = new FeedbackError_default({ - props: { - error: ctx[1].error, - }, - }); - return { - c() { - create_component(feedbackerror.$$.fragment); - }, - m(target, anchor) { - mount_component(feedbackerror, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var feedbackerror_changes = {}; - if (dirty & 2) feedbackerror_changes.error = ctx2[1].error; - feedbackerror.$set(feedbackerror_changes); - }, - i(local) { - if (current) return; - transition_in(feedbackerror.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(feedbackerror.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(feedbackerror, detaching); - }, - }; - } - __name(create_else_block3, "create_else_block"); - function create_if_block5(ctx) { - var feedbacksuccess; - var current; - feedbacksuccess = new FeedbackSuccess_default({ - props: { - options: ctx[0], - result: ctx[1].result, - }, - }); - return { - c() { - create_component(feedbacksuccess.$$.fragment); - }, - m(target, anchor) { - mount_component(feedbacksuccess, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var feedbacksuccess_changes = {}; - if (dirty & 1) feedbacksuccess_changes.options = ctx2[0]; - if (dirty & 2) feedbacksuccess_changes.result = ctx2[1].result; - feedbacksuccess.$set(feedbacksuccess_changes); - }, - i(local) { - if (current) return; - transition_in(feedbacksuccess.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(feedbacksuccess.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(feedbacksuccess, detaching); - }, - }; + ); } - __name(create_if_block5, "create_if_block"); - function create_fragment14(ctx) { - var div; - var current_block_type_index; - var if_block; - var current; - var if_block_creators = [create_if_block5, create_else_block3]; - var if_blocks = []; - function select_block_type(ctx2, dirty) { - if (ctx2[1].status === "success") return 0; - return 1; - } - __name(select_block_type, "select_block_type"); - current_block_type_index = select_block_type(ctx, -1); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - return { - c() { - div = element("div"); - if_block.c(); - attr(div, "data-test-feedback", ""); - attr(div, "class", "svelte-1pqmac"); - }, - m(target, anchor) { - insert(target, div, anchor); - if_blocks[current_block_type_index].m(div, null); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx2, dirty); - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx2, dirty); - } else { - group_outros(); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - check_outros(); - if_block = if_blocks[current_block_type_index]; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); - if_block.c(); - } else { - if_block.p(ctx2, dirty); - } - transition_in(if_block, 1); - if_block.m(div, null); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) detach(div); - if_blocks[current_block_type_index].d(); - }, - }; + h($4, "create_fragment"); + function M4(r, e, t) { + var i, n, s, o, u, l, a, c, f; + var d = e.options, + p = d.duplicates !== void 0, + m = (n = (i = d.duplicates) === null || i === void 0 ? void 0 : i.includes("key")) !== null && n !== void 0 ? n : !0, + D = (o = (s = d.duplicates) === null || s === void 0 ? void 0 : s.includes("doi")) !== null && o !== void 0 ? o : !1, + g = (l = (u = d.duplicates) === null || u === void 0 ? void 0 : u.includes("citation")) !== null && l !== void 0 ? l : !1, + b = (c = (a = d.duplicates) === null || a === void 0 ? void 0 : a.includes("abstract")) !== null && c !== void 0 ? c : !1, + F = d.merge !== void 0, + A = (f = d.merge) !== null && f !== void 0 ? f : "combine"; + function E(G) { + (m = G), t(1, m); + } + h(E, "checkbox_checked_binding"); + function O(G) { + (D = G), t(2, D); + } + h(O, "checkbox_checked_binding_1"); + function _(G) { + (g = G), t(3, g); + } + h(_, "checkbox_checked_binding_2"); + function W(G) { + (b = G), t(4, b); + } + h(W, "checkbox_checked_binding_3"); + function Q(G) { + (p = G), t(0, p); + } + h(Q, "option0_checked_binding"); + function j(G) { + (A = G), t(6, A); + } + h(j, "radio_group_binding"); + function Y(G) { + (A = G), t(6, A); + } + h(Y, "radio_group_binding_1"); + function I(G) { + (A = G), t(6, A); + } + h(I, "radio_group_binding_2"); + function oe(G) { + (A = G), t(6, A); + } + h(oe, "radio_group_binding_3"); + function le(G) { + (F = G), t(5, F); + } + return ( + h(le, "option1_checked_binding"), + (r.$$set = (G) => { + "options" in G && t(7, (d = G.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 255) e: p ? (t(7, (d.duplicates = []), d), m && d.duplicates.push("key"), D && d.duplicates.push("doi"), g && d.duplicates.push("citation"), b && d.duplicates.push("abstract")) : t(7, (d.duplicates = void 0), d), t(7, (d.merge = F ? A : void 0), d); + }), + [p, m, D, g, b, F, A, d, E, O, _, W, Q, j, Y, I, oe, le] + ); } - __name(create_fragment14, "create_fragment"); - function instance14($$self, $$props, $$invalidate) { - var options = $$props.options; - var status = $$props.status; - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(0, (options = $$props2.options)); - if ("status" in $$props2) $$invalidate(1, (status = $$props2.status)); - }; - return [options, status]; - } - __name(instance14, "instance"); - var Feedback = class Feedback extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance14, create_fragment14, safe_not_equal, { - options: 0, - status: 1, - }); + h(M4, "instance"); + var Wu = class Wu extends re { + constructor(e) { + super(), se(this, e, M4, $4, ne, { options: 7 }); } }; - __name(Feedback, "Feedback"); - var Feedback_default = Feedback; - // src/ui/IndentOptions.svelte - function create_default_slot_32(ctx) { - var radio; - var updating_group; - var t2; - var current; - function radio_group_binding(value) { - ctx[3](value); - } - __name(radio_group_binding, "radio_group_binding"); - var radio_props = { - name: "indent", - value: "tabs", - }; - if (ctx[0] !== void 0) { - radio_props.group = ctx[0]; - } - radio = new Radio_default({ - props: radio_props, - }); - binding_callbacks.push(() => bind(radio, "group", radio_group_binding)); + h(Wu, "DuplicateOptions"); + var R1 = Wu; + function P4(r) { + var e, t, i, n, s, o; return { c() { - create_component(radio.$$.fragment); - t2 = text("\n Indent with tabs"); - }, - m(target, anchor) { - mount_component(radio, target, anchor); - insert(target, t2, anchor); - current = true; - }, - p(ctx2, dirty) { - var radio_changes = {}; - if (!updating_group && dirty & 1) { - updating_group = true; - radio_changes.group = ctx2[0]; - add_flush_callback(() => (updating_group = false)); - } - radio.$set(radio_changes); + (e = T("strong")), (e.textContent = "There's a problem with the bibtex"), (t = T("br")), (i = K("\n Unknown error: ")), (n = K(r[0])), (s = T("br")), (o = K("\n This is probably a bug.")); }, - i(local) { - if (current) return; - transition_in(radio.$$.fragment, local); - current = true; + m(u, l) { + C(u, e, l), C(u, t, l), C(u, i, l), C(u, n, l), C(u, s, l), C(u, o, l); }, - o(local) { - transition_out(radio.$$.fragment, local); - current = false; + p(u, l) { + l & 1 && Ke(n, u[0]); }, - d(detaching) { - destroy_component(radio, detaching); - if (detaching) detach(t2); + d(u) { + u && y(e), u && y(t), u && y(i), u && y(n), u && y(s), u && y(o); }, }; } - __name(create_default_slot_32, "create_default_slot_3"); - function create_default_slot_23(ctx) { - var radio; - var updating_group; - var t2; - var current; - function radio_group_binding_1(value) { - ctx[4](value); - } - __name(radio_group_binding_1, "radio_group_binding_1"); - var radio_props = { - name: "indent", - value: "spaces", - }; - if (ctx[0] !== void 0) { - radio_props.group = ctx[0]; - } - radio = new Radio_default({ - props: radio_props, - }); - binding_callbacks.push(() => bind(radio, "group", radio_group_binding_1)); + h(P4, "create_else_block_1"); + function L4(r) { + var e, + t, + i, + n = r[0].name + "", + s, + o, + u = r[0].line + "", + l, + a, + c = r[0].column + "", + f, + d, + p, + m; + function D(F, A) { + return F[0].hint ? I4 : q4; + } + h(D, "select_block_type_1"); + var g = D(r, -1), + b = g(r); return { c() { - create_component(radio.$$.fragment); - t2 = text("\n Indent with spaces"); + (e = T("strong")), (e.textContent = "There's a problem with the bibtex"), (t = T("br")), (i = q()), (s = K(n)), (o = K(" on line ")), (l = K(u)), (a = K(" column ")), (f = K(c)), (d = T("br")), (p = q()), b.c(), (m = ii()); }, - m(target, anchor) { - mount_component(radio, target, anchor); - insert(target, t2, anchor); - current = true; + m(F, A) { + C(F, e, A), C(F, t, A), C(F, i, A), C(F, s, A), C(F, o, A), C(F, l, A), C(F, a, A), C(F, f, A), C(F, d, A), C(F, p, A), b.m(F, A), C(F, m, A); }, - p(ctx2, dirty) { - var radio_changes = {}; - if (!updating_group && dirty & 1) { - updating_group = true; - radio_changes.group = ctx2[0]; - add_flush_callback(() => (updating_group = false)); - } - radio.$set(radio_changes); + p(F, A) { + A & 1 && n !== (n = F[0].name + "") && Ke(s, n), A & 1 && u !== (u = F[0].line + "") && Ke(l, u), A & 1 && c !== (c = F[0].column + "") && Ke(f, c), g === (g = D(F, A)) && b ? b.p(F, A) : (b.d(1), (b = g(F)), b && (b.c(), b.m(m.parentNode, m))); }, - i(local) { - if (current) return; - transition_in(radio.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(radio.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(radio, detaching); - if (detaching) detach(t2); + d(F) { + F && y(e), F && y(t), F && y(i), F && y(s), F && y(o), F && y(l), F && y(a), F && y(f), F && y(d), F && y(p), b.d(F), F && y(m); }, }; } - __name(create_default_slot_23, "create_default_slot_2"); - function create_if_block6(ctx) { - var suboptions; - var current; - suboptions = new SubOptions_default({ - props: { - $$slots: { - default: [create_default_slot_14], - }, - $$scope: { - ctx, - }, - }, - }); + h(L4, "create_if_block"); + function q4(r) { + var e, + t = JSON.stringify(r[0].char) + "", + i, + n, + s = r[0].node.type + "", + o, + u; return { c() { - create_component(suboptions.$$.fragment); - }, - m(target, anchor) { - mount_component(suboptions, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var suboptions_changes = {}; - if (dirty & 66) { - suboptions_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - suboptions.$set(suboptions_changes); + (e = K("Unexpected ")), (i = K(t)), (n = K(" in ")), (o = K(s)), (u = K(".")); }, - i(local) { - if (current) return; - transition_in(suboptions.$$.fragment, local); - current = true; + m(l, a) { + C(l, e, a), C(l, i, a), C(l, n, a), C(l, o, a), C(l, u, a); }, - o(local) { - transition_out(suboptions.$$.fragment, local); - current = false; + p(l, a) { + a & 1 && t !== (t = JSON.stringify(l[0].char) + "") && Ke(i, t), a & 1 && s !== (s = l[0].node.type + "") && Ke(o, s); }, - d(detaching) { - destroy_component(suboptions, detaching); + d(l) { + l && y(e), l && y(i), l && y(n), l && y(o), l && y(u); }, }; } - __name(create_if_block6, "create_if_block"); - function create_default_slot_14(ctx) { - var label; - var t2; - var input; - var mounted; - var dispose; + h(q4, "create_else_block"); + function I4(r) { + var e = r[0].hint + "", + t; return { c() { - label = element("label"); - t2 = text("Spaces: "); - input = element("input"); - attr(input, "name", "spaces"); - attr(input, "type", "number"); + t = K(e); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t2); - append(label, input); - set_input_value(input, ctx[1]); - if (!mounted) { - dispose = listen(input, "input", ctx[5]); - mounted = true; - } + m(i, n) { + C(i, t, n); }, - p(ctx2, dirty) { - if (dirty & 2 && to_number(input.value) !== ctx2[1]) { - set_input_value(input, ctx2[1]); - } + p(i, n) { + n & 1 && e !== (e = i[0].hint + "") && Ke(t, e); }, - d(detaching) { - if (detaching) detach(label); - mounted = false; - dispose(); + d(i) { + i && y(t); }, }; } - __name(create_default_slot_14, "create_default_slot_1"); - function create_default_slot5(ctx) { - var label0; - var t0; - var label1; - var t1; - var if_block_anchor; - var current; - label0 = new Label_default({ - props: { - title: "Indent fields with tabs", - $$slots: { - default: [create_default_slot_32], - }, - $$scope: { - ctx, - }, + h(I4, "create_if_block_1"); + function N4(r) { + var e, t, i, n, s, o, u; + function l(f, d) { + return f[0] instanceof st ? L4 : P4; + } + h(l, "select_block_type"); + var a = l(r, -1), + c = a(r); + return { + c() { + (e = T("div")), + (t = Nt("svg")), + (i = Nt("circle")), + (n = Nt("line")), + (s = Nt("line")), + (o = q()), + (u = T("div")), + c.c(), + v(i, "cx", "12"), + v(i, "cy", "12"), + v(i, "r", "10"), + v(i, "class", "svelte-176xcb"), + v(n, "x1", "12"), + v(n, "y1", "8"), + v(n, "x2", "12"), + v(n, "y2", "12"), + v(n, "class", "svelte-176xcb"), + v(s, "x1", "12"), + v(s, "y1", "16"), + v(s, "x2", "12.01"), + v(s, "y2", "16"), + v(s, "class", "svelte-176xcb"), + v(t, "xmlns", "http://www.w3.org/2000/svg"), + v(t, "width", "24"), + v(t, "height", "24"), + v(t, "viewBox", "0 0 24 24"), + v(t, "fill", "none"), + v(t, "stroke", "currentColor"), + v(t, "stroke-width", "2"), + v(t, "stroke-linecap", "round"), + v(t, "stroke-linejoin", "round"), + v(t, "class", "svelte-176xcb"), + v(u, "class", "text"), + v(e, "class", "container svelte-176xcb"); + }, + m(f, d) { + C(f, e, d), V(e, t), V(t, i), V(t, n), V(t, s), V(e, o), V(e, u), c.m(u, null); + }, + p(f, param) { + var _param = _slicedToArray(param, 1), + d = _param[0]; + a === (a = l(f, d)) && c ? c.p(f, d) : (c.d(1), (c = a(f)), c && (c.c(), c.m(u, null))); }, - }); - label1 = new Label_default({ - props: { - title: "Indent fields with spaces", - $$slots: { - default: [create_default_slot_23], - }, - $$scope: { - ctx, - }, + i: xe, + o: xe, + d(f) { + f && y(e), c.d(); }, - }); - var if_block = ctx[0] === "spaces" && create_if_block6(ctx); + }; + } + h(N4, "create_fragment"); + function V4(r, e, t) { + var i = e.error; + return ( + (r.$$set = (n) => { + "error" in n && t(0, (i = n.error)); + }), + [i] + ); + } + h(V4, "instance"); + var ju = class ju extends re { + constructor(e) { + super(), se(this, e, V4, N4, ne, { error: 0 }); + } + }; + h(ju, "FeedbackError"); + var $1 = ju; + function M1(r, e, t) { + var i = r.slice(); + return (i[4] = e[t]), i; + } + h(M1, "get_each_context"); + function P1(r, e, t) { + var i = r.slice(); + return (i[7] = e[t]), i; + } + h(P1, "get_each_context_1"); + function z4(r) { + var e, + t = r[2], + i = []; + for (var n = 0; n < t.length; n += 1) i[n] = L1(P1(r, t, n)); return { c() { - create_component(label0.$$.fragment); - t0 = space(); - create_component(label1.$$.fragment); - t1 = space(); - if (if_block) if_block.c(); - if_block_anchor = empty(); + e = T("ul"); + for (var n = 0; n < i.length; n += 1) i[n].c(); }, - m(target, anchor) { - mount_component(label0, target, anchor); - insert(target, t0, anchor); - mount_component(label1, target, anchor); - insert(target, t1, anchor); - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; + m(n, s) { + C(n, e, s); + for (var o = 0; o < i.length; o += 1) i[o].m(e, null); }, - p(ctx2, dirty) { - var label0_changes = {}; - if (dirty & 65) { - label0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label0.$set(label0_changes); - var label1_changes = {}; - if (dirty & 65) { - label1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - label1.$set(label1_changes); - if (ctx2[0] === "spaces") { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & 1) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block6(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); + p(n, s) { + if (s & 4) { + t = n[2]; + var o; + for (o = 0; o < t.length; o += 1) { + var u = P1(n, t, o); + i[o] ? i[o].p(u, s) : ((i[o] = L1(u)), i[o].c(), i[o].m(e, null)); + } + for (; o < i.length; o += 1) i[o].d(1); + i.length = t.length; } }, - i(local) { - if (current) return; - transition_in(label0.$$.fragment, local); - transition_in(label1.$$.fragment, local); - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(label0.$$.fragment, local); - transition_out(label1.$$.fragment, local); - transition_out(if_block); - current = false; - }, - d(detaching) { - destroy_component(label0, detaching); - if (detaching) detach(t0); - destroy_component(label1, detaching); - if (detaching) detach(t1); - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); + d(n) { + n && y(e), bn(i, n); }, }; } - __name(create_default_slot5, "create_default_slot"); - function create_fragment15(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - title: "Indent", - open: true, - $$slots: { - default: [create_default_slot5], - }, - $$scope: { - ctx, - }, - }, - }); + h(z4, "create_if_block_2"); + function L1(r) { + var e, + t, + i = r[7].message + "", + n; return { c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var collapsible_changes = {}; - if (dirty & 67) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); + (e = T("li")), (t = K("$")), (n = K(i)); }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; + m(s, o) { + C(s, e, o), V(e, t), V(e, n); }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(collapsible, detaching); + p: xe, + d(s) { + s && y(e); }, }; } - __name(create_fragment15, "create_fragment"); - function instance15($$self, $$props, $$invalidate) { - var options = $$props.options; - var indent = options.tab ? "tabs" : "spaces"; - var spaceValue = options.space; - function radio_group_binding(value) { - indent = value; - $$invalidate(0, indent); - } - __name(radio_group_binding, "radio_group_binding"); - function radio_group_binding_1(value) { - indent = value; - $$invalidate(0, indent); - } - __name(radio_group_binding_1, "radio_group_binding_1"); - function input_input_handler() { - spaceValue = to_number(this.value); - $$invalidate(1, spaceValue); - } - __name(input_input_handler, "input_input_handler"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(2, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 3) { - $: { - $$invalidate(2, (options.space = spaceValue), options); - $$invalidate(2, (options.tab = indent === "tabs"), options); - } - } - }; - return [indent, spaceValue, options, radio_group_binding, radio_group_binding_1, input_input_handler]; - } - __name(instance15, "instance"); - var IndentOptions = class IndentOptions extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance15, create_fragment15, safe_not_equal, { - options: 2, - }); + h(L1, "create_each_block_1"); + function q1(r) { + var e; + function t(s, o) { + return s[3].length === 0 ? j4 : W4; } - }; - __name(IndentOptions, "IndentOptions"); - var IndentOptions_default = IndentOptions; - // src/ui/SortingOptions.svelte - function create_default_slot_24(ctx) { - var label; - var t0; - var textarea; - var t1; - var p; - var mounted; - var dispose; + h(t, "select_block_type"); + var n = t(r, -1)(r); return { c() { - label = element("label"); - t0 = text("Fields to sort by:\n "); - textarea = element("textarea"); - t1 = space(); - p = element("p"); - p.innerHTML = "Space delimited, e.g: <code>key type publisher author</code>. For\n descending order, prefix the field name with a dash, e.g.\n <code>-year author</code>."; - attr(textarea, "name", "sortList"); - attr(textarea, "spellcheck", "false"); + n.c(), (e = ii()); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t0); - append(label, textarea); - set_input_value(textarea, ctx[3]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(textarea, "input", ctx[5]); - mounted = true; - } + m(s, o) { + n.m(s, o), C(s, e, o); }, - p(ctx2, dirty) { - if (dirty & 8) { - set_input_value(textarea, ctx2[3]); - } + p(s, o) { + n.p(s, o); }, - d(detaching) { - if (detaching) detach(label); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); + d(s) { + n.d(s), s && y(e); }, }; } - __name(create_default_slot_24, "create_default_slot_2"); - function create_default_slot_15(ctx) { - var label; - var t0; - var textarea; - var t1; - var p; - var mounted; - var dispose; + h(q1, "create_if_block"); + function W4(r) { + var e, + t, + i, + n = r[3], + s = []; + for (var o = 0; o < n.length; o += 1) s[o] = I1(M1(r, n, o)); return { c() { - label = element("label"); - t0 = text("Field order:\n "); - textarea = element("textarea"); - t1 = space(); - p = element("p"); - p.innerHTML = "Space delimited, e.g: <code>title author year</code>"; - attr(textarea, "name", "sortFieldList"); - attr(textarea, "spellcheck", "false"); + (e = T("strong")), (e.textContent = "".concat(r[3].length, " merged:")), (t = q()), (i = T("ul")); + for (var o = 0; o < s.length; o += 1) s[o].c(); + v(e, "class", "svelte-yy7yvg"); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t0); - append(label, textarea); - set_input_value(textarea, ctx[1]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(textarea, "input", ctx[7]); - mounted = true; - } + m(o, u) { + C(o, e, u), C(o, t, u), C(o, i, u); + for (var l = 0; l < s.length; l += 1) s[l].m(i, null); }, - p(ctx2, dirty) { - if (dirty & 2) { - set_input_value(textarea, ctx2[1]); + p(o, u) { + if (u & 8) { + n = o[3]; + var l; + for (l = 0; l < n.length; l += 1) { + var a = M1(o, n, l); + s[l] ? s[l].p(a, u) : ((s[l] = I1(a)), s[l].c(), s[l].m(i, null)); + } + for (; l < s.length; l += 1) s[l].d(1); + s.length = n.length; } }, - d(detaching) { - if (detaching) detach(label); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); + d(o) { + o && y(e), o && y(t), o && y(i), bn(s, o); }, }; } - __name(create_default_slot_15, "create_default_slot_1"); - function create_default_slot6(ctx) { - var option0; - var updating_checked; - var t2; - var option1; - var updating_checked_1; - var current; - function option0_checked_binding(value) { - ctx[6](value); - } - __name(option0_checked_binding, "option0_checked_binding"); - var option0_props = { - option: "sort", - $$slots: { - default: [create_default_slot_24], - }, - $$scope: { - ctx, + h(W4, "create_else_block"); + function j4(r) { + var e; + return { + c() { + e = K("No duplicates"); }, - }; - if (ctx[2] !== void 0) { - option0_props.checked = ctx[2]; - } - option0 = new Option_default({ - props: option0_props, - }); - binding_callbacks.push(() => bind(option0, "checked", option0_checked_binding)); - function option1_checked_binding(value) { - ctx[8](value); - } - __name(option1_checked_binding, "option1_checked_binding"); - var option1_props = { - option: "sortFields", - $$slots: { - default: [create_default_slot_15], + m(t, i) { + C(t, e, i); }, - $$scope: { - ctx, + p: xe, + d(t) { + t && y(e); }, }; - if (ctx[0] !== void 0) { - option1_props.checked = ctx[0]; - } - option1 = new Option_default({ - props: option1_props, - }); - binding_callbacks.push(() => bind(option1, "checked", option1_checked_binding)); + } + h(j4, "create_if_block_1"); + function I1(r) { + var e, + t = r[4].message + "", + i; return { c() { - create_component(option0.$$.fragment); - t2 = space(); - create_component(option1.$$.fragment); - }, - m(target, anchor) { - mount_component(option0, target, anchor); - insert(target, t2, anchor); - mount_component(option1, target, anchor); - current = true; + (e = T("li")), (i = K(t)); }, - p(ctx2, dirty) { - var option0_changes = {}; - if (dirty & 2056) { - option0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked && dirty & 4) { - updating_checked = true; - option0_changes.checked = ctx2[2]; - add_flush_callback(() => (updating_checked = false)); - } - option0.$set(option0_changes); - var option1_changes = {}; - if (dirty & 2050) { - option1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_1 && dirty & 1) { - updating_checked_1 = true; - option1_changes.checked = ctx2[0]; - add_flush_callback(() => (updating_checked_1 = false)); - } - option1.$set(option1_changes); - }, - i(local) { - if (current) return; - transition_in(option0.$$.fragment, local); - transition_in(option1.$$.fragment, local); - current = true; + m(n, s) { + C(n, e, s), V(e, i); }, - o(local) { - transition_out(option0.$$.fragment, local); - transition_out(option1.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(option0, detaching); - if (detaching) detach(t2); - destroy_component(option1, detaching); + p: xe, + d(n) { + n && y(e); }, }; } - __name(create_default_slot6, "create_default_slot"); - function create_fragment16(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - title: "Sorting", - open: true, - $$slots: { - default: [create_default_slot6], - }, - $$scope: { - ctx, - }, - }, - }); + h(I1, "create_each_block"); + function H4(r) { + var e, + t, + i, + n, + s, + o, + u, + l, + a, + c, + f = r[1].count + "", + d, + p, + m, + D = r[2].length > 0 && z4(r), + g = r[0].merge && q1(r); return { c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, param) { + (e = T("div")), + (t = Nt("svg")), + (i = Nt("circle")), + (n = Nt("line")), + (s = Nt("line")), + (o = q()), + (u = T("div")), + (l = T("strong")), + (l.textContent = "Successful!"), + (a = T("br")), + (c = K("\n Tidied ")), + (d = K(f)), + (p = K(" entries.\n\n ")), + D && D.c(), + (m = q()), + g && g.c(), + v(i, "cx", "12"), + v(i, "cy", "12"), + v(i, "r", "10"), + v(i, "class", "svelte-yy7yvg"), + v(n, "x1", "12"), + v(n, "y1", "16"), + v(n, "x2", "12"), + v(n, "y2", "12"), + v(n, "class", "svelte-yy7yvg"), + v(s, "x1", "12"), + v(s, "y1", "8"), + v(s, "x2", "12.01"), + v(s, "y2", "8"), + v(s, "class", "svelte-yy7yvg"), + v(t, "xmlns", "http://www.w3.org/2000/svg"), + v(t, "width", "24"), + v(t, "height", "24"), + v(t, "viewBox", "0 0 24 24"), + v(t, "fill", "none"), + v(t, "stroke", "currentColor"), + v(t, "stroke-width", "2"), + v(t, "stroke-linecap", "round"), + v(t, "stroke-linejoin", "round"), + v(t, "class", "feather feather-info svelte-yy7yvg"), + v(l, "class", "svelte-yy7yvg"), + v(u, "class", "text"), + v(e, "class", "container svelte-yy7yvg"); + }, + m(b, F) { + C(b, e, F), V(e, t), V(t, i), V(t, n), V(t, s), V(e, o), V(e, u), V(u, l), V(u, a), V(u, c), V(u, d), V(u, p), D && D.m(u, null), V(u, m), g && g.m(u, null); + }, + p(b, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var collapsible_changes = {}; - if (dirty & 2063) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); + F = _param[0]; + F & 2 && f !== (f = b[1].count + "") && Ke(d, f), b[2].length > 0 && D.p(b, F), b[0].merge ? (g ? g.p(b, F) : ((g = q1(b)), g.c(), g.m(u, null))) : g && (g.d(1), (g = null)); }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(collapsible, detaching); + i: xe, + o: xe, + d(b) { + b && y(e), D && D.d(), g && g.d(); }, }; } - __name(create_fragment16, "create_fragment"); - function instance16($$self, $$props, $$invalidate) { - var _a2, _b; - var options = $$props.options; - var sortFieldsChecked = options.sortFields !== void 0 && options.sortFields.length > 0; - var sortFieldsValue = ((_a2 = options.sortFields) !== null && _a2 !== void 0 ? _a2 : DEFAULT_FIELD_SORT).join(" "); - var sortChecked = options.sort !== void 0 && options.sort.length > 0; - var sortValue = ((_b = options.sort) !== null && _b !== void 0 ? _b : DEFAULT_SORT).join(" "); - function textarea_input_handler() { - sortValue = this.value; - $$invalidate(3, sortValue); - } - __name(textarea_input_handler, "textarea_input_handler"); - function option0_checked_binding(value) { - sortChecked = value; - $$invalidate(2, sortChecked); - } - __name(option0_checked_binding, "option0_checked_binding"); - function textarea_input_handler_1() { - sortFieldsValue = this.value; - $$invalidate(1, sortFieldsValue); - } - __name(textarea_input_handler_1, "textarea_input_handler_1"); - function option1_checked_binding(value) { - sortFieldsChecked = value; - $$invalidate(0, sortFieldsChecked); - } - __name(option1_checked_binding, "option1_checked_binding"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(4, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 15) { - $: { - $$invalidate(4, (options.sortFields = sortFieldsChecked && sortFieldsValue.length > 0 ? sortFieldsValue.split(/[\n\t ,]+/) : void 0), options); - $$invalidate(4, (options.sort = sortChecked && sortValue.length > 0 ? sortValue.split(/[\n\t ,]+/) : void 0), options); - } + h(H4, "create_fragment"); + function U4(r, e, t) { + var i = e.options, + n = e.result, + s = n.warnings.filter((u) => u.code !== "DUPLICATE_ENTRY"), + o = n.warnings.filter((u) => u.code === "DUPLICATE_ENTRY"); + return ( + (r.$$set = (u) => { + "options" in u && t(0, (i = u.options)), "result" in u && t(1, (n = u.result)); + }), + [i, n, s, o] + ); + } + h(U4, "instance"); + var Hu = class Hu extends re { + constructor(e) { + super(), se(this, e, U4, H4, ne, { options: 0, result: 1 }); + } + }; + h(Hu, "FeedbackSuccess"); + var N1 = Hu; + function Y4(r) { + var e, t; + return ( + (e = new $1({ props: { error: r[1].error } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, n) { + var s = {}; + n & 2 && (s.error = i[1].error), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, } - }; - return [sortFieldsChecked, sortFieldsValue, sortChecked, sortValue, options, textarea_input_handler, option0_checked_binding, textarea_input_handler_1, option1_checked_binding]; - } - __name(instance16, "instance"); - var SortingOptions = class SortingOptions extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance16, create_fragment16, safe_not_equal, { - options: 4, - }); + ); + } + h(Y4, "create_else_block"); + function G4(r) { + var e, t; + return ( + (e = new N1({ props: { options: r[0], result: r[1].result } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, n) { + var s = {}; + n & 1 && (s.options = i[0]), n & 2 && (s.result = i[1].result), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(G4, "create_if_block"); + function K4(r) { + var e, + t, + i, + n, + s = [G4, Y4], + o = []; + function u(l, a) { + return l[1].status === "success" ? 0 : 1; + } + return ( + h(u, "select_block_type"), + (t = u(r, -1)), + (i = o[t] = s[t](r)), + { + c() { + (e = T("div")), i.c(), v(e, "data-test-feedback", ""), v(e, "class", "svelte-1pqmac"); + }, + m(l, a) { + C(l, e, a), o[t].m(e, null), (n = !0); + }, + p(l, param) { + var _param = _slicedToArray(param, 1), + a = _param[0]; + var c = t; + (t = u(l, a)), + t === c + ? o[t].p(l, a) + : (ri(), + S(o[c], 1, 1, () => { + o[c] = null; + }), + ni(), + (i = o[t]), + i ? i.p(l, a) : ((i = o[t] = s[t](l)), i.c()), + x(i, 1), + i.m(e, null)); + }, + i(l) { + n || (x(i), (n = !0)); + }, + o(l) { + S(i), (n = !1); + }, + d(l) { + l && y(e), o[t].d(); + }, + } + ); + } + h(K4, "create_fragment"); + function X4(r, e, t) { + var i = e.options, + n = e.status; + return ( + (r.$$set = (s) => { + "options" in s && t(0, (i = s.options)), "status" in s && t(1, (n = s.status)); + }), + [i, n] + ); + } + h(X4, "instance"); + var Uu = class Uu extends re { + constructor(e) { + super(), se(this, e, X4, K4, ne, { options: 0, status: 1 }); } }; - __name(SortingOptions, "SortingOptions"); - var SortingOptions_default = SortingOptions; - // src/ui/ValueOptions.svelte - function create_default_slot_33(ctx) { - var label; - var t0; - var textarea; - var t1; - var p; - var mounted; - var dispose; - return { - c() { - label = element("label"); - t0 = text("Fields to enclose in double braces:\n "); - textarea = element("textarea"); - t1 = space(); - p = element("p"); - p.innerHTML = "Space delimited, e.g: <code>title journal</code>."; - attr(textarea, "name", "enclosingBracesList"); - attr(textarea, "spellcheck", "false"); - }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t0); - append(label, textarea); - set_input_value(textarea, ctx[11]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(textarea, "input", ctx[16]); - mounted = true; - } - }, - p(ctx2, dirty) { - if (dirty[0] & 2048) { - set_input_value(textarea, ctx2[11]); - } - }, - d(detaching) { - if (detaching) detach(label); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); - }, - }; + h(Uu, "Feedback"); + var V1 = Uu; + function Q4(r) { + var e, t, i, n; + function s(u) { + r[3](u); + } + h(s, "radio_group_binding"); + var o = { name: "indent", value: "tabs" }; + return ( + r[0] !== void 0 && (o.group = r[0]), + (e = new Pi({ props: o })), + X.push(() => Z(e, "group", s)), + { + c() { + P(e.$$.fragment), (i = K("\n Indent with tabs")); + }, + m(u, l) { + M(e, u, l), C(u, i, l), (n = !0); + }, + p(u, l) { + var a = {}; + !t && l & 1 && ((t = !0), (a.group = u[0]), J(() => (t = !1))), e.$set(a); + }, + i(u) { + n || (x(e.$$.fragment, u), (n = !0)); + }, + o(u) { + S(e.$$.fragment, u), (n = !1); + }, + d(u) { + $(e, u), u && y(i); + }, + } + ); + } + h(Q4, "create_default_slot_3"); + function J4(r) { + var e, t, i, n; + function s(u) { + r[4](u); + } + h(s, "radio_group_binding_1"); + var o = { name: "indent", value: "spaces" }; + return ( + r[0] !== void 0 && (o.group = r[0]), + (e = new Pi({ props: o })), + X.push(() => Z(e, "group", s)), + { + c() { + P(e.$$.fragment), (i = K("\n Indent with spaces")); + }, + m(u, l) { + M(e, u, l), C(u, i, l), (n = !0); + }, + p(u, l) { + var a = {}; + !t && l & 1 && ((t = !0), (a.group = u[0]), J(() => (t = !1))), e.$set(a); + }, + i(u) { + n || (x(e.$$.fragment, u), (n = !0)); + }, + o(u) { + S(e.$$.fragment, u), (n = !1); + }, + d(u) { + $(e, u), u && y(i); + }, + } + ); + } + h(J4, "create_default_slot_2"); + function z1(r) { + var e, t; + return ( + (e = new qu({ props: { $$slots: { default: [Z4] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, n) { + var s = {}; + n & 66 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); } - __name(create_default_slot_33, "create_default_slot_3"); - function create_default_slot_25(ctx) { - var label; - var t0; - var textarea; - var t1; - var p; - var mounted; - var dispose; + h(z1, "create_if_block"); + function Z4(r) { + var e, t, i, n, s; return { c() { - label = element("label"); - t0 = text("Remove braces from values of these fields:\n "); - textarea = element("textarea"); - t1 = space(); - p = element("p"); - p.innerHTML = "Space delimited, e.g: <code>title journal</code>."; - attr(textarea, "name", "removeBracesList"); - attr(textarea, "spellcheck", "false"); + (e = T("label")), (t = K("Spaces: ")), (i = T("input")), v(i, "name", "spaces"), v(i, "type", "number"); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t0); - append(label, textarea); - set_input_value(textarea, ctx[13]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(textarea, "input", ctx[18]); - mounted = true; - } + m(o, u) { + C(o, e, u), V(e, t), V(e, i), Ce(i, r[1]), n || ((s = ye(i, "input", r[5])), (n = !0)); }, - p(ctx2, dirty) { - if (dirty[0] & 8192) { - set_input_value(textarea, ctx2[13]); - } + p(o, u) { + u & 2 && xt(i.value) !== o[1] && Ce(i, o[1]); }, - d(detaching) { - if (detaching) detach(label); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); + d(o) { + o && y(e), (n = !1), s(); }, }; } - __name(create_default_slot_25, "create_default_slot_2"); - function create_default_slot_16(ctx) { - var label; - var t0; - var input; - var t1; - var p; - var mounted; - var dispose; + h(Z4, "create_default_slot_1"); + function e3(r) { + var e, t, i, n, s, o; + (e = new it({ props: { title: "Indent fields with tabs", $$slots: { default: [Q4] }, $$scope: { ctx: r } } })), (i = new it({ props: { title: "Indent fields with spaces", $$slots: { default: [J4] }, $$scope: { ctx: r } } })); + var u = r[0] === "spaces" && z1(r); return { c() { - label = element("label"); - t0 = text("Maximum number of authors:\n "); - input = element("input"); - t1 = space(); - p = element("p"); - p.textContent = 'Author lists longer than this will be truncated to "and others".'; - attr(input, "name", "maxAuthorsNum"); - attr(input, "type", "number"); + P(e.$$.fragment), (t = q()), P(i.$$.fragment), (n = q()), u && u.c(), (s = ii()); + }, + m(l, a) { + M(e, l, a), C(l, t, a), M(i, l, a), C(l, n, a), u && u.m(l, a), C(l, s, a), (o = !0); + }, + p(l, a) { + var c = {}; + a & 65 && (c.$$scope = { dirty: a, ctx: l }), e.$set(c); + var f = {}; + a & 65 && (f.$$scope = { dirty: a, ctx: l }), + i.$set(f), + l[0] === "spaces" + ? u + ? (u.p(l, a), a & 1 && x(u, 1)) + : ((u = z1(l)), u.c(), x(u, 1), u.m(s.parentNode, s)) + : u && + (ri(), + S(u, 1, 1, () => { + u = null; + }), + ni()); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t0); - append(label, input); - set_input_value(input, ctx[9]); - insert(target, t1, anchor); - insert(target, p, anchor); - if (!mounted) { - dispose = listen(input, "input", ctx[27]); - mounted = true; - } + i(l) { + o || (x(e.$$.fragment, l), x(i.$$.fragment, l), x(u), (o = !0)); }, - p(ctx2, dirty) { - if (dirty[0] & 512 && to_number(input.value) !== ctx2[9]) { - set_input_value(input, ctx2[9]); - } + o(l) { + S(e.$$.fragment, l), S(i.$$.fragment, l), S(u), (o = !1); }, - d(detaching) { - if (detaching) detach(label); - if (detaching) detach(t1); - if (detaching) detach(p); - mounted = false; - dispose(); + d(l) { + $(e, l), l && y(t), $(i, l), l && y(n), u && u.d(l), l && y(s); }, }; } - __name(create_default_slot_16, "create_default_slot_1"); - function create_default_slot7(ctx) { - var div; - var t0; - var option0; - var updating_checked; - var t1; - var option1; - var updating_checked_1; - var t2; - var option2; - var updating_checked_2; - var t3; - var option3; - var updating_checked_3; - var t4; - var option4; - var updating_checked_4; - var t5; - var option5; - var updating_checked_5; - var t6; - var option6; - var updating_checked_6; - var t7; - var option7; - var updating_checked_7; - var t8; - var option8; - var updating_checked_8; - var t9; - var option9; - var updating_checked_9; - var t10; - var option10; - var updating_checked_10; - var current; - function option0_checked_binding(value) { - ctx[15](value); - } - __name(option0_checked_binding, "option0_checked_binding"); - var option0_props = { - option: "curly", - }; - if (ctx[0] !== void 0) { - option0_props.checked = ctx[0]; - } - option0 = new Option_default({ - props: option0_props, - }); - binding_callbacks.push(() => bind(option0, "checked", option0_checked_binding)); - function option1_checked_binding(value) { - ctx[17](value); - } - __name(option1_checked_binding, "option1_checked_binding"); - var option1_props = { - option: "enclosingBraces", - $$slots: { - default: [create_default_slot_33], - }, - $$scope: { - ctx, - }, - }; - if (ctx[10] !== void 0) { - option1_props.checked = ctx[10]; - } - option1 = new Option_default({ - props: option1_props, - }); - binding_callbacks.push(() => bind(option1, "checked", option1_checked_binding)); - function option2_checked_binding(value) { - ctx[19](value); - } - __name(option2_checked_binding, "option2_checked_binding"); - var option2_props = { - option: "removeBraces", - $$slots: { - default: [create_default_slot_25], - }, - $$scope: { - ctx, - }, - }; - if (ctx[12] !== void 0) { - option2_props.checked = ctx[12]; - } - option2 = new Option_default({ - props: option2_props, - }); - binding_callbacks.push(() => bind(option2, "checked", option2_checked_binding)); - function option3_checked_binding(value) { - ctx[20](value); - } - __name(option3_checked_binding, "option3_checked_binding"); - var option3_props = { - option: "stripEnclosingBraces", - }; - if (ctx[1] !== void 0) { - option3_props.checked = ctx[1]; - } - option3 = new Option_default({ - props: option3_props, - }); - binding_callbacks.push(() => bind(option3, "checked", option3_checked_binding)); - function option4_checked_binding(value) { - ctx[21](value); - } - __name(option4_checked_binding, "option4_checked_binding"); - var option4_props = { - option: "numeric", - }; - if (ctx[2] !== void 0) { - option4_props.checked = ctx[2]; - } - option4 = new Option_default({ - props: option4_props, - }); - binding_callbacks.push(() => bind(option4, "checked", option4_checked_binding)); - function option5_checked_binding(value) { - ctx[22](value); - } - __name(option5_checked_binding, "option5_checked_binding"); - var option5_props = { - option: "dropAllCaps", - }; - if (ctx[3] !== void 0) { - option5_props.checked = ctx[3]; - } - option5 = new Option_default({ - props: option5_props, - }); - binding_callbacks.push(() => bind(option5, "checked", option5_checked_binding)); - function option6_checked_binding(value) { - ctx[23](value); - } - __name(option6_checked_binding, "option6_checked_binding"); - var option6_props = { - option: "escape", - }; - if (ctx[4] !== void 0) { - option6_props.checked = ctx[4]; - } - option6 = new Option_default({ - props: option6_props, - }); - binding_callbacks.push(() => bind(option6, "checked", option6_checked_binding)); - function option7_checked_binding(value) { - ctx[24](value); - } - __name(option7_checked_binding, "option7_checked_binding"); - var option7_props = { - option: "encodeUrls", - }; - if (ctx[5] !== void 0) { - option7_props.checked = ctx[5]; - } - option7 = new Option_default({ - props: option7_props, - }); - binding_callbacks.push(() => bind(option7, "checked", option7_checked_binding)); - function option8_checked_binding(value) { - ctx[25](value); - } - __name(option8_checked_binding, "option8_checked_binding"); - var option8_props = { - option: "removeEmptyFields", - }; - if (ctx[6] !== void 0) { - option8_props.checked = ctx[6]; + h(e3, "create_default_slot"); + function t3(r) { + var e, t; + return ( + (e = new tt({ props: { title: "Indent", open: !0, $$slots: { default: [e3] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, param) { + var _param = _slicedToArray(param, 1), + n = _param[0]; + var s = {}; + n & 67 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(t3, "create_fragment"); + function i3(r, e, t) { + var i = e.options, + n = i.tab ? "tabs" : "spaces", + s = i.space; + function o(a) { + (n = a), t(0, n); } - option8 = new Option_default({ - props: option8_props, - }); - binding_callbacks.push(() => bind(option8, "checked", option8_checked_binding)); - function option9_checked_binding(value) { - ctx[26](value); + h(o, "radio_group_binding"); + function u(a) { + (n = a), t(0, n); } - __name(option9_checked_binding, "option9_checked_binding"); - var option9_props = { - option: "removeDuplicateFields", - }; - if (ctx[7] !== void 0) { - option9_props.checked = ctx[7]; + h(u, "radio_group_binding_1"); + function l() { + (s = xt(this.value)), t(1, s); } - option9 = new Option_default({ - props: option9_props, - }); - binding_callbacks.push(() => bind(option9, "checked", option9_checked_binding)); - function option10_checked_binding(value) { - ctx[28](value); - } - __name(option10_checked_binding, "option10_checked_binding"); - var option10_props = { - option: "maxAuthors", - $$slots: { - default: [create_default_slot_16], - }, - $$scope: { - ctx, - }, - }; - if (ctx[8] !== void 0) { - option10_props.checked = ctx[8]; + return ( + h(l, "input_input_handler"), + (r.$$set = (a) => { + "options" in a && t(2, (i = a.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 3) e: t(2, (i.space = s), i), t(2, (i.tab = n === "tabs"), i); + }), + [n, s, i, o, u, l] + ); + } + h(i3, "instance"); + var Yu = class Yu extends re { + constructor(e) { + super(), se(this, e, i3, t3, ne, { options: 2 }); } - option10 = new Option_default({ - props: option10_props, - }); - binding_callbacks.push(() => bind(option10, "checked", option10_checked_binding)); + }; + h(Yu, "IndentOptions"); + var W1 = Yu; + function r3(r) { + var e, t, i, n, s, o, u; return { c() { - div = element("div"); - t0 = space(); - create_component(option0.$$.fragment); - t1 = space(); - create_component(option1.$$.fragment); - t2 = space(); - create_component(option2.$$.fragment); - t3 = space(); - create_component(option3.$$.fragment); - t4 = space(); - create_component(option4.$$.fragment); - t5 = space(); - create_component(option5.$$.fragment); - t6 = space(); - create_component(option6.$$.fragment); - t7 = space(); - create_component(option7.$$.fragment); - t8 = space(); - create_component(option8.$$.fragment); - t9 = space(); - create_component(option9.$$.fragment); - t10 = space(); - create_component(option10.$$.fragment); - attr(div, "id", "valueOptions"); - }, - m(target, anchor) { - insert(target, div, anchor); - insert(target, t0, anchor); - mount_component(option0, target, anchor); - insert(target, t1, anchor); - mount_component(option1, target, anchor); - insert(target, t2, anchor); - mount_component(option2, target, anchor); - insert(target, t3, anchor); - mount_component(option3, target, anchor); - insert(target, t4, anchor); - mount_component(option4, target, anchor); - insert(target, t5, anchor); - mount_component(option5, target, anchor); - insert(target, t6, anchor); - mount_component(option6, target, anchor); - insert(target, t7, anchor); - mount_component(option7, target, anchor); - insert(target, t8, anchor); - mount_component(option8, target, anchor); - insert(target, t9, anchor); - mount_component(option9, target, anchor); - insert(target, t10, anchor); - mount_component(option10, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var option0_changes = {}; - if (!updating_checked && dirty[0] & 1) { - updating_checked = true; - option0_changes.checked = ctx2[0]; - add_flush_callback(() => (updating_checked = false)); - } - option0.$set(option0_changes); - var option1_changes = {}; - if ((dirty[0] & 2048) | (dirty[1] & 2048)) { - option1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_1 && dirty[0] & 1024) { - updating_checked_1 = true; - option1_changes.checked = ctx2[10]; - add_flush_callback(() => (updating_checked_1 = false)); - } - option1.$set(option1_changes); - var option2_changes = {}; - if ((dirty[0] & 8192) | (dirty[1] & 2048)) { - option2_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_2 && dirty[0] & 4096) { - updating_checked_2 = true; - option2_changes.checked = ctx2[12]; - add_flush_callback(() => (updating_checked_2 = false)); - } - option2.$set(option2_changes); - var option3_changes = {}; - if (!updating_checked_3 && dirty[0] & 2) { - updating_checked_3 = true; - option3_changes.checked = ctx2[1]; - add_flush_callback(() => (updating_checked_3 = false)); - } - option3.$set(option3_changes); - var option4_changes = {}; - if (!updating_checked_4 && dirty[0] & 4) { - updating_checked_4 = true; - option4_changes.checked = ctx2[2]; - add_flush_callback(() => (updating_checked_4 = false)); - } - option4.$set(option4_changes); - var option5_changes = {}; - if (!updating_checked_5 && dirty[0] & 8) { - updating_checked_5 = true; - option5_changes.checked = ctx2[3]; - add_flush_callback(() => (updating_checked_5 = false)); - } - option5.$set(option5_changes); - var option6_changes = {}; - if (!updating_checked_6 && dirty[0] & 16) { - updating_checked_6 = true; - option6_changes.checked = ctx2[4]; - add_flush_callback(() => (updating_checked_6 = false)); - } - option6.$set(option6_changes); - var option7_changes = {}; - if (!updating_checked_7 && dirty[0] & 32) { - updating_checked_7 = true; - option7_changes.checked = ctx2[5]; - add_flush_callback(() => (updating_checked_7 = false)); - } - option7.$set(option7_changes); - var option8_changes = {}; - if (!updating_checked_8 && dirty[0] & 64) { - updating_checked_8 = true; - option8_changes.checked = ctx2[6]; - add_flush_callback(() => (updating_checked_8 = false)); - } - option8.$set(option8_changes); - var option9_changes = {}; - if (!updating_checked_9 && dirty[0] & 128) { - updating_checked_9 = true; - option9_changes.checked = ctx2[7]; - add_flush_callback(() => (updating_checked_9 = false)); - } - option9.$set(option9_changes); - var option10_changes = {}; - if ((dirty[0] & 512) | (dirty[1] & 2048)) { - option10_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_10 && dirty[0] & 256) { - updating_checked_10 = true; - option10_changes.checked = ctx2[8]; - add_flush_callback(() => (updating_checked_10 = false)); - } - option10.$set(option10_changes); + (e = T("label")), (t = K("Fields to sort by:\n ")), (i = T("textarea")), (n = q()), (s = T("p")), (s.innerHTML = "Space delimited, e.g: <code>key type publisher author</code>. For\n descending order, prefix the field name with a dash, e.g.\n <code>-year author</code>."), v(i, "name", "sortList"), v(i, "spellcheck", "false"); }, - i(local) { - if (current) return; - transition_in(option0.$$.fragment, local); - transition_in(option1.$$.fragment, local); - transition_in(option2.$$.fragment, local); - transition_in(option3.$$.fragment, local); - transition_in(option4.$$.fragment, local); - transition_in(option5.$$.fragment, local); - transition_in(option6.$$.fragment, local); - transition_in(option7.$$.fragment, local); - transition_in(option8.$$.fragment, local); - transition_in(option9.$$.fragment, local); - transition_in(option10.$$.fragment, local); - current = true; + m(l, a) { + C(l, e, a), V(e, t), V(e, i), Ce(i, r[3]), C(l, n, a), C(l, s, a), o || ((u = ye(i, "input", r[5])), (o = !0)); }, - o(local) { - transition_out(option0.$$.fragment, local); - transition_out(option1.$$.fragment, local); - transition_out(option2.$$.fragment, local); - transition_out(option3.$$.fragment, local); - transition_out(option4.$$.fragment, local); - transition_out(option5.$$.fragment, local); - transition_out(option6.$$.fragment, local); - transition_out(option7.$$.fragment, local); - transition_out(option8.$$.fragment, local); - transition_out(option9.$$.fragment, local); - transition_out(option10.$$.fragment, local); - current = false; + p(l, a) { + a & 8 && Ce(i, l[3]); }, - d(detaching) { - if (detaching) detach(div); - if (detaching) detach(t0); - destroy_component(option0, detaching); - if (detaching) detach(t1); - destroy_component(option1, detaching); - if (detaching) detach(t2); - destroy_component(option2, detaching); - if (detaching) detach(t3); - destroy_component(option3, detaching); - if (detaching) detach(t4); - destroy_component(option4, detaching); - if (detaching) detach(t5); - destroy_component(option5, detaching); - if (detaching) detach(t6); - destroy_component(option6, detaching); - if (detaching) detach(t7); - destroy_component(option7, detaching); - if (detaching) detach(t8); - destroy_component(option8, detaching); - if (detaching) detach(t9); - destroy_component(option9, detaching); - if (detaching) detach(t10); - destroy_component(option10, detaching); + d(l) { + l && y(e), l && y(n), l && y(s), (o = !1), u(); }, }; } - __name(create_default_slot7, "create_default_slot"); - function create_fragment17(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - open: true, - title: "Values", - $$slots: { - default: [create_default_slot7], - }, - $$scope: { - ctx, - }, - }, - }); + h(r3, "create_default_slot_2"); + function n3(r) { + var e, t, i, n, s, o, u; return { c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var collapsible_changes = {}; - if ((dirty[0] & 16383) | (dirty[1] & 2048)) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); + (e = T("label")), (t = K("Field order:\n ")), (i = T("textarea")), (n = q()), (s = T("p")), (s.innerHTML = "Space delimited, e.g: <code>title author year</code>"), v(i, "name", "sortFieldList"), v(i, "spellcheck", "false"); }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; + m(l, a) { + C(l, e, a), V(e, t), V(e, i), Ce(i, r[1]), C(l, n, a), C(l, s, a), o || ((u = ye(i, "input", r[7])), (o = !0)); }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; + p(l, a) { + a & 2 && Ce(i, l[1]); }, - d(detaching) { - destroy_component(collapsible, detaching); + d(l) { + l && y(e), l && y(n), l && y(s), (o = !1), u(); }, }; } - __name(create_fragment17, "create_fragment"); - function instance17($$self, $$props, $$invalidate) { - var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; - var options = $$props.options; - var curly = (_a2 = options.curly) !== null && _a2 !== void 0 ? _a2 : false; - var stripEnclosingBraces = (_b = options.stripEnclosingBraces) !== null && _b !== void 0 ? _b : false; - var numeric = (_c = options.numeric) !== null && _c !== void 0 ? _c : false; - var dropAllCaps = (_d = options.dropAllCaps) !== null && _d !== void 0 ? _d : false; - var escape = (_e = options.escape) !== null && _e !== void 0 ? _e : false; - var encodeUrls = (_f = options.encodeUrls) !== null && _f !== void 0 ? _f : false; - var removeEmptyFields = (_g = options.removeEmptyFields) !== null && _g !== void 0 ? _g : false; - var removeDuplicateFields = (_h = options.removeDuplicateFields) !== null && _h !== void 0 ? _h : false; - var maxAuthorsChecked = options.maxAuthors !== void 0; - var maxAuthorsValue = (_j = options.maxAuthors) !== null && _j !== void 0 ? _j : 3; - var enclosingBracesChecked = options.enclosingBraces !== void 0 && options.enclosingBraces.length > 0; - var enclosingBracesValue = (_l = (_k = options.enclosingBraces) === null || _k === void 0 ? void 0 : _k.join(" ")) !== null && _l !== void 0 ? _l : "title"; - var removeBracesChecked = options.removeBraces !== void 0 && options.removeBraces.length > 0; - var removeBracesValue = (_o = (_m = options.enclosingBraces) === null || _m === void 0 ? void 0 : _m.join(" ")) !== null && _o !== void 0 ? _o : "title"; - function option0_checked_binding(value) { - curly = value; - $$invalidate(0, curly); - } - __name(option0_checked_binding, "option0_checked_binding"); - function textarea_input_handler() { - enclosingBracesValue = this.value; - $$invalidate(11, enclosingBracesValue); - } - __name(textarea_input_handler, "textarea_input_handler"); - function option1_checked_binding(value) { - enclosingBracesChecked = value; - $$invalidate(10, enclosingBracesChecked); - } - __name(option1_checked_binding, "option1_checked_binding"); - function textarea_input_handler_1() { - removeBracesValue = this.value; - $$invalidate(13, removeBracesValue); - } - __name(textarea_input_handler_1, "textarea_input_handler_1"); - function option2_checked_binding(value) { - removeBracesChecked = value; - $$invalidate(12, removeBracesChecked); - } - __name(option2_checked_binding, "option2_checked_binding"); - function option3_checked_binding(value) { - stripEnclosingBraces = value; - $$invalidate(1, stripEnclosingBraces); - } - __name(option3_checked_binding, "option3_checked_binding"); - function option4_checked_binding(value) { - numeric = value; - $$invalidate(2, numeric); - } - __name(option4_checked_binding, "option4_checked_binding"); - function option5_checked_binding(value) { - dropAllCaps = value; - $$invalidate(3, dropAllCaps); - } - __name(option5_checked_binding, "option5_checked_binding"); - function option6_checked_binding(value) { - escape = value; - $$invalidate(4, escape); - } - __name(option6_checked_binding, "option6_checked_binding"); - function option7_checked_binding(value) { - encodeUrls = value; - $$invalidate(5, encodeUrls); - } - __name(option7_checked_binding, "option7_checked_binding"); - function option8_checked_binding(value) { - removeEmptyFields = value; - $$invalidate(6, removeEmptyFields); - } - __name(option8_checked_binding, "option8_checked_binding"); - function option9_checked_binding(value) { - removeDuplicateFields = value; - $$invalidate(7, removeDuplicateFields); - } - __name(option9_checked_binding, "option9_checked_binding"); - function input_input_handler() { - maxAuthorsValue = to_number(this.value); - $$invalidate(9, maxAuthorsValue); - } - __name(input_input_handler, "input_input_handler"); - function option10_checked_binding(value) { - maxAuthorsChecked = value; - $$invalidate(8, maxAuthorsChecked); - } - __name(option10_checked_binding, "option10_checked_binding"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(14, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty[0] & 16383) { - $: { - $$invalidate(14, (options.curly = curly), options); - $$invalidate(14, (options.stripEnclosingBraces = stripEnclosingBraces), options); - $$invalidate(14, (options.numeric = numeric), options); - $$invalidate(14, (options.dropAllCaps = dropAllCaps), options); - $$invalidate(14, (options.escape = escape), options); - $$invalidate(14, (options.encodeUrls = encodeUrls), options); - $$invalidate(14, (options.removeEmptyFields = removeEmptyFields), options); - $$invalidate(14, (options.removeDuplicateFields = removeDuplicateFields), options); - $$invalidate(14, (options.maxAuthors = maxAuthorsChecked ? maxAuthorsValue : void 0), options); - $$invalidate(14, (options.enclosingBraces = enclosingBracesChecked && enclosingBracesValue.length > 0 ? enclosingBracesValue.split(/[\n\t ,]+/) : void 0), options); - $$invalidate(14, (options.removeBraces = removeBracesChecked && removeBracesValue.length > 0 ? removeBracesValue.split(/[\n\t ,]+/) : void 0), options); - } + h(n3, "create_default_slot_1"); + function s3(r) { + var e, t, i, n, s, o; + function u(f) { + r[6](f); + } + h(u, "option0_checked_binding"); + var l = { option: "sort", $$slots: { default: [r3] }, $$scope: { ctx: r } }; + r[2] !== void 0 && (l.checked = r[2]), (e = new me({ props: l })), X.push(() => Z(e, "checked", u)); + function a(f) { + r[8](f); + } + h(a, "option1_checked_binding"); + var c = { option: "sortFields", $$slots: { default: [n3] }, $$scope: { ctx: r } }; + return ( + r[0] !== void 0 && (c.checked = r[0]), + (n = new me({ props: c })), + X.push(() => Z(n, "checked", a)), + { + c() { + P(e.$$.fragment), (i = q()), P(n.$$.fragment); + }, + m(f, d) { + M(e, f, d), C(f, i, d), M(n, f, d), (o = !0); + }, + p(f, d) { + var p = {}; + d & 2056 && (p.$$scope = { dirty: d, ctx: f }), !t && d & 4 && ((t = !0), (p.checked = f[2]), J(() => (t = !1))), e.$set(p); + var m = {}; + d & 2050 && (m.$$scope = { dirty: d, ctx: f }), !s && d & 1 && ((s = !0), (m.checked = f[0]), J(() => (s = !1))), n.$set(m); + }, + i(f) { + o || (x(e.$$.fragment, f), x(n.$$.fragment, f), (o = !0)); + }, + o(f) { + S(e.$$.fragment, f), S(n.$$.fragment, f), (o = !1); + }, + d(f) { + $(e, f), f && y(i), $(n, f); + }, } - }; - return [ - curly, - stripEnclosingBraces, - numeric, - dropAllCaps, - escape, - encodeUrls, - removeEmptyFields, - removeDuplicateFields, - maxAuthorsChecked, - maxAuthorsValue, - enclosingBracesChecked, - enclosingBracesValue, - removeBracesChecked, - removeBracesValue, - options, - option0_checked_binding, - textarea_input_handler, - option1_checked_binding, - textarea_input_handler_1, - option2_checked_binding, - option3_checked_binding, - option4_checked_binding, - option5_checked_binding, - option6_checked_binding, - option7_checked_binding, - option8_checked_binding, - option9_checked_binding, - input_input_handler, - option10_checked_binding, - ]; + ); } - __name(instance17, "instance"); - var ValueOptions = class ValueOptions extends SvelteComponent { - constructor(options) { - super(); - init( - this, - options, - instance17, - create_fragment17, - safe_not_equal, - { - options: 14, + h(s3, "create_default_slot"); + function o3(r) { + var e, t; + return ( + (e = new tt({ props: { title: "Sorting", open: !0, $$slots: { default: [s3] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); }, - null, - [-1, -1] - ); + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, param) { + var _param = _slicedToArray(param, 1), + n = _param[0]; + var s = {}; + n & 2063 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(o3, "create_fragment"); + function u3(r, e, t) { + var i, n; + var s = e.options, + o = s.sortFields !== void 0 && s.sortFields.length > 0, + u = ((i = s.sortFields) !== null && i !== void 0 ? i : fo).join(" "), + l = s.sort !== void 0 && s.sort.length > 0, + a = ((n = s.sort) !== null && n !== void 0 ? n : _a).join(" "); + function c() { + (a = this.value), t(3, a); + } + h(c, "textarea_input_handler"); + function f(m) { + (l = m), t(2, l); + } + h(f, "option0_checked_binding"); + function d() { + (u = this.value), t(1, u); + } + h(d, "textarea_input_handler_1"); + function p(m) { + (o = m), t(0, o); + } + return ( + h(p, "option1_checked_binding"), + (r.$$set = (m) => { + "options" in m && t(4, (s = m.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 15) e: t(4, (s.sortFields = o && u.length > 0 ? u.split(/[\n\t ,]+/) : void 0), s), t(4, (s.sort = l && a.length > 0 ? a.split(/[\n\t ,]+/) : void 0), s); + }), + [o, u, l, a, s, c, f, d, p] + ); + } + h(u3, "instance"); + var Gu = class Gu extends re { + constructor(e) { + super(), se(this, e, u3, o3, ne, { options: 4 }); } }; - __name(ValueOptions, "ValueOptions"); - var ValueOptions_default = ValueOptions; - // src/ui/WhitespaceOptions.svelte - function create_default_slot_26(ctx) { - var label; - var t2; - var input; - var mounted; - var dispose; + h(Gu, "SortingOptions"); + var j1 = Gu; + function l3(r) { + var e, t, i, n, s, o, u; return { c() { - label = element("label"); - t2 = text("Column:\n "); - input = element("input"); - attr(input, "name", "alignnum"); - attr(input, "type", "number"); + (e = T("label")), (t = K("Fields to enclose in double braces:\n ")), (i = T("textarea")), (n = q()), (s = T("p")), (s.innerHTML = "Space delimited, e.g: <code>title journal</code>."), v(i, "name", "enclosingBracesList"), v(i, "spellcheck", "false"); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t2); - append(label, input); - set_input_value(input, ctx[2]); - if (!mounted) { - dispose = listen(input, "input", ctx[5]); - mounted = true; - } + m(l, a) { + C(l, e, a), V(e, t), V(e, i), Ce(i, r[11]), C(l, n, a), C(l, s, a), o || ((u = ye(i, "input", r[16])), (o = !0)); }, - p(ctx2, dirty) { - if (dirty & 4 && to_number(input.value) !== ctx2[2]) { - set_input_value(input, ctx2[2]); - } + p(l, a) { + a[0] & 2048 && Ce(i, l[11]); }, - d(detaching) { - if (detaching) detach(label); - mounted = false; - dispose(); + d(l) { + l && y(e), l && y(n), l && y(s), (o = !1), u(); }, }; } - __name(create_default_slot_26, "create_default_slot_2"); - function create_default_slot_17(ctx) { - var label; - var t2; - var input; - var mounted; - var dispose; + h(l3, "create_default_slot_3"); + function a3(r) { + var e, t, i, n, s, o, u; return { c() { - label = element("label"); - t2 = text("Column:\n "); - input = element("input"); - attr(input, "name", "wrapnum"); - attr(input, "type", "number"); + (e = T("label")), (t = K("Remove braces from values of these fields:\n ")), (i = T("textarea")), (n = q()), (s = T("p")), (s.innerHTML = "Space delimited, e.g: <code>title journal</code>."), v(i, "name", "removeBracesList"), v(i, "spellcheck", "false"); }, - m(target, anchor) { - insert(target, label, anchor); - append(label, t2); - append(label, input); - set_input_value(input, ctx[4]); - if (!mounted) { - dispose = listen(input, "input", ctx[7]); - mounted = true; - } + m(l, a) { + C(l, e, a), V(e, t), V(e, i), Ce(i, r[13]), C(l, n, a), C(l, s, a), o || ((u = ye(i, "input", r[18])), (o = !0)); }, - p(ctx2, dirty) { - if (dirty & 16 && to_number(input.value) !== ctx2[4]) { - set_input_value(input, ctx2[4]); - } + p(l, a) { + a[0] & 8192 && Ce(i, l[13]); }, - d(detaching) { - if (detaching) detach(label); - mounted = false; - dispose(); + d(l) { + l && y(e), l && y(n), l && y(s), (o = !1), u(); }, }; } - __name(create_default_slot_17, "create_default_slot_1"); - function create_default_slot8(ctx) { - var option0; - var updating_checked; - var t0; - var option1; - var updating_checked_1; - var t1; - var option2; - var updating_checked_2; - var current; - function option0_checked_binding(value) { - ctx[6](value); - } - __name(option0_checked_binding, "option0_checked_binding"); - var option0_props = { - option: "align", - $$slots: { - default: [create_default_slot_26], - }, - $$scope: { - ctx, - }, - }; - if (ctx[1] !== void 0) { - option0_props.checked = ctx[1]; - } - option0 = new Option_default({ - props: option0_props, - }); - binding_callbacks.push(() => bind(option0, "checked", option0_checked_binding)); - function option1_checked_binding(value) { - ctx[8](value); - } - __name(option1_checked_binding, "option1_checked_binding"); - var option1_props = { - option: "wrap", - $$slots: { - default: [create_default_slot_17], - }, - $$scope: { - ctx, - }, - }; - if (ctx[3] !== void 0) { - option1_props.checked = ctx[3]; - } - option1 = new Option_default({ - props: option1_props, - }); - binding_callbacks.push(() => bind(option1, "checked", option1_checked_binding)); - function option2_checked_binding(value) { - ctx[9](value); - } - __name(option2_checked_binding, "option2_checked_binding"); - var option2_props = { - option: "blankLines", - }; - if (ctx[0].blankLines !== void 0) { - option2_props.checked = ctx[0].blankLines; - } - option2 = new Option_default({ - props: option2_props, - }); - binding_callbacks.push(() => bind(option2, "checked", option2_checked_binding)); + h(a3, "create_default_slot_2"); + function h3(r) { + var e, t, i, n, s, o, u; return { c() { - create_component(option0.$$.fragment); - t0 = space(); - create_component(option1.$$.fragment); - t1 = space(); - create_component(option2.$$.fragment); - }, - m(target, anchor) { - mount_component(option0, target, anchor); - insert(target, t0, anchor); - mount_component(option1, target, anchor); - insert(target, t1, anchor); - mount_component(option2, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var option0_changes = {}; - if (dirty & 2052) { - option0_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked && dirty & 2) { - updating_checked = true; - option0_changes.checked = ctx2[1]; - add_flush_callback(() => (updating_checked = false)); - } - option0.$set(option0_changes); - var option1_changes = {}; - if (dirty & 2064) { - option1_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - if (!updating_checked_1 && dirty & 8) { - updating_checked_1 = true; - option1_changes.checked = ctx2[3]; - add_flush_callback(() => (updating_checked_1 = false)); - } - option1.$set(option1_changes); - var option2_changes = {}; - if (!updating_checked_2 && dirty & 1) { - updating_checked_2 = true; - option2_changes.checked = ctx2[0].blankLines; - add_flush_callback(() => (updating_checked_2 = false)); - } - option2.$set(option2_changes); + (e = T("label")), (t = K("Maximum number of authors:\n ")), (i = T("input")), (n = q()), (s = T("p")), (s.textContent = 'Author lists longer than this will be truncated to "and others".'), v(i, "name", "maxAuthorsNum"), v(i, "type", "number"); }, - i(local) { - if (current) return; - transition_in(option0.$$.fragment, local); - transition_in(option1.$$.fragment, local); - transition_in(option2.$$.fragment, local); - current = true; + m(l, a) { + C(l, e, a), V(e, t), V(e, i), Ce(i, r[9]), C(l, n, a), C(l, s, a), o || ((u = ye(i, "input", r[27])), (o = !0)); }, - o(local) { - transition_out(option0.$$.fragment, local); - transition_out(option1.$$.fragment, local); - transition_out(option2.$$.fragment, local); - current = false; + p(l, a) { + a[0] & 512 && xt(i.value) !== l[9] && Ce(i, l[9]); }, - d(detaching) { - destroy_component(option0, detaching); - if (detaching) detach(t0); - destroy_component(option1, detaching); - if (detaching) detach(t1); - destroy_component(option2, detaching); + d(l) { + l && y(e), l && y(n), l && y(s), (o = !1), u(); }, }; } - __name(create_default_slot8, "create_default_slot"); - function create_fragment18(ctx) { - var collapsible; - var current; - collapsible = new Collapsible_default({ - props: { - title: "Whitespace", - open: true, - $$slots: { - default: [create_default_slot8], + h(h3, "create_default_slot_1"); + function c3(r) { + var e, t, i, n, s, o, u, l, a, c, f, d, p, m, D, g, b, F, A, E, O, _, W, Q, j, Y, I, oe, le, G, R, ee, Fe, ge, fe; + function Ie(w) { + r[15](w); + } + h(Ie, "option0_checked_binding"); + var Re = { option: "curly" }; + r[0] !== void 0 && (Re.checked = r[0]), (i = new me({ props: Re })), X.push(() => Z(i, "checked", Ie)); + function Ye(w) { + r[17](w); + } + h(Ye, "option1_checked_binding"); + var mt = { option: "enclosingBraces", $$slots: { default: [l3] }, $$scope: { ctx: r } }; + r[10] !== void 0 && (mt.checked = r[10]), (o = new me({ props: mt })), X.push(() => Z(o, "checked", Ye)); + function mi(w) { + r[19](w); + } + h(mi, "option2_checked_binding"); + var Li = { option: "removeBraces", $$slots: { default: [a3] }, $$scope: { ctx: r } }; + r[12] !== void 0 && (Li.checked = r[12]), (a = new me({ props: Li })), X.push(() => Z(a, "checked", mi)); + function Jr(w) { + r[20](w); + } + h(Jr, "option3_checked_binding"); + var qi = { option: "stripEnclosingBraces" }; + r[1] !== void 0 && (qi.checked = r[1]), (d = new me({ props: qi })), X.push(() => Z(d, "checked", Jr)); + function Be(w) { + r[21](w); + } + h(Be, "option4_checked_binding"); + var N = { option: "numeric" }; + r[2] !== void 0 && (N.checked = r[2]), (D = new me({ props: N })), X.push(() => Z(D, "checked", Be)); + function Qe(w) { + r[22](w); + } + h(Qe, "option5_checked_binding"); + var Zr = { option: "dropAllCaps" }; + r[3] !== void 0 && (Zr.checked = r[3]), (F = new me({ props: Zr })), X.push(() => Z(F, "checked", Qe)); + function os(w) { + r[23](w); + } + h(os, "option6_checked_binding"); + var en = { option: "escape" }; + r[4] !== void 0 && (en.checked = r[4]), (O = new me({ props: en })), X.push(() => Z(O, "checked", os)); + function us(w) { + r[24](w); + } + h(us, "option7_checked_binding"); + var tn = { option: "encodeUrls" }; + r[5] !== void 0 && (tn.checked = r[5]), (Q = new me({ props: tn })), X.push(() => Z(Q, "checked", us)); + function ls(w) { + r[25](w); + } + h(ls, "option8_checked_binding"); + var rn = { option: "removeEmptyFields" }; + r[6] !== void 0 && (rn.checked = r[6]), (I = new me({ props: rn })), X.push(() => Z(I, "checked", ls)); + function Q1(w) { + r[26](w); + } + h(Q1, "option9_checked_binding"); + var qh = { option: "removeDuplicateFields" }; + r[7] !== void 0 && (qh.checked = r[7]), (G = new me({ props: qh })), X.push(() => Z(G, "checked", Q1)); + function J1(w) { + r[28](w); + } + h(J1, "option10_checked_binding"); + var Ih = { option: "maxAuthors", $$slots: { default: [h3] }, $$scope: { ctx: r } }; + return ( + r[8] !== void 0 && (Ih.checked = r[8]), + (Fe = new me({ props: Ih })), + X.push(() => Z(Fe, "checked", J1)), + { + c() { + (e = T("div")), (t = q()), P(i.$$.fragment), (s = q()), P(o.$$.fragment), (l = q()), P(a.$$.fragment), (f = q()), P(d.$$.fragment), (m = q()), P(D.$$.fragment), (b = q()), P(F.$$.fragment), (E = q()), P(O.$$.fragment), (W = q()), P(Q.$$.fragment), (Y = q()), P(I.$$.fragment), (le = q()), P(G.$$.fragment), (ee = q()), P(Fe.$$.fragment), v(e, "id", "valueOptions"); }, - $$scope: { - ctx, + m(w, ie) { + C(w, e, ie), C(w, t, ie), M(i, w, ie), C(w, s, ie), M(o, w, ie), C(w, l, ie), M(a, w, ie), C(w, f, ie), M(d, w, ie), C(w, m, ie), M(D, w, ie), C(w, b, ie), M(F, w, ie), C(w, E, ie), M(O, w, ie), C(w, W, ie), M(Q, w, ie), C(w, Y, ie), M(I, w, ie), C(w, le, ie), M(G, w, ie), C(w, ee, ie), M(Fe, w, ie), (fe = !0); }, - }, - }); - return { - c() { - create_component(collapsible.$$.fragment); - }, - m(target, anchor) { - mount_component(collapsible, target, anchor); - current = true; - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var collapsible_changes = {}; - if (dirty & 2079) { - collapsible_changes.$$scope = { - dirty, - ctx: ctx2, - }; - } - collapsible.$set(collapsible_changes); - }, - i(local) { - if (current) return; - transition_in(collapsible.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(collapsible.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(collapsible, detaching); - }, - }; + p(w, ie) { + var Nh = {}; + !n && ie[0] & 1 && ((n = !0), (Nh.checked = w[0]), J(() => (n = !1))), i.$set(Nh); + var Zu = {}; + (ie[0] & 2048) | (ie[1] & 2048) && (Zu.$$scope = { dirty: ie, ctx: w }), !u && ie[0] & 1024 && ((u = !0), (Zu.checked = w[10]), J(() => (u = !1))), o.$set(Zu); + var el = {}; + (ie[0] & 8192) | (ie[1] & 2048) && (el.$$scope = { dirty: ie, ctx: w }), !c && ie[0] & 4096 && ((c = !0), (el.checked = w[12]), J(() => (c = !1))), a.$set(el); + var Vh = {}; + !p && ie[0] & 2 && ((p = !0), (Vh.checked = w[1]), J(() => (p = !1))), d.$set(Vh); + var zh = {}; + !g && ie[0] & 4 && ((g = !0), (zh.checked = w[2]), J(() => (g = !1))), D.$set(zh); + var Wh = {}; + !A && ie[0] & 8 && ((A = !0), (Wh.checked = w[3]), J(() => (A = !1))), F.$set(Wh); + var jh = {}; + !_ && ie[0] & 16 && ((_ = !0), (jh.checked = w[4]), J(() => (_ = !1))), O.$set(jh); + var Hh = {}; + !j && ie[0] & 32 && ((j = !0), (Hh.checked = w[5]), J(() => (j = !1))), Q.$set(Hh); + var Uh = {}; + !oe && ie[0] & 64 && ((oe = !0), (Uh.checked = w[6]), J(() => (oe = !1))), I.$set(Uh); + var Yh = {}; + !R && ie[0] & 128 && ((R = !0), (Yh.checked = w[7]), J(() => (R = !1))), G.$set(Yh); + var tl = {}; + (ie[0] & 512) | (ie[1] & 2048) && (tl.$$scope = { dirty: ie, ctx: w }), !ge && ie[0] & 256 && ((ge = !0), (tl.checked = w[8]), J(() => (ge = !1))), Fe.$set(tl); + }, + i(w) { + fe || (x(i.$$.fragment, w), x(o.$$.fragment, w), x(a.$$.fragment, w), x(d.$$.fragment, w), x(D.$$.fragment, w), x(F.$$.fragment, w), x(O.$$.fragment, w), x(Q.$$.fragment, w), x(I.$$.fragment, w), x(G.$$.fragment, w), x(Fe.$$.fragment, w), (fe = !0)); + }, + o(w) { + S(i.$$.fragment, w), S(o.$$.fragment, w), S(a.$$.fragment, w), S(d.$$.fragment, w), S(D.$$.fragment, w), S(F.$$.fragment, w), S(O.$$.fragment, w), S(Q.$$.fragment, w), S(I.$$.fragment, w), S(G.$$.fragment, w), S(Fe.$$.fragment, w), (fe = !1); + }, + d(w) { + w && y(e), w && y(t), $(i, w), w && y(s), $(o, w), w && y(l), $(a, w), w && y(f), $(d, w), w && y(m), $(D, w), w && y(b), $(F, w), w && y(E), $(O, w), w && y(W), $(Q, w), w && y(Y), $(I, w), w && y(le), $(G, w), w && y(ee), $(Fe, w); + }, + } + ); } - __name(create_fragment18, "create_fragment"); - function instance18($$self, $$props, $$invalidate) { - var _a2; - var options = $$props.options; - var alignChecked = options.align > 1; - var alignValue = alignChecked ? options.align : 13; - var wrapChecked = options.wrap !== void 0; - var wrapValue = (_a2 = options.wrap) !== null && _a2 !== void 0 ? _a2 : DEFAULT_WRAP; - function input_input_handler() { - alignValue = to_number(this.value); - $$invalidate(2, alignValue); - } - __name(input_input_handler, "input_input_handler"); - function option0_checked_binding(value) { - alignChecked = value; - $$invalidate(1, alignChecked); - } - __name(option0_checked_binding, "option0_checked_binding"); - function input_input_handler_1() { - wrapValue = to_number(this.value); - $$invalidate(4, wrapValue); - } - __name(input_input_handler_1, "input_input_handler_1"); - function option1_checked_binding(value) { - wrapChecked = value; - $$invalidate(3, wrapChecked); - } - __name(option1_checked_binding, "option1_checked_binding"); - function option2_checked_binding(value) { - if ($$self.$$.not_equal(options.blankLines, value)) { - options.blankLines = value; - $$invalidate(0, options), $$invalidate(1, alignChecked), $$invalidate(2, alignValue), $$invalidate(3, wrapChecked), $$invalidate(4, wrapValue); - } - } - __name(option2_checked_binding, "option2_checked_binding"); - $$self.$$set = ($$props2) => { - if ("options" in $$props2) $$invalidate(0, (options = $$props2.options)); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & 30) { - $: { - $$invalidate(0, (options.align = alignChecked ? alignValue : 1), options); - $$invalidate(0, (options.wrap = wrapChecked ? wrapValue : void 0), options); - } + h(c3, "create_default_slot"); + function f3(r) { + var e, t; + return ( + (e = new tt({ props: { open: !0, title: "Values", $$slots: { default: [c3] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, n) { + var s = {}; + (n[0] & 16383) | (n[1] & 2048) && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, } - }; - return [options, alignChecked, alignValue, wrapChecked, wrapValue, input_input_handler, option0_checked_binding, input_input_handler_1, option1_checked_binding, option2_checked_binding]; - } - __name(instance18, "instance"); - var WhitespaceOptions = class WhitespaceOptions extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance18, create_fragment18, safe_not_equal, { - options: 0, - }); + ); + } + h(f3, "create_fragment"); + function d3(r, e, t) { + var i, n, s, o, u, l, a, c, f, d, p, m, D; + var g = e.options, + b = (i = g.curly) !== null && i !== void 0 ? i : !1, + F = (n = g.stripEnclosingBraces) !== null && n !== void 0 ? n : !1, + A = (s = g.numeric) !== null && s !== void 0 ? s : !1, + E = (o = g.dropAllCaps) !== null && o !== void 0 ? o : !1, + O = (u = g.escape) !== null && u !== void 0 ? u : !1, + _ = (l = g.encodeUrls) !== null && l !== void 0 ? l : !1, + W = (a = g.removeEmptyFields) !== null && a !== void 0 ? a : !1, + Q = (c = g.removeDuplicateFields) !== null && c !== void 0 ? c : !1, + j = g.maxAuthors !== void 0, + Y = (f = g.maxAuthors) !== null && f !== void 0 ? f : 3, + I = g.enclosingBraces !== void 0 && g.enclosingBraces.length > 0, + oe = (p = (d = g.enclosingBraces) === null || d === void 0 ? void 0 : d.join(" ")) !== null && p !== void 0 ? p : "title", + le = g.removeBraces !== void 0 && g.removeBraces.length > 0, + G = (D = (m = g.enclosingBraces) === null || m === void 0 ? void 0 : m.join(" ")) !== null && D !== void 0 ? D : "title"; + function R(N) { + (b = N), t(0, b); + } + h(R, "option0_checked_binding"); + function ee() { + (oe = this.value), t(11, oe); + } + h(ee, "textarea_input_handler"); + function Fe(N) { + (I = N), t(10, I); + } + h(Fe, "option1_checked_binding"); + function ge() { + (G = this.value), t(13, G); + } + h(ge, "textarea_input_handler_1"); + function fe(N) { + (le = N), t(12, le); + } + h(fe, "option2_checked_binding"); + function Ie(N) { + (F = N), t(1, F); + } + h(Ie, "option3_checked_binding"); + function Re(N) { + (A = N), t(2, A); + } + h(Re, "option4_checked_binding"); + function Ye(N) { + (E = N), t(3, E); + } + h(Ye, "option5_checked_binding"); + function mt(N) { + (O = N), t(4, O); + } + h(mt, "option6_checked_binding"); + function mi(N) { + (_ = N), t(5, _); + } + h(mi, "option7_checked_binding"); + function Li(N) { + (W = N), t(6, W); + } + h(Li, "option8_checked_binding"); + function Jr(N) { + (Q = N), t(7, Q); + } + h(Jr, "option9_checked_binding"); + function qi() { + (Y = xt(this.value)), t(9, Y); + } + h(qi, "input_input_handler"); + function Be(N) { + (j = N), t(8, j); + } + return ( + h(Be, "option10_checked_binding"), + (r.$$set = (N) => { + "options" in N && t(14, (g = N.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty[0] & 16383) + e: t(14, (g.curly = b), g), + t(14, (g.stripEnclosingBraces = F), g), + t(14, (g.numeric = A), g), + t(14, (g.dropAllCaps = E), g), + t(14, (g.escape = O), g), + t(14, (g.encodeUrls = _), g), + t(14, (g.removeEmptyFields = W), g), + t(14, (g.removeDuplicateFields = Q), g), + t(14, (g.maxAuthors = j ? Y : void 0), g), + t(14, (g.enclosingBraces = I && oe.length > 0 ? oe.split(/[\n\t ,]+/) : void 0), g), + t(14, (g.removeBraces = le && G.length > 0 ? G.split(/[\n\t ,]+/) : void 0), g); + }), + [b, F, A, E, O, _, W, Q, j, Y, I, oe, le, G, g, R, ee, Fe, ge, fe, Ie, Re, Ye, mt, mi, Li, Jr, qi, Be] + ); + } + h(d3, "instance"); + var Ku = class Ku extends re { + constructor(e) { + super(), se(this, e, d3, f3, ne, { options: 14 }, null, [-1, -1]); } }; - __name(WhitespaceOptions, "WhitespaceOptions"); - var WhitespaceOptions_default = WhitespaceOptions; - // src/ui/Sidebar.svelte - function create_if_block7(ctx) { - var feedback; - var current; - feedback = new Feedback_default({ - props: { - options: ctx[0], - status: ctx[1], - }, - }); + h(Ku, "ValueOptions"); + var H1 = Ku; + function m3(r) { + var e, t, i, n, s; return { c() { - create_component(feedback.$$.fragment); - }, - m(target, anchor) { - mount_component(feedback, target, anchor); - current = true; - }, - p(ctx2, dirty) { - var feedback_changes = {}; - if (dirty & 1) feedback_changes.options = ctx2[0]; - if (dirty & 2) feedback_changes.status = ctx2[1]; - feedback.$set(feedback_changes); + (e = T("label")), (t = K("Column:\n ")), (i = T("input")), v(i, "name", "alignnum"), v(i, "type", "number"); }, - i(local) { - if (current) return; - transition_in(feedback.$$.fragment, local); - current = true; + m(o, u) { + C(o, e, u), V(e, t), V(e, i), Ce(i, r[2]), n || ((s = ye(i, "input", r[5])), (n = !0)); }, - o(local) { - transition_out(feedback.$$.fragment, local); - current = false; + p(o, u) { + u & 4 && xt(i.value) !== o[2] && Ce(i, o[2]); }, - d(detaching) { - destroy_component(feedback, detaching); + d(o) { + o && y(e), (n = !1), s(); }, }; } - __name(create_if_block7, "create_if_block"); - function create_fragment19(ctx) { - var aside; - var form; - var header; - var t7; - var indentoptions; - var updating_options; - var t8; - var whitespaceoptions; - var updating_options_1; - var t9; - var valueoptions; - var updating_options_2; - var t10; - var sortingoptions; - var updating_options_3; - var t11; - var duplicateoptions; - var updating_options_4; - var t12; - var cleanupoptions; - var updating_options_5; - var t13; - var cli; - var t14; - var div; - var t15; - var button; - var t16; - var current; - var mounted; - var dispose; - function indentoptions_options_binding(value) { - ctx[4](value); - } - __name(indentoptions_options_binding, "indentoptions_options_binding"); - var indentoptions_props = {}; - if (ctx[0] !== void 0) { - indentoptions_props.options = ctx[0]; - } - indentoptions = new IndentOptions_default({ - props: indentoptions_props, - }); - binding_callbacks.push(() => bind(indentoptions, "options", indentoptions_options_binding)); - function whitespaceoptions_options_binding(value) { - ctx[5](value); - } - __name(whitespaceoptions_options_binding, "whitespaceoptions_options_binding"); - var whitespaceoptions_props = {}; - if (ctx[0] !== void 0) { - whitespaceoptions_props.options = ctx[0]; - } - whitespaceoptions = new WhitespaceOptions_default({ - props: whitespaceoptions_props, - }); - binding_callbacks.push(() => bind(whitespaceoptions, "options", whitespaceoptions_options_binding)); - function valueoptions_options_binding(value) { - ctx[6](value); - } - __name(valueoptions_options_binding, "valueoptions_options_binding"); - var valueoptions_props = {}; - if (ctx[0] !== void 0) { - valueoptions_props.options = ctx[0]; - } - valueoptions = new ValueOptions_default({ - props: valueoptions_props, - }); - binding_callbacks.push(() => bind(valueoptions, "options", valueoptions_options_binding)); - function sortingoptions_options_binding(value) { - ctx[7](value); - } - __name(sortingoptions_options_binding, "sortingoptions_options_binding"); - var sortingoptions_props = {}; - if (ctx[0] !== void 0) { - sortingoptions_props.options = ctx[0]; - } - sortingoptions = new SortingOptions_default({ - props: sortingoptions_props, - }); - binding_callbacks.push(() => bind(sortingoptions, "options", sortingoptions_options_binding)); - function duplicateoptions_options_binding(value) { - ctx[8](value); - } - __name(duplicateoptions_options_binding, "duplicateoptions_options_binding"); - var duplicateoptions_props = {}; - if (ctx[0] !== void 0) { - duplicateoptions_props.options = ctx[0]; - } - duplicateoptions = new DuplicateOptions_default({ - props: duplicateoptions_props, - }); - binding_callbacks.push(() => bind(duplicateoptions, "options", duplicateoptions_options_binding)); - function cleanupoptions_options_binding(value) { - ctx[9](value); - } - __name(cleanupoptions_options_binding, "cleanupoptions_options_binding"); - var cleanupoptions_props = {}; - if (ctx[0] !== void 0) { - cleanupoptions_props.options = ctx[0]; - } - cleanupoptions = new CleanupOptions_default({ - props: cleanupoptions_props, - }); - binding_callbacks.push(() => bind(cleanupoptions, "options", cleanupoptions_options_binding)); - cli = new Cli_default({ - props: { - options: ctx[0], - }, - }); - var if_block = ctx[1] && create_if_block7(ctx); + h(m3, "create_default_slot_2"); + function g3(r) { + var e, t, i, n, s; return { c() { - aside = element("aside"); - form = element("form"); - header = element("header"); - header.innerHTML = '<h1 class="svelte-kvjsp8">BibTeX Tidy</h1> \n <p>This tool tidies bibtex files by fixing inconsistent whitespace,\n removing duplicates, removing unwanted fields, and sorting entries.</p> \n <p><a class="btn" href="https://github.com/FlamingTempura/bibtex-tidy">Github</a> \n <a class="btn" href="https://github.com/FlamingTempura/bibtex-tidy/issues">Report a bug</a></p>'; - t7 = space(); - create_component(indentoptions.$$.fragment); - t8 = space(); - create_component(whitespaceoptions.$$.fragment); - t9 = space(); - create_component(valueoptions.$$.fragment); - t10 = space(); - create_component(sortingoptions.$$.fragment); - t11 = space(); - create_component(duplicateoptions.$$.fragment); - t12 = space(); - create_component(cleanupoptions.$$.fragment); - t13 = space(); - create_component(cli.$$.fragment); - t14 = space(); - div = element("div"); - if (if_block) if_block.c(); - t15 = space(); - button = element("button"); - t16 = text("Tidy"); - attr(header, "class", "intro svelte-kvjsp8"); - attr(form, "class", "svelte-kvjsp8"); - attr(button, "id", "tidy"); - button.disabled = ctx[2]; - attr(button, "class", "svelte-kvjsp8"); - attr(div, "class", "run svelte-kvjsp8"); - attr(aside, "id", "sidebar"); - attr(aside, "class", "svelte-kvjsp8"); - }, - m(target, anchor) { - insert(target, aside, anchor); - append(aside, form); - append(form, header); - append(form, t7); - mount_component(indentoptions, form, null); - append(form, t8); - mount_component(whitespaceoptions, form, null); - append(form, t9); - mount_component(valueoptions, form, null); - append(form, t10); - mount_component(sortingoptions, form, null); - append(form, t11); - mount_component(duplicateoptions, form, null); - append(form, t12); - mount_component(cleanupoptions, form, null); - append(form, t13); - mount_component(cli, form, null); - append(aside, t14); - append(aside, div); - if (if_block) if_block.m(div, null); - append(div, t15); - append(div, button); - append(button, t16); - current = true; - if (!mounted) { - dispose = [listen(form, "submit", submit_handler), listen(button, "click", ctx[10])]; - mounted = true; - } - }, - p(ctx2, param) { - var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var indentoptions_changes = {}; - if (!updating_options && dirty & 1) { - updating_options = true; - indentoptions_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options = false)); - } - indentoptions.$set(indentoptions_changes); - var whitespaceoptions_changes = {}; - if (!updating_options_1 && dirty & 1) { - updating_options_1 = true; - whitespaceoptions_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options_1 = false)); - } - whitespaceoptions.$set(whitespaceoptions_changes); - var valueoptions_changes = {}; - if (!updating_options_2 && dirty & 1) { - updating_options_2 = true; - valueoptions_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options_2 = false)); - } - valueoptions.$set(valueoptions_changes); - var sortingoptions_changes = {}; - if (!updating_options_3 && dirty & 1) { - updating_options_3 = true; - sortingoptions_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options_3 = false)); - } - sortingoptions.$set(sortingoptions_changes); - var duplicateoptions_changes = {}; - if (!updating_options_4 && dirty & 1) { - updating_options_4 = true; - duplicateoptions_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options_4 = false)); - } - duplicateoptions.$set(duplicateoptions_changes); - var cleanupoptions_changes = {}; - if (!updating_options_5 && dirty & 1) { - updating_options_5 = true; - cleanupoptions_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options_5 = false)); - } - cleanupoptions.$set(cleanupoptions_changes); - var cli_changes = {}; - if (dirty & 1) cli_changes.options = ctx2[0]; - cli.$set(cli_changes); - if (ctx2[1]) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block7(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div, t15); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } - if (!current || dirty & 4) { - button.disabled = ctx2[2]; - } + (e = T("label")), (t = K("Column:\n ")), (i = T("input")), v(i, "name", "wrapnum"), v(i, "type", "number"); }, - i(local) { - if (current) return; - transition_in(indentoptions.$$.fragment, local); - transition_in(whitespaceoptions.$$.fragment, local); - transition_in(valueoptions.$$.fragment, local); - transition_in(sortingoptions.$$.fragment, local); - transition_in(duplicateoptions.$$.fragment, local); - transition_in(cleanupoptions.$$.fragment, local); - transition_in(cli.$$.fragment, local); - transition_in(if_block); - current = true; + m(o, u) { + C(o, e, u), V(e, t), V(e, i), Ce(i, r[4]), n || ((s = ye(i, "input", r[7])), (n = !0)); }, - o(local) { - transition_out(indentoptions.$$.fragment, local); - transition_out(whitespaceoptions.$$.fragment, local); - transition_out(valueoptions.$$.fragment, local); - transition_out(sortingoptions.$$.fragment, local); - transition_out(duplicateoptions.$$.fragment, local); - transition_out(cleanupoptions.$$.fragment, local); - transition_out(cli.$$.fragment, local); - transition_out(if_block); - current = false; + p(o, u) { + u & 16 && xt(i.value) !== o[4] && Ce(i, o[4]); }, - d(detaching) { - if (detaching) detach(aside); - destroy_component(indentoptions); - destroy_component(whitespaceoptions); - destroy_component(valueoptions); - destroy_component(sortingoptions); - destroy_component(duplicateoptions); - destroy_component(cleanupoptions); - destroy_component(cli); - if (if_block) if_block.d(); - mounted = false; - run_all(dispose); + d(o) { + o && y(e), (n = !1), s(); }, }; } - __name(create_fragment19, "create_fragment"); - var submit_handler = /* @__PURE__ */ __name(() => false, "submit_handler"); - function instance19($$self, $$props, $$invalidate) { - var status = $$props.status; - var running = $$props.running; - var options = $$props.options; - var dispatch = createEventDispatcher(); - function indentoptions_options_binding(value) { - options = value; - $$invalidate(0, options); - } - __name(indentoptions_options_binding, "indentoptions_options_binding"); - function whitespaceoptions_options_binding(value) { - options = value; - $$invalidate(0, options); - } - __name(whitespaceoptions_options_binding, "whitespaceoptions_options_binding"); - function valueoptions_options_binding(value) { - options = value; - $$invalidate(0, options); - } - __name(valueoptions_options_binding, "valueoptions_options_binding"); - function sortingoptions_options_binding(value) { - options = value; - $$invalidate(0, options); - } - __name(sortingoptions_options_binding, "sortingoptions_options_binding"); - function duplicateoptions_options_binding(value) { - options = value; - $$invalidate(0, options); - } - __name(duplicateoptions_options_binding, "duplicateoptions_options_binding"); - function cleanupoptions_options_binding(value) { - options = value; - $$invalidate(0, options); - } - __name(cleanupoptions_options_binding, "cleanupoptions_options_binding"); - var click_handler = /* @__PURE__ */ __name(() => dispatch("tidy"), "click_handler"); - $$self.$$set = ($$props2) => { - if ("status" in $$props2) $$invalidate(1, (status = $$props2.status)); - if ("running" in $$props2) $$invalidate(2, (running = $$props2.running)); - if ("options" in $$props2) $$invalidate(0, (options = $$props2.options)); - }; - return [options, status, running, dispatch, indentoptions_options_binding, whitespaceoptions_options_binding, valueoptions_options_binding, sortingoptions_options_binding, duplicateoptions_options_binding, cleanupoptions_options_binding, click_handler]; - } - __name(instance19, "instance"); - var Sidebar = class Sidebar extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance19, create_fragment19, safe_not_equal, { - status: 1, - running: 2, - options: 0, - }); - } - }; - __name(Sidebar, "Sidebar"); - var Sidebar_default = Sidebar; - // src/ui/defaultBibtex.ts - var DEFAULT_BIBTEX = - 'Click Tidy to clean up the entries below \n@Book{sweig42,\n Author = { Stefa{n} Sweig },\n title = { The impossible book },\n publisher = { Dead Poet Society},\n year = 1942,\n month = mar\n}\n@article{steward03,\n author = {Martha Steward},\n title = {Cooking behind bars}, publisher = "Culinary Expert Series",\n year = {2003}\n}\n@Book{impossible,\n Author = { Stefan Sweig },\n title = { The impossible book },\n publisher = { Dead Poet Society},\n year = 1942,\n month = mar\n}\n'; - // src/ui/App.svelte - function create_fragment20(ctx) { - var editor; - var updating_bibtex; - var t2; - var sidebar; - var updating_options; - var current; - function editor_bibtex_binding(value) { - ctx[6](value); - } - __name(editor_bibtex_binding, "editor_bibtex_binding"); - var editor_props = { - error: ctx[4], - }; - if (ctx[2] !== void 0) { - editor_props.bibtex = ctx[2]; + h(g3, "create_default_slot_1"); + function D3(r) { + var e, t, i, n, s, o, u, l, a; + function c(g) { + r[6](g); + } + h(c, "option0_checked_binding"); + var f = { option: "align", $$slots: { default: [m3] }, $$scope: { ctx: r } }; + r[1] !== void 0 && (f.checked = r[1]), (e = new me({ props: f })), X.push(() => Z(e, "checked", c)); + function d(g) { + r[8](g); + } + h(d, "option1_checked_binding"); + var p = { option: "wrap", $$slots: { default: [g3] }, $$scope: { ctx: r } }; + r[3] !== void 0 && (p.checked = r[3]), (n = new me({ props: p })), X.push(() => Z(n, "checked", d)); + function m(g) { + r[9](g); + } + h(m, "option2_checked_binding"); + var D = { option: "blankLines" }; + return ( + r[0].blankLines !== void 0 && (D.checked = r[0].blankLines), + (u = new me({ props: D })), + X.push(() => Z(u, "checked", m)), + { + c() { + P(e.$$.fragment), (i = q()), P(n.$$.fragment), (o = q()), P(u.$$.fragment); + }, + m(g, b) { + M(e, g, b), C(g, i, b), M(n, g, b), C(g, o, b), M(u, g, b), (a = !0); + }, + p(g, b) { + var F = {}; + b & 2052 && (F.$$scope = { dirty: b, ctx: g }), !t && b & 2 && ((t = !0), (F.checked = g[1]), J(() => (t = !1))), e.$set(F); + var A = {}; + b & 2064 && (A.$$scope = { dirty: b, ctx: g }), !s && b & 8 && ((s = !0), (A.checked = g[3]), J(() => (s = !1))), n.$set(A); + var E = {}; + !l && b & 1 && ((l = !0), (E.checked = g[0].blankLines), J(() => (l = !1))), u.$set(E); + }, + i(g) { + a || (x(e.$$.fragment, g), x(n.$$.fragment, g), x(u.$$.fragment, g), (a = !0)); + }, + o(g) { + S(e.$$.fragment, g), S(n.$$.fragment, g), S(u.$$.fragment, g), (a = !1); + }, + d(g) { + $(e, g), g && y(i), $(n, g), g && y(o), $(u, g); + }, + } + ); + } + h(D3, "create_default_slot"); + function b3(r) { + var e, t; + return ( + (e = new tt({ props: { title: "Whitespace", open: !0, $$slots: { default: [D3] }, $$scope: { ctx: r } } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, param) { + var _param = _slicedToArray(param, 1), + n = _param[0]; + var s = {}; + n & 2079 && (s.$$scope = { dirty: n, ctx: i }), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(b3, "create_fragment"); + function F3(r, e, t) { + var i; + var n = e.options, + s = n.align > 1, + o = s ? n.align : 13, + u = n.wrap !== void 0, + l = (i = n.wrap) !== null && i !== void 0 ? i : 80; + function a() { + (o = xt(this.value)), t(2, o); + } + h(a, "input_input_handler"); + function c(m) { + (s = m), t(1, s); + } + h(c, "option0_checked_binding"); + function f() { + (l = xt(this.value)), t(4, l); + } + h(f, "input_input_handler_1"); + function d(m) { + (u = m), t(3, u); + } + h(d, "option1_checked_binding"); + function p(m) { + r.$$.not_equal(n.blankLines, m) && ((n.blankLines = m), t(0, n), t(1, s), t(2, o), t(3, u), t(4, l)); } - editor = new Editor_default({ - props: editor_props, - }); - binding_callbacks.push(() => bind(editor, "bibtex", editor_bibtex_binding)); - function sidebar_options_binding(value) { - ctx[7](value); - } - __name(sidebar_options_binding, "sidebar_options_binding"); - var sidebar_props = { - status: ctx[3], - running: ctx[1], - }; - if (ctx[0] !== void 0) { - sidebar_props.options = ctx[0]; + return ( + h(p, "option2_checked_binding"), + (r.$$set = (m) => { + "options" in m && t(0, (n = m.options)); + }), + (r.$$.update = () => { + if (r.$$.dirty & 30) e: t(0, (n.align = s ? o : 1), n), t(0, (n.wrap = u ? l : void 0), n); + }), + [n, s, o, u, l, a, c, f, d, p] + ); + } + h(F3, "instance"); + var Xu = class Xu extends re { + constructor(e) { + super(), se(this, e, F3, b3, ne, { options: 0 }); } - sidebar = new Sidebar_default({ - props: sidebar_props, - }); - binding_callbacks.push(() => bind(sidebar, "options", sidebar_options_binding)); - sidebar.$on("tidy", ctx[5]); + }; + h(Xu, "WhitespaceOptions"); + var U1 = Xu; + function Y1(r) { + var e, t; + return ( + (e = new V1({ props: { options: r[0], status: r[1] } })), + { + c() { + P(e.$$.fragment); + }, + m(i, n) { + M(e, i, n), (t = !0); + }, + p(i, n) { + var s = {}; + n & 1 && (s.options = i[0]), n & 2 && (s.status = i[1]), e.$set(s); + }, + i(i) { + t || (x(e.$$.fragment, i), (t = !0)); + }, + o(i) { + S(e.$$.fragment, i), (t = !1); + }, + d(i) { + $(e, i); + }, + } + ); + } + h(Y1, "create_if_block"); + function y3(r) { + var e, t, i, n, s, o, u, l, a, c, f, d, p, m, D, g, b, F, A, E, O, _, W, Q, j, Y, I, oe, le, G, R; + function ee(N) { + r[4](N); + } + h(ee, "indentoptions_options_binding"); + var Fe = {}; + r[0] !== void 0 && (Fe.options = r[0]), (s = new W1({ props: Fe })), X.push(() => Z(s, "options", ee)); + function ge(N) { + r[5](N); + } + h(ge, "whitespaceoptions_options_binding"); + var fe = {}; + r[0] !== void 0 && (fe.options = r[0]), (l = new U1({ props: fe })), X.push(() => Z(l, "options", ge)); + function Ie(N) { + r[6](N); + } + h(Ie, "valueoptions_options_binding"); + var Re = {}; + r[0] !== void 0 && (Re.options = r[0]), (f = new H1({ props: Re })), X.push(() => Z(f, "options", Ie)); + function Ye(N) { + r[7](N); + } + h(Ye, "sortingoptions_options_binding"); + var mt = {}; + r[0] !== void 0 && (mt.options = r[0]), (m = new j1({ props: mt })), X.push(() => Z(m, "options", Ye)); + function mi(N) { + r[8](N); + } + h(mi, "duplicateoptions_options_binding"); + var Li = {}; + r[0] !== void 0 && (Li.options = r[0]), (b = new R1({ props: Li })), X.push(() => Z(b, "options", mi)); + function Jr(N) { + r[9](N); + } + h(Jr, "cleanupoptions_options_binding"); + var qi = {}; + r[0] !== void 0 && (qi.options = r[0]), (E = new x1({ props: qi })), X.push(() => Z(E, "options", Jr)), (W = new T1({ props: { options: r[0] } })); + var Be = r[1] && Y1(r); return { c() { - create_component(editor.$$.fragment); - t2 = space(); - create_component(sidebar.$$.fragment); - }, - m(target, anchor) { - mount_component(editor, target, anchor); - insert(target, t2, anchor); - mount_component(sidebar, target, anchor); - current = true; - }, - p(ctx2, param) { + (e = T("aside")), + (t = T("form")), + (i = T("header")), + (i.innerHTML = '<h1 class="svelte-kvjsp8">BibTeX Tidy</h1> \n <p>This tool tidies bibtex files by fixing inconsistent whitespace,\n removing duplicates, removing unwanted fields, and sorting entries.</p> \n <p><a class="btn" href="https://github.com/FlamingTempura/bibtex-tidy">Github</a> \n <a class="btn" href="https://github.com/FlamingTempura/bibtex-tidy/issues">Report a bug</a></p>'), + (n = q()), + P(s.$$.fragment), + (u = q()), + P(l.$$.fragment), + (c = q()), + P(f.$$.fragment), + (p = q()), + P(m.$$.fragment), + (g = q()), + P(b.$$.fragment), + (A = q()), + P(E.$$.fragment), + (_ = q()), + P(W.$$.fragment), + (Q = q()), + (j = T("div")), + Be && Be.c(), + (Y = q()), + (I = T("button")), + (oe = K("Tidy")), + v(i, "class", "intro svelte-kvjsp8"), + v(t, "class", "svelte-kvjsp8"), + v(I, "id", "tidy"), + (I.disabled = r[2]), + v(I, "class", "svelte-kvjsp8"), + v(j, "class", "run svelte-kvjsp8"), + v(e, "id", "sidebar"), + v(e, "class", "svelte-kvjsp8"); + }, + m(N, Qe) { + C(N, e, Qe), V(e, t), V(t, i), V(t, n), M(s, t, null), V(t, u), M(l, t, null), V(t, c), M(f, t, null), V(t, p), M(m, t, null), V(t, g), M(b, t, null), V(t, A), M(E, t, null), V(t, _), M(W, t, null), V(e, Q), V(e, j), Be && Be.m(j, null), V(j, Y), V(j, I), V(I, oe), (le = !0), G || ((R = [ye(t, "submit", C3), ye(I, "click", r[10])]), (G = !0)); + }, + p(N, param) { var _param = _slicedToArray(param, 1), - dirty = _param[0]; - var editor_changes = {}; - if (dirty & 16) editor_changes.error = ctx2[4]; - if (!updating_bibtex && dirty & 4) { - updating_bibtex = true; - editor_changes.bibtex = ctx2[2]; - add_flush_callback(() => (updating_bibtex = false)); - } - editor.$set(editor_changes); - var sidebar_changes = {}; - if (dirty & 8) sidebar_changes.status = ctx2[3]; - if (dirty & 2) sidebar_changes.running = ctx2[1]; - if (!updating_options && dirty & 1) { - updating_options = true; - sidebar_changes.options = ctx2[0]; - add_flush_callback(() => (updating_options = false)); - } - sidebar.$set(sidebar_changes); + Qe = _param[0]; + var Zr = {}; + !o && Qe & 1 && ((o = !0), (Zr.options = N[0]), J(() => (o = !1))), s.$set(Zr); + var os = {}; + !a && Qe & 1 && ((a = !0), (os.options = N[0]), J(() => (a = !1))), l.$set(os); + var en = {}; + !d && Qe & 1 && ((d = !0), (en.options = N[0]), J(() => (d = !1))), f.$set(en); + var us = {}; + !D && Qe & 1 && ((D = !0), (us.options = N[0]), J(() => (D = !1))), m.$set(us); + var tn = {}; + !F && Qe & 1 && ((F = !0), (tn.options = N[0]), J(() => (F = !1))), b.$set(tn); + var ls = {}; + !O && Qe & 1 && ((O = !0), (ls.options = N[0]), J(() => (O = !1))), E.$set(ls); + var rn = {}; + Qe & 1 && (rn.options = N[0]), + W.$set(rn), + N[1] + ? Be + ? (Be.p(N, Qe), Qe & 2 && x(Be, 1)) + : ((Be = Y1(N)), Be.c(), x(Be, 1), Be.m(j, Y)) + : Be && + (ri(), + S(Be, 1, 1, () => { + Be = null; + }), + ni()), + (!le || Qe & 4) && (I.disabled = N[2]); }, - i(local) { - if (current) return; - transition_in(editor.$$.fragment, local); - transition_in(sidebar.$$.fragment, local); - current = true; + i(N) { + le || (x(s.$$.fragment, N), x(l.$$.fragment, N), x(f.$$.fragment, N), x(m.$$.fragment, N), x(b.$$.fragment, N), x(E.$$.fragment, N), x(W.$$.fragment, N), x(Be), (le = !0)); }, - o(local) { - transition_out(editor.$$.fragment, local); - transition_out(sidebar.$$.fragment, local); - current = false; + o(N) { + S(s.$$.fragment, N), S(l.$$.fragment, N), S(f.$$.fragment, N), S(m.$$.fragment, N), S(b.$$.fragment, N), S(E.$$.fragment, N), S(W.$$.fragment, N), S(Be), (le = !1); }, - d(detaching) { - destroy_component(editor, detaching); - if (detaching) detach(t2); - destroy_component(sidebar, detaching); + d(N) { + N && y(e), $(s), $(l), $(f), $(m), $(b), $(E), $(W), Be && Be.d(), (G = !1), It(R); }, }; } - __name(create_fragment20, "create_fragment"); - function instance20($$self, $$props, $$invalidate) { - var _a2; - var optionDefaults = normalizeOptions({ - tab: true, - align: 13, - curly: true, - numeric: true, - escape: false, - duplicates: ["key"], - sortFields: true, - removeDuplicateFields: false, - }); - var running = false; - var bibtex = DEFAULT_BIBTEX; - var options = (_a2 = getOptionsFromURL()) !== null && _a2 !== void 0 ? _a2 : optionDefaults; - var status; - var error; - function handleTidy() { - $$invalidate(1, (running = true)); - $$invalidate(3, (status = void 0)); - $$invalidate(4, (error = void 0)); - setTimeout(() => { - try { - var result = tidy(bibtex, options); - $$invalidate(2, (bibtex = result.bibtex)); - $$invalidate( - 3, - (status = { - status: "success", - result, - }) - ); - } catch (e) { - console.error("bibtex parse problem:", e); - $$invalidate( - 3, - (status = { - status: "error", - error: e, - }) - ); - if (e instanceof BibTeXSyntaxError) { - $$invalidate(4, (error = e)); - } - } finally { - $$invalidate(1, (running = false)); - } - }, 100); + h(y3, "create_fragment"); + var C3 = h(() => !1, "submit_handler"); + function A3(r, e, t) { + var i = e.status, + n = e.running, + s = e.options, + o = Wi(); + function u(m) { + (s = m), t(0, s); + } + h(u, "indentoptions_options_binding"); + function l(m) { + (s = m), t(0, s); + } + h(l, "whitespaceoptions_options_binding"); + function a(m) { + (s = m), t(0, s); + } + h(a, "valueoptions_options_binding"); + function c(m) { + (s = m), t(0, s); + } + h(c, "sortingoptions_options_binding"); + function f(m) { + (s = m), t(0, s); + } + h(f, "duplicateoptions_options_binding"); + function d(m) { + (s = m), t(0, s); + } + h(d, "cleanupoptions_options_binding"); + var p = h(() => o("tidy"), "click_handler"); + return ( + (r.$$set = (m) => { + "status" in m && t(1, (i = m.status)), "running" in m && t(2, (n = m.running)), "options" in m && t(0, (s = m.options)); + }), + [s, i, n, o, u, l, a, c, f, d, p] + ); + } + h(A3, "instance"); + var Qu = class Qu extends re { + constructor(e) { + super(), se(this, e, A3, y3, ne, { status: 1, running: 2, options: 0 }); } - __name(handleTidy, "handleTidy"); - function getOptionsFromURL() { - var queryString = window.location.search; - var urlParams = new URLSearchParams(queryString); - var optionsJSON = urlParams.get("opt"); - if (!optionsJSON) return; - try { - return normalizeOptions(JSON.parse(optionsJSON)); - } catch (e) { - console.error("Error parsing options in URL"); - return; + }; + h(Qu, "Sidebar"); + var G1 = Qu; + var K1 = + 'Click Tidy to clean up the entries below \n@Book{sweig42,\n Author = { Stefa{n} Sweig },\n title = { The impossible book },\n publisher = { Dead Poet Society},\n year = 1942,\n month = mar\n}\n@article{steward03,\n author = {Martha Steward},\n title = {Cooking behind bars}, publisher = "Culinary Expert Series",\n year = {2003}\n}\n@Book{impossible,\n Author = { Stefan Sweig },\n title = { The impossible book },\n publisher = { Dead Poet Society},\n year = 1942,\n month = mar\n}\n'; + function E3(r) { + var e, t, i, n, s, o; + function u(f) { + r[6](f); + } + h(u, "editor_bibtex_binding"); + var l = { error: r[4] }; + r[2] !== void 0 && (l.bibtex = r[2]), (e = new v1({ props: l })), X.push(() => Z(e, "bibtex", u)); + function a(f) { + r[7](f); + } + h(a, "sidebar_options_binding"); + var c = { status: r[3], running: r[1] }; + return ( + r[0] !== void 0 && (c.options = r[0]), + (n = new G1({ props: c })), + X.push(() => Z(n, "options", a)), + n.$on("tidy", r[5]), + { + c() { + P(e.$$.fragment), (i = q()), P(n.$$.fragment); + }, + m(f, d) { + M(e, f, d), C(f, i, d), M(n, f, d), (o = !0); + }, + p(f, param) { + var _param = _slicedToArray(param, 1), + d = _param[0]; + var p = {}; + d & 16 && (p.error = f[4]), !t && d & 4 && ((t = !0), (p.bibtex = f[2]), J(() => (t = !1))), e.$set(p); + var m = {}; + d & 8 && (m.status = f[3]), d & 2 && (m.running = f[1]), !s && d & 1 && ((s = !0), (m.options = f[0]), J(() => (s = !1))), n.$set(m); + }, + i(f) { + o || (x(e.$$.fragment, f), x(n.$$.fragment, f), (o = !0)); + }, + o(f) { + S(e.$$.fragment, f), S(n.$$.fragment, f), (o = !1); + }, + d(f) { + $(e, f), f && y(i), $(n, f); + }, } + ); + } + h(E3, "create_fragment"); + function v3(r, e, t) { + var i; + var n = kn({ tab: !0, align: 13, curly: !0, numeric: !0, escape: !1, duplicates: ["key"], sortFields: !0, removeDuplicateFields: !1 }), + s = !1, + o = K1, + u = (i = f()) !== null && i !== void 0 ? i : n, + l, + a; + function c() { + t(1, (s = !0)), + t(3, (l = void 0)), + t(4, (a = void 0)), + setTimeout(() => { + try { + var _$m = D0(o, u); + t(2, (o = _$m.bibtex)), t(3, (l = { status: "success", result: _$m })); + } catch (m) { + console.error("bibtex parse problem:", m), t(3, (l = { status: "error", error: m })), m instanceof st && t(4, (a = m)); + } finally { + t(1, (s = !1)); + } + }, 100); } - __name(getOptionsFromURL, "getOptionsFromURL"); - window.addEventListener("popstate", () => { - var _a3; - $$invalidate(0, (options = (_a3 = getOptionsFromURL()) !== null && _a3 !== void 0 ? _a3 : optionDefaults)); - }); - function editor_bibtex_binding(value) { - bibtex = value; - $$invalidate(2, bibtex); + h(c, "handleTidy"); + function f() { + var m = window.location.search, + g = new URLSearchParams(m).get("opt"); + if (g) + try { + return kn(JSON.parse(g)); + } catch (b) { + console.error("Error parsing options in URL"); + return; + } } - __name(editor_bibtex_binding, "editor_bibtex_binding"); - function sidebar_options_binding(value) { - options = value; - $$invalidate(0, options); + h(f, "getOptionsFromURL"), + window.addEventListener("popstate", () => { + var m; + t(0, (u = (m = f()) !== null && m !== void 0 ? m : n)); + }); + function d(m) { + (o = m), t(2, o); } - __name(sidebar_options_binding, "sidebar_options_binding"); - $$self.$$.update = () => { - if ($$self.$$.dirty & 1) { - $: { - var optionsJSON = JSON.stringify(options); - var params = new URLSearchParams([["opt", optionsJSON]]); - window.history.pushState(options, "", "index.html?".concat(params.toString())); - } - } - }; - return [options, running, bibtex, status, error, handleTidy, editor_bibtex_binding, sidebar_options_binding]; + h(d, "editor_bibtex_binding"); + function p(m) { + (u = m), t(0, u); + } + return ( + h(p, "sidebar_options_binding"), + (r.$$.update = () => { + if (r.$$.dirty & 1) + e: { + var m = JSON.stringify(u), + D = new URLSearchParams([["opt", m]]); + window.history.pushState(u, "", "index.html?".concat(D.toString())); + } + }), + [u, s, o, l, a, c, d, p] + ); } - __name(instance20, "instance"); - var App = class App extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance20, create_fragment20, safe_not_equal, {}); + h(v3, "instance"); + var Ju = class Ju extends re { + constructor(e) { + super(), se(this, e, v3, E3, ne, {}); } }; - __name(App, "App"); - var App_default = App; - // src/ui/index.ts - new App_default({ - target: document.body, - }); + h(Ju, "App"); + var X1 = Ju; + new X1({ target: document.body }); })(); diff --git a/package-lock.json b/package-lock.json index 499e003..f7de15e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,32 +12,32 @@ "bibtex-tidy": "bin/bibtex-tidy" }, "devDependencies": { - "@codemirror/commands": "^6.1.2", - "@codemirror/language": "^6.3.1", - "@codemirror/lint": "^6.1.0", - "@codemirror/view": "^6.7.1", - "@lezer/generator": "^1.1.3", + "@codemirror/commands": "^6.2.1", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.2.0", + "@codemirror/view": "^6.9.1", + "@lezer/generator": "^1.2.2", "@lezer/highlight": "^1.1.3", - "@swc/core": "^1.3.23", + "@swc/core": "^1.3.37", "@tsconfig/svelte": "^3.0.0", - "@types/node": "^18.11.15", - "@types/prettier": "^2.7.1", - "@typescript-eslint/eslint-plugin": "^5.46.1", - "@typescript-eslint/parser": "^5.46.1", - "c8": "^7.12.0", - "core-js": "^3.26.1", - "dts-bundle-generator": "^7.1.0", - "esbuild": "^0.16.6", - "esbuild-register": "^3.4.1", + "@types/node": "^18.14.2", + "@types/prettier": "^2.7.2", + "@typescript-eslint/eslint-plugin": "^5.54.0", + "@typescript-eslint/parser": "^5.54.0", + "c8": "^7.13.0", + "core-js": "^3.29.0", + "dts-bundle-generator": "^7.2.0", + "esbuild": "^0.17.10", + "esbuild-register": "^3.4.2", "esbuild-svelte": "^0.7.3", - "eslint": "^8.29.0", - "eslint-plugin-import": "^2.26.0", + "eslint": "^8.35.0", + "eslint-plugin-import": "^2.27.5", "eslint-plugin-svelte3": "^4.0.0", - "prettier": "^2.8.1", - "puppeteer": "^19.4.0", - "regexpu-core": "^5.2.2", - "svelte-preprocess": "^5.0.0", - "typescript": "^4.9.4" + "prettier": "^2.8.4", + "puppeteer": "^19.7.2", + "regexpu-core": "^5.3.1", + "svelte-preprocess": "^5.0.1", + "typescript": "^4.9.5" }, "engines": { "node": ">12" @@ -326,6 +326,12 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/template": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", @@ -388,21 +394,21 @@ "dev": true }, "node_modules/@codemirror/commands": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz", - "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", + "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", "dev": true, "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", + "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0" } }, "node_modules/@codemirror/language": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.3.1.tgz", - "integrity": "sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", "dev": true, "dependencies": { "@codemirror/state": "^6.0.0", @@ -414,9 +420,9 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.1.0.tgz", - "integrity": "sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.2.0.tgz", + "integrity": "sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==", "dev": true, "dependencies": { "@codemirror/state": "^6.0.0", @@ -425,15 +431,15 @@ } }, "node_modules/@codemirror/state": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.4.tgz", - "integrity": "sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", "dev": true }, "node_modules/@codemirror/view": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.7.1.tgz", - "integrity": "sha512-kYtS+uqYw/q/0ytYxpkqE1JVuK5NsbmBklWYhwLFTKO9gVuTdh/kDEeZPKorbqHcJ+P+ucrhcsS1czVweOpT2g==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.1.tgz", + "integrity": "sha512-bzfSjJn9dAADVpabLKWKNmMG4ibyTV2e3eOGowjElNPTdTkSbi6ixPYHm2u0ADcETfKsi2/R84Rkmi91dH9yEg==", "dev": true, "dependencies": { "@codemirror/state": "^6.1.4", @@ -442,9 +448,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.6.tgz", - "integrity": "sha512-wc1AyHlFS8eejfAdePn2wr8/5zEa+FvF3ipBeTo4Qm9Xl0A0miTUfphwzXa3xdxU2pHimRCzIAUhjlbSSts8JQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.10.tgz", + "integrity": "sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==", "cpu": [ "arm" ], @@ -458,9 +464,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.6.tgz", - "integrity": "sha512-5mSVUNQoEpnvWBgMnEKlHGjrK/3kqRoj+YkErK+RbKMlxCGzzkqh+vSGY0pq+RCobAXs0BlBQMQ+8ZutAkyStw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.10.tgz", + "integrity": "sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==", "cpu": [ "arm64" ], @@ -474,9 +480,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.6.tgz", - "integrity": "sha512-zqbsOaB908GEO4JyVlkV5a9jjHVk35eR6dd3VvOdbu0u0BufaCblFjslbUP8ARGoLS77TWRe1mBpbcySkyybKQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.10.tgz", + "integrity": "sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==", "cpu": [ "x64" ], @@ -490,9 +496,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.6.tgz", - "integrity": "sha512-uc46Du5AiooWidDIkXeU3HWIuLTzVbYp95slpd9SdDH7FjXWgiiEo7DXzoUoPxGwkUfPgQvvgFKx3TqsYvy68w==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.10.tgz", + "integrity": "sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==", "cpu": [ "arm64" ], @@ -506,9 +512,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.6.tgz", - "integrity": "sha512-ND/o8hoEpXxIOqhRbt73tyvnu3WWA8MeuMAVww0crdubpzzEevH0S8r6uRjrHn1H4etRSmWwTbM3rHul68BJOA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.10.tgz", + "integrity": "sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==", "cpu": [ "x64" ], @@ -522,9 +528,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.6.tgz", - "integrity": "sha512-mMHz7ePkfVXW5wEhRR0XtoTlXDa5F1hIoxnfoeY+G0wWs4Q3HZgHZrXw3PSO26JnZOxIgyV/OuWIP87nQoWegQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.10.tgz", + "integrity": "sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==", "cpu": [ "arm64" ], @@ -538,9 +544,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.6.tgz", - "integrity": "sha512-/BneBfb5v+VAqjDLt8Q/5llb7smIEJVPd1afNJDShRfj2qr5nIwh1FJaOjoEWe6I1sucdKJ/EbwOujH+iBkW/g==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.10.tgz", + "integrity": "sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==", "cpu": [ "x64" ], @@ -554,9 +560,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.6.tgz", - "integrity": "sha512-hdw0JS24ToFAnWJJbexr62ZRTcl/yJSPeNZR4fAAJY4PcghgQcnp8lO5MdxBe2QCNz3i5WYCoGZcU4+TBJJMDg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.10.tgz", + "integrity": "sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==", "cpu": [ "arm" ], @@ -570,9 +576,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.6.tgz", - "integrity": "sha512-1h2EyMOB9X2VfFzBv4/Xo+OcGj3fmZEwvGxOdDRPxSP8ZVQiqc4XesCVur85VjP0MLPC+y7PioDc/uWpwFadFw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.10.tgz", + "integrity": "sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==", "cpu": [ "arm64" ], @@ -586,9 +592,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.6.tgz", - "integrity": "sha512-MyBWPjAMAlnkYANHCjeun2QsOn5cY1RxXAqnG0hE+fEmeX/hJK9pj6wQ5QptAew7sKt9flcOLKEB/hn2mr/xUw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.10.tgz", + "integrity": "sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==", "cpu": [ "ia32" ], @@ -602,9 +608,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.6.tgz", - "integrity": "sha512-wJAE0pZrY47xWRIYkBrOYRKWJ9vE1XBC7PtuGy4/Ii0Au2VRc52A/VxIHwRI0NyQMNRkjOD5PpS/ruhnNx7JNA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.10.tgz", + "integrity": "sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==", "cpu": [ "loong64" ], @@ -618,9 +624,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.6.tgz", - "integrity": "sha512-/eR74aTs0dWrg/Y9m0H2iE6rIigkwxsaJlzlSoz6N5JspyARRXutAITveg1wGek4W5LkistZBjEeeyCnC3FT9Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.10.tgz", + "integrity": "sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==", "cpu": [ "mips64el" ], @@ -634,9 +640,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.6.tgz", - "integrity": "sha512-zwIKMrYQzh59ftwiuXREcXwyjvsRNLELOgdIE17CwTnc5Xxj2IR9Gi8NvQcMTquFoGaHOh8O7F2zJ3vU5LQEhA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.10.tgz", + "integrity": "sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==", "cpu": [ "ppc64" ], @@ -650,9 +656,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.6.tgz", - "integrity": "sha512-uqCmZ9GnYcD9Od9fiDYH4TLahw14S6ZgCVrIb1bBBwbAy4pEOPwB73vBX3mnG3ClHv7b5xsOYhCBZkfkoJEgMA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.10.tgz", + "integrity": "sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==", "cpu": [ "riscv64" ], @@ -666,9 +672,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.6.tgz", - "integrity": "sha512-zt1vo5Zzu1Y+0K64wYIQR1pMVNYDbwDetrWy/4XyD4c+tnZfxGZwzZOmb65LSto8hxAYq5UG6DpHSNJ4zy5F1w==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.10.tgz", + "integrity": "sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==", "cpu": [ "s390x" ], @@ -682,9 +688,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.6.tgz", - "integrity": "sha512-g2aCp+XjWGbHq57ZUfyWNOMVDKr0flizfOa6BkP9Ezn2BLZ+gibxF+6M6272vfvALFYsbCUY+AyoNxuCVcaKFg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.10.tgz", + "integrity": "sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==", "cpu": [ "x64" ], @@ -698,9 +704,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.6.tgz", - "integrity": "sha512-q5tKkYilkgNLtp6szs/yXAHJJ4OEjoTRlHHPJtVyDj6AZsdDynrkoFUV98D+CncB9Im5CIRnPmJErb6EDvIR0Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.10.tgz", + "integrity": "sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==", "cpu": [ "x64" ], @@ -714,9 +720,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.6.tgz", - "integrity": "sha512-dR+DrQ2Dsfia71xKgdUPnf6lc3y4O8qNE4nmhEJHrR7teS0yScspommz28MaIe/8c5IubqPuOY2SYQFSExG55w==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.10.tgz", + "integrity": "sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==", "cpu": [ "x64" ], @@ -730,9 +736,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.6.tgz", - "integrity": "sha512-u0hH+njKsZCz7SHRIIkqnOCWITFL+uLaXB7ro3SSztWcx7iB//Lpg/2lkPZ7sZ1lVpO0nmaHWApZIbvMTCwz1Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.10.tgz", + "integrity": "sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==", "cpu": [ "x64" ], @@ -746,9 +752,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.6.tgz", - "integrity": "sha512-d+hveGvPLoGQHOKVDWfWSLUFnPtdpzWdtmz3PFq4t/iLg1MMTnPy48TrgC/JFTwcxDgKJdFw6ogTXjYN1tVALw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.10.tgz", + "integrity": "sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==", "cpu": [ "arm64" ], @@ -762,9 +768,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.6.tgz", - "integrity": "sha512-/e2x2+Gq7afiU9xxw5J0r0DCsfsWY+hmjLNzXh6O/9Kf2kFxyCLKsPyTJmj0jQ0icz5aGlxtueH2Hnm5Rczt/Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.10.tgz", + "integrity": "sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==", "cpu": [ "ia32" ], @@ -778,9 +784,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.6.tgz", - "integrity": "sha512-BlXuMzOWhAcdLRzE/PQLAAyhItzvL1fRMvbmHV6k09Xiq8rZzFJB/CrfX3ZQI0nKBlfxO4sLN9H9WwK2nLo7Pg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.10.tgz", + "integrity": "sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==", "cpu": [ "x64" ], @@ -794,15 +800,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -816,16 +822,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -837,34 +837,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -962,13 +947,13 @@ "dev": true }, "node_modules/@lezer/generator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.1.3.tgz", - "integrity": "sha512-qGF0I2TTJ+VBjjsVX8FGqKJy3laALBnVbD5EbXEu13Sgszl/vjnxjcZ69O8w9IK8/WtVFQLspU4UjCCUNRlWzA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.2.2.tgz", + "integrity": "sha512-O//eH9jTPM1GnbZruuD23xU68Pkuragonn1DEIom4Kt/eJN/QFt7Vzvp1YjV/XBmoUKC+2ySPgrA5fMF9FMM2g==", "dev": true, "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lezer/common": "^1.0.2", + "@lezer/lr": "^1.3.0" }, "bin": { "lezer-generator": "dist/lezer-generator.cjs" @@ -984,9 +969,9 @@ } }, "node_modules/@lezer/lr": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.5.tgz", - "integrity": "sha512-f9319YG1A/3ysgUE3bqCHEd7g+3ZZ71MWlwEc42mpnLVYXgfJJgtu1XAyBB4Kz8FmqmnFe9caopDqKeMMMAU6g==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.3.tgz", + "integrity": "sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==", "dev": true, "dependencies": { "@lezer/common": "^1.0.0" @@ -1028,14 +1013,11 @@ } }, "node_modules/@swc/core": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.23.tgz", - "integrity": "sha512-Aa7yw5+7ErOxr+G0J1eU2hkb9nEMSdt1Ye3isdAgg9mrsPuttk+cfLp6nP/Lux/VUnu5k4eOxeTy9UhjJhRAFw==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.37.tgz", + "integrity": "sha512-VOFlEQ1pReOM73N9A7R8rt561GU8Rxsq833jiimWDUB2sXEN3V6n6wFTgYmZuMz2T4/R0cQA1nV48KkaT4gkFw==", "dev": true, "hasInstallScript": true, - "bin": { - "swcx": "run_swcx.js" - }, "engines": { "node": ">=10" }, @@ -1044,22 +1026,22 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.23", - "@swc/core-darwin-x64": "1.3.23", - "@swc/core-linux-arm-gnueabihf": "1.3.23", - "@swc/core-linux-arm64-gnu": "1.3.23", - "@swc/core-linux-arm64-musl": "1.3.23", - "@swc/core-linux-x64-gnu": "1.3.23", - "@swc/core-linux-x64-musl": "1.3.23", - "@swc/core-win32-arm64-msvc": "1.3.23", - "@swc/core-win32-ia32-msvc": "1.3.23", - "@swc/core-win32-x64-msvc": "1.3.23" + "@swc/core-darwin-arm64": "1.3.37", + "@swc/core-darwin-x64": "1.3.37", + "@swc/core-linux-arm-gnueabihf": "1.3.37", + "@swc/core-linux-arm64-gnu": "1.3.37", + "@swc/core-linux-arm64-musl": "1.3.37", + "@swc/core-linux-x64-gnu": "1.3.37", + "@swc/core-linux-x64-musl": "1.3.37", + "@swc/core-win32-arm64-msvc": "1.3.37", + "@swc/core-win32-ia32-msvc": "1.3.37", + "@swc/core-win32-x64-msvc": "1.3.37" } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.23.tgz", - "integrity": "sha512-IGOEHmE4aBDX7gQWpanI3A0ni47UcvX7rmcy0H8kE6mm/y7mEMWskvNsYhYzJl4GVZgw38v1/lL/A7MRX6g71A==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.37.tgz", + "integrity": "sha512-iIyVqqioUpVeT/hbBVfkrsjfCyL4idNH+LVKGmoTAWaTTSB0+UNhNuA7Wh2CqIHWh1Mv7IlumitWPcqsVDdoEw==", "cpu": [ "arm64" ], @@ -1073,9 +1055,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.23.tgz", - "integrity": "sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.37.tgz", + "integrity": "sha512-dao5nXPWKxtaxqak4ZkRyBoApNIelW/glantQhPhj0FjMjuIQc+v03ldJ8XDByWOG+6xuVUTheANCtEccxoQBw==", "cpu": [ "x64" ], @@ -1089,9 +1071,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.23.tgz", - "integrity": "sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.37.tgz", + "integrity": "sha512-/mVrc8H/f062CUkqKGmBiil2VIYu4mKawHxERfeP1y38X5K/OwjG5s9MgO9TVxy+Ly6vejwj70kRhSa3hVp1Bw==", "cpu": [ "arm" ], @@ -1105,9 +1087,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.23.tgz", - "integrity": "sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.37.tgz", + "integrity": "sha512-eRQ3KaZI0j5LidTfOIi/kUVOOMuVmw1HCdt/Z1TAUKoHMLVxY8xcJ3pEE3/+ednI60EmHpwpJRs6LelXyL6uzQ==", "cpu": [ "arm64" ], @@ -1121,9 +1103,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.23.tgz", - "integrity": "sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.37.tgz", + "integrity": "sha512-w2BRLODyxNQY2rfHZMZ5ir6QrrnGBPlnIslTrgKmVbn1OjZoxUCtuqhrYnCmybaAc4DOkeH02TqynEFXrm+EMw==", "cpu": [ "arm64" ], @@ -1137,9 +1119,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.23.tgz", - "integrity": "sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.37.tgz", + "integrity": "sha512-CfoH8EsZJZ9kunjMUjBNYD5fFuO86zw+K/o4wEw72Yg6ZEiqPmeIlCKU8tpTv4sK+CbhUXrmVzMB5tqsb2jALQ==", "cpu": [ "x64" ], @@ -1153,9 +1135,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.23.tgz", - "integrity": "sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.37.tgz", + "integrity": "sha512-9YPrHYNdoG7PK11gV51GfL45biI2dic+YTqHUDKyykemsD7Ot1zUFX7Ty//pdvpKcKSff6SrHbfFACD5ziNirA==", "cpu": [ "x64" ], @@ -1169,9 +1151,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.23.tgz", - "integrity": "sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.37.tgz", + "integrity": "sha512-h17Ek8/wCDje6BrXOvCXBM80oBRmTSMMdLyt87whTl5xqYlWYYs9oQIzZndNRTlNpTgjGO8Ns2eo4kwVxIkBIA==", "cpu": [ "arm64" ], @@ -1185,9 +1167,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.23.tgz", - "integrity": "sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.37.tgz", + "integrity": "sha512-1BR175E1olGy/zdt94cgdb6ps/lBNissAOaxyBk8taFpcjy3zpdP30yAoH0GIsC6isnZ5JfArbOJNRXXO5tE0Q==", "cpu": [ "ia32" ], @@ -1201,9 +1183,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.23.tgz", - "integrity": "sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.37.tgz", + "integrity": "sha512-1siDQ7dccQ1pesJmgAL3BUBbRPtfbNInOWnZOkiie/DfFqGQ117QKnCVyjUvwFKfTQx1+3UUTDmMSlRd00SlXg==", "cpu": [ "x64" ], @@ -1241,15 +1223,15 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz", - "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==", + "version": "18.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==", "dev": true }, "node_modules/@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "node_modules/@types/pug": { @@ -1284,15 +1266,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz", + "integrity": "sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/scope-manager": "5.54.0", + "@typescript-eslint/type-utils": "5.54.0", + "@typescript-eslint/utils": "5.54.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -1332,14 +1315,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", + "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.54.0", + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/typescript-estree": "5.54.0", "debug": "^4.3.4" }, "engines": { @@ -1359,13 +1342,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz", + "integrity": "sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/visitor-keys": "5.54.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1376,13 +1359,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz", + "integrity": "sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/utils": "5.54.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1403,9 +1386,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.54.0.tgz", + "integrity": "sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1416,13 +1399,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz", + "integrity": "sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/visitor-keys": "5.54.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1458,16 +1441,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.54.0.tgz", + "integrity": "sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.54.0", + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/typescript-estree": "5.54.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -1499,12 +1482,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz", + "integrity": "sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/types": "5.54.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1516,9 +1499,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1585,6 +1568,12 @@ "node": ">=4" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/array-includes": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", @@ -1631,6 +1620,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1754,9 +1761,9 @@ } }, "node_modules/c8": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", - "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", + "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -1997,6 +2004,18 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "node_modules/chromium-bidi": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", + "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", + "dev": true, + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2028,9 +2047,9 @@ } }, "node_modules/core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", + "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", "dev": true, "hasInstallScript": true, "funding": { @@ -2053,24 +2072,6 @@ "node": ">=14" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/crelt": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz", @@ -2149,9 +2150,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1068969", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1068969.tgz", - "integrity": "sha512-ATFTrPbY1dKYhPPvpjtwWKSK2mIwGmRwX54UASn9THEuIZCe2n9k3vVuMmt6jWeL+e5QaaguEv/pMyR+JQB7VQ==", + "version": "0.0.1094867", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", + "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", "dev": true }, "node_modules/dir-glob": { @@ -2179,9 +2180,9 @@ } }, "node_modules/dts-bundle-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-7.1.0.tgz", - "integrity": "sha512-RDm/HY6722PVWG3m+ZwLvD1TF9hNbDHoKeYwx1WmDo2So1eh4eRH2HTqxAmBiK0uQj7IogtxO6fyezQw3E793Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-7.2.0.tgz", + "integrity": "sha512-pHjRo52hvvLDRijzIYRTS9eJR7vAOs3gd/7jx+7YVnLU8ay3yPUWGtHXPtuMBSlJYk/s4nq1SvXObDCZVguYMg==", "dev": true, "dependencies": { "typescript": ">=4.5.2", @@ -2398,9 +2399,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.6.tgz", - "integrity": "sha512-0Fn9lUX1yy2iP56L0BDAgnQFJfkDICdYZ0Xm6Kgdwa72AkHoKX0egau/ZIROYdjJWPLJtl9bDuW7Xs56TuKPhQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.10.tgz", + "integrity": "sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==", "dev": true, "hasInstallScript": true, "bin": { @@ -2410,34 +2411,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.6", - "@esbuild/android-arm64": "0.16.6", - "@esbuild/android-x64": "0.16.6", - "@esbuild/darwin-arm64": "0.16.6", - "@esbuild/darwin-x64": "0.16.6", - "@esbuild/freebsd-arm64": "0.16.6", - "@esbuild/freebsd-x64": "0.16.6", - "@esbuild/linux-arm": "0.16.6", - "@esbuild/linux-arm64": "0.16.6", - "@esbuild/linux-ia32": "0.16.6", - "@esbuild/linux-loong64": "0.16.6", - "@esbuild/linux-mips64el": "0.16.6", - "@esbuild/linux-ppc64": "0.16.6", - "@esbuild/linux-riscv64": "0.16.6", - "@esbuild/linux-s390x": "0.16.6", - "@esbuild/linux-x64": "0.16.6", - "@esbuild/netbsd-x64": "0.16.6", - "@esbuild/openbsd-x64": "0.16.6", - "@esbuild/sunos-x64": "0.16.6", - "@esbuild/win32-arm64": "0.16.6", - "@esbuild/win32-ia32": "0.16.6", - "@esbuild/win32-x64": "0.16.6" + "@esbuild/android-arm": "0.17.10", + "@esbuild/android-arm64": "0.17.10", + "@esbuild/android-x64": "0.17.10", + "@esbuild/darwin-arm64": "0.17.10", + "@esbuild/darwin-x64": "0.17.10", + "@esbuild/freebsd-arm64": "0.17.10", + "@esbuild/freebsd-x64": "0.17.10", + "@esbuild/linux-arm": "0.17.10", + "@esbuild/linux-arm64": "0.17.10", + "@esbuild/linux-ia32": "0.17.10", + "@esbuild/linux-loong64": "0.17.10", + "@esbuild/linux-mips64el": "0.17.10", + "@esbuild/linux-ppc64": "0.17.10", + "@esbuild/linux-riscv64": "0.17.10", + "@esbuild/linux-s390x": "0.17.10", + "@esbuild/linux-x64": "0.17.10", + "@esbuild/netbsd-x64": "0.17.10", + "@esbuild/openbsd-x64": "0.17.10", + "@esbuild/sunos-x64": "0.17.10", + "@esbuild/win32-arm64": "0.17.10", + "@esbuild/win32-ia32": "0.17.10", + "@esbuild/win32-x64": "0.17.10" } }, "node_modules/esbuild-register": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.4.1.tgz", - "integrity": "sha512-iCgs88/1wA5dIRx4i65eSjbkgrQQQJGpY6Z1eD2XPlzrSjbgNtfkw2/rfSMzJ4dTtlOD8EZTxrIA3fyYp0FsMA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.4.2.tgz", + "integrity": "sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -2478,13 +2479,14 @@ } }, "node_modules/eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -2497,13 +2499,13 @@ "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", "espree": "^9.4.0", - "esquery": "^1.4.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -2534,13 +2536,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -2579,23 +2582,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "engines": { @@ -2606,12 +2611,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -2626,12 +2631,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/eslint-plugin-svelte3": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-4.0.0.tgz", @@ -2706,12 +2705,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2797,9 +2790,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2820,18 +2813,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2889,18 +2870,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", @@ -2919,9 +2888,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3304,9 +3273,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/grapheme-splitter": { @@ -3793,6 +3762,18 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3964,6 +3945,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -4215,9 +4202,9 @@ } }, "node_modules/prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -4255,51 +4242,59 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/puppeteer": { - "version": "19.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.4.0.tgz", - "integrity": "sha512-sRzWEfFSZCCcFUJflGtYI2V7A6qK4Jht+2JiI2LZgn+Nv/LOZZsBDEaGl98ZrS8oEcUA5on4p2yJbE0nzHNzIg==", + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", + "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", "dev": true, "hasInstallScript": true, "dependencies": { "cosmiconfig": "8.0.0", - "devtools-protocol": "0.0.1068969", "https-proxy-agent": "5.0.1", "progress": "2.0.3", "proxy-from-env": "1.1.0", - "puppeteer-core": "19.4.0" + "puppeteer-core": "19.7.2" }, "engines": { "node": ">=14.1.0" } }, "node_modules/puppeteer-core": { - "version": "19.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.4.0.tgz", - "integrity": "sha512-gG/jxseleZStinBn86x8r7trjcE4jcjx1hIQWOpACQhquHYMuKnrWxkzg+EDn8sN3wUtF/Ry9mtJgjM49oUOFQ==", + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", + "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", "dev": true, "dependencies": { + "chromium-bidi": "0.4.4", "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1068969", + "devtools-protocol": "0.0.1094867", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.10.0" + "ws": "8.11.0" }, "engines": { "node": ">=14.1.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/queue-microtask": { @@ -4323,9 +4318,9 @@ ] }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -4384,14 +4379,14 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -4400,12 +4395,6 @@ "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -4550,8 +4539,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -4607,26 +4594,20 @@ } }, "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", "dev": true, "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^0.2.5", "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" + "sander": "^0.5.0" }, "bin": { - "sorcery": "bin/index.js" + "sorcery": "bin/sorcery" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -4775,9 +4756,9 @@ } }, "node_modules/svelte-preprocess": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.0.tgz", - "integrity": "sha512-q7lpa7i2FBu8Pa+G0MmuQQWETBwCKgsGmuq1Sf6n8q4uaG9ZLcLP0Y+etC6bF4sE6EbLxfiI38zV6RfPe3RSfg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz", + "integrity": "sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -4785,7 +4766,7 @@ "@types/sass": "^1.43.1", "detect-indent": "^6.1.0", "magic-string": "^0.27.0", - "sorcery": "^0.10.0", + "sorcery": "^0.11.0", "strip-indent": "^3.0.0" }, "engines": { @@ -4986,10 +4967,22 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5190,9 +5183,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", - "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -5456,6 +5449,12 @@ "optional": true, "peer": true }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/template": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", @@ -5509,21 +5508,21 @@ "dev": true }, "@codemirror/commands": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.2.tgz", - "integrity": "sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.1.tgz", + "integrity": "sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==", "dev": true, "requires": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", + "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0" } }, "@codemirror/language": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.3.1.tgz", - "integrity": "sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", "dev": true, "requires": { "@codemirror/state": "^6.0.0", @@ -5535,9 +5534,9 @@ } }, "@codemirror/lint": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.1.0.tgz", - "integrity": "sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.2.0.tgz", + "integrity": "sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==", "dev": true, "requires": { "@codemirror/state": "^6.0.0", @@ -5546,15 +5545,15 @@ } }, "@codemirror/state": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.4.tgz", - "integrity": "sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==", "dev": true }, "@codemirror/view": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.7.1.tgz", - "integrity": "sha512-kYtS+uqYw/q/0ytYxpkqE1JVuK5NsbmBklWYhwLFTKO9gVuTdh/kDEeZPKorbqHcJ+P+ucrhcsS1czVweOpT2g==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.9.1.tgz", + "integrity": "sha512-bzfSjJn9dAADVpabLKWKNmMG4ibyTV2e3eOGowjElNPTdTkSbi6ixPYHm2u0ADcETfKsi2/R84Rkmi91dH9yEg==", "dev": true, "requires": { "@codemirror/state": "^6.1.4", @@ -5563,169 +5562,169 @@ } }, "@esbuild/android-arm": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.6.tgz", - "integrity": "sha512-wc1AyHlFS8eejfAdePn2wr8/5zEa+FvF3ipBeTo4Qm9Xl0A0miTUfphwzXa3xdxU2pHimRCzIAUhjlbSSts8JQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.10.tgz", + "integrity": "sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.6.tgz", - "integrity": "sha512-5mSVUNQoEpnvWBgMnEKlHGjrK/3kqRoj+YkErK+RbKMlxCGzzkqh+vSGY0pq+RCobAXs0BlBQMQ+8ZutAkyStw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.10.tgz", + "integrity": "sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.6.tgz", - "integrity": "sha512-zqbsOaB908GEO4JyVlkV5a9jjHVk35eR6dd3VvOdbu0u0BufaCblFjslbUP8ARGoLS77TWRe1mBpbcySkyybKQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.10.tgz", + "integrity": "sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.6.tgz", - "integrity": "sha512-uc46Du5AiooWidDIkXeU3HWIuLTzVbYp95slpd9SdDH7FjXWgiiEo7DXzoUoPxGwkUfPgQvvgFKx3TqsYvy68w==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.10.tgz", + "integrity": "sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.6.tgz", - "integrity": "sha512-ND/o8hoEpXxIOqhRbt73tyvnu3WWA8MeuMAVww0crdubpzzEevH0S8r6uRjrHn1H4etRSmWwTbM3rHul68BJOA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.10.tgz", + "integrity": "sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.6.tgz", - "integrity": "sha512-mMHz7ePkfVXW5wEhRR0XtoTlXDa5F1hIoxnfoeY+G0wWs4Q3HZgHZrXw3PSO26JnZOxIgyV/OuWIP87nQoWegQ==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.10.tgz", + "integrity": "sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.6.tgz", - "integrity": "sha512-/BneBfb5v+VAqjDLt8Q/5llb7smIEJVPd1afNJDShRfj2qr5nIwh1FJaOjoEWe6I1sucdKJ/EbwOujH+iBkW/g==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.10.tgz", + "integrity": "sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.6.tgz", - "integrity": "sha512-hdw0JS24ToFAnWJJbexr62ZRTcl/yJSPeNZR4fAAJY4PcghgQcnp8lO5MdxBe2QCNz3i5WYCoGZcU4+TBJJMDg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.10.tgz", + "integrity": "sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.6.tgz", - "integrity": "sha512-1h2EyMOB9X2VfFzBv4/Xo+OcGj3fmZEwvGxOdDRPxSP8ZVQiqc4XesCVur85VjP0MLPC+y7PioDc/uWpwFadFw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.10.tgz", + "integrity": "sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.6.tgz", - "integrity": "sha512-MyBWPjAMAlnkYANHCjeun2QsOn5cY1RxXAqnG0hE+fEmeX/hJK9pj6wQ5QptAew7sKt9flcOLKEB/hn2mr/xUw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.10.tgz", + "integrity": "sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.6.tgz", - "integrity": "sha512-wJAE0pZrY47xWRIYkBrOYRKWJ9vE1XBC7PtuGy4/Ii0Au2VRc52A/VxIHwRI0NyQMNRkjOD5PpS/ruhnNx7JNA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.10.tgz", + "integrity": "sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.6.tgz", - "integrity": "sha512-/eR74aTs0dWrg/Y9m0H2iE6rIigkwxsaJlzlSoz6N5JspyARRXutAITveg1wGek4W5LkistZBjEeeyCnC3FT9Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.10.tgz", + "integrity": "sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.6.tgz", - "integrity": "sha512-zwIKMrYQzh59ftwiuXREcXwyjvsRNLELOgdIE17CwTnc5Xxj2IR9Gi8NvQcMTquFoGaHOh8O7F2zJ3vU5LQEhA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.10.tgz", + "integrity": "sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.6.tgz", - "integrity": "sha512-uqCmZ9GnYcD9Od9fiDYH4TLahw14S6ZgCVrIb1bBBwbAy4pEOPwB73vBX3mnG3ClHv7b5xsOYhCBZkfkoJEgMA==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.10.tgz", + "integrity": "sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.6.tgz", - "integrity": "sha512-zt1vo5Zzu1Y+0K64wYIQR1pMVNYDbwDetrWy/4XyD4c+tnZfxGZwzZOmb65LSto8hxAYq5UG6DpHSNJ4zy5F1w==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.10.tgz", + "integrity": "sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.6.tgz", - "integrity": "sha512-g2aCp+XjWGbHq57ZUfyWNOMVDKr0flizfOa6BkP9Ezn2BLZ+gibxF+6M6272vfvALFYsbCUY+AyoNxuCVcaKFg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.10.tgz", + "integrity": "sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.6.tgz", - "integrity": "sha512-q5tKkYilkgNLtp6szs/yXAHJJ4OEjoTRlHHPJtVyDj6AZsdDynrkoFUV98D+CncB9Im5CIRnPmJErb6EDvIR0Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.10.tgz", + "integrity": "sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.6.tgz", - "integrity": "sha512-dR+DrQ2Dsfia71xKgdUPnf6lc3y4O8qNE4nmhEJHrR7teS0yScspommz28MaIe/8c5IubqPuOY2SYQFSExG55w==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.10.tgz", + "integrity": "sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.6.tgz", - "integrity": "sha512-u0hH+njKsZCz7SHRIIkqnOCWITFL+uLaXB7ro3SSztWcx7iB//Lpg/2lkPZ7sZ1lVpO0nmaHWApZIbvMTCwz1Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.10.tgz", + "integrity": "sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.6.tgz", - "integrity": "sha512-d+hveGvPLoGQHOKVDWfWSLUFnPtdpzWdtmz3PFq4t/iLg1MMTnPy48TrgC/JFTwcxDgKJdFw6ogTXjYN1tVALw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.10.tgz", + "integrity": "sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.6.tgz", - "integrity": "sha512-/e2x2+Gq7afiU9xxw5J0r0DCsfsWY+hmjLNzXh6O/9Kf2kFxyCLKsPyTJmj0jQ0icz5aGlxtueH2Hnm5Rczt/Q==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.10.tgz", + "integrity": "sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.6.tgz", - "integrity": "sha512-BlXuMzOWhAcdLRzE/PQLAAyhItzvL1fRMvbmHV6k09Xiq8rZzFJB/CrfX3ZQI0nKBlfxO4sLN9H9WwK2nLo7Pg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.10.tgz", + "integrity": "sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==", "dev": true, "optional": true }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", + "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -5733,42 +5732,27 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true } } }, + "@eslint/js": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", + "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "dev": true + }, "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -5844,13 +5828,13 @@ "dev": true }, "@lezer/generator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.1.3.tgz", - "integrity": "sha512-qGF0I2TTJ+VBjjsVX8FGqKJy3laALBnVbD5EbXEu13Sgszl/vjnxjcZ69O8w9IK8/WtVFQLspU4UjCCUNRlWzA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.2.2.tgz", + "integrity": "sha512-O//eH9jTPM1GnbZruuD23xU68Pkuragonn1DEIom4Kt/eJN/QFt7Vzvp1YjV/XBmoUKC+2ySPgrA5fMF9FMM2g==", "dev": true, "requires": { - "@lezer/common": "^1.0.0", - "@lezer/lr": "^1.0.0" + "@lezer/common": "^1.0.2", + "@lezer/lr": "^1.3.0" } }, "@lezer/highlight": { @@ -5863,9 +5847,9 @@ } }, "@lezer/lr": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.5.tgz", - "integrity": "sha512-f9319YG1A/3ysgUE3bqCHEd7g+3ZZ71MWlwEc42mpnLVYXgfJJgtu1XAyBB4Kz8FmqmnFe9caopDqKeMMMAU6g==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.3.tgz", + "integrity": "sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==", "dev": true, "requires": { "@lezer/common": "^1.0.0" @@ -5898,90 +5882,90 @@ } }, "@swc/core": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.23.tgz", - "integrity": "sha512-Aa7yw5+7ErOxr+G0J1eU2hkb9nEMSdt1Ye3isdAgg9mrsPuttk+cfLp6nP/Lux/VUnu5k4eOxeTy9UhjJhRAFw==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.37.tgz", + "integrity": "sha512-VOFlEQ1pReOM73N9A7R8rt561GU8Rxsq833jiimWDUB2sXEN3V6n6wFTgYmZuMz2T4/R0cQA1nV48KkaT4gkFw==", "dev": true, "requires": { - "@swc/core-darwin-arm64": "1.3.23", - "@swc/core-darwin-x64": "1.3.23", - "@swc/core-linux-arm-gnueabihf": "1.3.23", - "@swc/core-linux-arm64-gnu": "1.3.23", - "@swc/core-linux-arm64-musl": "1.3.23", - "@swc/core-linux-x64-gnu": "1.3.23", - "@swc/core-linux-x64-musl": "1.3.23", - "@swc/core-win32-arm64-msvc": "1.3.23", - "@swc/core-win32-ia32-msvc": "1.3.23", - "@swc/core-win32-x64-msvc": "1.3.23" + "@swc/core-darwin-arm64": "1.3.37", + "@swc/core-darwin-x64": "1.3.37", + "@swc/core-linux-arm-gnueabihf": "1.3.37", + "@swc/core-linux-arm64-gnu": "1.3.37", + "@swc/core-linux-arm64-musl": "1.3.37", + "@swc/core-linux-x64-gnu": "1.3.37", + "@swc/core-linux-x64-musl": "1.3.37", + "@swc/core-win32-arm64-msvc": "1.3.37", + "@swc/core-win32-ia32-msvc": "1.3.37", + "@swc/core-win32-x64-msvc": "1.3.37" } }, "@swc/core-darwin-arm64": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.23.tgz", - "integrity": "sha512-IGOEHmE4aBDX7gQWpanI3A0ni47UcvX7rmcy0H8kE6mm/y7mEMWskvNsYhYzJl4GVZgw38v1/lL/A7MRX6g71A==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.37.tgz", + "integrity": "sha512-iIyVqqioUpVeT/hbBVfkrsjfCyL4idNH+LVKGmoTAWaTTSB0+UNhNuA7Wh2CqIHWh1Mv7IlumitWPcqsVDdoEw==", "dev": true, "optional": true }, "@swc/core-darwin-x64": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.23.tgz", - "integrity": "sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.37.tgz", + "integrity": "sha512-dao5nXPWKxtaxqak4ZkRyBoApNIelW/glantQhPhj0FjMjuIQc+v03ldJ8XDByWOG+6xuVUTheANCtEccxoQBw==", "dev": true, "optional": true }, "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.23.tgz", - "integrity": "sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.37.tgz", + "integrity": "sha512-/mVrc8H/f062CUkqKGmBiil2VIYu4mKawHxERfeP1y38X5K/OwjG5s9MgO9TVxy+Ly6vejwj70kRhSa3hVp1Bw==", "dev": true, "optional": true }, "@swc/core-linux-arm64-gnu": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.23.tgz", - "integrity": "sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.37.tgz", + "integrity": "sha512-eRQ3KaZI0j5LidTfOIi/kUVOOMuVmw1HCdt/Z1TAUKoHMLVxY8xcJ3pEE3/+ednI60EmHpwpJRs6LelXyL6uzQ==", "dev": true, "optional": true }, "@swc/core-linux-arm64-musl": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.23.tgz", - "integrity": "sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.37.tgz", + "integrity": "sha512-w2BRLODyxNQY2rfHZMZ5ir6QrrnGBPlnIslTrgKmVbn1OjZoxUCtuqhrYnCmybaAc4DOkeH02TqynEFXrm+EMw==", "dev": true, "optional": true }, "@swc/core-linux-x64-gnu": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.23.tgz", - "integrity": "sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.37.tgz", + "integrity": "sha512-CfoH8EsZJZ9kunjMUjBNYD5fFuO86zw+K/o4wEw72Yg6ZEiqPmeIlCKU8tpTv4sK+CbhUXrmVzMB5tqsb2jALQ==", "dev": true, "optional": true }, "@swc/core-linux-x64-musl": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.23.tgz", - "integrity": "sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.37.tgz", + "integrity": "sha512-9YPrHYNdoG7PK11gV51GfL45biI2dic+YTqHUDKyykemsD7Ot1zUFX7Ty//pdvpKcKSff6SrHbfFACD5ziNirA==", "dev": true, "optional": true }, "@swc/core-win32-arm64-msvc": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.23.tgz", - "integrity": "sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.37.tgz", + "integrity": "sha512-h17Ek8/wCDje6BrXOvCXBM80oBRmTSMMdLyt87whTl5xqYlWYYs9oQIzZndNRTlNpTgjGO8Ns2eo4kwVxIkBIA==", "dev": true, "optional": true }, "@swc/core-win32-ia32-msvc": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.23.tgz", - "integrity": "sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.37.tgz", + "integrity": "sha512-1BR175E1olGy/zdt94cgdb6ps/lBNissAOaxyBk8taFpcjy3zpdP30yAoH0GIsC6isnZ5JfArbOJNRXXO5tE0Q==", "dev": true, "optional": true }, "@swc/core-win32-x64-msvc": { - "version": "1.3.23", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.23.tgz", - "integrity": "sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ==", + "version": "1.3.37", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.37.tgz", + "integrity": "sha512-1siDQ7dccQ1pesJmgAL3BUBbRPtfbNInOWnZOkiie/DfFqGQ117QKnCVyjUvwFKfTQx1+3UUTDmMSlRd00SlXg==", "dev": true, "optional": true }, @@ -6010,15 +5994,15 @@ "dev": true }, "@types/node": { - "version": "18.11.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz", - "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==", + "version": "18.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==", "dev": true }, "@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/pug": { @@ -6053,15 +6037,16 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz", + "integrity": "sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/scope-manager": "5.54.0", + "@typescript-eslint/type-utils": "5.54.0", + "@typescript-eslint/utils": "5.54.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -6081,53 +6066,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", + "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.54.0", + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/typescript-estree": "5.54.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz", + "integrity": "sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/visitor-keys": "5.54.0" } }, "@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz", + "integrity": "sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/utils": "5.54.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.54.0.tgz", + "integrity": "sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz", + "integrity": "sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/visitor-keys": "5.54.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6147,16 +6132,16 @@ } }, "@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.54.0.tgz", + "integrity": "sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.54.0", + "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/typescript-estree": "5.54.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -6174,19 +6159,19 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", + "version": "5.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz", + "integrity": "sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/types": "5.54.0", "eslint-visitor-keys": "^3.3.0" } }, "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-jsx": { @@ -6232,6 +6217,12 @@ "color-convert": "^1.9.0" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "array-includes": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", @@ -6263,6 +6254,18 @@ "es-shim-unscopables": "^1.0.0" } }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -6336,9 +6339,9 @@ "dev": true }, "c8": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", - "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", + "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", @@ -6508,6 +6511,15 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "chromium-bidi": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", + "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", + "dev": true, + "requires": { + "mitt": "3.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -6539,9 +6551,9 @@ } }, "core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", + "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", "dev": true }, "cosmiconfig": { @@ -6554,23 +6566,6 @@ "js-yaml": "^4.1.0", "parse-json": "^5.0.0", "path-type": "^4.0.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - } } }, "crelt": { @@ -6631,9 +6626,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.1068969", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1068969.tgz", - "integrity": "sha512-ATFTrPbY1dKYhPPvpjtwWKSK2mIwGmRwX54UASn9THEuIZCe2n9k3vVuMmt6jWeL+e5QaaguEv/pMyR+JQB7VQ==", + "version": "0.0.1094867", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", + "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", "dev": true }, "dir-glob": { @@ -6655,9 +6650,9 @@ } }, "dts-bundle-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-7.1.0.tgz", - "integrity": "sha512-RDm/HY6722PVWG3m+ZwLvD1TF9hNbDHoKeYwx1WmDo2So1eh4eRH2HTqxAmBiK0uQj7IogtxO6fyezQw3E793Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-7.2.0.tgz", + "integrity": "sha512-pHjRo52hvvLDRijzIYRTS9eJR7vAOs3gd/7jx+7YVnLU8ay3yPUWGtHXPtuMBSlJYk/s4nq1SvXObDCZVguYMg==", "dev": true, "requires": { "typescript": ">=4.5.2", @@ -6831,39 +6826,39 @@ "dev": true }, "esbuild": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.6.tgz", - "integrity": "sha512-0Fn9lUX1yy2iP56L0BDAgnQFJfkDICdYZ0Xm6Kgdwa72AkHoKX0egau/ZIROYdjJWPLJtl9bDuW7Xs56TuKPhQ==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.16.6", - "@esbuild/android-arm64": "0.16.6", - "@esbuild/android-x64": "0.16.6", - "@esbuild/darwin-arm64": "0.16.6", - "@esbuild/darwin-x64": "0.16.6", - "@esbuild/freebsd-arm64": "0.16.6", - "@esbuild/freebsd-x64": "0.16.6", - "@esbuild/linux-arm": "0.16.6", - "@esbuild/linux-arm64": "0.16.6", - "@esbuild/linux-ia32": "0.16.6", - "@esbuild/linux-loong64": "0.16.6", - "@esbuild/linux-mips64el": "0.16.6", - "@esbuild/linux-ppc64": "0.16.6", - "@esbuild/linux-riscv64": "0.16.6", - "@esbuild/linux-s390x": "0.16.6", - "@esbuild/linux-x64": "0.16.6", - "@esbuild/netbsd-x64": "0.16.6", - "@esbuild/openbsd-x64": "0.16.6", - "@esbuild/sunos-x64": "0.16.6", - "@esbuild/win32-arm64": "0.16.6", - "@esbuild/win32-ia32": "0.16.6", - "@esbuild/win32-x64": "0.16.6" + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.10.tgz", + "integrity": "sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.10", + "@esbuild/android-arm64": "0.17.10", + "@esbuild/android-x64": "0.17.10", + "@esbuild/darwin-arm64": "0.17.10", + "@esbuild/darwin-x64": "0.17.10", + "@esbuild/freebsd-arm64": "0.17.10", + "@esbuild/freebsd-x64": "0.17.10", + "@esbuild/linux-arm": "0.17.10", + "@esbuild/linux-arm64": "0.17.10", + "@esbuild/linux-ia32": "0.17.10", + "@esbuild/linux-loong64": "0.17.10", + "@esbuild/linux-mips64el": "0.17.10", + "@esbuild/linux-ppc64": "0.17.10", + "@esbuild/linux-riscv64": "0.17.10", + "@esbuild/linux-s390x": "0.17.10", + "@esbuild/linux-x64": "0.17.10", + "@esbuild/netbsd-x64": "0.17.10", + "@esbuild/openbsd-x64": "0.17.10", + "@esbuild/sunos-x64": "0.17.10", + "@esbuild/win32-arm64": "0.17.10", + "@esbuild/win32-ia32": "0.17.10", + "@esbuild/win32-x64": "0.17.10" } }, "esbuild-register": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.4.1.tgz", - "integrity": "sha512-iCgs88/1wA5dIRx4i65eSjbkgrQQQJGpY6Z1eD2XPlzrSjbgNtfkw2/rfSMzJ4dTtlOD8EZTxrIA3fyYp0FsMA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.4.2.tgz", + "integrity": "sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==", "dev": true, "requires": { "debug": "^4.3.4" @@ -6889,13 +6884,14 @@ "dev": true }, "eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", + "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^2.0.0", + "@eslint/js": "8.35.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -6908,13 +6904,13 @@ "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", "espree": "^9.4.0", - "esquery": "^1.4.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -6944,12 +6940,6 @@ "color-convert": "^2.0.1" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7008,9 +6998,9 @@ } }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -7022,15 +7012,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -7066,23 +7047,18 @@ "requires": { "has-flag": "^4.0.0" } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true } } }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" }, "dependencies": { "debug": { @@ -7117,33 +7093,35 @@ } }, "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -7154,12 +7132,6 @@ "requires": { "esutils": "^2.0.2" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true } } }, @@ -7215,9 +7187,9 @@ } }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -7511,9 +7483,9 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "grapheme-splitter": { @@ -7851,6 +7823,15 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -7979,6 +7960,12 @@ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, + "mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -8165,9 +8152,9 @@ "dev": true }, "prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", "dev": true }, "progress": { @@ -8193,41 +8180,41 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "puppeteer": { - "version": "19.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.4.0.tgz", - "integrity": "sha512-sRzWEfFSZCCcFUJflGtYI2V7A6qK4Jht+2JiI2LZgn+Nv/LOZZsBDEaGl98ZrS8oEcUA5on4p2yJbE0nzHNzIg==", + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", + "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", "dev": true, "requires": { "cosmiconfig": "8.0.0", - "devtools-protocol": "0.0.1068969", "https-proxy-agent": "5.0.1", "progress": "2.0.3", "proxy-from-env": "1.1.0", - "puppeteer-core": "19.4.0" + "puppeteer-core": "19.7.2" } }, "puppeteer-core": { - "version": "19.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.4.0.tgz", - "integrity": "sha512-gG/jxseleZStinBn86x8r7trjcE4jcjx1hIQWOpACQhquHYMuKnrWxkzg+EDn8sN3wUtF/Ry9mtJgjM49oUOFQ==", + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", + "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", "dev": true, "requires": { + "chromium-bidi": "0.4.4", "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1068969", + "devtools-protocol": "0.0.1094867", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.10.0" + "ws": "8.11.0" } }, "queue-microtask": { @@ -8237,9 +8224,9 @@ "dev": true }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -8280,25 +8267,19 @@ "dev": true }, "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -8401,9 +8382,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "shebang-command": { "version": "2.0.0", @@ -8444,23 +8423,17 @@ "dev": true }, "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", "dev": true, "requires": { + "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^0.2.5", "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" + "sander": "^0.5.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8564,16 +8537,16 @@ "peer": true }, "svelte-preprocess": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.0.tgz", - "integrity": "sha512-q7lpa7i2FBu8Pa+G0MmuQQWETBwCKgsGmuq1Sf6n8q4uaG9ZLcLP0Y+etC6bF4sE6EbLxfiI38zV6RfPe3RSfg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz", + "integrity": "sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==", "dev": true, "requires": { "@types/pug": "^2.0.6", "@types/sass": "^1.43.1", "detect-indent": "^6.1.0", "magic-string": "^0.27.0", - "sorcery": "^0.10.0", + "sorcery": "^0.11.0", "strip-indent": "^3.0.0" } }, @@ -8701,10 +8674,16 @@ "prelude-ls": "^1.2.1" } }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "unbox-primitive": { @@ -8852,9 +8831,9 @@ "dev": true }, "ws": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", - "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 0184ec9..179a13c 100644 --- a/package.json +++ b/package.json @@ -39,32 +39,32 @@ "node": ">12" }, "devDependencies": { - "@codemirror/commands": "^6.1.2", - "@codemirror/language": "^6.3.1", - "@codemirror/lint": "^6.1.0", - "@codemirror/view": "^6.7.1", - "@lezer/generator": "^1.1.3", + "@codemirror/commands": "^6.2.1", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.2.0", + "@codemirror/view": "^6.9.1", + "@lezer/generator": "^1.2.2", "@lezer/highlight": "^1.1.3", - "@swc/core": "^1.3.23", + "@swc/core": "^1.3.37", "@tsconfig/svelte": "^3.0.0", - "@types/node": "^18.11.15", - "@types/prettier": "^2.7.1", - "@typescript-eslint/eslint-plugin": "^5.46.1", - "@typescript-eslint/parser": "^5.46.1", - "c8": "^7.12.0", - "core-js": "^3.26.1", - "dts-bundle-generator": "^7.1.0", - "esbuild": "^0.16.6", - "esbuild-register": "^3.4.1", + "@types/node": "^18.14.6", + "@types/prettier": "^2.7.2", + "@typescript-eslint/eslint-plugin": "^5.54.0", + "@typescript-eslint/parser": "^5.54.0", + "c8": "^7.13.0", + "core-js": "^3.29.0", + "dts-bundle-generator": "^7.2.0", + "esbuild": "^0.17.11", + "esbuild-register": "^3.4.2", "esbuild-svelte": "^0.7.3", - "eslint": "^8.29.0", - "eslint-plugin-import": "^2.26.0", + "eslint": "^8.35.0", + "eslint-plugin-import": "^2.27.5", "eslint-plugin-svelte3": "^4.0.0", - "prettier": "^2.8.1", - "puppeteer": "^19.4.0", - "regexpu-core": "^5.2.2", - "svelte-preprocess": "^5.0.0", - "typescript": "^4.9.4" + "prettier": "^2.8.4", + "puppeteer": "^19.7.2", + "regexpu-core": "^5.3.1", + "svelte-preprocess": "^5.0.1", + "typescript": "^4.9.5" }, "prettier": { "useTabs": true,